diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..55e8236 --- /dev/null +++ b/.clang-format @@ -0,0 +1,53 @@ +--- +Language: Cpp +# BasedOnStyle: WebKit +AccessModifierOffset: -4 +ConstructorInitializerIndentWidth: 4 +AlignEscapedNewlinesLeft: false +AlignTrailingComments: false +AllowAllParametersOfDeclarationOnNextLine: true +AllowShortIfStatementsOnASingleLine: false +AllowShortLoopsOnASingleLine: false +AllowShortFunctionsOnASingleLine: All +AlwaysBreakTemplateDeclarations: false +AlwaysBreakBeforeMultilineStrings: false +BreakBeforeBinaryOperators: true +BreakBeforeTernaryOperators: true +BreakConstructorInitializersBeforeComma: true +BinPackParameters: true +ColumnLimit: 0 +ConstructorInitializerAllOnOneLineOrOnePerLine: false +DerivePointerBinding: false +ExperimentalAutoDetectBinPacking: false +IndentCaseLabels: false +MaxEmptyLinesToKeep: 2 +KeepEmptyLinesAtTheStartOfBlocks: true +NamespaceIndentation: Inner +ObjCSpaceAfterProperty: true +ObjCSpaceBeforeProtocolList: true +PenaltyBreakBeforeFirstCallParameter: 19 +PenaltyBreakComment: 300 +PenaltyBreakString: 1000 +PenaltyBreakFirstLessLess: 120 +PenaltyExcessCharacter: 1000000 +PenaltyReturnTypeOnItsOwnLine: 60 +PointerBindsToType: true +SpacesBeforeTrailingComments: 1 +Cpp11BracedListStyle: false +Standard: Cpp03 +IndentWidth: 8 +TabWidth: 8 +UseTab: Never +BreakBeforeBraces: Stroustrup +IndentFunctionDeclarationAfterType: false +SpacesInParentheses: false +SpacesInAngles: false +SpaceInEmptyParentheses: false +SpacesInCStyleCastParentheses: false +SpacesInContainerLiterals: true +SpaceBeforeAssignmentOperators: true +ContinuationIndentWidth: 20 +CommentPragmas: '^ IWYU pragma:' +ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ] +SpaceBeforeParens: ControlStatements +... diff --git a/F-Script 10.9 copy-Info.plist b/F-Script 10.9 copy-Info.plist new file mode 100644 index 0000000..b2d8a89 --- /dev/null +++ b/F-Script 10.9 copy-Info.plist @@ -0,0 +1,109 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + F-Script + CFBundleGetInfoString + + CFBundleIconFile + fs.icns + CFBundleIdentifier + org.fscript.fscriptapp + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + F-Script + CFBundlePackageType + APPL + CFBundleShortVersionString + 2.2 + CFBundleSignature + ???? + CFBundleVersion + 2.2 + LSEnvironment + + NSAppleScriptEnabled + YES + NSHumanReadableCopyright + Copyright © 1998-2010 Philippe Mougin. + NSMainNibFile + fs.nib + NSPrincipalClass + NSApplication + NSServices + + + NSMenuItem + + default + F-Script/Execute Selection + + NSMessage + execute + NSPortName + F-Script + NSReturnTypes + + NSStringPboardType + + NSSendTypes + + NSStringPboardType + + + + NSMenuItem + + default + F-Script/View/Put Command + + NSMessage + putCommand + NSPortName + F-Script + NSSendTypes + + NSStringPboardType + + + + NSMenuItem + + default + F-Script/View/Put Command (Ret=execute) + + NSMessage + putCommand + NSPortName + F-Script + NSSendTypes + + NSStringPboardType + + NSUserData + DECOMPOSE + + + NSMenuItem + + default + F-Script/View/Put Command (Ret=newline) + + NSMessage + putCommand + NSPortName + F-Script + NSSendTypes + + NSStringPboardType + + NSUserData + NO_DECOMPOSE + + + + diff --git a/F-Script/English.lproj/fs.xib b/F-Script/English.lproj/fs.xib new file mode 100644 index 0000000..e0ab91b --- /dev/null +++ b/F-Script/English.lproj/fs.xib @@ -0,0 +1,3287 @@ + + + + 1050 + 14A379a + 941 + 1343.13 + 755.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 941 + + + YES + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + NSApplication + + + FirstResponder + + + NSApplication + + + 15 + 2 + {{272, 346}, {678, 407}} + 1350041600 + F-Script + NSWindow + View + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {92, 10} + + + 256 + + YES + + + 274 + {678, 407} + + FSInterpreterView + + + {678, 407} + + {{0, 0}, {1680, 1028}} + {92, 32} + {1.7976931348623157e+308, 1.7976931348623157e+308} + mainWindow + YES + + + fs + + YES + + + F-Script + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + + F-Script + + YES + + + About F-Script + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Preferences... + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + + + Services + + + YES + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide F-Script + h + 1048576 + 2147483647 + + + + + + Hide Others + h + 1572864 + 2147483647 + + + + + + Show All + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit F-Script + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + Workspace + + 1048576 + 2147483647 + + + submenuAction: + + + Workspace + + YES + + + Open Object Browser + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Close Window + w + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Page Setup... + P + 1048576 + 2147483647 + + + + + + Print... + p + 1048576 + 2147483647 + + + + + + + + + Edit + + 1048576 + 2147483647 + + + submenuAction: + + + Edit + + YES + + + Undo + z + 1048576 + 2147483647 + + + + + + Redo + Z + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Cut + x + 1048576 + 2147483647 + + + + + + Copy + c + 1048576 + 2147483647 + + + + + + Paste + v + 1048576 + 2147483647 + + + + + + Delete + + 1048576 + 2147483647 + + + + + + Select All + a + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Find + + 1048576 + 2147483647 + + + submenuAction: + + + + Find + + + YES + + + Find… + f + 1048576 + 2147483647 + + + 1 + + + + Find Next + g + 1048576 + 2147483647 + + + 2 + + + + Find Previous + G + 1048576 + 2147483647 + + + 3 + + + + Use Selection for Find + e + 1048576 + 2147483647 + + + 7 + + + + Jump to Selection + j + 1048576 + 2147483647 + + + + + + + + + Spelling + + 1048576 + 2147483647 + + + submenuAction: + + + Spelling + + YES + + + Spelling... + : + 1048576 + 2147483647 + + + + + + Check Spelling + ; + 1048576 + 2147483647 + + + + + + Check Spelling As You Type + + 1048576 + 2147483647 + + + + + + + + + Speech + + 1048576 + 2147483647 + + + submenuAction: + + + Speech + + YES + + + Start speaking + + 1048576 + 2147483647 + + + + + + Stop speaking + + 1048576 + 2147483647 + + + + + + + + YES + + + + + View + + 1048576 + 2147483647 + + + submenuAction: + + + View + + YES + + + Customize Toolbar... + + 1048576 + 2147483647 + + + + + + + + + Format + + 1048576 + 2147483647 + + + submenuAction: + + + + Format + + + YES + + + Font + + 1048576 + 2147483647 + + + submenuAction: + + + + Font + + + YES + + + Show Fonts + t + 1048576 + 2147483647 + + + + + + Bold + b + 1048576 + 2147483647 + + + 2 + + + + Italic + i + 1048576 + 2147483647 + + + 1 + + + + Underline + u + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Bigger + + + 1048576 + 2147483647 + + + 3 + + + + Smaller + - + 1048576 + 2147483647 + + + 4 + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Kern + + 1048576 + 2147483647 + + + submenuAction: + + + + Kern + + + YES + + + Use Default + + 1048576 + 2147483647 + + + + + + Use None + + 1048576 + 2147483647 + + + + + + Tighten + + 1048576 + 2147483647 + + + + + + Loosen + + 1048576 + 2147483647 + + + + + + + + + Ligature + + 1048576 + 2147483647 + + + submenuAction: + + + + Ligature + + + YES + + + Use Default + + 1048576 + 2147483647 + + + + + + Use None + + 1048576 + 2147483647 + + + + + + Use All + + 1048576 + 2147483647 + + + + + + + + + Baseline + + 1048576 + 2147483647 + + + submenuAction: + + + + Baseline + + + YES + + + Use Default + + 1048576 + 2147483647 + + + + + + Superscript + + 1048576 + 2147483647 + + + + + + Subscript + + 1048576 + 2147483647 + + + + + + Raise + + 1048576 + 2147483647 + + + + + + Lower + + 1048576 + 2147483647 + + + + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Show Colors + C + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Copy Style + c + 1572864 + 2147483647 + + + + + + Paste Style + v + 1572864 + 2147483647 + + + + + _NSFontMenu + + + + + Text + + 1048576 + 2147483647 + + + submenuAction: + + + + Text + + + YES + + + Align Left + { + 1048576 + 2147483647 + + + + + + Center + | + 1048576 + 2147483647 + + + + + + Justify + + 1048576 + 2147483647 + + + + + + Align Right + } + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Show Ruler + + 1048576 + 2147483647 + + + + + + Copy Ruler + c + 1310720 + 2147483647 + + + + + + Paste Ruler + v + 1310720 + 2147483647 + + + + + + + + + + + + Window + + 1048576 + 2147483647 + + + submenuAction: + + + + Window + + + YES + + + Minimize + m + 1048576 + 2147483647 + + + + + + Zoom + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Bring All to Front + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + _NSMainMenu + YES + + + FScriptAppController + + + NSFontManager + + + + + YES + + + interpreterView + + + + 121 + + + + delegate + + + + 127 + + + + delete: + + + + 189 + + + + selectAll: + + + + 190 + + + + paste: + + + + 191 + + + + copy: + + + + 192 + + + + cut: + + + + 193 + + + + print: + + + + 311 + + + + unhideAllApplications: + + + + 344 + + + + hide: + + + + 345 + + + + hideOtherApplications: + + + + 346 + + + + terminate: + + + + 347 + + + + showInfoPanel: + + + + 348 + + + + showPreferencePanel: + + + + 349 + + + + runPageLayout: + + + + 353 + + + + checkSpelling: + + + + 400 + + + + showGuessPanel: + + + + 401 + + + + toggleContinuousSpellChecking: + + + + 402 + + + + stopSpeaking: + + + + 407 + + + + startSpeaking: + + + + 408 + + + + redo: + + + + 467 + + + + undo: + + + + 468 + + + + runToolbarCustomizationPalette: + + + + 604 + + + + initialFirstResponder + + + + 606 + + + + performFindPanelAction: + + + + 614 + + + + centerSelectionInVisibleArea: + + + + 615 + + + + performFindPanelAction: + + + + 616 + + + + performFindPanelAction: + + + + 617 + + + + performFindPanelAction: + + + + 618 + + + + copyFont: + + + + 760 + + + + pasteFont: + + + + 761 + + + + pasteRuler: + + + + 762 + + + + underline: + + + + 763 + + + + superscript: + + + + 764 + + + + alignJustified: + + + + 765 + + + + orderFrontColorPanel: + + + + 766 + + + + useStandardLigatures: + + + + 767 + + + + tightenKerning: + + + + 768 + + + + addFontTrait: + + + + 769 + + + + raiseBaseline: + + + + 770 + + + + addFontTrait: + + + + 771 + + + + orderFrontFontPanel: + + + + 772 + + + + copyRuler: + + + + 773 + + + + alignLeft: + + + + 774 + + + + unscript: + + + + 775 + + + + toggleRuler: + + + + 776 + + + + turnOffKerning: + + + + 777 + + + + turnOffLigatures: + + + + 778 + + + + subscript: + + + + 779 + + + + lowerBaseline: + + + + 780 + + + + alignCenter: + + + + 781 + + + + alignRight: + + + + 782 + + + + useAllLigatures: + + + + 783 + + + + useStandardKerning: + + + + 784 + + + + modifyFont: + + + + 785 + + + + modifyFont: + + + + 786 + + + + loosenKerning: + + + + 787 + + + + performZoom: + + + + 794 + + + + arrangeInFront: + + + + 795 + + + + performMiniaturize: + + + + 796 + + + + performClose: + + + + 832 + + + + delegate + + + + 835 + + + + newObjectBrowser: + + + + 863 + + + + + YES + + 0 + + YES + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 21 + + + YES + + + + MyWindow + + + 2 + + + YES + + + + + + 119 + + + + + 44 + + + YES + + + + + + + + + MainMenu + + + 175 + + + YES + + + + + + 159 + + + YES + + + + + + + + + + + + + + + + + 164 + + + + + 165 + + + + + 167 + + + + + 173 + + + + + 181 + + + + + 396 + + + YES + + + + + + 398 + + + YES + + + + + + + + 395 + + + + + 397 + + + + + 399 + + + + + 406 + + + YES + + + + + + 403 + + + YES + + + + + + + 404 + + + + + 405 + + + + + 416 + + + + + 425 + + + + + 465 + + + + + 466 + + + + + 611 + + + YES + + + + + + 607 + + + YES + + + + + + + + + + 608 + + + + + 609 + + + + + 610 + + + + + 612 + + + + + 613 + + + + + 307 + + + YES + + + + + + 309 + + + YES + + + + + + + + + + + 304 + + + + + 305 + + + + + 352 + + + + + 646 + + + + + 650 + + + + + 651 + + + + + 342 + + + YES + + + + + + 343 + + + YES + + + + + + + + + + + + + + + + 331 + + + YES + + + + + + 334 + + + + + 332 + + + + + 333 + + + + + 335 + + + + + 336 + + + + + 337 + + + + + 338 + + + + + 339 + + + + + 340 + + + + + 341 + + + + + 670 + + + + + 601 + + + YES + + + + + + 596 + + + YES + + + + + + 598 + + + + + 715 + + + YES + + + + + + 740 + + + YES + + + + + + + 727 + + + YES + + + + + + 744 + + + YES + + + + + + + + + + + + + + + + + + + + + 717 + + + + + 718 + + + YES + + + + + + 750 + + + YES + + + + + + + + 732 + + + + + 755 + + + + + 758 + + + + + 720 + + + + + 721 + + + + + 723 + + + + + 724 + + + + + 725 + + + + + 730 + + + + + 735 + + + + + 738 + + + YES + + + + + + 716 + + + YES + + + + + + + + + 726 + + + + + 737 + + + + + 745 + + + + + 753 + + + + + 739 + + + + + 741 + + + + + 743 + + + + + 746 + + + + + 752 + + + + + 756 + + + YES + + + + + + 734 + + + YES + + + + + + + + + + 729 + + + + + 731 + + + + + 747 + + + + + 754 + + + + + 757 + + + + + 733 + + + YES + + + + + + 749 + + + YES + + + + + + + + + + + + + 719 + + + + + 722 + + + + + 728 + + + + + 736 + + + + + 742 + + + + + 748 + + + + + 751 + + + + + 759 + + + + + 788 + + + YES + + + + + + 792 + + + YES + + + + + + + + + 789 + + + + + 790 + + + + + 791 + + + + + 793 + + + + + 120 + + + FScriptAppControler + + + 252 + + + Font Manager + + + + + YES + + YES + -3.IBPluginDependency + -3.ImportedFromIB2 + 119.IBPluginDependency + 119.ImportedFromIB2 + 120.ImportedFromIB2 + 159.IBPluginDependency + 159.ImportedFromIB2 + 164.IBPluginDependency + 164.ImportedFromIB2 + 165.IBPluginDependency + 165.ImportedFromIB2 + 167.IBPluginDependency + 167.ImportedFromIB2 + 173.IBPluginDependency + 173.ImportedFromIB2 + 175.IBPluginDependency + 175.ImportedFromIB2 + 181.IBPluginDependency + 181.ImportedFromIB2 + 2.IBPluginDependency + 2.ImportedFromIB2 + 21.IBPluginDependency + 21.ImportedFromIB2 + 21.NSWindowTemplate.visibleAtLaunch + 21.windowTemplate.hasMinSize + 21.windowTemplate.minSize + 252.ImportedFromIB2 + 304.IBPluginDependency + 304.ImportedFromIB2 + 305.IBPluginDependency + 305.ImportedFromIB2 + 307.IBPluginDependency + 307.ImportedFromIB2 + 309.IBPluginDependency + 309.ImportedFromIB2 + 331.IBPluginDependency + 331.ImportedFromIB2 + 332.IBPluginDependency + 332.ImportedFromIB2 + 333.IBPluginDependency + 333.ImportedFromIB2 + 334.IBPluginDependency + 334.ImportedFromIB2 + 335.IBPluginDependency + 335.ImportedFromIB2 + 336.IBPluginDependency + 336.ImportedFromIB2 + 337.IBPluginDependency + 337.ImportedFromIB2 + 338.IBPluginDependency + 338.ImportedFromIB2 + 339.IBPluginDependency + 339.ImportedFromIB2 + 340.IBPluginDependency + 340.ImportedFromIB2 + 341.IBPluginDependency + 341.ImportedFromIB2 + 342.IBPluginDependency + 342.ImportedFromIB2 + 343.IBPluginDependency + 343.ImportedFromIB2 + 352.IBPluginDependency + 352.ImportedFromIB2 + 395.IBPluginDependency + 395.ImportedFromIB2 + 396.IBPluginDependency + 396.ImportedFromIB2 + 397.IBPluginDependency + 397.ImportedFromIB2 + 398.IBPluginDependency + 398.ImportedFromIB2 + 399.IBPluginDependency + 399.ImportedFromIB2 + 403.IBPluginDependency + 403.ImportedFromIB2 + 404.IBPluginDependency + 404.ImportedFromIB2 + 405.IBPluginDependency + 405.ImportedFromIB2 + 406.IBPluginDependency + 406.ImportedFromIB2 + 416.IBPluginDependency + 416.ImportedFromIB2 + 425.IBPluginDependency + 425.ImportedFromIB2 + 44.IBPluginDependency + 44.ImportedFromIB2 + 465.IBPluginDependency + 465.ImportedFromIB2 + 466.IBPluginDependency + 466.ImportedFromIB2 + 596.IBPluginDependency + 596.ImportedFromIB2 + 598.IBPluginDependency + 598.ImportedFromIB2 + 601.IBPluginDependency + 601.ImportedFromIB2 + 607.IBPluginDependency + 607.ImportedFromIB2 + 608.IBPluginDependency + 608.ImportedFromIB2 + 609.IBPluginDependency + 609.ImportedFromIB2 + 610.IBPluginDependency + 610.ImportedFromIB2 + 611.IBPluginDependency + 611.ImportedFromIB2 + 612.IBPluginDependency + 612.ImportedFromIB2 + 613.IBPluginDependency + 613.ImportedFromIB2 + 646.IBPluginDependency + 646.ImportedFromIB2 + 650.IBPluginDependency + 650.ImportedFromIB2 + 651.IBPluginDependency + 651.ImportedFromIB2 + 670.IBPluginDependency + 670.ImportedFromIB2 + 715.IBPluginDependency + 715.ImportedFromIB2 + 716.IBPluginDependency + 716.ImportedFromIB2 + 717.IBPluginDependency + 717.ImportedFromIB2 + 718.IBPluginDependency + 718.ImportedFromIB2 + 719.IBPluginDependency + 719.ImportedFromIB2 + 720.IBPluginDependency + 720.ImportedFromIB2 + 721.IBPluginDependency + 721.ImportedFromIB2 + 722.IBPluginDependency + 722.ImportedFromIB2 + 723.IBPluginDependency + 723.ImportedFromIB2 + 724.IBPluginDependency + 724.ImportedFromIB2 + 725.IBPluginDependency + 725.ImportedFromIB2 + 726.IBPluginDependency + 726.ImportedFromIB2 + 727.IBPluginDependency + 727.ImportedFromIB2 + 728.IBPluginDependency + 728.ImportedFromIB2 + 729.IBPluginDependency + 729.ImportedFromIB2 + 730.IBPluginDependency + 730.ImportedFromIB2 + 731.IBPluginDependency + 731.ImportedFromIB2 + 732.IBPluginDependency + 732.ImportedFromIB2 + 733.IBPluginDependency + 733.ImportedFromIB2 + 734.IBPluginDependency + 734.ImportedFromIB2 + 735.IBPluginDependency + 735.ImportedFromIB2 + 736.IBPluginDependency + 736.ImportedFromIB2 + 737.IBPluginDependency + 737.ImportedFromIB2 + 738.IBPluginDependency + 738.ImportedFromIB2 + 739.IBPluginDependency + 739.ImportedFromIB2 + 740.IBPluginDependency + 740.ImportedFromIB2 + 741.IBPluginDependency + 741.ImportedFromIB2 + 742.IBPluginDependency + 742.ImportedFromIB2 + 743.IBPluginDependency + 743.ImportedFromIB2 + 744.IBPluginDependency + 744.ImportedFromIB2 + 745.IBPluginDependency + 745.ImportedFromIB2 + 746.IBPluginDependency + 746.ImportedFromIB2 + 747.IBPluginDependency + 747.ImportedFromIB2 + 748.IBPluginDependency + 748.ImportedFromIB2 + 749.IBPluginDependency + 749.ImportedFromIB2 + 750.IBPluginDependency + 750.ImportedFromIB2 + 751.IBPluginDependency + 751.ImportedFromIB2 + 752.IBPluginDependency + 752.ImportedFromIB2 + 753.IBPluginDependency + 753.ImportedFromIB2 + 754.IBPluginDependency + 754.ImportedFromIB2 + 755.IBPluginDependency + 755.ImportedFromIB2 + 756.IBPluginDependency + 756.ImportedFromIB2 + 757.IBPluginDependency + 757.ImportedFromIB2 + 758.IBPluginDependency + 758.ImportedFromIB2 + 759.IBPluginDependency + 759.ImportedFromIB2 + 788.IBPluginDependency + 788.ImportedFromIB2 + 789.IBPluginDependency + 789.ImportedFromIB2 + 790.IBPluginDependency + 790.ImportedFromIB2 + 791.IBPluginDependency + 791.ImportedFromIB2 + 792.IBPluginDependency + 792.ImportedFromIB2 + 793.IBPluginDependency + 793.ImportedFromIB2 + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + {92, 10} + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + YES + + + YES + + + + + YES + + + YES + + + + 871 + + + + YES + + FSInterpreterView + + YES + + YES + object1 + object2 + object3 + object4 + object5 + object6 + object7 + object8 + object9 + + + YES + id + id + id + id + id + id + id + id + id + + + + YES + + YES + object1 + object2 + object3 + object4 + object5 + object6 + object7 + object8 + object9 + + + YES + + object1 + id + + + object2 + id + + + object3 + id + + + object4 + id + + + object5 + id + + + object6 + id + + + object7 + id + + + object8 + id + + + object9 + id + + + + + IBUserSource + + + + + FScriptAppController + NSObject + + YES + + YES + newDemoAssistant: + newKVBrowser: + newObjectBrowser: + showConsole: + showInfoPanel: + showPreferencePanel: + updatePreference: + + + YES + id + id + id + id + id + id + id + + + + YES + + YES + newDemoAssistant: + newKVBrowser: + newObjectBrowser: + showConsole: + showInfoPanel: + showPreferencePanel: + updatePreference: + + + YES + + newDemoAssistant: + id + + + newKVBrowser: + id + + + newObjectBrowser: + id + + + showConsole: + id + + + showInfoPanel: + id + + + showPreferencePanel: + id + + + updatePreference: + id + + + + + YES + + YES + automaticallyIntrospectDeclaredPropertiesUI + confirmWhenQuittingUI + displayObjectBrowserAtLaunchTimeUI + fontSizeUI + infoPanel + interpreterView + preferencePanel + runWithObjCAutomaticGarbageCollectionUI + shouldJournalUI + + + YES + NSButton + NSButton + NSButton + NSTextField + NSPanel + FSInterpreterView + NSPanel + NSButton + NSButton + + + + YES + + YES + automaticallyIntrospectDeclaredPropertiesUI + confirmWhenQuittingUI + displayObjectBrowserAtLaunchTimeUI + fontSizeUI + infoPanel + interpreterView + preferencePanel + runWithObjCAutomaticGarbageCollectionUI + shouldJournalUI + + + YES + + automaticallyIntrospectDeclaredPropertiesUI + NSButton + + + confirmWhenQuittingUI + NSButton + + + displayObjectBrowserAtLaunchTimeUI + NSButton + + + fontSizeUI + NSTextField + + + infoPanel + NSPanel + + + interpreterView + FSInterpreterView + + + preferencePanel + NSPanel + + + runWithObjCAutomaticGarbageCollectionUI + NSButton + + + shouldJournalUI + NSButton + + + + + IBUserSource + + + + + FScriptTextView + NSTextView + + IBUserSource + + + + + FirstResponder + + YES + + YES + enterSelection: + findNext: + findPrevious: + newBigBrowser: + orderFrontFindPanel: + + + YES + id + id + id + id + id + + + + YES + + YES + enterSelection: + findNext: + findPrevious: + newBigBrowser: + orderFrontFindPanel: + + + YES + + enterSelection: + id + + + findNext: + id + + + findPrevious: + id + + + newBigBrowser: + id + + + orderFrontFindPanel: + id + + + + + IBUserSource + + + + + NSObject + + IBUserSource + + + + + ShellView + FScriptTextView + + YES + + YES + executeCurrentCommand: + moveDown: + moveLeft: + moveToBeginningOfLine: + moveToBeginningOfParagraph: + moveToEndOfLine: + moveToEndOfParagraph: + moveUp: + parenthesizeCommand: + paste: + saveEditedCommand: + switchParserMode: + + + YES + id + id + id + id + id + id + id + id + id + id + id + id + + + + YES + + YES + executeCurrentCommand: + moveDown: + moveLeft: + moveToBeginningOfLine: + moveToBeginningOfParagraph: + moveToEndOfLine: + moveToEndOfParagraph: + moveUp: + parenthesizeCommand: + paste: + saveEditedCommand: + switchParserMode: + + + YES + + executeCurrentCommand: + id + + + moveDown: + id + + + moveLeft: + id + + + moveToBeginningOfLine: + id + + + moveToBeginningOfParagraph: + id + + + moveToEndOfLine: + id + + + moveToEndOfParagraph: + id + + + moveUp: + id + + + parenthesizeCommand: + id + + + paste: + id + + + saveEditedCommand: + id + + + switchParserMode: + id + + + + + commandHandler + id + + + commandHandler + + commandHandler + id + + + + IBUserSource + + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + ../../FScript.xcodeproj + 3 + + YES + + YES + NSMenuCheckmark + NSMenuMixedState + + + YES + {12, 12} + {10, 2} + + + + diff --git a/F-Script/English.lproj/fs~.xib b/F-Script/English.lproj/fs~.xib new file mode 100644 index 0000000..e2ff1f9 --- /dev/null +++ b/F-Script/English.lproj/fs~.xib @@ -0,0 +1,3052 @@ + + + + 1020 + 14A379a + 941 + 1343.13 + 755.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 941 + + + YES + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + NSApplication + + + FirstResponder + + + NSApplication + + + 15 + 2 + {{272, 346}, {678, 407}} + 1350041600 + F-Script + NSWindow + View + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {92, 10} + + + 256 + + YES + + + 274 + {678, 407} + + FSInterpreterView + + + {{1, 9}, {678, 407}} + + {{0, 0}, {1440, 878}} + {92, 32} + {1.7976931348623157e+308, 1.7976931348623157e+308} + mainWindow + YES + + + fs + + YES + + + F-Script + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + + F-Script + + YES + + + About F-Script + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Preferences... + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + + + Services + + + YES + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide F-Script + h + 1048576 + 2147483647 + + + + + + Hide Others + h + 1572864 + 2147483647 + + + + + + Show All + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit F-Script + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + Workspace + + 1048576 + 2147483647 + + + submenuAction: + + + Workspace + + YES + + + Open Object Browser + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Close Window + w + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Page Setup... + P + 1048576 + 2147483647 + + + + + + Print... + p + 1048576 + 2147483647 + + + + + + + + + Edit + + 1048576 + 2147483647 + + + submenuAction: + + + Edit + + YES + + + Undo + z + 1048576 + 2147483647 + + + + + + Redo + Z + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Cut + x + 1048576 + 2147483647 + + + + + + Copy + c + 1048576 + 2147483647 + + + + + + Paste + v + 1048576 + 2147483647 + + + + + + Delete + + 1048576 + 2147483647 + + + + + + Select All + a + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Find + + 1048576 + 2147483647 + + + submenuAction: + + + + Find + + + YES + + + Find… + f + 1048576 + 2147483647 + + + 1 + + + + Find Next + g + 1048576 + 2147483647 + + + 2 + + + + Find Previous + G + 1048576 + 2147483647 + + + 3 + + + + Use Selection for Find + e + 1048576 + 2147483647 + + + 7 + + + + Jump to Selection + j + 1048576 + 2147483647 + + + + + + + + + Spelling + + 1048576 + 2147483647 + + + submenuAction: + + + Spelling + + YES + + + Spelling... + : + 1048576 + 2147483647 + + + + + + Check Spelling + ; + 1048576 + 2147483647 + + + + + + Check Spelling As You Type + + 1048576 + 2147483647 + + + + + + + + + Speech + + 1048576 + 2147483647 + + + submenuAction: + + + Speech + + YES + + + Start speaking + + 1048576 + 2147483647 + + + + + + Stop speaking + + 1048576 + 2147483647 + + + + + + + + YES + + + + + View + + 1048576 + 2147483647 + + + submenuAction: + + + View + + YES + + + Customize Toolbar... + + 1048576 + 2147483647 + + + + + + + + + Format + + 1048576 + 2147483647 + + + submenuAction: + + + + Format + + + YES + + + Font + + 1048576 + 2147483647 + + + submenuAction: + + + + Font + + + YES + + + Show Fonts + t + 1048576 + 2147483647 + + + + + + Bold + b + 1048576 + 2147483647 + + + 2 + + + + Italic + i + 1048576 + 2147483647 + + + 1 + + + + Underline + u + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Bigger + + + 1048576 + 2147483647 + + + 3 + + + + Smaller + - + 1048576 + 2147483647 + + + 4 + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Kern + + 1048576 + 2147483647 + + + submenuAction: + + + + Kern + + + YES + + + Use Default + + 1048576 + 2147483647 + + + + + + Use None + + 1048576 + 2147483647 + + + + + + Tighten + + 1048576 + 2147483647 + + + + + + Loosen + + 1048576 + 2147483647 + + + + + + + + + Ligature + + 1048576 + 2147483647 + + + submenuAction: + + + + Ligature + + + YES + + + Use Default + + 1048576 + 2147483647 + + + + + + Use None + + 1048576 + 2147483647 + + + + + + Use All + + 1048576 + 2147483647 + + + + + + + + + Baseline + + 1048576 + 2147483647 + + + submenuAction: + + + + Baseline + + + YES + + + Use Default + + 1048576 + 2147483647 + + + + + + Superscript + + 1048576 + 2147483647 + + + + + + Subscript + + 1048576 + 2147483647 + + + + + + Raise + + 1048576 + 2147483647 + + + + + + Lower + + 1048576 + 2147483647 + + + + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Show Colors + C + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Copy Style + c + 1572864 + 2147483647 + + + + + + Paste Style + v + 1572864 + 2147483647 + + + + + _NSFontMenu + + + + + Text + + 1048576 + 2147483647 + + + submenuAction: + + + + Text + + + YES + + + Align Left + { + 1048576 + 2147483647 + + + + + + Center + | + 1048576 + 2147483647 + + + + + + Justify + + 1048576 + 2147483647 + + + + + + Align Right + } + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Show Ruler + + 1048576 + 2147483647 + + + + + + Copy Ruler + c + 1310720 + 2147483647 + + + + + + Paste Ruler + v + 1310720 + 2147483647 + + + + + + + + + + + + Window + + 1048576 + 2147483647 + + + submenuAction: + + + + Window + + + YES + + + Minimize + m + 1048576 + 2147483647 + + + + + + Zoom + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Bring All to Front + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + _NSMainMenu + YES + + + FScriptAppControler + + + NSFontManager + + + + + YES + + + interpreterView + + + + 121 + + + + delegate + + + + 127 + + + + delete: + + + + 189 + + + + selectAll: + + + + 190 + + + + paste: + + + + 191 + + + + copy: + + + + 192 + + + + cut: + + + + 193 + + + + print: + + + + 311 + + + + unhideAllApplications: + + + + 344 + + + + hide: + + + + 345 + + + + hideOtherApplications: + + + + 346 + + + + terminate: + + + + 347 + + + + showInfoPanel: + + + + 348 + + + + showPreferencePanel: + + + + 349 + + + + runPageLayout: + + + + 353 + + + + newBigBrowser: + + + + 355 + + + + checkSpelling: + + + + 400 + + + + showGuessPanel: + + + + 401 + + + + toggleContinuousSpellChecking: + + + + 402 + + + + stopSpeaking: + + + + 407 + + + + startSpeaking: + + + + 408 + + + + redo: + + + + 467 + + + + undo: + + + + 468 + + + + runToolbarCustomizationPalette: + + + + 604 + + + + initialFirstResponder + + + + 606 + + + + performFindPanelAction: + + + + 614 + + + + centerSelectionInVisibleArea: + + + + 615 + + + + performFindPanelAction: + + + + 616 + + + + performFindPanelAction: + + + + 617 + + + + performFindPanelAction: + + + + 618 + + + + copyFont: + + + + 760 + + + + pasteFont: + + + + 761 + + + + pasteRuler: + + + + 762 + + + + underline: + + + + 763 + + + + superscript: + + + + 764 + + + + alignJustified: + + + + 765 + + + + orderFrontColorPanel: + + + + 766 + + + + useStandardLigatures: + + + + 767 + + + + tightenKerning: + + + + 768 + + + + addFontTrait: + + + + 769 + + + + raiseBaseline: + + + + 770 + + + + addFontTrait: + + + + 771 + + + + orderFrontFontPanel: + + + + 772 + + + + copyRuler: + + + + 773 + + + + alignLeft: + + + + 774 + + + + unscript: + + + + 775 + + + + toggleRuler: + + + + 776 + + + + turnOffKerning: + + + + 777 + + + + turnOffLigatures: + + + + 778 + + + + subscript: + + + + 779 + + + + lowerBaseline: + + + + 780 + + + + alignCenter: + + + + 781 + + + + alignRight: + + + + 782 + + + + useAllLigatures: + + + + 783 + + + + useStandardKerning: + + + + 784 + + + + modifyFont: + + + + 785 + + + + modifyFont: + + + + 786 + + + + loosenKerning: + + + + 787 + + + + performZoom: + + + + 794 + + + + arrangeInFront: + + + + 795 + + + + performMiniaturize: + + + + 796 + + + + performClose: + + + + 832 + + + + delegate + + + + 835 + + + + + YES + + 0 + + YES + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + 21 + + + YES + + + + MyWindow + + + 2 + + + YES + + + + + + 119 + + + + + 44 + + + YES + + + + + + + + + MainMenu + + + 175 + + + YES + + + + + + 159 + + + YES + + + + + + + + + + + + + + + + + 164 + + + + + 165 + + + + + 167 + + + + + 173 + + + + + 181 + + + + + 396 + + + YES + + + + + + 398 + + + YES + + + + + + + + 395 + + + + + 397 + + + + + 399 + + + + + 406 + + + YES + + + + + + 403 + + + YES + + + + + + + 404 + + + + + 405 + + + + + 416 + + + + + 425 + + + + + 465 + + + + + 466 + + + + + 611 + + + YES + + + + + + 607 + + + YES + + + + + + + + + + 608 + + + + + 609 + + + + + 610 + + + + + 612 + + + + + 613 + + + + + 307 + + + YES + + + + + + 309 + + + YES + + + + + + + + + + + 304 + + + + + 305 + + + + + 352 + + + + + 646 + + + + + 650 + + + + + 651 + + + + + 342 + + + YES + + + + + + 343 + + + YES + + + + + + + + + + + + + + + + 331 + + + YES + + + + + + 334 + + + + + 332 + + + + + 333 + + + + + 335 + + + + + 336 + + + + + 337 + + + + + 338 + + + + + 339 + + + + + 340 + + + + + 341 + + + + + 670 + + + + + 601 + + + YES + + + + + + 596 + + + YES + + + + + + 598 + + + + + 715 + + + YES + + + + + + 740 + + + YES + + + + + + + 727 + + + YES + + + + + + 744 + + + YES + + + + + + + + + + + + + + + + + + + + + 717 + + + + + 718 + + + YES + + + + + + 750 + + + YES + + + + + + + + 732 + + + + + 755 + + + + + 758 + + + + + 720 + + + + + 721 + + + + + 723 + + + + + 724 + + + + + 725 + + + + + 730 + + + + + 735 + + + + + 738 + + + YES + + + + + + 716 + + + YES + + + + + + + + + 726 + + + + + 737 + + + + + 745 + + + + + 753 + + + + + 739 + + + + + 741 + + + + + 743 + + + + + 746 + + + + + 752 + + + + + 756 + + + YES + + + + + + 734 + + + YES + + + + + + + + + + 729 + + + + + 731 + + + + + 747 + + + + + 754 + + + + + 757 + + + + + 733 + + + YES + + + + + + 749 + + + YES + + + + + + + + + + + + + 719 + + + + + 722 + + + + + 728 + + + + + 736 + + + + + 742 + + + + + 748 + + + + + 751 + + + + + 759 + + + + + 788 + + + YES + + + + + + 792 + + + YES + + + + + + + + + 789 + + + + + 790 + + + + + 791 + + + + + 793 + + + + + 120 + + + FScriptAppControler + + + 252 + + + Font Manager + + + -3 + + + Application + + + + + YES + + YES + 119.IBPluginDependency + 119.ImportedFromIB2 + 120.ImportedFromIB2 + 159.IBPluginDependency + 159.ImportedFromIB2 + 164.IBPluginDependency + 164.ImportedFromIB2 + 165.IBPluginDependency + 165.ImportedFromIB2 + 167.IBPluginDependency + 167.ImportedFromIB2 + 173.IBPluginDependency + 173.ImportedFromIB2 + 175.IBPluginDependency + 175.ImportedFromIB2 + 181.IBPluginDependency + 181.ImportedFromIB2 + 2.IBPluginDependency + 2.ImportedFromIB2 + 21.IBPluginDependency + 21.ImportedFromIB2 + 21.NSWindowTemplate.visibleAtLaunch + 21.windowTemplate.hasMinSize + 21.windowTemplate.minSize + 252.ImportedFromIB2 + 304.IBPluginDependency + 304.ImportedFromIB2 + 305.IBPluginDependency + 305.ImportedFromIB2 + 307.IBPluginDependency + 307.ImportedFromIB2 + 309.IBPluginDependency + 309.ImportedFromIB2 + 331.IBPluginDependency + 331.ImportedFromIB2 + 332.IBPluginDependency + 332.ImportedFromIB2 + 333.IBPluginDependency + 333.ImportedFromIB2 + 334.IBPluginDependency + 334.ImportedFromIB2 + 335.IBPluginDependency + 335.ImportedFromIB2 + 336.IBPluginDependency + 336.ImportedFromIB2 + 337.IBPluginDependency + 337.ImportedFromIB2 + 338.IBPluginDependency + 338.ImportedFromIB2 + 339.IBPluginDependency + 339.ImportedFromIB2 + 340.IBPluginDependency + 340.ImportedFromIB2 + 341.IBPluginDependency + 341.ImportedFromIB2 + 342.IBPluginDependency + 342.ImportedFromIB2 + 343.IBPluginDependency + 343.ImportedFromIB2 + 352.IBPluginDependency + 352.ImportedFromIB2 + 395.IBPluginDependency + 395.ImportedFromIB2 + 396.IBPluginDependency + 396.ImportedFromIB2 + 397.IBPluginDependency + 397.ImportedFromIB2 + 398.IBPluginDependency + 398.ImportedFromIB2 + 399.IBPluginDependency + 399.ImportedFromIB2 + 403.IBPluginDependency + 403.ImportedFromIB2 + 404.IBPluginDependency + 404.ImportedFromIB2 + 405.IBPluginDependency + 405.ImportedFromIB2 + 406.IBPluginDependency + 406.ImportedFromIB2 + 416.IBPluginDependency + 416.ImportedFromIB2 + 425.IBPluginDependency + 425.ImportedFromIB2 + 44.IBPluginDependency + 44.ImportedFromIB2 + 465.IBPluginDependency + 465.ImportedFromIB2 + 466.IBPluginDependency + 466.ImportedFromIB2 + 596.IBPluginDependency + 596.ImportedFromIB2 + 598.IBPluginDependency + 598.ImportedFromIB2 + 601.IBPluginDependency + 601.ImportedFromIB2 + 607.IBPluginDependency + 607.ImportedFromIB2 + 608.IBPluginDependency + 608.ImportedFromIB2 + 609.IBPluginDependency + 609.ImportedFromIB2 + 610.IBPluginDependency + 610.ImportedFromIB2 + 611.IBPluginDependency + 611.ImportedFromIB2 + 612.IBPluginDependency + 612.ImportedFromIB2 + 613.IBPluginDependency + 613.ImportedFromIB2 + 646.IBPluginDependency + 646.ImportedFromIB2 + 650.IBPluginDependency + 650.ImportedFromIB2 + 651.IBPluginDependency + 651.ImportedFromIB2 + 670.IBPluginDependency + 670.ImportedFromIB2 + 715.IBPluginDependency + 715.ImportedFromIB2 + 716.IBPluginDependency + 716.ImportedFromIB2 + 717.IBPluginDependency + 717.ImportedFromIB2 + 718.IBPluginDependency + 718.ImportedFromIB2 + 719.IBPluginDependency + 719.ImportedFromIB2 + 720.IBPluginDependency + 720.ImportedFromIB2 + 721.IBPluginDependency + 721.ImportedFromIB2 + 722.IBPluginDependency + 722.ImportedFromIB2 + 723.IBPluginDependency + 723.ImportedFromIB2 + 724.IBPluginDependency + 724.ImportedFromIB2 + 725.IBPluginDependency + 725.ImportedFromIB2 + 726.IBPluginDependency + 726.ImportedFromIB2 + 727.IBPluginDependency + 727.ImportedFromIB2 + 728.IBPluginDependency + 728.ImportedFromIB2 + 729.IBPluginDependency + 729.ImportedFromIB2 + 730.IBPluginDependency + 730.ImportedFromIB2 + 731.IBPluginDependency + 731.ImportedFromIB2 + 732.IBPluginDependency + 732.ImportedFromIB2 + 733.IBPluginDependency + 733.ImportedFromIB2 + 734.IBPluginDependency + 734.ImportedFromIB2 + 735.IBPluginDependency + 735.ImportedFromIB2 + 736.IBPluginDependency + 736.ImportedFromIB2 + 737.IBPluginDependency + 737.ImportedFromIB2 + 738.IBPluginDependency + 738.ImportedFromIB2 + 739.IBPluginDependency + 739.ImportedFromIB2 + 740.IBPluginDependency + 740.ImportedFromIB2 + 741.IBPluginDependency + 741.ImportedFromIB2 + 742.IBPluginDependency + 742.ImportedFromIB2 + 743.IBPluginDependency + 743.ImportedFromIB2 + 744.IBPluginDependency + 744.ImportedFromIB2 + 745.IBPluginDependency + 745.ImportedFromIB2 + 746.IBPluginDependency + 746.ImportedFromIB2 + 747.IBPluginDependency + 747.ImportedFromIB2 + 748.IBPluginDependency + 748.ImportedFromIB2 + 749.IBPluginDependency + 749.ImportedFromIB2 + 750.IBPluginDependency + 750.ImportedFromIB2 + 751.IBPluginDependency + 751.ImportedFromIB2 + 752.IBPluginDependency + 752.ImportedFromIB2 + 753.IBPluginDependency + 753.ImportedFromIB2 + 754.IBPluginDependency + 754.ImportedFromIB2 + 755.IBPluginDependency + 755.ImportedFromIB2 + 756.IBPluginDependency + 756.ImportedFromIB2 + 757.IBPluginDependency + 757.ImportedFromIB2 + 758.IBPluginDependency + 758.ImportedFromIB2 + 759.IBPluginDependency + 759.ImportedFromIB2 + 788.IBPluginDependency + 788.ImportedFromIB2 + 789.IBPluginDependency + 789.ImportedFromIB2 + 790.IBPluginDependency + 790.ImportedFromIB2 + 791.IBPluginDependency + 791.ImportedFromIB2 + 792.IBPluginDependency + 792.ImportedFromIB2 + 793.IBPluginDependency + 793.ImportedFromIB2 + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + {92, 10} + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + YES + + + YES + + + + + YES + + + YES + + + + 836 + + + + YES + + FSInterpreterView + + IBUserSource + + + + + FScriptAppControler + NSObject + + YES + + YES + myAction: + newBigBrowser: + newKVBrowser: + showConsole: + showInfoPanel: + showPreferencePanel: + updatePreference: + + + YES + id + id + id + id + id + id + id + + + + YES + + YES + myAction: + newBigBrowser: + newKVBrowser: + showConsole: + showInfoPanel: + showPreferencePanel: + updatePreference: + + + YES + + myAction: + id + + + newBigBrowser: + id + + + newKVBrowser: + id + + + showConsole: + id + + + showInfoPanel: + id + + + showPreferencePanel: + id + + + updatePreference: + id + + + + + YES + + YES + confirmWhenQuittingUI + displayObjectBrowserAtLaunchTimeUI + fontSizeUI + infoPanel + interpreterView + preferencePanel + shouldJournalUI + + + YES + NSButton + NSButton + NSTextField + NSPanel + FSInterpreterView + NSPanel + NSButton + + + + YES + + YES + confirmWhenQuittingUI + displayObjectBrowserAtLaunchTimeUI + fontSizeUI + infoPanel + interpreterView + preferencePanel + shouldJournalUI + + + YES + + confirmWhenQuittingUI + NSButton + + + displayObjectBrowserAtLaunchTimeUI + NSButton + + + fontSizeUI + NSTextField + + + infoPanel + NSPanel + + + interpreterView + FSInterpreterView + + + preferencePanel + NSPanel + + + shouldJournalUI + NSButton + + + + + IBUserSource + + + + + FirstResponder + + YES + + YES + enterSelection: + findNext: + findPrevious: + newBigBrowser: + orderFrontFindPanel: + + + YES + id + id + id + id + id + + + + YES + + YES + enterSelection: + findNext: + findPrevious: + newBigBrowser: + orderFrontFindPanel: + + + YES + + enterSelection: + id + + + findNext: + id + + + findPrevious: + id + + + newBigBrowser: + id + + + orderFrontFindPanel: + id + + + + + IBUserSource + + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + + 3 + + YES + + YES + NSMenuCheckmark + NSMenuMixedState + + + YES + {12, 12} + {10, 2} + + + + diff --git a/F-Script/FScriptAppPreference.xib b/F-Script/FScriptAppPreference.xib new file mode 100644 index 0000000..d43527f --- /dev/null +++ b/F-Script/FScriptAppPreference.xib @@ -0,0 +1,643 @@ + + + + 1050 + 14A379a + 941 + 1343.13 + 755.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 941 + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + FScriptAppController + + + FirstResponder + + + NSApplication + + + 3 + 2 + {{333, 393}, {443, 138}} + -260571136 + F-Script Preferences + NSPanel + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {297, 118} + + + 256 + + + + 256 + {{98, 100}, {50, 22}} + + YES + + -1804599232 + -2147482624 + + + .HelveticaNeueDeskInterface-Regular + 13 + 1040 + + + + + + + + + + NaN + + + + 0,00 + + + . + + + wqA + + 0 + 0 + NO + NO + 1 + AAAAAAAAAAAAAAAAAAAAAA + + + -0.00 + + 0.00 + + + 0.00 + -0.00 + + + + + + NaN + + + + + 0 + 0 + YES + NO + 1 + AAAAAAAAAAAAAAAAAAAAAA + + + 3 + YES + YES + YES + + . + wqA + NO + YES + YES + + + YES + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + textColor + + 3 + MAA + + + + NO + 1 + + + + 256 + {{18, 78}, {137, 18}} + + YES + + 67108864 + 0 + Enable journaling + + + -935575296 + 0 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + NO + + + + 256 + {{17, 102}, {76, 17}} + + YES + + 67108864 + 134217728 + Font size + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + + + NO + 1 + + + + 256 + {{18, 58}, {165, 18}} + + YES + + 67108864 + 0 + Confirm when quitting + + + -935575296 + 0 + + + + + 200 + 25 + + NO + + + + 256 + {{18, 38}, {260, 18}} + + YES + + 67108864 + 0 + Display object browser at launch time + + + -935575296 + 0 + + + + + 200 + 25 + + NO + + + + 256 + {{18, 18}, {407, 18}} + + YES + + 67108864 + 0 + Object browser automatically introspects declared properties + + + -935575296 + 0 + + + + + 200 + 25 + + NO + + + {443, 138} + + {{0, 0}, {1366, 746}} + {297, 140} + {1.7976931348623157e+308, 1.7976931348623157e+308} + YES + + + + + + + updatePreference: + + + + 30 + + + + updatePreference: + + + + 31 + + + + preferencePanel + + + + 32 + + + + fontSizeUI + + + + 33 + + + + shouldJournalUI + + + + 34 + + + + initialFirstResponder + + + + 39 + + + + confirmWhenQuittingUI + + + + 42 + + + + updatePreference: + + + + 43 + + + + displayObjectBrowserAtLaunchTimeUI + + + + 50 + + + + updatePreference: + + + + 51 + + + + updatePreference: + + + + 71 + + + + automaticallyIntrospectDeclaredPropertiesUI + + + + 72 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 24 + + + + + + Panel1 + + + 25 + + + + + + + + + + + + + 26 + + + + + + + + 28 + + + + + + + + 29 + + + + + + + + 40 + + + + + + + + 48 + + + + + + + + 69 + + + + + + + + 76 + + + + + + + + 77 + + + + + 78 + + + + + 79 + + + + + 80 + + + + + 82 + + + + + 27 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + {297, 118} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + ToolTip + + ToolTip + + Record in a journal file the instructions you type. The journal is stored into your F-Script repository folder. + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + 82 + + + + + FSInterpreterView + NSView + + IBProjectSource + ./Classes/FSInterpreterView.h + + + + FScriptAppController + NSObject + + NSButton + NSButton + NSButton + NSTextField + NSPanel + FSInterpreterView + NSPanel + NSButton + NSButton + + + + automaticallyIntrospectDeclaredPropertiesUI + NSButton + + + confirmWhenQuittingUI + NSButton + + + displayObjectBrowserAtLaunchTimeUI + NSButton + + + fontSizeUI + NSTextField + + + infoPanel + NSPanel + + + interpreterView + FSInterpreterView + + + preferencePanel + NSPanel + + + runWithObjCAutomaticGarbageCollectionUI + NSButton + + + shouldJournalUI + NSButton + + + + IBProjectSource + ./Classes/FScriptAppController.h + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + YES + + 3 + + NSSwitch + {15, 15} + + + diff --git a/FSTest1/MainMenu.xib b/FSTest1/MainMenu.xib new file mode 100644 index 0000000..395701a --- /dev/null +++ b/FSTest1/MainMenu.xib @@ -0,0 +1,1615 @@ + + + + 1060 + 14A379a + 941 + 1343.13 + 755.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 941 + + + YES + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + + NSApplication + + + + FirstResponder + + + NSApplication + + + 15 + 2 + {{320, 267}, {480, 360}} + 1886912512 + Window + NSWindow + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {213, 107} + + + 256 + + YES + + {{1, 9}, {480, 360}} + + {{0, 0}, {1152, 746}} + {213, 129} + {1.7976931348623157e+308, 1.7976931348623157e+308} + YES + + + MainMenu + + YES + + + NewApplication + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + + + Info + + + YES + + + About NewApplication + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Preferences... + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + + + Services + + + YES + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide NewApplication + h + 1048576 + 2147483647 + + + + + + Hide Others + + 1048576 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit NewApplication + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + File + + 1048576 + 2147483647 + + + submenuAction: + + + + File + + + YES + + + New + n + 1048576 + 2147483647 + + + + + + Open... + o + 1048576 + 2147483647 + + + + + + Open Recent + + 1048576 + 2147483647 + + + submenuAction: + + + + Open Recent + + + YES + + + YES + Clear Menu + + 1048576 + 2147483647 + + + + + _NSRecentDocumentsMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Close + w + 1048576 + 2147483647 + + + + + + Save + s + 1048576 + 2147483647 + + + + + + Save As... + S + 1048576 + 2147483647 + + + + + + Revert + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Page Setup... + P + 1048576 + 2147483647 + + + + + + Print... + p + 1048576 + 2147483647 + + + + + + + + + Edit + + 1048576 + 2147483647 + + + submenuAction: + + + + Edit + + + YES + + + Undo + z + 1048576 + 2147483647 + + + + + + Redo + Z + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Cut + x + 1048576 + 2147483647 + + + + + + Copy + c + 1048576 + 2147483647 + + + + + + Paste + v + 1048576 + 2147483647 + + + + + + Clear + + 1048576 + 2147483647 + + + + + + Select All + a + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Find + + 1048576 + 2147483647 + + + submenuAction: + + + + Find + + + YES + + + Find... + f + 1048576 + 2147483647 + + + + + + Find Next + g + 1048576 + 2147483647 + + + + + + Find Previous + d + 1048576 + 2147483647 + + + + + + Use Selection for Find + e + 1048576 + 2147483647 + + + + + + Scroll to Selection + j + 1048576 + 2147483647 + + + + + + + + + Spelling + + 1048576 + 2147483647 + + + submenuAction: + + + Spelling + + YES + + + Spelling... + : + 1048576 + 2147483647 + + + + + + Check Spelling + ; + 1048576 + 2147483647 + + + + + + Check Spelling As You Type + + 1048576 + 2147483647 + + + + + + + + + + + + Window + + 1048576 + 2147483647 + + + submenuAction: + + + + Window + + + YES + + + Minimize + m + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Bring All to Front + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Help + + 1048576 + 2147483647 + + + submenuAction: + + + + Help + + + YES + + + MyApp Help + ? + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + + + YES + + + performMiniaturize: + + + + 37 + + + + arrangeInFront: + + + + 39 + + + + print: + + + + 86 + + + + runPageLayout: + + + + 87 + + + + showHelp: + + + + 122 + + + + clearRecentDocuments: + + + + 127 + + + + terminate: + + + + 139 + + + + orderFrontStandardAboutPanel: + + + + 142 + + + + hideOtherApplications: + + + + 146 + + + + hide: + + + + 152 + + + + unhideAllApplications: + + + + 153 + + + + cut: + + + + 175 + + + + paste: + + + + 176 + + + + redo: + + + + 178 + + + + selectAll: + + + + 179 + + + + undo: + + + + 180 + + + + copy: + + + + 181 + + + + clear: + + + + 183 + + + + showGuessPanel: + + + + 188 + + + + checkSpelling: + + + + 190 + + + + toggleContinuousSpellChecking: + + + + 192 + + + + performClose: + + + + 193 + + + + + YES + + 0 + + YES + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + 21 + + + YES + + + + Window + + + 2 + + + + + 29 + + + YES + + + + + + + + MainMenu + + + 19 + + + YES + + + + + + 24 + + + YES + + + + + + + + 5 + + + + + 23 + + + + + 92 + + + + + 56 + + + YES + + + + + + 57 + + + YES + + + + + + + + + + + + + + + + 58 + + + + + 129 + + + + + 131 + + + YES + + + + + + 130 + + + + + 134 + + + + + 136 + + + + + 143 + + + + + 144 + + + + + 145 + + + + + 149 + + + + + 150 + + + + + 194 + + + + + 83 + + + YES + + + + + + 81 + + + YES + + + + + + + + + + + + + + + + 72 + + + + + 73 + + + + + 74 + + + + + 75 + + + + + 77 + + + + + 78 + + + + + 79 + + + + + 80 + + + + + 82 + + + + + 112 + + + + + 124 + + + YES + + + + + + 125 + + + YES + + + + + + 126 + + + + + 103 + + + YES + + + + + + 106 + + + YES + + + + + + 111 + + + + + 163 + + + YES + + + + + + 169 + + + YES + + + + + + + + + + + + + + + + 156 + + + + + 157 + + + + + 158 + + + + + 160 + + + + + 164 + + + + + 168 + + + YES + + + + + + 159 + + + YES + + + + + + + + + + 154 + + + + + 155 + + + + + 161 + + + + + 162 + + + + + 167 + + + + + 171 + + + + + 172 + + + + + 173 + + + + + 174 + + + + + 184 + + + YES + + + + + + 185 + + + YES + + + + + + + + 187 + + + + + 189 + + + + + 191 + + + + + -3 + + + Application + + + + + YES + + YES + 103.IBPluginDependency + 103.ImportedFromIB2 + 106.IBPluginDependency + 106.ImportedFromIB2 + 111.IBPluginDependency + 111.ImportedFromIB2 + 112.IBPluginDependency + 112.ImportedFromIB2 + 124.IBPluginDependency + 124.ImportedFromIB2 + 125.IBPluginDependency + 125.ImportedFromIB2 + 126.IBPluginDependency + 126.ImportedFromIB2 + 129.IBPluginDependency + 129.ImportedFromIB2 + 130.IBPluginDependency + 130.ImportedFromIB2 + 131.IBPluginDependency + 131.ImportedFromIB2 + 134.IBPluginDependency + 134.ImportedFromIB2 + 136.IBPluginDependency + 136.ImportedFromIB2 + 143.IBPluginDependency + 143.ImportedFromIB2 + 144.IBPluginDependency + 144.ImportedFromIB2 + 145.IBPluginDependency + 145.ImportedFromIB2 + 149.IBPluginDependency + 149.ImportedFromIB2 + 150.IBPluginDependency + 150.ImportedFromIB2 + 154.IBPluginDependency + 154.ImportedFromIB2 + 155.IBPluginDependency + 155.ImportedFromIB2 + 156.IBPluginDependency + 156.ImportedFromIB2 + 157.IBPluginDependency + 157.ImportedFromIB2 + 158.IBPluginDependency + 158.ImportedFromIB2 + 159.IBPluginDependency + 159.ImportedFromIB2 + 160.IBPluginDependency + 160.ImportedFromIB2 + 161.IBPluginDependency + 161.ImportedFromIB2 + 162.IBPluginDependency + 162.ImportedFromIB2 + 163.IBPluginDependency + 163.ImportedFromIB2 + 164.IBPluginDependency + 164.ImportedFromIB2 + 167.IBPluginDependency + 167.ImportedFromIB2 + 168.IBPluginDependency + 168.ImportedFromIB2 + 169.IBPluginDependency + 169.ImportedFromIB2 + 171.IBPluginDependency + 171.ImportedFromIB2 + 172.IBPluginDependency + 172.ImportedFromIB2 + 173.IBPluginDependency + 173.ImportedFromIB2 + 174.IBPluginDependency + 174.ImportedFromIB2 + 184.IBPluginDependency + 184.ImportedFromIB2 + 185.IBPluginDependency + 185.ImportedFromIB2 + 187.IBPluginDependency + 187.ImportedFromIB2 + 189.IBPluginDependency + 189.ImportedFromIB2 + 19.IBPluginDependency + 19.ImportedFromIB2 + 191.IBPluginDependency + 191.ImportedFromIB2 + 194.IBPluginDependency + 194.ImportedFromIB2 + 2.IBPluginDependency + 2.ImportedFromIB2 + 21.IBPluginDependency + 21.ImportedFromIB2 + 21.NSWindowTemplate.visibleAtLaunch + 21.windowTemplate.hasMinSize + 21.windowTemplate.minSize + 23.IBPluginDependency + 23.ImportedFromIB2 + 24.IBPluginDependency + 24.ImportedFromIB2 + 29.IBPluginDependency + 29.ImportedFromIB2 + 5.IBPluginDependency + 5.ImportedFromIB2 + 56.IBPluginDependency + 56.ImportedFromIB2 + 57.IBPluginDependency + 57.ImportedFromIB2 + 58.IBPluginDependency + 58.ImportedFromIB2 + 72.IBPluginDependency + 72.ImportedFromIB2 + 73.IBPluginDependency + 73.ImportedFromIB2 + 74.IBPluginDependency + 74.ImportedFromIB2 + 75.IBPluginDependency + 75.ImportedFromIB2 + 77.IBPluginDependency + 77.ImportedFromIB2 + 78.IBPluginDependency + 78.ImportedFromIB2 + 79.IBPluginDependency + 79.ImportedFromIB2 + 80.IBPluginDependency + 80.ImportedFromIB2 + 81.IBPluginDependency + 81.ImportedFromIB2 + 82.IBPluginDependency + 82.ImportedFromIB2 + 83.IBPluginDependency + 83.ImportedFromIB2 + 92.IBPluginDependency + 92.ImportedFromIB2 + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + {213, 107} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + YES + + + YES + + + + + YES + + + YES + + + + 195 + + + + YES + + FirstResponder + + IBUserSource + + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + + 3 + + YES + + YES + NSMenuCheckmark + NSMenuMixedState + + + YES + {12, 12} + {10, 2} + + + + diff --git a/FSTest2/MainMenu.xib b/FSTest2/MainMenu.xib new file mode 100644 index 0000000..0f6c806 --- /dev/null +++ b/FSTest2/MainMenu.xib @@ -0,0 +1,1615 @@ + + + + 1060 + 14A379a + 941 + 1343.13 + 755.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 941 + + + YES + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + + NSApplication + + + + FirstResponder + + + NSApplication + + + 15 + 2 + {{320, 267}, {480, 360}} + 1886912512 + Window + NSWindow + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {213, 107} + + + 256 + + YES + + {{1, 9}, {480, 360}} + + {{0, 0}, {1152, 746}} + {213, 129} + {1.7976931348623157e+308, 1.7976931348623157e+308} + YES + + + MainMenu + + YES + + + NewApplication + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + + + Info + + + YES + + + About NewApplication + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Preferences... + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + + + Services + + + YES + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide NewApplication + h + 1048576 + 2147483647 + + + + + + Hide Others + + 1048576 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit NewApplication + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + File + + 1048576 + 2147483647 + + + submenuAction: + + + + File + + + YES + + + New + n + 1048576 + 2147483647 + + + + + + Open... + o + 1048576 + 2147483647 + + + + + + Open Recent + + 1048576 + 2147483647 + + + submenuAction: + + + + Open Recent + + + YES + + + YES + Clear Menu + + 1048576 + 2147483647 + + + + + _NSRecentDocumentsMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Close + w + 1048576 + 2147483647 + + + + + + Save + s + 1048576 + 2147483647 + + + + + + Save As... + S + 1048576 + 2147483647 + + + + + + Revert + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Page Setup... + P + 1048576 + 2147483647 + + + + + + Print... + p + 1048576 + 2147483647 + + + + + + + + + Edit + + 1048576 + 2147483647 + + + submenuAction: + + + + Edit + + + YES + + + Undo + z + 1048576 + 2147483647 + + + + + + Redo + Z + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Cut + x + 1048576 + 2147483647 + + + + + + Copy + c + 1048576 + 2147483647 + + + + + + Paste + v + 1048576 + 2147483647 + + + + + + Clear + + 1048576 + 2147483647 + + + + + + Select All + a + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Find + + 1048576 + 2147483647 + + + submenuAction: + + + + Find + + + YES + + + Find... + f + 1048576 + 2147483647 + + + + + + Find Next + g + 1048576 + 2147483647 + + + + + + Find Previous + d + 1048576 + 2147483647 + + + + + + Use Selection for Find + e + 1048576 + 2147483647 + + + + + + Scroll to Selection + j + 1048576 + 2147483647 + + + + + + + + + Spelling + + 1048576 + 2147483647 + + + submenuAction: + + + Spelling + + YES + + + Spelling... + : + 1048576 + 2147483647 + + + + + + Check Spelling + ; + 1048576 + 2147483647 + + + + + + Check Spelling As You Type + + 1048576 + 2147483647 + + + + + + + + + + + + Window + + 1048576 + 2147483647 + + + submenuAction: + + + + Window + + + YES + + + Minimize + m + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Bring All to Front + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Help + + 1048576 + 2147483647 + + + submenuAction: + + + + Help + + + YES + + + MyApp Help + ? + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + + + YES + + + performMiniaturize: + + + + 37 + + + + arrangeInFront: + + + + 39 + + + + print: + + + + 86 + + + + runPageLayout: + + + + 87 + + + + showHelp: + + + + 122 + + + + clearRecentDocuments: + + + + 127 + + + + terminate: + + + + 139 + + + + orderFrontStandardAboutPanel: + + + + 142 + + + + hideOtherApplications: + + + + 146 + + + + hide: + + + + 152 + + + + unhideAllApplications: + + + + 153 + + + + cut: + + + + 175 + + + + paste: + + + + 176 + + + + redo: + + + + 178 + + + + selectAll: + + + + 179 + + + + undo: + + + + 180 + + + + copy: + + + + 181 + + + + clear: + + + + 183 + + + + showGuessPanel: + + + + 188 + + + + checkSpelling: + + + + 190 + + + + toggleContinuousSpellChecking: + + + + 192 + + + + performClose: + + + + 193 + + + + + YES + + 0 + + YES + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + 21 + + + YES + + + + Window + + + 2 + + + + + 29 + + + YES + + + + + + + + MainMenu + + + 19 + + + YES + + + + + + 24 + + + YES + + + + + + + + 5 + + + + + 23 + + + + + 92 + + + + + 56 + + + YES + + + + + + 57 + + + YES + + + + + + + + + + + + + + + + 58 + + + + + 129 + + + + + 131 + + + YES + + + + + + 130 + + + + + 134 + + + + + 136 + + + + + 143 + + + + + 144 + + + + + 145 + + + + + 149 + + + + + 150 + + + + + 194 + + + + + 83 + + + YES + + + + + + 81 + + + YES + + + + + + + + + + + + + + + + 72 + + + + + 73 + + + + + 74 + + + + + 75 + + + + + 77 + + + + + 78 + + + + + 79 + + + + + 80 + + + + + 82 + + + + + 112 + + + + + 124 + + + YES + + + + + + 125 + + + YES + + + + + + 126 + + + + + 103 + + + YES + + + + + + 106 + + + YES + + + + + + 111 + + + + + 163 + + + YES + + + + + + 169 + + + YES + + + + + + + + + + + + + + + + 156 + + + + + 157 + + + + + 158 + + + + + 160 + + + + + 164 + + + + + 168 + + + YES + + + + + + 159 + + + YES + + + + + + + + + + 154 + + + + + 155 + + + + + 161 + + + + + 162 + + + + + 167 + + + + + 171 + + + + + 172 + + + + + 173 + + + + + 174 + + + + + 184 + + + YES + + + + + + 185 + + + YES + + + + + + + + 187 + + + + + 189 + + + + + 191 + + + + + -3 + + + Application + + + + + YES + + YES + 103.IBPluginDependency + 103.ImportedFromIB2 + 106.IBPluginDependency + 106.ImportedFromIB2 + 111.IBPluginDependency + 111.ImportedFromIB2 + 112.IBPluginDependency + 112.ImportedFromIB2 + 124.IBPluginDependency + 124.ImportedFromIB2 + 125.IBPluginDependency + 125.ImportedFromIB2 + 126.IBPluginDependency + 126.ImportedFromIB2 + 129.IBPluginDependency + 129.ImportedFromIB2 + 130.IBPluginDependency + 130.ImportedFromIB2 + 131.IBPluginDependency + 131.ImportedFromIB2 + 134.IBPluginDependency + 134.ImportedFromIB2 + 136.IBPluginDependency + 136.ImportedFromIB2 + 143.IBPluginDependency + 143.ImportedFromIB2 + 144.IBPluginDependency + 144.ImportedFromIB2 + 145.IBPluginDependency + 145.ImportedFromIB2 + 149.IBPluginDependency + 149.ImportedFromIB2 + 150.IBPluginDependency + 150.ImportedFromIB2 + 154.IBPluginDependency + 154.ImportedFromIB2 + 155.IBPluginDependency + 155.ImportedFromIB2 + 156.IBPluginDependency + 156.ImportedFromIB2 + 157.IBPluginDependency + 157.ImportedFromIB2 + 158.IBPluginDependency + 158.ImportedFromIB2 + 159.IBPluginDependency + 159.ImportedFromIB2 + 160.IBPluginDependency + 160.ImportedFromIB2 + 161.IBPluginDependency + 161.ImportedFromIB2 + 162.IBPluginDependency + 162.ImportedFromIB2 + 163.IBPluginDependency + 163.ImportedFromIB2 + 164.IBPluginDependency + 164.ImportedFromIB2 + 167.IBPluginDependency + 167.ImportedFromIB2 + 168.IBPluginDependency + 168.ImportedFromIB2 + 169.IBPluginDependency + 169.ImportedFromIB2 + 171.IBPluginDependency + 171.ImportedFromIB2 + 172.IBPluginDependency + 172.ImportedFromIB2 + 173.IBPluginDependency + 173.ImportedFromIB2 + 174.IBPluginDependency + 174.ImportedFromIB2 + 184.IBPluginDependency + 184.ImportedFromIB2 + 185.IBPluginDependency + 185.ImportedFromIB2 + 187.IBPluginDependency + 187.ImportedFromIB2 + 189.IBPluginDependency + 189.ImportedFromIB2 + 19.IBPluginDependency + 19.ImportedFromIB2 + 191.IBPluginDependency + 191.ImportedFromIB2 + 194.IBPluginDependency + 194.ImportedFromIB2 + 2.IBPluginDependency + 2.ImportedFromIB2 + 21.IBPluginDependency + 21.ImportedFromIB2 + 21.NSWindowTemplate.visibleAtLaunch + 21.windowTemplate.hasMinSize + 21.windowTemplate.minSize + 23.IBPluginDependency + 23.ImportedFromIB2 + 24.IBPluginDependency + 24.ImportedFromIB2 + 29.IBPluginDependency + 29.ImportedFromIB2 + 5.IBPluginDependency + 5.ImportedFromIB2 + 56.IBPluginDependency + 56.ImportedFromIB2 + 57.IBPluginDependency + 57.ImportedFromIB2 + 58.IBPluginDependency + 58.ImportedFromIB2 + 72.IBPluginDependency + 72.ImportedFromIB2 + 73.IBPluginDependency + 73.ImportedFromIB2 + 74.IBPluginDependency + 74.ImportedFromIB2 + 75.IBPluginDependency + 75.ImportedFromIB2 + 77.IBPluginDependency + 77.ImportedFromIB2 + 78.IBPluginDependency + 78.ImportedFromIB2 + 79.IBPluginDependency + 79.ImportedFromIB2 + 80.IBPluginDependency + 80.ImportedFromIB2 + 81.IBPluginDependency + 81.ImportedFromIB2 + 82.IBPluginDependency + 82.ImportedFromIB2 + 83.IBPluginDependency + 83.ImportedFromIB2 + 92.IBPluginDependency + 92.ImportedFromIB2 + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + {213, 107} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + YES + + + YES + + + + + YES + + + YES + + + + 195 + + + + YES + + FirstResponder + + IBUserSource + + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + + 3 + + YES + + YES + NSMenuCheckmark + NSMenuMixedState + + + YES + {12, 12} + {10, 2} + + + + diff --git a/FScript.xcodeproj/project.pbxproj b/FScript.xcodeproj/project.pbxproj index 2f9449e..66f4398 100644 --- a/FScript.xcodeproj/project.pbxproj +++ b/FScript.xcodeproj/project.pbxproj @@ -7,12 +7,6 @@ objects = { /* Begin PBXBuildFile section */ - 8F0B64C905C5370D0099180D /* FSConsole.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8F0B64C805C5370D0099180D /* FSConsole.nib */; }; - 8F0B64CA05C5370D0099180D /* FSConsole.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8F0B64C805C5370D0099180D /* FSConsole.nib */; }; - 8F0B64CC05C5370E0099180D /* FSConsole.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8F0B64C805C5370D0099180D /* FSConsole.nib */; }; - 8F0B665005C557A40099180D /* FScriptPreferences.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8F0B664F05C557A40099180D /* FScriptPreferences.nib */; }; - 8F0B665105C557A40099180D /* FScriptPreferences.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8F0B664F05C557A40099180D /* FScriptPreferences.nib */; }; - 8F0B665305C557A40099180D /* FScriptPreferences.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8F0B664F05C557A40099180D /* FScriptPreferences.nib */; }; 8F0B66FD05C5639E0099180D /* FScriptMenuItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F0B66FB05C5639E0099180D /* FScriptMenuItem.h */; }; 8F0B66FE05C5639E0099180D /* FScriptMenuItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F0B66FC05C5639E0099180D /* FScriptMenuItem.m */; }; 8F0B66FF05C5639E0099180D /* FScriptMenuItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F0B66FB05C5639E0099180D /* FScriptMenuItem.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -24,7 +18,7 @@ 8F0CBBEA0BDB94AD002B0AD7 /* ArrayRepEmpty.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E31A00D7DFE17BE9C1BD /* ArrayRepEmpty.m */; }; 8F0CBBEB0BDB94AD002B0AD7 /* ArrayRepId.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E31C00D7DFE17BE9C1BD /* ArrayRepId.m */; }; 8F0CBBEC0BDB94AD002B0AD7 /* FSCollectionInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E31E00D7DFE17BE9C1BD /* FSCollectionInspector.m */; }; - 8F0CBBED0BDB94AD002B0AD7 /* FSObjectBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32100D7DFE17BE9C1BD /* FSObjectBrowser.m */; }; + 8F0CBBED0BDB94AD002B0AD7 /* FSObjectBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32100D7DFE17BE9C1BD /* FSObjectBrowser.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; 8F0CBBEE0BDB94AD002B0AD7 /* FSObjectBrowserCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32300D7DFE17BE9C1BD /* FSObjectBrowserCell.m */; }; 8F0CBBEF0BDB94AD002B0AD7 /* FSBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32700D7DFE17BE9C1BD /* FSBlock.m */; }; 8F0CBBF00BDB94AD002B0AD7 /* BlockInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32900D7DFE17BE9C1BD /* BlockInspector.m */; }; @@ -102,7 +96,7 @@ 8F0CBC420BDB94AD002B0AD7 /* FSNSAttributedString.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FDCCDC005C0A23000747C0A /* FSNSAttributedString.m */; }; 8F0CBC430BDB94AD002B0AD7 /* FScriptMenuItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F0B66FC05C5639E0099180D /* FScriptMenuItem.m */; }; 8F0CBC440BDB94AD002B0AD7 /* FSNSFont.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F658B2805C9694F0040FB24 /* FSNSFont.m */; }; - 8F0CBC450BDB94AD002B0AD7 /* FSObjectBrowserMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FB5060005D53C8600153B33 /* FSObjectBrowserMatrix.m */; }; + 8F0CBC450BDB94AD002B0AD7 /* FSObjectBrowserMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FB5060005D53C8600153B33 /* FSObjectBrowserMatrix.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; 8F0CBC460BDB94AD002B0AD7 /* FSSymbolTable.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F17C07E06B1309C00F07862 /* FSSymbolTable.m */; }; 8F0CBC480BDB94AD002B0AD7 /* FSObjectBrowserViewObjectInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F4E294D075B8E5600F8DCDB /* FSObjectBrowserViewObjectInfo.m */; }; 8F0CBC490BDB94AD002B0AD7 /* FSCollectionInspectorView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FA8EDD307735B3B001BEC7B /* FSCollectionInspectorView.m */; }; @@ -127,14 +121,11 @@ 8F0CBC660BDB9519002B0AD7 /* license.txt in Resources */ = {isa = PBXBuildFile; fileRef = 0CD4E37E00D7DFE17BE9C1BD /* license.txt */; }; 8F0CBC670BDB9519002B0AD7 /* fs.scriptSuite in Resources */ = {isa = PBXBuildFile; fileRef = F538EF6E0279FD3C01345511 /* fs.scriptSuite */; }; 8F0CBC680BDB9519002B0AD7 /* fs.scriptTerminology in Resources */ = {isa = PBXBuildFile; fileRef = F538EF6F0279FD3C01345511 /* fs.scriptTerminology */; }; - 8F0CBC6A0BDB9519002B0AD7 /* FSObjectBrowserButtonsInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = F5F9569002B272A30121B3BA /* FSObjectBrowserButtonsInspector.nib */; }; 8F0CBC6B0BDB9519002B0AD7 /* FSImageInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = F54B55C3036B48690140C608 /* FSImageInspector.nib */; }; 8F0CBC6C0BDB9519002B0AD7 /* ReadMe.txt in Resources */ = {isa = PBXBuildFile; fileRef = F58090EB0375648201AED2EF /* ReadMe.txt */; }; 8F0CBC6D0BDB9519002B0AD7 /* ArrayTableView.nib in Resources */ = {isa = PBXBuildFile; fileRef = F58090FC03756D2401AED2EF /* ArrayTableView.nib */; }; 8F0CBC6E0BDB9519002B0AD7 /* constantsDictionary in Resources */ = {isa = PBXBuildFile; fileRef = 8F92F0380463F2A400F4C61F /* constantsDictionary */; }; 8F0CBC6F0BDB9519002B0AD7 /* FSAttributedStringInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8FDCCD7A05C0A0A000747C0A /* FSAttributedStringInspector.nib */; }; - 8F0CBC700BDB9519002B0AD7 /* FSConsole.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8F0B64C805C5370D0099180D /* FSConsole.nib */; }; - 8F0CBC710BDB9519002B0AD7 /* FScriptPreferences.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8F0B664F05C557A40099180D /* FScriptPreferences.nib */; }; 8F0CBC720BDB9519002B0AD7 /* run.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8F2D066F05CED9B9007EA81B /* run.tiff */; }; 8F0CBC730BDB9519002B0AD7 /* build.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8F56036505CF22660044FA65 /* build.tiff */; }; 8F0CBC750BDB9519002B0AD7 /* FSCollectionInspectorView.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8FA8EF9107739FD4001BEC7B /* FSCollectionInspectorView.nib */; }; @@ -412,7 +403,6 @@ 8F6DA657055FC6980050409A /* genObjInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = 0CD4E37900D7DFE17BE9C1BD /* genObjInspector.nib */; }; 8F6DA658055FC6980050409A /* fs.scriptSuite in Resources */ = {isa = PBXBuildFile; fileRef = F538EF6E0279FD3C01345511 /* fs.scriptSuite */; }; 8F6DA659055FC6980050409A /* fs.scriptTerminology in Resources */ = {isa = PBXBuildFile; fileRef = F538EF6F0279FD3C01345511 /* fs.scriptTerminology */; }; - 8F6DA65B055FC6980050409A /* FSObjectBrowserButtonsInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = F5F9569002B272A30121B3BA /* FSObjectBrowserButtonsInspector.nib */; }; 8F6DA65D055FC6980050409A /* FSImageInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = F54B55C3036B48690140C608 /* FSImageInspector.nib */; }; 8F6DA65F055FC6980050409A /* ArrayTableView.nib in Resources */ = {isa = PBXBuildFile; fileRef = F58090FC03756D2401AED2EF /* ArrayTableView.nib */; }; 8F6DA661055FC6980050409A /* DOCustom.m in Sources */ = {isa = PBXBuildFile; fileRef = F5F1AAB8022E9E90011160FE /* DOCustom.m */; }; @@ -422,7 +412,7 @@ 8F6DA666055FC6980050409A /* ArrayRepEmpty.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E31A00D7DFE17BE9C1BD /* ArrayRepEmpty.m */; }; 8F6DA667055FC6980050409A /* ArrayRepId.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E31C00D7DFE17BE9C1BD /* ArrayRepId.m */; }; 8F6DA668055FC6980050409A /* FSCollectionInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E31E00D7DFE17BE9C1BD /* FSCollectionInspector.m */; }; - 8F6DA669055FC6980050409A /* FSObjectBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32100D7DFE17BE9C1BD /* FSObjectBrowser.m */; }; + 8F6DA669055FC6980050409A /* FSObjectBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32100D7DFE17BE9C1BD /* FSObjectBrowser.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; 8F6DA66A055FC6980050409A /* FSObjectBrowserArgumentPanel.m in Sources */ = {isa = PBXBuildFile; fileRef = F5FA8A6D0215D44C01AFEEFD /* FSObjectBrowserArgumentPanel.m */; }; 8F6DA66B055FC6980050409A /* FSObjectBrowserCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32300D7DFE17BE9C1BD /* FSObjectBrowserCell.m */; }; 8F6DA66C055FC6980050409A /* FSObjectBrowserView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32500D7DFE17BE9C1BD /* FSObjectBrowserView.m */; }; @@ -605,7 +595,6 @@ 8F6DA870055FC70C0050409A /* fs.nib in Resources */ = {isa = PBXBuildFile; fileRef = F598CDB7025CF7E5011B2E41 /* fs.nib */; }; 8F6DA871055FC70C0050409A /* fs.scriptSuite in Resources */ = {isa = PBXBuildFile; fileRef = F538EF6E0279FD3C01345511 /* fs.scriptSuite */; }; 8F6DA872055FC70C0050409A /* fs.scriptTerminology in Resources */ = {isa = PBXBuildFile; fileRef = F538EF6F0279FD3C01345511 /* fs.scriptTerminology */; }; - 8F6DA874055FC70C0050409A /* FSObjectBrowserButtonsInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = F5F9569002B272A30121B3BA /* FSObjectBrowserButtonsInspector.nib */; }; 8F6DA876055FC70C0050409A /* FSImageInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = F54B55C3036B48690140C608 /* FSImageInspector.nib */; }; 8F6DA878055FC70C0050409A /* ArrayTableView.nib in Resources */ = {isa = PBXBuildFile; fileRef = F58090FC03756D2401AED2EF /* ArrayTableView.nib */; }; 8F6DA879055FC70C0050409A /* constantsDictionary in Resources */ = {isa = PBXBuildFile; fileRef = 8F92F0380463F2A400F4C61F /* constantsDictionary */; }; @@ -614,7 +603,7 @@ 8F6DA87E055FC70C0050409A /* ArrayRepEmpty.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E31A00D7DFE17BE9C1BD /* ArrayRepEmpty.m */; }; 8F6DA87F055FC70C0050409A /* ArrayRepId.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E31C00D7DFE17BE9C1BD /* ArrayRepId.m */; }; 8F6DA880055FC70C0050409A /* FSCollectionInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E31E00D7DFE17BE9C1BD /* FSCollectionInspector.m */; }; - 8F6DA881055FC70C0050409A /* FSObjectBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32100D7DFE17BE9C1BD /* FSObjectBrowser.m */; }; + 8F6DA881055FC70C0050409A /* FSObjectBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32100D7DFE17BE9C1BD /* FSObjectBrowser.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; 8F6DA882055FC70C0050409A /* FSObjectBrowserArgumentPanel.m in Sources */ = {isa = PBXBuildFile; fileRef = F5FA8A6D0215D44C01AFEEFD /* FSObjectBrowserArgumentPanel.m */; }; 8F6DA883055FC70C0050409A /* FSObjectBrowserCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32300D7DFE17BE9C1BD /* FSObjectBrowserCell.m */; }; 8F6DA884055FC70C0050409A /* FSObjectBrowserView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32500D7DFE17BE9C1BD /* FSObjectBrowserView.m */; }; @@ -785,7 +774,6 @@ 8F6DA96B055FC71F0050409A /* license.txt in Resources */ = {isa = PBXBuildFile; fileRef = 0CD4E37E00D7DFE17BE9C1BD /* license.txt */; }; 8F6DA96D055FC71F0050409A /* fs.scriptSuite in Resources */ = {isa = PBXBuildFile; fileRef = F538EF6E0279FD3C01345511 /* fs.scriptSuite */; }; 8F6DA96E055FC71F0050409A /* fs.scriptTerminology in Resources */ = {isa = PBXBuildFile; fileRef = F538EF6F0279FD3C01345511 /* fs.scriptTerminology */; }; - 8F6DA970055FC71F0050409A /* FSObjectBrowserButtonsInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = F5F9569002B272A30121B3BA /* FSObjectBrowserButtonsInspector.nib */; }; 8F6DA972055FC71F0050409A /* FSImageInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = F54B55C3036B48690140C608 /* FSImageInspector.nib */; }; 8F6DA973055FC71F0050409A /* ReadMe.txt in Resources */ = {isa = PBXBuildFile; fileRef = F58090EB0375648201AED2EF /* ReadMe.txt */; }; 8F6DA974055FC71F0050409A /* ArrayTableView.nib in Resources */ = {isa = PBXBuildFile; fileRef = F58090FC03756D2401AED2EF /* ArrayTableView.nib */; }; @@ -795,7 +783,7 @@ 8F6DA97A055FC71F0050409A /* ArrayRepEmpty.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E31A00D7DFE17BE9C1BD /* ArrayRepEmpty.m */; }; 8F6DA97B055FC71F0050409A /* ArrayRepId.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E31C00D7DFE17BE9C1BD /* ArrayRepId.m */; }; 8F6DA97C055FC71F0050409A /* FSCollectionInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E31E00D7DFE17BE9C1BD /* FSCollectionInspector.m */; }; - 8F6DA97D055FC71F0050409A /* FSObjectBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32100D7DFE17BE9C1BD /* FSObjectBrowser.m */; }; + 8F6DA97D055FC71F0050409A /* FSObjectBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32100D7DFE17BE9C1BD /* FSObjectBrowser.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; 8F6DA97E055FC71F0050409A /* FSObjectBrowserCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32300D7DFE17BE9C1BD /* FSObjectBrowserCell.m */; }; 8F6DA97F055FC71F0050409A /* FSBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32700D7DFE17BE9C1BD /* FSBlock.m */; }; 8F6DA980055FC71F0050409A /* BlockInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32900D7DFE17BE9C1BD /* BlockInspector.m */; }; @@ -1037,11 +1025,11 @@ 8FAE79F80DA109C500CB6E14 /* FSCNAssignment.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FAE79F10DA109C500CB6E14 /* FSCNAssignment.h */; }; 8FAE79F90DA109C500CB6E14 /* FSCNAssignment.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FAE79F20DA109C500CB6E14 /* FSCNAssignment.m */; }; 8FB5060305D53C8600153B33 /* FSObjectBrowserMatrix.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FB505FF05D53C8600153B33 /* FSObjectBrowserMatrix.h */; }; - 8FB5060405D53C8600153B33 /* FSObjectBrowserMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FB5060005D53C8600153B33 /* FSObjectBrowserMatrix.m */; }; + 8FB5060405D53C8600153B33 /* FSObjectBrowserMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FB5060005D53C8600153B33 /* FSObjectBrowserMatrix.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; 8FB5060505D53C8600153B33 /* FSObjectBrowserMatrix.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FB505FF05D53C8600153B33 /* FSObjectBrowserMatrix.h */; }; - 8FB5060605D53C8600153B33 /* FSObjectBrowserMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FB5060005D53C8600153B33 /* FSObjectBrowserMatrix.m */; }; + 8FB5060605D53C8600153B33 /* FSObjectBrowserMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FB5060005D53C8600153B33 /* FSObjectBrowserMatrix.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; 8FB5060705D53C8600153B33 /* FSObjectBrowserMatrix.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FB505FF05D53C8600153B33 /* FSObjectBrowserMatrix.h */; }; - 8FB5060805D53C8600153B33 /* FSObjectBrowserMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FB5060005D53C8600153B33 /* FSObjectBrowserMatrix.m */; }; + 8FB5060805D53C8600153B33 /* FSObjectBrowserMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FB5060005D53C8600153B33 /* FSObjectBrowserMatrix.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; 8FB523970C21FE030028B297 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8F85274707F6016900E706F5 /* Cocoa.framework */; }; 8FB5239B0C21FE330028B297 /* ExceptionHandling.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F51B24640271980D01DB4759 /* ExceptionHandling.framework */; }; 8FB524190C2205C20028B297 /* FScriptIBPluginInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8FB524150C2205C20028B297 /* FScriptIBPluginInspector.nib */; }; @@ -1176,7 +1164,6 @@ BA223126189F9A9A002C5B6A /* Quartz.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223102189F9A99002C5B6A /* Quartz.framework */; }; BA223127189F9A9A002C5B6A /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223103189F9A99002C5B6A /* QuartzCore.framework */; }; BA223128189F9A9A002C5B6A /* QuickLook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223104189F9A99002C5B6A /* QuickLook.framework */; }; - BA22312B189F9A9A002C5B6A /* RubyCocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223107189F9A9A002C5B6A /* RubyCocoa.framework */; }; BA22312C189F9A9A002C5B6A /* ScreenSaver.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223108189F9A9A002C5B6A /* ScreenSaver.framework */; }; BA22312E189F9A9A002C5B6A /* ScriptingBridge.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA22310A189F9A9A002C5B6A /* ScriptingBridge.framework */; }; BA22312F189F9A9A002C5B6A /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA22310B189F9A9A002C5B6A /* Security.framework */; }; @@ -1243,7 +1230,6 @@ BA223196189F9B2A002C5B6A /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230A1189F9A14002C5B6A /* AppKit.framework */; }; BA223198189F9B2A002C5B6A /* AppleScriptKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230A3189F9A14002C5B6A /* AppleScriptKit.framework */; }; BA223199189F9B2A002C5B6A /* AppleScriptObjC.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230A4189F9A14002C5B6A /* AppleScriptObjC.framework */; }; - BA22319A189F9B2A002C5B6A /* AppleShareClientCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230A5189F9A14002C5B6A /* AppleShareClientCore.framework */; }; BA22319B189F9B2A002C5B6A /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230A6189F9A14002C5B6A /* ApplicationServices.framework */; }; BA22319C189F9B2A002C5B6A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223097189F9958002C5B6A /* AudioToolbox.framework */; }; BA22319D189F9B2A002C5B6A /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230A7189F9A14002C5B6A /* AudioUnit.framework */; }; @@ -1423,13 +1409,10 @@ BA223254189FA403002C5B6A /* fs.nib in Resources */ = {isa = PBXBuildFile; fileRef = F598CDB7025CF7E5011B2E41 /* fs.nib */; }; BA223255189FA403002C5B6A /* fs.scriptSuite in Resources */ = {isa = PBXBuildFile; fileRef = F538EF6E0279FD3C01345511 /* fs.scriptSuite */; }; BA223256189FA403002C5B6A /* fs.scriptTerminology in Resources */ = {isa = PBXBuildFile; fileRef = F538EF6F0279FD3C01345511 /* fs.scriptTerminology */; }; - BA223257189FA403002C5B6A /* FSObjectBrowserButtonsInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = F5F9569002B272A30121B3BA /* FSObjectBrowserButtonsInspector.nib */; }; BA223258189FA403002C5B6A /* FSImageInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = F54B55C3036B48690140C608 /* FSImageInspector.nib */; }; BA223259189FA403002C5B6A /* ArrayTableView.nib in Resources */ = {isa = PBXBuildFile; fileRef = F58090FC03756D2401AED2EF /* ArrayTableView.nib */; }; BA22325A189FA403002C5B6A /* constantsDictionary in Resources */ = {isa = PBXBuildFile; fileRef = 8F92F0380463F2A400F4C61F /* constantsDictionary */; }; BA22325B189FA403002C5B6A /* FSAttributedStringInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8FDCCD7A05C0A0A000747C0A /* FSAttributedStringInspector.nib */; }; - BA22325C189FA403002C5B6A /* FSConsole.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8F0B64C805C5370D0099180D /* FSConsole.nib */; }; - BA22325D189FA403002C5B6A /* FScriptPreferences.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8F0B664F05C557A40099180D /* FScriptPreferences.nib */; }; BA22325E189FA403002C5B6A /* run.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8F2D066F05CED9B9007EA81B /* run.tiff */; }; BA22325F189FA403002C5B6A /* build.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8F56036505CF22660044FA65 /* build.tiff */; }; BA223260189FA403002C5B6A /* FSCollectionInspectorView.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8FA8EF9107739FD4001BEC7B /* FSCollectionInspectorView.nib */; }; @@ -1442,7 +1425,7 @@ BA223268189FA403002C5B6A /* ArrayRepEmpty.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E31A00D7DFE17BE9C1BD /* ArrayRepEmpty.m */; }; BA223269189FA403002C5B6A /* ArrayRepId.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E31C00D7DFE17BE9C1BD /* ArrayRepId.m */; }; BA22326A189FA403002C5B6A /* FSCollectionInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E31E00D7DFE17BE9C1BD /* FSCollectionInspector.m */; }; - BA22326B189FA403002C5B6A /* FSObjectBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32100D7DFE17BE9C1BD /* FSObjectBrowser.m */; }; + BA22326B189FA403002C5B6A /* FSObjectBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32100D7DFE17BE9C1BD /* FSObjectBrowser.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; BA22326C189FA403002C5B6A /* FSObjectBrowserArgumentPanel.m in Sources */ = {isa = PBXBuildFile; fileRef = F5FA8A6D0215D44C01AFEEFD /* FSObjectBrowserArgumentPanel.m */; }; BA22326D189FA403002C5B6A /* FSObjectBrowserCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32300D7DFE17BE9C1BD /* FSObjectBrowserCell.m */; }; BA22326E189FA403002C5B6A /* FSObjectBrowserView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32500D7DFE17BE9C1BD /* FSObjectBrowserView.m */; }; @@ -1522,7 +1505,7 @@ BA2232B8189FA403002C5B6A /* FSNSAttributedString.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FDCCDC005C0A23000747C0A /* FSNSAttributedString.m */; }; BA2232B9189FA403002C5B6A /* FScriptMenuItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F0B66FC05C5639E0099180D /* FScriptMenuItem.m */; }; BA2232BA189FA403002C5B6A /* FSNSFont.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F658B2805C9694F0040FB24 /* FSNSFont.m */; }; - BA2232BB189FA403002C5B6A /* FSObjectBrowserMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FB5060005D53C8600153B33 /* FSObjectBrowserMatrix.m */; }; + BA2232BB189FA403002C5B6A /* FSObjectBrowserMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FB5060005D53C8600153B33 /* FSObjectBrowserMatrix.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; BA2232BC189FA403002C5B6A /* FSNSString.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E36800D7DFE17BE9C1BD /* FSNSString.m */; }; BA2232BD189FA403002C5B6A /* FSSymbolTable.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F17C07E06B1309C00F07862 /* FSSymbolTable.m */; }; BA2232BE189FA403002C5B6A /* TestFS.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E3A000D7DFE17BE9C1BD /* TestFS.m */; }; @@ -1848,13 +1831,10 @@ BA223414189FA412002C5B6A /* fs.nib in Resources */ = {isa = PBXBuildFile; fileRef = F598CDB7025CF7E5011B2E41 /* fs.nib */; }; BA223415189FA412002C5B6A /* fs.scriptSuite in Resources */ = {isa = PBXBuildFile; fileRef = F538EF6E0279FD3C01345511 /* fs.scriptSuite */; }; BA223416189FA412002C5B6A /* fs.scriptTerminology in Resources */ = {isa = PBXBuildFile; fileRef = F538EF6F0279FD3C01345511 /* fs.scriptTerminology */; }; - BA223417189FA412002C5B6A /* FSObjectBrowserButtonsInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = F5F9569002B272A30121B3BA /* FSObjectBrowserButtonsInspector.nib */; }; BA223418189FA412002C5B6A /* FSImageInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = F54B55C3036B48690140C608 /* FSImageInspector.nib */; }; BA223419189FA412002C5B6A /* ArrayTableView.nib in Resources */ = {isa = PBXBuildFile; fileRef = F58090FC03756D2401AED2EF /* ArrayTableView.nib */; }; BA22341A189FA412002C5B6A /* constantsDictionary in Resources */ = {isa = PBXBuildFile; fileRef = 8F92F0380463F2A400F4C61F /* constantsDictionary */; }; BA22341B189FA412002C5B6A /* FSAttributedStringInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8FDCCD7A05C0A0A000747C0A /* FSAttributedStringInspector.nib */; }; - BA22341C189FA412002C5B6A /* FSConsole.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8F0B64C805C5370D0099180D /* FSConsole.nib */; }; - BA22341D189FA412002C5B6A /* FScriptPreferences.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8F0B664F05C557A40099180D /* FScriptPreferences.nib */; }; BA22341E189FA412002C5B6A /* run.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8F2D066F05CED9B9007EA81B /* run.tiff */; }; BA22341F189FA412002C5B6A /* build.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8F56036505CF22660044FA65 /* build.tiff */; }; BA223420189FA412002C5B6A /* FSCollectionInspectorView.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8FA8EF9107739FD4001BEC7B /* FSCollectionInspectorView.nib */; }; @@ -1867,7 +1847,7 @@ BA223428189FA412002C5B6A /* ArrayRepEmpty.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E31A00D7DFE17BE9C1BD /* ArrayRepEmpty.m */; }; BA223429189FA412002C5B6A /* ArrayRepId.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E31C00D7DFE17BE9C1BD /* ArrayRepId.m */; }; BA22342A189FA412002C5B6A /* FSCollectionInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E31E00D7DFE17BE9C1BD /* FSCollectionInspector.m */; }; - BA22342B189FA412002C5B6A /* FSObjectBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32100D7DFE17BE9C1BD /* FSObjectBrowser.m */; }; + BA22342B189FA412002C5B6A /* FSObjectBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32100D7DFE17BE9C1BD /* FSObjectBrowser.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; BA22342C189FA412002C5B6A /* FSObjectBrowserArgumentPanel.m in Sources */ = {isa = PBXBuildFile; fileRef = F5FA8A6D0215D44C01AFEEFD /* FSObjectBrowserArgumentPanel.m */; }; BA22342D189FA412002C5B6A /* FSObjectBrowserCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32300D7DFE17BE9C1BD /* FSObjectBrowserCell.m */; }; BA22342E189FA412002C5B6A /* FSObjectBrowserView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32500D7DFE17BE9C1BD /* FSObjectBrowserView.m */; }; @@ -1947,7 +1927,7 @@ BA223478189FA412002C5B6A /* FSNSAttributedString.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FDCCDC005C0A23000747C0A /* FSNSAttributedString.m */; }; BA223479189FA412002C5B6A /* FScriptMenuItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F0B66FC05C5639E0099180D /* FScriptMenuItem.m */; }; BA22347A189FA412002C5B6A /* FSNSFont.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F658B2805C9694F0040FB24 /* FSNSFont.m */; }; - BA22347B189FA412002C5B6A /* FSObjectBrowserMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FB5060005D53C8600153B33 /* FSObjectBrowserMatrix.m */; }; + BA22347B189FA412002C5B6A /* FSObjectBrowserMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FB5060005D53C8600153B33 /* FSObjectBrowserMatrix.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; BA22347C189FA412002C5B6A /* FSNSString.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E36800D7DFE17BE9C1BD /* FSNSString.m */; }; BA22347D189FA412002C5B6A /* FSSymbolTable.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F17C07E06B1309C00F07862 /* FSSymbolTable.m */; }; BA22347E189FA412002C5B6A /* TestFS.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E3A000D7DFE17BE9C1BD /* TestFS.m */; }; @@ -2012,7 +1992,6 @@ BA2234BA189FA412002C5B6A /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230A1189F9A14002C5B6A /* AppKit.framework */; }; BA2234BB189FA412002C5B6A /* AppleScriptKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230A3189F9A14002C5B6A /* AppleScriptKit.framework */; }; BA2234BC189FA412002C5B6A /* AppleScriptObjC.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230A4189F9A14002C5B6A /* AppleScriptObjC.framework */; }; - BA2234BD189FA412002C5B6A /* AppleShareClientCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230A5189F9A14002C5B6A /* AppleShareClientCore.framework */; }; BA2234BE189FA412002C5B6A /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230A6189F9A14002C5B6A /* ApplicationServices.framework */; }; BA2234BF189FA412002C5B6A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223097189F9958002C5B6A /* AudioToolbox.framework */; }; BA2234C0189FA412002C5B6A /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230A7189F9A14002C5B6A /* AudioUnit.framework */; }; @@ -2086,7 +2065,6 @@ BA223506189FA412002C5B6A /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223103189F9A99002C5B6A /* QuartzCore.framework */; }; BA223507189FA412002C5B6A /* QuickLook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223104189F9A99002C5B6A /* QuickLook.framework */; }; BA223508189FA412002C5B6A /* Ruby.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223106189F9A9A002C5B6A /* Ruby.framework */; }; - BA223509189FA412002C5B6A /* RubyCocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223107189F9A9A002C5B6A /* RubyCocoa.framework */; }; BA22350A189FA412002C5B6A /* ScreenSaver.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223108189F9A9A002C5B6A /* ScreenSaver.framework */; }; BA22350B189FA412002C5B6A /* ScriptingBridge.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA22310A189F9A9A002C5B6A /* ScriptingBridge.framework */; }; BA22350C189FA412002C5B6A /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA22310B189F9A9A002C5B6A /* Security.framework */; }; @@ -2270,14 +2248,11 @@ BA2235C7189FA429002C5B6A /* license.txt in Resources */ = {isa = PBXBuildFile; fileRef = 0CD4E37E00D7DFE17BE9C1BD /* license.txt */; }; BA2235C8189FA429002C5B6A /* fs.scriptSuite in Resources */ = {isa = PBXBuildFile; fileRef = F538EF6E0279FD3C01345511 /* fs.scriptSuite */; }; BA2235C9189FA429002C5B6A /* fs.scriptTerminology in Resources */ = {isa = PBXBuildFile; fileRef = F538EF6F0279FD3C01345511 /* fs.scriptTerminology */; }; - BA2235CA189FA429002C5B6A /* FSObjectBrowserButtonsInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = F5F9569002B272A30121B3BA /* FSObjectBrowserButtonsInspector.nib */; }; BA2235CB189FA429002C5B6A /* FSImageInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = F54B55C3036B48690140C608 /* FSImageInspector.nib */; }; BA2235CC189FA429002C5B6A /* ReadMe.txt in Resources */ = {isa = PBXBuildFile; fileRef = F58090EB0375648201AED2EF /* ReadMe.txt */; }; BA2235CD189FA429002C5B6A /* ArrayTableView.nib in Resources */ = {isa = PBXBuildFile; fileRef = F58090FC03756D2401AED2EF /* ArrayTableView.nib */; }; BA2235CE189FA429002C5B6A /* constantsDictionary in Resources */ = {isa = PBXBuildFile; fileRef = 8F92F0380463F2A400F4C61F /* constantsDictionary */; }; BA2235CF189FA429002C5B6A /* FSAttributedStringInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8FDCCD7A05C0A0A000747C0A /* FSAttributedStringInspector.nib */; }; - BA2235D0189FA429002C5B6A /* FSConsole.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8F0B64C805C5370D0099180D /* FSConsole.nib */; }; - BA2235D1189FA429002C5B6A /* FScriptPreferences.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8F0B664F05C557A40099180D /* FScriptPreferences.nib */; }; BA2235D2189FA429002C5B6A /* run.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8F2D066F05CED9B9007EA81B /* run.tiff */; }; BA2235D3189FA429002C5B6A /* build.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8F56036505CF22660044FA65 /* build.tiff */; }; BA2235D4189FA429002C5B6A /* FSCollectionInspectorView.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8FA8EF9107739FD4001BEC7B /* FSCollectionInspectorView.nib */; }; @@ -2289,7 +2264,7 @@ BA2235DB189FA429002C5B6A /* ArrayRepEmpty.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E31A00D7DFE17BE9C1BD /* ArrayRepEmpty.m */; }; BA2235DC189FA429002C5B6A /* ArrayRepId.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E31C00D7DFE17BE9C1BD /* ArrayRepId.m */; }; BA2235DD189FA429002C5B6A /* FSCollectionInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E31E00D7DFE17BE9C1BD /* FSCollectionInspector.m */; }; - BA2235DE189FA429002C5B6A /* FSObjectBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32100D7DFE17BE9C1BD /* FSObjectBrowser.m */; }; + BA2235DE189FA429002C5B6A /* FSObjectBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32100D7DFE17BE9C1BD /* FSObjectBrowser.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; BA2235DF189FA429002C5B6A /* FSObjectBrowserCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32300D7DFE17BE9C1BD /* FSObjectBrowserCell.m */; }; BA2235E0189FA429002C5B6A /* FSBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32700D7DFE17BE9C1BD /* FSBlock.m */; }; BA2235E1189FA429002C5B6A /* BlockInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32900D7DFE17BE9C1BD /* BlockInspector.m */; }; @@ -2367,7 +2342,7 @@ BA223629189FA429002C5B6A /* FSNSAttributedString.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FDCCDC005C0A23000747C0A /* FSNSAttributedString.m */; }; BA22362A189FA429002C5B6A /* FScriptMenuItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F0B66FC05C5639E0099180D /* FScriptMenuItem.m */; }; BA22362B189FA429002C5B6A /* FSNSFont.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F658B2805C9694F0040FB24 /* FSNSFont.m */; }; - BA22362C189FA429002C5B6A /* FSObjectBrowserMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FB5060005D53C8600153B33 /* FSObjectBrowserMatrix.m */; }; + BA22362C189FA429002C5B6A /* FSObjectBrowserMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FB5060005D53C8600153B33 /* FSObjectBrowserMatrix.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; BA22362D189FA429002C5B6A /* FSSymbolTable.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F17C07E06B1309C00F07862 /* FSSymbolTable.m */; }; BA22362E189FA429002C5B6A /* FSObjectBrowserViewObjectInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F4E294D075B8E5600F8DCDB /* FSObjectBrowserViewObjectInfo.m */; }; BA22362F189FA429002C5B6A /* FSCollectionInspectorView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FA8EDD307735B3B001BEC7B /* FSCollectionInspectorView.m */; }; @@ -2587,14 +2562,11 @@ BA22370F189FA431002C5B6A /* license.txt in Resources */ = {isa = PBXBuildFile; fileRef = 0CD4E37E00D7DFE17BE9C1BD /* license.txt */; }; BA223710189FA431002C5B6A /* fs.scriptSuite in Resources */ = {isa = PBXBuildFile; fileRef = F538EF6E0279FD3C01345511 /* fs.scriptSuite */; }; BA223711189FA431002C5B6A /* fs.scriptTerminology in Resources */ = {isa = PBXBuildFile; fileRef = F538EF6F0279FD3C01345511 /* fs.scriptTerminology */; }; - BA223712189FA431002C5B6A /* FSObjectBrowserButtonsInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = F5F9569002B272A30121B3BA /* FSObjectBrowserButtonsInspector.nib */; }; BA223713189FA431002C5B6A /* FSImageInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = F54B55C3036B48690140C608 /* FSImageInspector.nib */; }; BA223714189FA431002C5B6A /* ReadMe.txt in Resources */ = {isa = PBXBuildFile; fileRef = F58090EB0375648201AED2EF /* ReadMe.txt */; }; BA223715189FA431002C5B6A /* ArrayTableView.nib in Resources */ = {isa = PBXBuildFile; fileRef = F58090FC03756D2401AED2EF /* ArrayTableView.nib */; }; BA223716189FA431002C5B6A /* constantsDictionary in Resources */ = {isa = PBXBuildFile; fileRef = 8F92F0380463F2A400F4C61F /* constantsDictionary */; }; BA223717189FA431002C5B6A /* FSAttributedStringInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8FDCCD7A05C0A0A000747C0A /* FSAttributedStringInspector.nib */; }; - BA223718189FA431002C5B6A /* FSConsole.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8F0B64C805C5370D0099180D /* FSConsole.nib */; }; - BA223719189FA431002C5B6A /* FScriptPreferences.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8F0B664F05C557A40099180D /* FScriptPreferences.nib */; }; BA22371A189FA431002C5B6A /* run.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8F2D066F05CED9B9007EA81B /* run.tiff */; }; BA22371B189FA431002C5B6A /* build.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8F56036505CF22660044FA65 /* build.tiff */; }; BA22371C189FA431002C5B6A /* FSCollectionInspectorView.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8FA8EF9107739FD4001BEC7B /* FSCollectionInspectorView.nib */; }; @@ -2606,7 +2578,7 @@ BA223723189FA431002C5B6A /* ArrayRepEmpty.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E31A00D7DFE17BE9C1BD /* ArrayRepEmpty.m */; }; BA223724189FA431002C5B6A /* ArrayRepId.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E31C00D7DFE17BE9C1BD /* ArrayRepId.m */; }; BA223725189FA431002C5B6A /* FSCollectionInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E31E00D7DFE17BE9C1BD /* FSCollectionInspector.m */; }; - BA223726189FA431002C5B6A /* FSObjectBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32100D7DFE17BE9C1BD /* FSObjectBrowser.m */; }; + BA223726189FA431002C5B6A /* FSObjectBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32100D7DFE17BE9C1BD /* FSObjectBrowser.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; BA223727189FA431002C5B6A /* FSObjectBrowserCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32300D7DFE17BE9C1BD /* FSObjectBrowserCell.m */; }; BA223728189FA431002C5B6A /* FSBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32700D7DFE17BE9C1BD /* FSBlock.m */; }; BA223729189FA431002C5B6A /* BlockInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32900D7DFE17BE9C1BD /* BlockInspector.m */; }; @@ -2684,7 +2656,7 @@ BA223771189FA431002C5B6A /* FSNSAttributedString.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FDCCDC005C0A23000747C0A /* FSNSAttributedString.m */; }; BA223772189FA431002C5B6A /* FScriptMenuItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F0B66FC05C5639E0099180D /* FScriptMenuItem.m */; }; BA223773189FA431002C5B6A /* FSNSFont.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F658B2805C9694F0040FB24 /* FSNSFont.m */; }; - BA223774189FA431002C5B6A /* FSObjectBrowserMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FB5060005D53C8600153B33 /* FSObjectBrowserMatrix.m */; }; + BA223774189FA431002C5B6A /* FSObjectBrowserMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FB5060005D53C8600153B33 /* FSObjectBrowserMatrix.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; BA223775189FA431002C5B6A /* FSSymbolTable.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F17C07E06B1309C00F07862 /* FSSymbolTable.m */; }; BA223776189FA431002C5B6A /* FSObjectBrowserViewObjectInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F4E294D075B8E5600F8DCDB /* FSObjectBrowserViewObjectInfo.m */; }; BA223777189FA431002C5B6A /* FSCollectionInspectorView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FA8EDD307735B3B001BEC7B /* FSCollectionInspectorView.m */; }; @@ -2741,6 +2713,1040 @@ BA2237AB189FA432002C5B6A /* ExceptionHandling.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F51B24640271980D01DB4759 /* ExceptionHandling.framework */; }; BA2237B2189FAC75002C5B6A /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E2DBA32D161CA7180035A675 /* AVFoundation.framework */; }; BA2237B3189FAC75002C5B6A /* AVKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223099189F9976002C5B6A /* AVKit.framework */; }; + ED3004E81A1A86EF00675D94 /* FSObjectInspectorViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = ED3004E51A1A86EF00675D94 /* FSObjectInspectorViewController.h */; }; + ED3004E91A1A86EF00675D94 /* FSObjectInspectorViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = ED3004E51A1A86EF00675D94 /* FSObjectInspectorViewController.h */; }; + ED3004EA1A1A86EF00675D94 /* FSObjectInspectorViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = ED3004E51A1A86EF00675D94 /* FSObjectInspectorViewController.h */; }; + ED3004EB1A1A86EF00675D94 /* FSObjectInspectorViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = ED3004E51A1A86EF00675D94 /* FSObjectInspectorViewController.h */; }; + ED3004EC1A1A86EF00675D94 /* FSObjectInspectorViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = ED3004E51A1A86EF00675D94 /* FSObjectInspectorViewController.h */; }; + ED3004ED1A1A86EF00675D94 /* FSObjectInspectorViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = ED3004E51A1A86EF00675D94 /* FSObjectInspectorViewController.h */; }; + ED3004EE1A1A86EF00675D94 /* FSObjectInspectorViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = ED3004E61A1A86EF00675D94 /* FSObjectInspectorViewController.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + ED3004EF1A1A86EF00675D94 /* FSObjectInspectorViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = ED3004E61A1A86EF00675D94 /* FSObjectInspectorViewController.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + ED3004F01A1A86EF00675D94 /* FSObjectInspectorViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = ED3004E61A1A86EF00675D94 /* FSObjectInspectorViewController.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + ED3004F11A1A86EF00675D94 /* FSObjectInspectorViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = ED3004E61A1A86EF00675D94 /* FSObjectInspectorViewController.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + ED3004F21A1A86EF00675D94 /* FSObjectInspectorViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = ED3004E61A1A86EF00675D94 /* FSObjectInspectorViewController.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + ED3004F31A1A86EF00675D94 /* FSObjectInspectorViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = ED3004E61A1A86EF00675D94 /* FSObjectInspectorViewController.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + ED3004F41A1A86EF00675D94 /* FSObjectInspectorViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = ED3004E71A1A86EF00675D94 /* FSObjectInspectorViewController.xib */; }; + ED3004F51A1A86EF00675D94 /* FSObjectInspectorViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = ED3004E71A1A86EF00675D94 /* FSObjectInspectorViewController.xib */; }; + ED3004F61A1A86EF00675D94 /* FSObjectInspectorViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = ED3004E71A1A86EF00675D94 /* FSObjectInspectorViewController.xib */; }; + ED3004F71A1A86EF00675D94 /* FSObjectInspectorViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = ED3004E71A1A86EF00675D94 /* FSObjectInspectorViewController.xib */; }; + ED3004F81A1A86EF00675D94 /* FSObjectInspectorViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = ED3004E71A1A86EF00675D94 /* FSObjectInspectorViewController.xib */; }; + ED3004F91A1A86EF00675D94 /* FSObjectInspectorViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = ED3004E71A1A86EF00675D94 /* FSObjectInspectorViewController.xib */; }; + ED3CB6411A1E5B3300771077 /* FSColorWell.h in Headers */ = {isa = PBXBuildFile; fileRef = ED3CB63F1A1E5B3300771077 /* FSColorWell.h */; }; + ED3CB6421A1E5B3300771077 /* FSColorWell.h in Headers */ = {isa = PBXBuildFile; fileRef = ED3CB63F1A1E5B3300771077 /* FSColorWell.h */; }; + ED3CB6431A1E5B3300771077 /* FSColorWell.h in Headers */ = {isa = PBXBuildFile; fileRef = ED3CB63F1A1E5B3300771077 /* FSColorWell.h */; }; + ED3CB6441A1E5B3300771077 /* FSColorWell.h in Headers */ = {isa = PBXBuildFile; fileRef = ED3CB63F1A1E5B3300771077 /* FSColorWell.h */; }; + ED3CB6451A1E5B3300771077 /* FSColorWell.h in Headers */ = {isa = PBXBuildFile; fileRef = ED3CB63F1A1E5B3300771077 /* FSColorWell.h */; }; + ED3CB6461A1E5B3300771077 /* FSColorWell.h in Headers */ = {isa = PBXBuildFile; fileRef = ED3CB63F1A1E5B3300771077 /* FSColorWell.h */; }; + ED3CB6471A1E5B3300771077 /* FSColorWell.h in Headers */ = {isa = PBXBuildFile; fileRef = ED3CB63F1A1E5B3300771077 /* FSColorWell.h */; }; + ED3CB6481A1E5B3300771077 /* FSColorWell.h in Headers */ = {isa = PBXBuildFile; fileRef = ED3CB63F1A1E5B3300771077 /* FSColorWell.h */; }; + ED3CB6491A1E5B3300771077 /* FSColorWell.m in Sources */ = {isa = PBXBuildFile; fileRef = ED3CB6401A1E5B3300771077 /* FSColorWell.m */; }; + ED3CB64A1A1E5B3300771077 /* FSColorWell.m in Sources */ = {isa = PBXBuildFile; fileRef = ED3CB6401A1E5B3300771077 /* FSColorWell.m */; }; + ED3CB64B1A1E5B3300771077 /* FSColorWell.m in Sources */ = {isa = PBXBuildFile; fileRef = ED3CB6401A1E5B3300771077 /* FSColorWell.m */; }; + ED3CB64C1A1E5B3300771077 /* FSColorWell.m in Sources */ = {isa = PBXBuildFile; fileRef = ED3CB6401A1E5B3300771077 /* FSColorWell.m */; }; + ED3CB64D1A1E5B3300771077 /* FSColorWell.m in Sources */ = {isa = PBXBuildFile; fileRef = ED3CB6401A1E5B3300771077 /* FSColorWell.m */; }; + ED3CB64E1A1E5B3300771077 /* FSColorWell.m in Sources */ = {isa = PBXBuildFile; fileRef = ED3CB6401A1E5B3300771077 /* FSColorWell.m */; }; + ED3CB64F1A1E5B3300771077 /* FSColorWell.m in Sources */ = {isa = PBXBuildFile; fileRef = ED3CB6401A1E5B3300771077 /* FSColorWell.m */; }; + ED3CB6501A1E5B3300771077 /* FSColorWell.m in Sources */ = {isa = PBXBuildFile; fileRef = ED3CB6401A1E5B3300771077 /* FSColorWell.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + ED3CB6511A1E5B3300771077 /* FSColorWell.m in Sources */ = {isa = PBXBuildFile; fileRef = ED3CB6401A1E5B3300771077 /* FSColorWell.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + ED3CB6521A1E5B9100771077 /* FSColorWell.m in Sources */ = {isa = PBXBuildFile; fileRef = ED3CB6401A1E5B3300771077 /* FSColorWell.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + ED68BE421A35E39000968430 /* FSObjectBrowser.xib in Resources */ = {isa = PBXBuildFile; fileRef = ED68BE411A35E38F00968430 /* FSObjectBrowser.xib */; }; + ED68BE431A35E39000968430 /* FSObjectBrowser.xib in Resources */ = {isa = PBXBuildFile; fileRef = ED68BE411A35E38F00968430 /* FSObjectBrowser.xib */; }; + ED68BE441A35E39000968430 /* FSObjectBrowser.xib in Resources */ = {isa = PBXBuildFile; fileRef = ED68BE411A35E38F00968430 /* FSObjectBrowser.xib */; }; + ED68BE451A35E39000968430 /* FSObjectBrowser.xib in Resources */ = {isa = PBXBuildFile; fileRef = ED68BE411A35E38F00968430 /* FSObjectBrowser.xib */; }; + ED68BE461A35E39000968430 /* FSObjectBrowser.xib in Resources */ = {isa = PBXBuildFile; fileRef = ED68BE411A35E38F00968430 /* FSObjectBrowser.xib */; }; + ED68BE471A35E39000968430 /* FSObjectBrowser.xib in Resources */ = {isa = PBXBuildFile; fileRef = ED68BE411A35E38F00968430 /* FSObjectBrowser.xib */; }; + ED68BE481A35E39000968430 /* FSObjectBrowser.xib in Resources */ = {isa = PBXBuildFile; fileRef = ED68BE411A35E38F00968430 /* FSObjectBrowser.xib */; }; + ED68BE491A35E39000968430 /* FSObjectBrowser.xib in Resources */ = {isa = PBXBuildFile; fileRef = ED68BE411A35E38F00968430 /* FSObjectBrowser.xib */; }; + ED68BE4A1A35E39000968430 /* FSObjectBrowser.xib in Resources */ = {isa = PBXBuildFile; fileRef = ED68BE411A35E38F00968430 /* FSObjectBrowser.xib */; }; + ED68BE4B1A35E39000968430 /* FSObjectBrowser.xib in Resources */ = {isa = PBXBuildFile; fileRef = ED68BE411A35E38F00968430 /* FSObjectBrowser.xib */; }; + ED68BE4E1A35E94B00968430 /* FSObjectBrowserWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = ED68BE4C1A35E94B00968430 /* FSObjectBrowserWindow.h */; }; + ED68BE4F1A35E94B00968430 /* FSObjectBrowserWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = ED68BE4C1A35E94B00968430 /* FSObjectBrowserWindow.h */; }; + ED68BE501A35E94B00968430 /* FSObjectBrowserWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = ED68BE4C1A35E94B00968430 /* FSObjectBrowserWindow.h */; }; + ED68BE511A35E94B00968430 /* FSObjectBrowserWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = ED68BE4C1A35E94B00968430 /* FSObjectBrowserWindow.h */; }; + ED68BE521A35E94B00968430 /* FSObjectBrowserWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = ED68BE4C1A35E94B00968430 /* FSObjectBrowserWindow.h */; }; + ED68BE531A35E94B00968430 /* FSObjectBrowserWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = ED68BE4C1A35E94B00968430 /* FSObjectBrowserWindow.h */; }; + ED68BE541A35E94B00968430 /* FSObjectBrowserWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = ED68BE4C1A35E94B00968430 /* FSObjectBrowserWindow.h */; }; + ED68BE551A35E94B00968430 /* FSObjectBrowserWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = ED68BE4C1A35E94B00968430 /* FSObjectBrowserWindow.h */; }; + ED68BE561A35E94B00968430 /* FSObjectBrowserWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = ED68BE4C1A35E94B00968430 /* FSObjectBrowserWindow.h */; }; + ED68BE571A35E94B00968430 /* FSObjectBrowserWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = ED68BE4D1A35E94B00968430 /* FSObjectBrowserWindow.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + ED68BE581A35E94B00968430 /* FSObjectBrowserWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = ED68BE4D1A35E94B00968430 /* FSObjectBrowserWindow.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + ED68BE591A35E94B00968430 /* FSObjectBrowserWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = ED68BE4D1A35E94B00968430 /* FSObjectBrowserWindow.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + ED68BE5A1A35E94B00968430 /* FSObjectBrowserWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = ED68BE4D1A35E94B00968430 /* FSObjectBrowserWindow.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + ED68BE5B1A35E94B00968430 /* FSObjectBrowserWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = ED68BE4D1A35E94B00968430 /* FSObjectBrowserWindow.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + ED68BE5C1A35E94B00968430 /* FSObjectBrowserWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = ED68BE4D1A35E94B00968430 /* FSObjectBrowserWindow.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + ED68BE5D1A35E94B00968430 /* FSObjectBrowserWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = ED68BE4D1A35E94B00968430 /* FSObjectBrowserWindow.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + ED68BE5E1A35E94B00968430 /* FSObjectBrowserWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = ED68BE4D1A35E94B00968430 /* FSObjectBrowserWindow.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + ED68BE5F1A35E94B00968430 /* FSObjectBrowserWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = ED68BE4D1A35E94B00968430 /* FSObjectBrowserWindow.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + ED68BE601A35E94B00968430 /* FSObjectBrowserWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = ED68BE4D1A35E94B00968430 /* FSObjectBrowserWindow.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + ED8222D61A194FD600C42C72 /* FSObjectInspectorViewModelItem.h in Headers */ = {isa = PBXBuildFile; fileRef = ED8222D41A194FD600C42C72 /* FSObjectInspectorViewModelItem.h */; }; + ED8222D71A194FD600C42C72 /* FSObjectInspectorViewModelItem.h in Headers */ = {isa = PBXBuildFile; fileRef = ED8222D41A194FD600C42C72 /* FSObjectInspectorViewModelItem.h */; }; + ED8222D81A194FD600C42C72 /* FSObjectInspectorViewModelItem.h in Headers */ = {isa = PBXBuildFile; fileRef = ED8222D41A194FD600C42C72 /* FSObjectInspectorViewModelItem.h */; }; + ED8222D91A194FD600C42C72 /* FSObjectInspectorViewModelItem.h in Headers */ = {isa = PBXBuildFile; fileRef = ED8222D41A194FD600C42C72 /* FSObjectInspectorViewModelItem.h */; }; + ED8222DA1A194FD600C42C72 /* FSObjectInspectorViewModelItem.h in Headers */ = {isa = PBXBuildFile; fileRef = ED8222D41A194FD600C42C72 /* FSObjectInspectorViewModelItem.h */; }; + ED8222DB1A194FD600C42C72 /* FSObjectInspectorViewModelItem.h in Headers */ = {isa = PBXBuildFile; fileRef = ED8222D41A194FD600C42C72 /* FSObjectInspectorViewModelItem.h */; }; + ED8222DC1A194FD600C42C72 /* FSObjectInspectorViewModelItem.h in Headers */ = {isa = PBXBuildFile; fileRef = ED8222D41A194FD600C42C72 /* FSObjectInspectorViewModelItem.h */; }; + ED8222DD1A194FD600C42C72 /* FSObjectInspectorViewModelItem.m in Sources */ = {isa = PBXBuildFile; fileRef = ED8222D51A194FD600C42C72 /* FSObjectInspectorViewModelItem.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + ED8222DE1A194FD600C42C72 /* FSObjectInspectorViewModelItem.m in Sources */ = {isa = PBXBuildFile; fileRef = ED8222D51A194FD600C42C72 /* FSObjectInspectorViewModelItem.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + ED8222DF1A194FD600C42C72 /* FSObjectInspectorViewModelItem.m in Sources */ = {isa = PBXBuildFile; fileRef = ED8222D51A194FD600C42C72 /* FSObjectInspectorViewModelItem.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + ED8222E01A194FD600C42C72 /* FSObjectInspectorViewModelItem.m in Sources */ = {isa = PBXBuildFile; fileRef = ED8222D51A194FD600C42C72 /* FSObjectInspectorViewModelItem.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + ED8222E11A194FD600C42C72 /* FSObjectInspectorViewModelItem.m in Sources */ = {isa = PBXBuildFile; fileRef = ED8222D51A194FD600C42C72 /* FSObjectInspectorViewModelItem.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + ED8222E21A194FD600C42C72 /* FSObjectInspectorViewModelItem.m in Sources */ = {isa = PBXBuildFile; fileRef = ED8222D51A194FD600C42C72 /* FSObjectInspectorViewModelItem.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + ED8222E31A194FD600C42C72 /* FSObjectInspectorViewModelItem.m in Sources */ = {isa = PBXBuildFile; fileRef = ED8222D51A194FD600C42C72 /* FSObjectInspectorViewModelItem.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + ED8222E41A194FD600C42C72 /* FSObjectInspectorViewModelItem.m in Sources */ = {isa = PBXBuildFile; fileRef = ED8222D51A194FD600C42C72 /* FSObjectInspectorViewModelItem.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + ED8222E71A19554F00C42C72 /* FSObjectEnumInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = ED8222E51A19554F00C42C72 /* FSObjectEnumInfo.h */; }; + ED8222E81A19554F00C42C72 /* FSObjectEnumInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = ED8222E51A19554F00C42C72 /* FSObjectEnumInfo.h */; }; + ED8222E91A19554F00C42C72 /* FSObjectEnumInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = ED8222E51A19554F00C42C72 /* FSObjectEnumInfo.h */; }; + ED8222EA1A19554F00C42C72 /* FSObjectEnumInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = ED8222E51A19554F00C42C72 /* FSObjectEnumInfo.h */; }; + ED8222EB1A19554F00C42C72 /* FSObjectEnumInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = ED8222E51A19554F00C42C72 /* FSObjectEnumInfo.h */; }; + ED8222EC1A19554F00C42C72 /* FSObjectEnumInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = ED8222E51A19554F00C42C72 /* FSObjectEnumInfo.h */; }; + ED8222ED1A19554F00C42C72 /* FSObjectEnumInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = ED8222E51A19554F00C42C72 /* FSObjectEnumInfo.h */; }; + ED8222EE1A19554F00C42C72 /* FSObjectEnumInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = ED8222E61A19554F00C42C72 /* FSObjectEnumInfo.m */; }; + ED8222EF1A19554F00C42C72 /* FSObjectEnumInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = ED8222E61A19554F00C42C72 /* FSObjectEnumInfo.m */; }; + ED8222F01A19554F00C42C72 /* FSObjectEnumInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = ED8222E61A19554F00C42C72 /* FSObjectEnumInfo.m */; }; + ED8222F11A19554F00C42C72 /* FSObjectEnumInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = ED8222E61A19554F00C42C72 /* FSObjectEnumInfo.m */; }; + ED8222F21A19554F00C42C72 /* FSObjectEnumInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = ED8222E61A19554F00C42C72 /* FSObjectEnumInfo.m */; }; + ED8222F31A19554F00C42C72 /* FSObjectEnumInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = ED8222E61A19554F00C42C72 /* FSObjectEnumInfo.m */; }; + ED8222F41A19554F00C42C72 /* FSObjectEnumInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = ED8222E61A19554F00C42C72 /* FSObjectEnumInfo.m */; }; + ED8222F51A19554F00C42C72 /* FSObjectEnumInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = ED8222E61A19554F00C42C72 /* FSObjectEnumInfo.m */; }; + ED83191D1A1BC2B500290EE2 /* FSUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = ED83191B1A1BC2B500290EE2 /* FSUtils.h */; }; + ED83191E1A1BC2B500290EE2 /* FSUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = ED83191B1A1BC2B500290EE2 /* FSUtils.h */; }; + ED83191F1A1BC2B500290EE2 /* FSUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = ED83191B1A1BC2B500290EE2 /* FSUtils.h */; }; + ED8319201A1BC2B500290EE2 /* FSUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = ED83191B1A1BC2B500290EE2 /* FSUtils.h */; }; + ED8319211A1BC2B500290EE2 /* FSUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = ED83191B1A1BC2B500290EE2 /* FSUtils.h */; }; + ED8319221A1BC2B500290EE2 /* FSUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = ED83191B1A1BC2B500290EE2 /* FSUtils.h */; }; + ED8319231A1BC2B500290EE2 /* FSUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = ED83191B1A1BC2B500290EE2 /* FSUtils.h */; }; + ED8319241A1BC2B500290EE2 /* FSUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = ED83191B1A1BC2B500290EE2 /* FSUtils.h */; }; + ED8319251A1BC2B500290EE2 /* FSUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = ED83191B1A1BC2B500290EE2 /* FSUtils.h */; }; + ED8319261A1BC2B500290EE2 /* FSUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = ED83191C1A1BC2B500290EE2 /* FSUtils.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + ED8319271A1BC2B500290EE2 /* FSUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = ED83191C1A1BC2B500290EE2 /* FSUtils.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + ED8319281A1BC2B500290EE2 /* FSUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = ED83191C1A1BC2B500290EE2 /* FSUtils.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + ED8319291A1BC2B500290EE2 /* FSUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = ED83191C1A1BC2B500290EE2 /* FSUtils.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + ED83192A1A1BC2B500290EE2 /* FSUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = ED83191C1A1BC2B500290EE2 /* FSUtils.m */; }; + ED83192B1A1BC2B500290EE2 /* FSUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = ED83191C1A1BC2B500290EE2 /* FSUtils.m */; }; + ED83192C1A1BC2B500290EE2 /* FSUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = ED83191C1A1BC2B500290EE2 /* FSUtils.m */; }; + ED83192D1A1BC2B500290EE2 /* FSUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = ED83191C1A1BC2B500290EE2 /* FSUtils.m */; }; + ED83192E1A1BC2B500290EE2 /* FSUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = ED83191C1A1BC2B500290EE2 /* FSUtils.m */; }; + ED83192F1A1BC2B500290EE2 /* FSUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = ED83191C1A1BC2B500290EE2 /* FSUtils.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + ED8319321A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.h in Headers */ = {isa = PBXBuildFile; fileRef = ED8319301A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.h */; }; + ED8319331A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.h in Headers */ = {isa = PBXBuildFile; fileRef = ED8319301A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.h */; }; + ED8319341A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.h in Headers */ = {isa = PBXBuildFile; fileRef = ED8319301A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.h */; }; + ED8319351A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.h in Headers */ = {isa = PBXBuildFile; fileRef = ED8319301A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.h */; }; + ED8319361A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.h in Headers */ = {isa = PBXBuildFile; fileRef = ED8319301A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.h */; }; + ED8319371A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.h in Headers */ = {isa = PBXBuildFile; fileRef = ED8319301A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.h */; }; + ED8319381A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.h in Headers */ = {isa = PBXBuildFile; fileRef = ED8319301A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.h */; }; + ED8319391A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.h in Headers */ = {isa = PBXBuildFile; fileRef = ED8319301A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.h */; }; + ED83193A1A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.h in Headers */ = {isa = PBXBuildFile; fileRef = ED8319301A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.h */; }; + ED83193B1A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.m in Sources */ = {isa = PBXBuildFile; fileRef = ED8319311A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.m */; }; + ED83193C1A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.m in Sources */ = {isa = PBXBuildFile; fileRef = ED8319311A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.m */; }; + ED83193D1A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.m in Sources */ = {isa = PBXBuildFile; fileRef = ED8319311A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.m */; }; + ED83193E1A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.m in Sources */ = {isa = PBXBuildFile; fileRef = ED8319311A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.m */; }; + ED83193F1A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.m in Sources */ = {isa = PBXBuildFile; fileRef = ED8319311A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.m */; }; + ED8319401A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.m in Sources */ = {isa = PBXBuildFile; fileRef = ED8319311A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.m */; }; + ED8319411A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.m in Sources */ = {isa = PBXBuildFile; fileRef = ED8319311A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.m */; }; + ED8319421A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.m in Sources */ = {isa = PBXBuildFile; fileRef = ED8319311A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.m */; }; + ED8319431A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.m in Sources */ = {isa = PBXBuildFile; fileRef = ED8319311A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.m */; }; + ED8319441A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.m in Sources */ = {isa = PBXBuildFile; fileRef = ED8319311A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.m */; }; + EDA22BE01A24C28D0093DB91 /* view.png in Resources */ = {isa = PBXBuildFile; fileRef = EDA22BDE1A24C28D0093DB91 /* view.png */; }; + EDA22BE11A24C28D0093DB91 /* view.png in Resources */ = {isa = PBXBuildFile; fileRef = EDA22BDE1A24C28D0093DB91 /* view.png */; }; + EDA22BE21A24C28D0093DB91 /* view.png in Resources */ = {isa = PBXBuildFile; fileRef = EDA22BDE1A24C28D0093DB91 /* view.png */; }; + EDA22BE31A24C28D0093DB91 /* view.png in Resources */ = {isa = PBXBuildFile; fileRef = EDA22BDE1A24C28D0093DB91 /* view.png */; }; + EDA22BE41A24C28D0093DB91 /* view.png in Resources */ = {isa = PBXBuildFile; fileRef = EDA22BDE1A24C28D0093DB91 /* view.png */; }; + EDA22BE51A24C28D0093DB91 /* view.png in Resources */ = {isa = PBXBuildFile; fileRef = EDA22BDE1A24C28D0093DB91 /* view.png */; }; + EDA22BE61A24C28D0093DB91 /* view.png in Resources */ = {isa = PBXBuildFile; fileRef = EDA22BDE1A24C28D0093DB91 /* view.png */; }; + EDA22BE71A24C28D0093DB91 /* view.png in Resources */ = {isa = PBXBuildFile; fileRef = EDA22BDE1A24C28D0093DB91 /* view.png */; }; + EDA22BE81A24C28D0093DB91 /* view.png in Resources */ = {isa = PBXBuildFile; fileRef = EDA22BDE1A24C28D0093DB91 /* view.png */; }; + EDA22BE91A24C28D0093DB91 /* view.png in Resources */ = {isa = PBXBuildFile; fileRef = EDA22BDE1A24C28D0093DB91 /* view.png */; }; + EDA22BEA1A24C28D0093DB91 /* window.png in Resources */ = {isa = PBXBuildFile; fileRef = EDA22BDF1A24C28D0093DB91 /* window.png */; }; + EDA22BEB1A24C28D0093DB91 /* window.png in Resources */ = {isa = PBXBuildFile; fileRef = EDA22BDF1A24C28D0093DB91 /* window.png */; }; + EDA22BEC1A24C28D0093DB91 /* window.png in Resources */ = {isa = PBXBuildFile; fileRef = EDA22BDF1A24C28D0093DB91 /* window.png */; }; + EDA22BED1A24C28D0093DB91 /* window.png in Resources */ = {isa = PBXBuildFile; fileRef = EDA22BDF1A24C28D0093DB91 /* window.png */; }; + EDA22BEE1A24C28D0093DB91 /* window.png in Resources */ = {isa = PBXBuildFile; fileRef = EDA22BDF1A24C28D0093DB91 /* window.png */; }; + EDA22BEF1A24C28D0093DB91 /* window.png in Resources */ = {isa = PBXBuildFile; fileRef = EDA22BDF1A24C28D0093DB91 /* window.png */; }; + EDA22BF01A24C28D0093DB91 /* window.png in Resources */ = {isa = PBXBuildFile; fileRef = EDA22BDF1A24C28D0093DB91 /* window.png */; }; + EDA22BF11A24C28D0093DB91 /* window.png in Resources */ = {isa = PBXBuildFile; fileRef = EDA22BDF1A24C28D0093DB91 /* window.png */; }; + EDA22BF21A24C28D0093DB91 /* window.png in Resources */ = {isa = PBXBuildFile; fileRef = EDA22BDF1A24C28D0093DB91 /* window.png */; }; + EDA22BF31A24C28D0093DB91 /* window.png in Resources */ = {isa = PBXBuildFile; fileRef = EDA22BDF1A24C28D0093DB91 /* window.png */; }; + EDA6AC401A1F407C001CD1F2 /* FSObjectInspectorOutlineView.h in Headers */ = {isa = PBXBuildFile; fileRef = EDA6AC3E1A1F407C001CD1F2 /* FSObjectInspectorOutlineView.h */; }; + EDA6AC411A1F407C001CD1F2 /* FSObjectInspectorOutlineView.h in Headers */ = {isa = PBXBuildFile; fileRef = EDA6AC3E1A1F407C001CD1F2 /* FSObjectInspectorOutlineView.h */; }; + EDA6AC421A1F407C001CD1F2 /* FSObjectInspectorOutlineView.h in Headers */ = {isa = PBXBuildFile; fileRef = EDA6AC3E1A1F407C001CD1F2 /* FSObjectInspectorOutlineView.h */; }; + EDA6AC431A1F407C001CD1F2 /* FSObjectInspectorOutlineView.h in Headers */ = {isa = PBXBuildFile; fileRef = EDA6AC3E1A1F407C001CD1F2 /* FSObjectInspectorOutlineView.h */; }; + EDA6AC441A1F407C001CD1F2 /* FSObjectInspectorOutlineView.h in Headers */ = {isa = PBXBuildFile; fileRef = EDA6AC3E1A1F407C001CD1F2 /* FSObjectInspectorOutlineView.h */; }; + EDA6AC451A1F407C001CD1F2 /* FSObjectInspectorOutlineView.h in Headers */ = {isa = PBXBuildFile; fileRef = EDA6AC3E1A1F407C001CD1F2 /* FSObjectInspectorOutlineView.h */; }; + EDA6AC461A1F407C001CD1F2 /* FSObjectInspectorOutlineView.h in Headers */ = {isa = PBXBuildFile; fileRef = EDA6AC3E1A1F407C001CD1F2 /* FSObjectInspectorOutlineView.h */; }; + EDA6AC471A1F407C001CD1F2 /* FSObjectInspectorOutlineView.h in Headers */ = {isa = PBXBuildFile; fileRef = EDA6AC3E1A1F407C001CD1F2 /* FSObjectInspectorOutlineView.h */; }; + EDA6AC481A1F407C001CD1F2 /* FSObjectInspectorOutlineView.h in Headers */ = {isa = PBXBuildFile; fileRef = EDA6AC3E1A1F407C001CD1F2 /* FSObjectInspectorOutlineView.h */; }; + EDA6AC491A1F407C001CD1F2 /* FSObjectInspectorOutlineView.m in Sources */ = {isa = PBXBuildFile; fileRef = EDA6AC3F1A1F407C001CD1F2 /* FSObjectInspectorOutlineView.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + EDA6AC4A1A1F407C001CD1F2 /* FSObjectInspectorOutlineView.m in Sources */ = {isa = PBXBuildFile; fileRef = EDA6AC3F1A1F407C001CD1F2 /* FSObjectInspectorOutlineView.m */; }; + EDA6AC4B1A1F407C001CD1F2 /* FSObjectInspectorOutlineView.m in Sources */ = {isa = PBXBuildFile; fileRef = EDA6AC3F1A1F407C001CD1F2 /* FSObjectInspectorOutlineView.m */; }; + EDA6AC4C1A1F407C001CD1F2 /* FSObjectInspectorOutlineView.m in Sources */ = {isa = PBXBuildFile; fileRef = EDA6AC3F1A1F407C001CD1F2 /* FSObjectInspectorOutlineView.m */; }; + EDA6AC4D1A1F407C001CD1F2 /* FSObjectInspectorOutlineView.m in Sources */ = {isa = PBXBuildFile; fileRef = EDA6AC3F1A1F407C001CD1F2 /* FSObjectInspectorOutlineView.m */; }; + EDA6AC4E1A1F407C001CD1F2 /* FSObjectInspectorOutlineView.m in Sources */ = {isa = PBXBuildFile; fileRef = EDA6AC3F1A1F407C001CD1F2 /* FSObjectInspectorOutlineView.m */; }; + EDA6AC4F1A1F407C001CD1F2 /* FSObjectInspectorOutlineView.m in Sources */ = {isa = PBXBuildFile; fileRef = EDA6AC3F1A1F407C001CD1F2 /* FSObjectInspectorOutlineView.m */; }; + EDA6AC501A1F407C001CD1F2 /* FSObjectInspectorOutlineView.m in Sources */ = {isa = PBXBuildFile; fileRef = EDA6AC3F1A1F407C001CD1F2 /* FSObjectInspectorOutlineView.m */; }; + EDA6AC511A1F407C001CD1F2 /* FSObjectInspectorOutlineView.m in Sources */ = {isa = PBXBuildFile; fileRef = EDA6AC3F1A1F407C001CD1F2 /* FSObjectInspectorOutlineView.m */; }; + EDA6AC521A1F407C001CD1F2 /* FSObjectInspectorOutlineView.m in Sources */ = {isa = PBXBuildFile; fileRef = EDA6AC3F1A1F407C001CD1F2 /* FSObjectInspectorOutlineView.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + EDA6AC561A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = EDA6AC531A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.h */; }; + EDA6AC571A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = EDA6AC531A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.h */; }; + EDA6AC581A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = EDA6AC531A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.h */; }; + EDA6AC591A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = EDA6AC531A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.h */; }; + EDA6AC5A1A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = EDA6AC531A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.h */; }; + EDA6AC5B1A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = EDA6AC531A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.h */; }; + EDA6AC5C1A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = EDA6AC531A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.h */; }; + EDA6AC5D1A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = EDA6AC531A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.h */; }; + EDA6AC5E1A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = EDA6AC531A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.h */; }; + EDA6AC5F1A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EDA6AC541A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + EDA6AC601A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EDA6AC541A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.m */; }; + EDA6AC611A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EDA6AC541A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.m */; }; + EDA6AC621A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EDA6AC541A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.m */; }; + EDA6AC631A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EDA6AC541A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.m */; }; + EDA6AC641A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EDA6AC541A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.m */; }; + EDA6AC651A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EDA6AC541A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.m */; }; + EDA6AC661A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EDA6AC541A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.m */; }; + EDA6AC671A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EDA6AC541A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.m */; }; + EDA6AC681A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EDA6AC541A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + EDA6AC691A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDA6AC551A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.xib */; }; + EDA6AC6A1A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDA6AC551A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.xib */; }; + EDA6AC6B1A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDA6AC551A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.xib */; }; + EDA6AC6C1A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDA6AC551A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.xib */; }; + EDA6AC6D1A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDA6AC551A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.xib */; }; + EDA6AC6E1A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDA6AC551A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.xib */; }; + EDA6AC6F1A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDA6AC551A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.xib */; }; + EDA6AC701A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDA6AC551A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.xib */; }; + EDA6AC711A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDA6AC551A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.xib */; }; + EDA6AC721A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDA6AC551A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.xib */; }; + EDC2C8DE1A1A943600942777 /* FSDetailedObjectInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = EDC2C8DC1A1A943600942777 /* FSDetailedObjectInspector.h */; }; + EDC2C8DF1A1A943600942777 /* FSDetailedObjectInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = EDC2C8DC1A1A943600942777 /* FSDetailedObjectInspector.h */; }; + EDC2C8E01A1A943600942777 /* FSDetailedObjectInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = EDC2C8DC1A1A943600942777 /* FSDetailedObjectInspector.h */; }; + EDC2C8E11A1A943600942777 /* FSDetailedObjectInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = EDC2C8DC1A1A943600942777 /* FSDetailedObjectInspector.h */; }; + EDC2C8E21A1A943600942777 /* FSDetailedObjectInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = EDC2C8DC1A1A943600942777 /* FSDetailedObjectInspector.h */; }; + EDC2C8E31A1A943600942777 /* FSDetailedObjectInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = EDC2C8DC1A1A943600942777 /* FSDetailedObjectInspector.h */; }; + EDC2C8E41A1A943600942777 /* FSDetailedObjectInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = EDC2C8DD1A1A943600942777 /* FSDetailedObjectInspector.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + EDC2C8E51A1A943600942777 /* FSDetailedObjectInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = EDC2C8DD1A1A943600942777 /* FSDetailedObjectInspector.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + EDC2C8E61A1A943600942777 /* FSDetailedObjectInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = EDC2C8DD1A1A943600942777 /* FSDetailedObjectInspector.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + EDC2C8E71A1A943600942777 /* FSDetailedObjectInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = EDC2C8DD1A1A943600942777 /* FSDetailedObjectInspector.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + EDC2C8E81A1A943600942777 /* FSDetailedObjectInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = EDC2C8DD1A1A943600942777 /* FSDetailedObjectInspector.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + EDC2C8E91A1A943600942777 /* FSDetailedObjectInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = EDC2C8DD1A1A943600942777 /* FSDetailedObjectInspector.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + EDC2C8EA1A1A99BF00942777 /* FSDetailedObjectInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = EDC2C8DC1A1A943600942777 /* FSDetailedObjectInspector.h */; }; + EDC2C8EB1A1A99BF00942777 /* FSDetailedObjectInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = EDC2C8DD1A1A943600942777 /* FSDetailedObjectInspector.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + EDC2C8EC1A1A99F600942777 /* FSObjectInspectorViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = ED3004E51A1A86EF00675D94 /* FSObjectInspectorViewController.h */; }; + EDC2C8ED1A1A99F600942777 /* FSObjectInspectorViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = ED3004E61A1A86EF00675D94 /* FSObjectInspectorViewController.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + EDC2C8F01A1AA34D00942777 /* FSObjectInspectorBackgroundView.h in Headers */ = {isa = PBXBuildFile; fileRef = EDC2C8EE1A1AA34D00942777 /* FSObjectInspectorBackgroundView.h */; }; + EDC2C8F11A1AA34D00942777 /* FSObjectInspectorBackgroundView.h in Headers */ = {isa = PBXBuildFile; fileRef = EDC2C8EE1A1AA34D00942777 /* FSObjectInspectorBackgroundView.h */; }; + EDC2C8F21A1AA34D00942777 /* FSObjectInspectorBackgroundView.h in Headers */ = {isa = PBXBuildFile; fileRef = EDC2C8EE1A1AA34D00942777 /* FSObjectInspectorBackgroundView.h */; }; + EDC2C8F31A1AA34D00942777 /* FSObjectInspectorBackgroundView.h in Headers */ = {isa = PBXBuildFile; fileRef = EDC2C8EE1A1AA34D00942777 /* FSObjectInspectorBackgroundView.h */; }; + EDC2C8F41A1AA34D00942777 /* FSObjectInspectorBackgroundView.h in Headers */ = {isa = PBXBuildFile; fileRef = EDC2C8EE1A1AA34D00942777 /* FSObjectInspectorBackgroundView.h */; }; + EDC2C8F51A1AA34D00942777 /* FSObjectInspectorBackgroundView.h in Headers */ = {isa = PBXBuildFile; fileRef = EDC2C8EE1A1AA34D00942777 /* FSObjectInspectorBackgroundView.h */; }; + EDC2C8F61A1AA34D00942777 /* FSObjectInspectorBackgroundView.h in Headers */ = {isa = PBXBuildFile; fileRef = EDC2C8EE1A1AA34D00942777 /* FSObjectInspectorBackgroundView.h */; }; + EDC2C8F71A1AA34D00942777 /* FSObjectInspectorBackgroundView.m in Sources */ = {isa = PBXBuildFile; fileRef = EDC2C8EF1A1AA34D00942777 /* FSObjectInspectorBackgroundView.m */; }; + EDC2C8F81A1AA34D00942777 /* FSObjectInspectorBackgroundView.m in Sources */ = {isa = PBXBuildFile; fileRef = EDC2C8EF1A1AA34D00942777 /* FSObjectInspectorBackgroundView.m */; }; + EDC2C8F91A1AA34D00942777 /* FSObjectInspectorBackgroundView.m in Sources */ = {isa = PBXBuildFile; fileRef = EDC2C8EF1A1AA34D00942777 /* FSObjectInspectorBackgroundView.m */; }; + EDC2C8FA1A1AA34D00942777 /* FSObjectInspectorBackgroundView.m in Sources */ = {isa = PBXBuildFile; fileRef = EDC2C8EF1A1AA34D00942777 /* FSObjectInspectorBackgroundView.m */; }; + EDC2C8FB1A1AA34D00942777 /* FSObjectInspectorBackgroundView.m in Sources */ = {isa = PBXBuildFile; fileRef = EDC2C8EF1A1AA34D00942777 /* FSObjectInspectorBackgroundView.m */; }; + EDC2C8FC1A1AA34D00942777 /* FSObjectInspectorBackgroundView.m in Sources */ = {isa = PBXBuildFile; fileRef = EDC2C8EF1A1AA34D00942777 /* FSObjectInspectorBackgroundView.m */; }; + EDC2C8FD1A1AA34D00942777 /* FSObjectInspectorBackgroundView.m in Sources */ = {isa = PBXBuildFile; fileRef = EDC2C8EF1A1AA34D00942777 /* FSObjectInspectorBackgroundView.m */; }; + EDC2C8FE1A1AA34D00942777 /* FSObjectInspectorBackgroundView.m in Sources */ = {isa = PBXBuildFile; fileRef = EDC2C8EF1A1AA34D00942777 /* FSObjectInspectorBackgroundView.m */; }; + EDC2C9051A1AA50D00942777 /* FSAirplane.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E30F00D7DFE17BE9C1BD /* FSAirplane.h */; }; + EDC2C9061A1AA50D00942777 /* ArrayPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E31300D7DFE17BE9C1BD /* ArrayPrivate.h */; }; + EDC2C9071A1AA50D00942777 /* ArrayRep.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E31400D7DFE17BE9C1BD /* ArrayRep.h */; }; + EDC2C9081A1AA50D00942777 /* ArrayRepDouble.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E31700D7DFE17BE9C1BD /* ArrayRepDouble.h */; }; + EDC2C9091A1AA50D00942777 /* ArrayRepEmpty.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E31900D7DFE17BE9C1BD /* ArrayRepEmpty.h */; }; + EDC2C90A1A1AA50D00942777 /* ArrayRepId.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E31B00D7DFE17BE9C1BD /* ArrayRepId.h */; }; + EDC2C90B1A1AA50D00942777 /* FSCollectionInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E31D00D7DFE17BE9C1BD /* FSCollectionInspector.h */; }; + EDC2C90C1A1AA50D00942777 /* FSObjectBrowser.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E32000D7DFE17BE9C1BD /* FSObjectBrowser.h */; }; + EDC2C90D1A1AA50D00942777 /* FSObjectBrowserArgumentPanel.h in Headers */ = {isa = PBXBuildFile; fileRef = F5FA8A6C0215D44C01AFEEFD /* FSObjectBrowserArgumentPanel.h */; }; + EDC2C90E1A1AA50D00942777 /* FSObjectBrowserCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E32200D7DFE17BE9C1BD /* FSObjectBrowserCell.h */; }; + EDC2C90F1A1AA50D00942777 /* FSObjectBrowserView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E32400D7DFE17BE9C1BD /* FSObjectBrowserView.h */; }; + EDC2C9101A1AA50D00942777 /* FSBlock.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E32600D7DFE17BE9C1BD /* FSBlock.h */; }; + EDC2C9111A1AA50D00942777 /* BlockInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E32800D7DFE17BE9C1BD /* BlockInspector.h */; }; + EDC2C9121A1AA50D00942777 /* BlockPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E32B00D7DFE17BE9C1BD /* BlockPrivate.h */; }; + EDC2C9131A1AA50D00942777 /* BlockRep.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E32C00D7DFE17BE9C1BD /* BlockRep.h */; }; + EDC2C9141A1AA50D00942777 /* BlockSignature.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E32E00D7DFE17BE9C1BD /* BlockSignature.h */; }; + EDC2C9151A1AA50D00942777 /* BlockStackElem.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E32F00D7DFE17BE9C1BD /* BlockStackElem.h */; }; + EDC2C9161A1AA50D00942777 /* build_config.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E33200D7DFE17BE9C1BD /* build_config.h */; }; + EDC2C9171A1AA50D00942777 /* FSDetailedObjectInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = EDC2C8DC1A1A943600942777 /* FSDetailedObjectInspector.h */; }; + EDC2C9181A1AA50D00942777 /* CLIView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E33300D7DFE17BE9C1BD /* CLIView.h */; }; + EDC2C9191A1AA50D00942777 /* FSCompilationResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E33500D7DFE17BE9C1BD /* FSCompilationResult.h */; }; + EDC2C91A1A1AA50D00942777 /* CompiledCodeNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E33700D7DFE17BE9C1BD /* CompiledCodeNode.h */; }; + EDC2C91B1A1AA50D00942777 /* FSCompiler.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E33900D7DFE17BE9C1BD /* FSCompiler.h */; }; + EDC2C91C1A1AA50D00942777 /* FSConstantsInitialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E33B00D7DFE17BE9C1BD /* FSConstantsInitialization.h */; }; + EDC2C91D1A1AA50D00942777 /* FSExecEngine.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E33D00D7DFE17BE9C1BD /* FSExecEngine.h */; }; + EDC2C91E1A1AA50D00942777 /* FSExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E33F00D7DFE17BE9C1BD /* FSExecutor.h */; }; + EDC2C91F1A1AA50D00942777 /* FSFlight.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E34200D7DFE17BE9C1BD /* FSFlight.h */; }; + EDC2C9201A1AA50D00942777 /* FSArchiver.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E34500D7DFE17BE9C1BD /* FSArchiver.h */; }; + EDC2C9211A1AA50D00942777 /* FSBoolean.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E34700D7DFE17BE9C1BD /* FSBoolean.h */; }; + EDC2C9221A1AA50D00942777 /* FSBooleanPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E34900D7DFE17BE9C1BD /* FSBooleanPrivate.h */; }; + EDC2C9231A1AA50D00942777 /* FScript.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E34C00D7DFE17BE9C1BD /* FScript.h */; }; + EDC2C9241A1AA50D00942777 /* FScriptFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E34E00D7DFE17BE9C1BD /* FScriptFunctions.h */; }; + EDC2C9251A1AA50D00942777 /* FScriptTextView.h in Headers */ = {isa = PBXBuildFile; fileRef = F5FBEF2802149D32018C0134 /* FScriptTextView.h */; }; + EDC2C9261A1AA50D00942777 /* FSInterpreter.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E35000D7DFE17BE9C1BD /* FSInterpreter.h */; }; + EDC2C9271A1AA50D00942777 /* FSInterpreterResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E35200D7DFE17BE9C1BD /* FSInterpreterResult.h */; }; + EDC2C9281A1AA50D00942777 /* FSInterpreterResultPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E35400D7DFE17BE9C1BD /* FSInterpreterResultPrivate.h */; }; + EDC2C9291A1AA50D00942777 /* FSInterpreterView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E35500D7DFE17BE9C1BD /* FSInterpreterView.h */; }; + EDC2C92A1A1AA50D00942777 /* FSInterpreterViewIBHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E35700D7DFE17BE9C1BD /* FSInterpreterViewIBHeader.h */; }; + EDC2C92B1A1AA50D00942777 /* FSNSArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E35800D7DFE17BE9C1BD /* FSNSArray.h */; }; + EDC2C92C1A1AA50D00942777 /* FSNSArrayPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E35A00D7DFE17BE9C1BD /* FSNSArrayPrivate.h */; }; + EDC2C92D1A1AA50D00942777 /* FSNSDate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E35B00D7DFE17BE9C1BD /* FSNSDate.h */; }; + EDC2C92F1A1AA50D00942777 /* FSNSDictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E35D00D7DFE17BE9C1BD /* FSNSDictionary.h */; }; + EDC2C9301A1AA50D00942777 /* FSNSDistantObject.h in Headers */ = {isa = PBXBuildFile; fileRef = F51CA01401B013C401BFBB24 /* FSNSDistantObject.h */; }; + EDC2C9311A1AA50D00942777 /* FSNSMutableString.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E35F00D7DFE17BE9C1BD /* FSNSMutableString.h */; }; + EDC2C9321A1AA50D00942777 /* FSNSNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E36100D7DFE17BE9C1BD /* FSNSNumber.h */; }; + EDC2C9331A1AA50D00942777 /* FSNSObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E36300D7DFE17BE9C1BD /* FSNSObject.h */; }; + EDC2C9351A1AA50D00942777 /* FSNSProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E36500D7DFE17BE9C1BD /* FSNSProxy.h */; }; + EDC2C9361A1AA50D00942777 /* FSPattern.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E36C00D7DFE17BE9C1BD /* FSPattern.h */; }; + EDC2C9371A1AA50D00942777 /* FSUnarchiver.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E37200D7DFE17BE9C1BD /* FSUnarchiver.h */; }; + EDC2C9381A1AA50D00942777 /* FSVoid.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E37400D7DFE17BE9C1BD /* FSVoid.h */; }; + EDC2C9391A1AA50D00942777 /* FSVoidPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E37600D7DFE17BE9C1BD /* FSVoidPrivate.h */; }; + EDC2C93A1A1AA50D00942777 /* FSGenericObjectInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E37700D7DFE17BE9C1BD /* FSGenericObjectInspector.h */; }; + EDC2C93B1A1AA50D00942777 /* KTestManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 66029E580161E0650055708C /* KTestManager.h */; }; + EDC2C93C1A1AA50D00942777 /* MessagePatternCodeNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E37F00D7DFE17BE9C1BD /* MessagePatternCodeNode.h */; }; + EDC2C93D1A1AA50D00942777 /* FSMiscTools.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E38100D7DFE17BE9C1BD /* FSMiscTools.h */; }; + EDC2C93E1A1AA50D00942777 /* FSMsgContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E38300D7DFE17BE9C1BD /* FSMsgContext.h */; }; + EDC2C93F1A1AA50D00942777 /* FSNewlyAllocatedObjectHolder.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E38700D7DFE17BE9C1BD /* FSNewlyAllocatedObjectHolder.h */; }; + EDC2C9401A1AA50D00942777 /* FSNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E38D00D7DFE17BE9C1BD /* FSNumber.h */; }; + EDC2C9411A1AA50D00942777 /* NumberPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E38F00D7DFE17BE9C1BD /* NumberPrivate.h */; }; + EDC2C9421A1AA50D00942777 /* FSPilot.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E39000D7DFE17BE9C1BD /* FSPilot.h */; }; + EDC2C9431A1AA50D00942777 /* FSReplacementForCoderForClass.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E39400D7DFE17BE9C1BD /* FSReplacementForCoderForClass.h */; }; + EDC2C9441A1AA50D00942777 /* FSObjectEnumInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = ED8222E51A19554F00C42C72 /* FSObjectEnumInfo.h */; }; + EDC2C9451A1AA50D00942777 /* ShellView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E39600D7DFE17BE9C1BD /* ShellView.h */; }; + EDC2C9461A1AA50D00942777 /* Space.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E39800D7DFE17BE9C1BD /* Space.h */; }; + EDC2C9471A1AA50D00942777 /* FSCommandHistory.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E39A00D7DFE17BE9C1BD /* FSCommandHistory.h */; }; + EDC2C9481A1AA50D00942777 /* FSSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E39E00D7DFE17BE9C1BD /* FSSystem.h */; }; + EDC2C9491A1AA50D00942777 /* DOTest.h in Headers */ = {isa = PBXBuildFile; fileRef = F5F13B4701C8BE3401CB6DF7 /* DOTest.h */; }; + EDC2C94A1A1AA50D00942777 /* FSNSProtocolChecker.h in Headers */ = {isa = PBXBuildFile; fileRef = F5F140590223CC9D01DD698C /* FSNSProtocolChecker.h */; }; + EDC2C94B1A1AA50D00942777 /* FScriptAppController.h in Headers */ = {isa = PBXBuildFile; fileRef = F5F1A9F9022E9A96011160FE /* FScriptAppController.h */; }; + EDC2C94C1A1AA50D00942777 /* FSObjectBrowserToolbar.h in Headers */ = {isa = PBXBuildFile; fileRef = F538EF6C0279FD3C01345511 /* FSObjectBrowserToolbar.h */; }; + EDC2C94D1A1AA50D00942777 /* FSEvalCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = F538EF700279FD3C01345511 /* FSEvalCommand.h */; }; + EDC2C94E1A1AA50D00942777 /* FSServicesProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = F538EF7C0279FD3C01345511 /* FSServicesProvider.h */; }; + EDC2C94F1A1AA50D00942777 /* FSTask.h in Headers */ = {isa = PBXBuildFile; fileRef = F538EF7E0279FD3C01345511 /* FSTask.h */; }; + EDC2C9501A1AA50D00942777 /* FSObjectBrowserToolbarButton.h in Headers */ = {isa = PBXBuildFile; fileRef = F5F0AD420285792F0103CD49 /* FSObjectBrowserToolbarButton.h */; }; + EDC2C9511A1AA50D00942777 /* FSObjectBrowserButtonCtxBlock.h in Headers */ = {isa = PBXBuildFile; fileRef = F5F0261F02C243D20155CB83 /* FSObjectBrowserButtonCtxBlock.h */; }; + EDC2C9521A1AA50D00942777 /* DOCustom.h in Headers */ = {isa = PBXBuildFile; fileRef = F5F1AAAE022E9E4F011160FE /* DOCustom.h */; }; + EDC2C9531A1AA50D00942777 /* FSObjectInspectorViewModelItem.h in Headers */ = {isa = PBXBuildFile; fileRef = ED8222D41A194FD600C42C72 /* FSObjectInspectorViewModelItem.h */; }; + EDC2C9541A1AA50D00942777 /* Pointer.h in Headers */ = {isa = PBXBuildFile; fileRef = F505648002DF417501FE0326 /* Pointer.h */; }; + EDC2C9551A1AA50D00942777 /* FSObjectInspectorViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = ED3004E51A1A86EF00675D94 /* FSObjectInspectorViewController.h */; }; + EDC2C9561A1AA50D00942777 /* PointerPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = F5F856C002EB281C01F7E6F0 /* PointerPrivate.h */; }; + EDC2C9571A1AA50D00942777 /* metamacros.h in Headers */ = {isa = PBXBuildFile; fileRef = EDFB302E1A18CA26002C8DD7 /* metamacros.h */; }; + EDC2C9581A1AA50D00942777 /* FSInterpreterPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = F54CA17602FB2CAF01C25A35 /* FSInterpreterPrivate.h */; }; + EDC2C9591A1AA50D00942777 /* FSIdentifierFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = F5073A2102FC5400013656B0 /* FSIdentifierFormatter.h */; }; + EDC2C95A1A1AA50D00942777 /* FSObjectFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = F5EBBE820321029601CA10C6 /* FSObjectFormatter.h */; }; + EDC2C95B1A1AA50D00942777 /* FSSystemPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = F5A25E260357B373011A39F8 /* FSSystemPrivate.h */; }; + EDC2C95C1A1AA50D00942777 /* FSKeyedUnarchiver.h in Headers */ = {isa = PBXBuildFile; fileRef = F55D44C40358A88801B9E934 /* FSKeyedUnarchiver.h */; }; + EDC2C95D1A1AA50D00942777 /* FSKeyedArchiver.h in Headers */ = {isa = PBXBuildFile; fileRef = F55D44CE0358B5D201B9E934 /* FSKeyedArchiver.h */; }; + EDC2C95E1A1AA50D00942777 /* FSConstantListBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = F52EECA6036210E2016141BB /* FSConstantListBuilder.h */; }; + EDC2C95F1A1AA50D00942777 /* FSImageInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = F54B55B9036B45770140C608 /* FSImageInspector.h */; }; + EDC2C9601A1AA50D00942777 /* FSNSImage.h in Headers */ = {isa = PBXBuildFile; fileRef = F54B55C8036B4A330140C608 /* FSNSImage.h */; }; + EDC2C9611A1AA50D00942777 /* FSObjectBrowserToolbarItem.h in Headers */ = {isa = PBXBuildFile; fileRef = F58090CF03755FC701AED2EF /* FSObjectBrowserToolbarItem.h */; }; + EDC2C9621A1AA50D00942777 /* FSNSObjectPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F63CC08044B95DB00B84480 /* FSNSObjectPrivate.h */; }; + EDC2C9631A1AA50D00942777 /* FSArrayEnumerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FA3AE55044D4D6700CF7A3A /* FSArrayEnumerator.h */; }; + EDC2C9641A1AA50D00942777 /* FSNSMutableArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F66F85404666E8100AFC811 /* FSNSMutableArray.h */; }; + EDC2C9651A1AA50D00942777 /* FSObjectBrowserButtonsInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = F5F9569602B272FB0121B3BA /* FSObjectBrowserButtonsInspector.h */; }; + EDC2C9661A1AA50D00942777 /* ArrayRepBoolean.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D4BE29038511FF01461810 /* ArrayRepBoolean.h */; }; + EDC2C9671A1AA50D00942777 /* FSNSValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F553BF70585222700A92293 /* FSNSValue.h */; }; + EDC2C9681A1AA50D00942777 /* FSReplacementForCoderForNilInArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F7D7DB7058E32CD00F1B8A8 /* FSReplacementForCoderForNilInArray.h */; }; + EDC2C9691A1AA50D00942777 /* FSNamedNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F0E3B7E059F3DBB003F6CE9 /* FSNamedNumber.h */; }; + EDC2C96A1A1AA50D00942777 /* FSCollectionInspectorTableView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F60216E05A25CDC0004EFF1 /* FSCollectionInspectorTableView.h */; }; + EDC2C96B1A1AA50D00942777 /* FSNSSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F60F24505A9FE8B00985FEC /* FSNSSet.h */; }; + EDC2C96C1A1AA50D00942777 /* FSAttributedStringInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FDCCD4E05C09F8200747C0A /* FSAttributedStringInspector.h */; }; + EDC2C96D1A1AA50D00942777 /* FSNSAttributedString.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FDCCDBF05C0A23000747C0A /* FSNSAttributedString.h */; }; + EDC2C96E1A1AA50D00942777 /* FSInterpreterViewPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F71F72205C43A7D00C34794 /* FSInterpreterViewPrivate.h */; }; + EDC2C96F1A1AA50D00942777 /* FScriptMenuItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F0B66FB05C5639E0099180D /* FScriptMenuItem.h */; }; + EDC2C9701A1AA50D00942777 /* FSNSFont.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F658B2705C9694F0040FB24 /* FSNSFont.h */; }; + EDC2C9711A1AA50D00942777 /* FSObjectBrowserMatrix.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FB505FF05D53C8600153B33 /* FSObjectBrowserMatrix.h */; }; + EDC2C9721A1AA50D00942777 /* FSNSString.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E36700D7DFE17BE9C1BD /* FSNSString.h */; }; + EDC2C9741A1AA50D00942777 /* FSNSStringPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E36900D7DFE17BE9C1BD /* FSNSStringPrivate.h */; }; + EDC2C9751A1AA50D00942777 /* FSSymbolTable.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F17C07D06B1309C00F07862 /* FSSymbolTable.h */; }; + EDC2C9761A1AA50D00942777 /* TestFS.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FBB10A4044E28FD00181279 /* TestFS.h */; }; + EDC2C9771A1AA50D00942777 /* FSObjectBrowserViewObjectInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F4E294C075B8E5600F8DCDB /* FSObjectBrowserViewObjectInfo.h */; }; + EDC2C9781A1AA50D00942777 /* FSCollectionInspectorView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FA8EDC607735B3B001BEC7B /* FSCollectionInspectorView.h */; }; + EDC2C9791A1AA50D00942777 /* ArrayRepFetchRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FBC2877077B7D5200F9B4A2 /* ArrayRepFetchRequest.h */; }; + EDC2C97A1A1AA50D00942777 /* FSPointer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F8EA70B077F6A5200AC1C96 /* FSPointer.h */; }; + EDC2C97B1A1AA50D00942777 /* FSGenericPointer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F8EA779077F6C9300AC1C96 /* FSGenericPointer.h */; }; + EDC2C97C1A1AA50D00942777 /* FSPointerPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F8EA7E8077F719800AC1C96 /* FSPointerPrivate.h */; }; + EDC2C97D1A1AA50D00942777 /* FSGenericPointerPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F8EA841077F79A000AC1C96 /* FSGenericPointerPrivate.h */; }; + EDC2C97E1A1AA50D00942777 /* FSObjectPointer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FE9AE12078071CC005B2CC4 /* FSObjectPointer.h */; }; + EDC2C97F1A1AA50D00942777 /* FSObjectPointerPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FE9AE8207807269005B2CC4 /* FSObjectPointerPrivate.h */; }; + EDC2C9801A1AA50D00942777 /* FSManagedObjectContextInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F37AEC2078B7E900083565D /* FSManagedObjectContextInspector.h */; }; + EDC2C9811A1AA50D00942777 /* FSObjectBrowserNamedObjectWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F86923607F19BA8000D20A4 /* FSObjectBrowserNamedObjectWrapper.h */; }; + EDC2C9821A1AA50D00942777 /* FSInspectorUniquier.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F7F4F9C07FB274C008E42F4 /* FSInspectorUniquier.h */; }; + EDC2C9831A1AA50D00942777 /* FSPredicateTextView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F95E3C108034A670030B65C /* FSPredicateTextView.h */; }; + EDC2C9841A1AA50D00942777 /* FSCoreDataSample.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FE7E0E6082AD964008231E8 /* FSCoreDataSample.h */; }; + EDC2C9851A1AA50D00942777 /* FSNSManagedObjectContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F5189E707F072EA00A50735 /* FSNSManagedObjectContext.h */; }; + EDC2C9861A1AA50D00942777 /* FSObjectBrowserSearchField.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F585F6E059B23F100C12B6F /* FSObjectBrowserSearchField.h */; }; + EDC2C9871A1AA50D00942777 /* FSBlockCompilationResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F90A2EF096DB0660064F4BC /* FSBlockCompilationResult.h */; }; + EDC2C9881A1AA50D00942777 /* FSReturnSignal.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FD7D4A60975B377009B2685 /* FSReturnSignal.h */; }; + EDC2C9891A1AA50D00942777 /* FSConstantsDictionaryGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F92F0340463F03300F4C61F /* FSConstantsDictionaryGenerator.h */; }; + EDC2C98A1A1AA50D00942777 /* FSMethod.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F3C13980C65E66400948776 /* FSMethod.h */; }; + EDC2C98B1A1AA50D00942777 /* FSCNClassDefinition.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F5AD3200D05CFFE000CEAC6 /* FSCNClassDefinition.h */; }; + EDC2C98C1A1AA50D00942777 /* FSCNBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FE6397E0D09C0F400255EBA /* FSCNBase.h */; }; + EDC2C98D1A1AA50D00942777 /* FSCNIdentifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FE6398E0D09DCB600255EBA /* FSCNIdentifier.h */; }; + EDC2C98E1A1AA50D00942777 /* FSTestObjCClass1.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FE3DD200D26D49900A1D767 /* FSTestObjCClass1.h */; }; + EDC2C98F1A1AA50D00942777 /* FSTestObjCClass2.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F4822020D2C317700754A4E /* FSTestObjCClass2.h */; }; + EDC2C9901A1AA50D00942777 /* FSCNCategory.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F8112F00D85E58200CB3407 /* FSCNCategory.h */; }; + EDC2C9911A1AA50D00942777 /* FSCNMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F59CA6F0D86DD0800D67A78 /* FSCNMessage.h */; }; + EDC2C9921A1AA50D00942777 /* FSCNSuper.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F72237D0D870C6A00394C99 /* FSCNSuper.h */; }; + EDC2C9931A1AA50D00942777 /* FSCNUnaryMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F2E341E0D8DB61C00912543 /* FSCNUnaryMessage.h */; }; + EDC2C9941A1AA50D00942777 /* FSCNBinaryMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F2E34310D8DBF6A00912543 /* FSCNBinaryMessage.h */; }; + EDC2C9951A1AA50D00942777 /* FSCNKeywordMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F2E343A0D8DBFE700912543 /* FSCNKeywordMessage.h */; }; + EDC2C9961A1AA50D00942777 /* FSCNCascade.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F5900130D9468FC003A8B17 /* FSCNCascade.h */; }; + EDC2C9971A1AA50D00942777 /* FSCNStatementList.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F8F58640D9FE6A900ED0FED /* FSCNStatementList.h */; }; + EDC2C9981A1AA50D00942777 /* FSCNPrecomputedObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F747DA70DA03AE200148342 /* FSCNPrecomputedObject.h */; }; + EDC2C9991A1AA50D00942777 /* FSCNArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F747DB60DA0467100148342 /* FSCNArray.h */; }; + EDC2C99A1A1AA50D00942777 /* FSCNBlock.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FAE79AA0DA0ED5D00CB6E14 /* FSCNBlock.h */; }; + EDC2C99B1A1AA50D00942777 /* FSCNAssignment.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FAE79F10DA109C500CB6E14 /* FSCNAssignment.h */; }; + EDC2C99C1A1AA50D00942777 /* FSCNMethod.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F45CBBD0DA813F200AFA8C8 /* FSCNMethod.h */; }; + EDC2C99D1A1AA50D00942777 /* FSCNReturn.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FD0A3120DD7276000E47459 /* FSCNReturn.h */; }; + EDC2C99E1A1AA50D00942777 /* FSObjectInspectorBackgroundView.h in Headers */ = {isa = PBXBuildFile; fileRef = EDC2C8EE1A1AA34D00942777 /* FSObjectInspectorBackgroundView.h */; }; + EDC2C99F1A1AA50D00942777 /* FSClassDefinition.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F8949D50DE08B110094EC14 /* FSClassDefinition.h */; }; + EDC2C9A01A1AA50D00942777 /* FSTranscript.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F2DE6590E57254700CF83CB /* FSTranscript.h */; }; + EDC2C9A11A1AA50D00942777 /* FSArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FE6AD8F0EC740650096019D /* FSArray.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2C9A21A1AA50D00942777 /* Array_fscript.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F31A4C00EC74A2E00D1B8E8 /* Array_fscript.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2C9A31A1AA50D00942777 /* Block_fscript.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FCA00C10EEAF34300B10420 /* Block_fscript.h */; }; + EDC2C9A41A1AA50D00942777 /* Number_fscript.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FBB2FF00EEB3467007A3163 /* Number_fscript.h */; }; + EDC2C9A51A1AA50D00942777 /* FSGlobalScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FB9D5970F1CEE2100E10274 /* FSGlobalScope.h */; }; + EDC2C9A61A1AA50D00942777 /* FSNSFileHandle.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F9D04170F1DF1CB001B8286 /* FSNSFileHandle.h */; }; + EDC2C9A71A1AA50D00942777 /* FSAssociation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F940B810F2393B0004525E1 /* FSAssociation.h */; }; + EDC2C9A81A1AA50D00942777 /* FSCNDictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F940C6E0F23BC2E004525E1 /* FSCNDictionary.h */; }; + EDC2C9A91A1AA50D00942777 /* FSObjectBrowserBottomBarTextDisplay.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F7A71290F48397C00E95364 /* FSObjectBrowserBottomBarTextDisplay.h */; }; + EDC2C9AA1A1AA50D00942777 /* FSNSAffineTransform.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F2D72090F6BD9B100F0862A /* FSNSAffineTransform.h */; }; + EDC2C9AB1A1AA50D00942777 /* FSDemoAssistant.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F9636430F8DF6AB00A70F39 /* FSDemoAssistant.h */; }; + EDC2C9AC1A1AA50D00942777 /* FSNewlyAllocatedObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FCA593110883B0100F67841 /* FSNewlyAllocatedObject.h */; }; + EDC2C9AD1A1AA50D00942777 /* FSWorksWhenModalWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F5EDA00109B384A003A2F4C /* FSWorksWhenModalWindow.h */; }; + EDC2C9AE1A1AA50D00942777 /* FSNSMutableDictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F44270B116549C700E88F21 /* FSNSMutableDictionary.h */; }; + EDC2C9B21A1AA50D00942777 /* FSObjectBrowserButtonsInspector.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDFB2FF21A17E345002C8DD7 /* FSObjectBrowserButtonsInspector.xib */; }; + EDC2C9B31A1AA50D00942777 /* FSCollectionInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = 0CD4E31F00D7DFE17BE9C1BD /* FSCollectionInspector.nib */; }; + EDC2C9B41A1AA50D00942777 /* blockInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = 0CD4E32A00D7DFE17BE9C1BD /* blockInspector.nib */; }; + EDC2C9B51A1AA50D00942777 /* FlightTutorial.txt in Resources */ = {isa = PBXBuildFile; fileRef = 0CD4E34400D7DFE17BE9C1BD /* FlightTutorial.txt */; }; + EDC2C9B61A1AA50D00942777 /* genObjInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = 0CD4E37900D7DFE17BE9C1BD /* genObjInspector.nib */; }; + EDC2C9B71A1AA50D00942777 /* FSConsole.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDE508D119DD4D310012F16A /* FSConsole.xib */; }; + EDC2C9B81A1AA50D00942777 /* KTest.txt in Resources */ = {isa = PBXBuildFile; fileRef = 0CD4E37D00D7DFE17BE9C1BD /* KTest.txt */; }; + EDC2C9B91A1AA50D00942777 /* license.txt in Resources */ = {isa = PBXBuildFile; fileRef = 0CD4E37E00D7DFE17BE9C1BD /* license.txt */; }; + EDC2C9BA1A1AA50D00942777 /* fs.icns in Resources */ = {isa = PBXBuildFile; fileRef = F5F1A9F7022E9A96011160FE /* fs.icns */; }; + EDC2C9BB1A1AA50D00942777 /* FScriptAppPreference.nib in Resources */ = {isa = PBXBuildFile; fileRef = F5F1A9FB022E9A96011160FE /* FScriptAppPreference.nib */; }; + EDC2C9BC1A1AA50D00942777 /* fs.nib in Resources */ = {isa = PBXBuildFile; fileRef = F598CDB7025CF7E5011B2E41 /* fs.nib */; }; + EDC2C9BD1A1AA50D00942777 /* fs.scriptSuite in Resources */ = {isa = PBXBuildFile; fileRef = F538EF6E0279FD3C01345511 /* fs.scriptSuite */; }; + EDC2C9BE1A1AA50D00942777 /* fs.scriptTerminology in Resources */ = {isa = PBXBuildFile; fileRef = F538EF6F0279FD3C01345511 /* fs.scriptTerminology */; }; + EDC2C9BF1A1AA50D00942777 /* FSImageInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = F54B55C3036B48690140C608 /* FSImageInspector.nib */; }; + EDC2C9C01A1AA50D00942777 /* ArrayTableView.nib in Resources */ = {isa = PBXBuildFile; fileRef = F58090FC03756D2401AED2EF /* ArrayTableView.nib */; }; + EDC2C9C11A1AA50D00942777 /* constantsDictionary in Resources */ = {isa = PBXBuildFile; fileRef = 8F92F0380463F2A400F4C61F /* constantsDictionary */; }; + EDC2C9C21A1AA50D00942777 /* FSObjectInspectorViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = ED3004E71A1A86EF00675D94 /* FSObjectInspectorViewController.xib */; }; + EDC2C9C31A1AA50D00942777 /* FSAttributedStringInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8FDCCD7A05C0A0A000747C0A /* FSAttributedStringInspector.nib */; }; + EDC2C9C41A1AA50D00942777 /* FScriptPreferences.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDE508DA19DD4FDC0012F16A /* FScriptPreferences.xib */; }; + EDC2C9C51A1AA50D00942777 /* run.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8F2D066F05CED9B9007EA81B /* run.tiff */; }; + EDC2C9C61A1AA50D00942777 /* build.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8F56036505CF22660044FA65 /* build.tiff */; }; + EDC2C9C71A1AA50D00942777 /* FSCollectionInspectorView.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8FA8EF9107739FD4001BEC7B /* FSCollectionInspectorView.nib */; }; + EDC2C9C81A1AA50D00942777 /* FSManagedObjectContextInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8FCA6B79078E0E4F005FC6B2 /* FSManagedObjectContextInspector.nib */; }; + EDC2C9C91A1AA50D00942777 /* FSMovieInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8F7472BE056B7ACE00E87339 /* FSMovieInspector.nib */; }; + EDC2C9CA1A1AA50D00942777 /* FSTestClasses.txt in Resources */ = {isa = PBXBuildFile; fileRef = 8FE3DC990D26C0FD00A1D767 /* FSTestClasses.txt */; }; + EDC2C9CB1A1AA50D00942777 /* DemoAssistant.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8F9636480F8DF86600A70F39 /* DemoAssistant.xib */; }; + EDC2C9CD1A1AA50D00942777 /* FSAirplane.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E31000D7DFE17BE9C1BD /* FSAirplane.m */; }; + EDC2C9CE1A1AA50D00942777 /* ArrayRepDouble.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E31800D7DFE17BE9C1BD /* ArrayRepDouble.m */; }; + EDC2C9CF1A1AA50D00942777 /* ArrayRepEmpty.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E31A00D7DFE17BE9C1BD /* ArrayRepEmpty.m */; }; + EDC2C9D01A1AA50D00942777 /* ArrayRepId.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E31C00D7DFE17BE9C1BD /* ArrayRepId.m */; }; + EDC2C9D11A1AA50D00942777 /* FSCollectionInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E31E00D7DFE17BE9C1BD /* FSCollectionInspector.m */; }; + EDC2C9D21A1AA50D00942777 /* FSObjectBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32100D7DFE17BE9C1BD /* FSObjectBrowser.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + EDC2C9D31A1AA50D00942777 /* FSObjectBrowserArgumentPanel.m in Sources */ = {isa = PBXBuildFile; fileRef = F5FA8A6D0215D44C01AFEEFD /* FSObjectBrowserArgumentPanel.m */; }; + EDC2C9D41A1AA50D00942777 /* FSObjectBrowserCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32300D7DFE17BE9C1BD /* FSObjectBrowserCell.m */; }; + EDC2C9D51A1AA50D00942777 /* FSObjectBrowserView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32500D7DFE17BE9C1BD /* FSObjectBrowserView.m */; }; + EDC2C9D61A1AA50D00942777 /* FSBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32700D7DFE17BE9C1BD /* FSBlock.m */; }; + EDC2C9D71A1AA50D00942777 /* BlockInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32900D7DFE17BE9C1BD /* BlockInspector.m */; }; + EDC2C9D81A1AA50D00942777 /* BlockRep.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32D00D7DFE17BE9C1BD /* BlockRep.m */; }; + EDC2C9D91A1AA50D00942777 /* BlockStackElem.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E33000D7DFE17BE9C1BD /* BlockStackElem.m */; }; + EDC2C9DA1A1AA50D00942777 /* CLIView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E33400D7DFE17BE9C1BD /* CLIView.m */; }; + EDC2C9DB1A1AA50D00942777 /* FSCompilationResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E33600D7DFE17BE9C1BD /* FSCompilationResult.m */; }; + EDC2C9DC1A1AA50D00942777 /* FSObjectInspectorViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = ED3004E61A1A86EF00675D94 /* FSObjectInspectorViewController.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + EDC2C9DD1A1AA50D00942777 /* CompiledCodeNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E33800D7DFE17BE9C1BD /* CompiledCodeNode.m */; }; + EDC2C9DE1A1AA50D00942777 /* FSCompiler.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E33A00D7DFE17BE9C1BD /* FSCompiler.m */; }; + EDC2C9DF1A1AA50D00942777 /* FSConstantsInitialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E33C00D7DFE17BE9C1BD /* FSConstantsInitialization.m */; }; + EDC2C9E01A1AA50D00942777 /* FSExecEngine.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E33E00D7DFE17BE9C1BD /* FSExecEngine.m */; }; + EDC2C9E11A1AA50D00942777 /* FSExecutor.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E34000D7DFE17BE9C1BD /* FSExecutor.m */; }; + EDC2C9E21A1AA50D00942777 /* FSFlight.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E34300D7DFE17BE9C1BD /* FSFlight.m */; }; + EDC2C9E41A1AA50D00942777 /* FSArchiver.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E34600D7DFE17BE9C1BD /* FSArchiver.m */; }; + EDC2C9E51A1AA50D00942777 /* FSBoolean.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E34800D7DFE17BE9C1BD /* FSBoolean.m */; }; + EDC2C9E61A1AA50D00942777 /* FScriptFunctions.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E34F00D7DFE17BE9C1BD /* FScriptFunctions.m */; }; + EDC2C9E71A1AA50D00942777 /* FScriptTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = F501AF7B021497C401A75EC5 /* FScriptTextView.m */; }; + EDC2C9E81A1AA50D00942777 /* FSInterpreter.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E35100D7DFE17BE9C1BD /* FSInterpreter.m */; }; + EDC2C9E91A1AA50D00942777 /* FSInterpreterResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E35300D7DFE17BE9C1BD /* FSInterpreterResult.m */; }; + EDC2C9EA1A1AA50D00942777 /* FSInterpreterView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E35600D7DFE17BE9C1BD /* FSInterpreterView.m */; }; + EDC2C9EB1A1AA50D00942777 /* FSNSArray.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E35900D7DFE17BE9C1BD /* FSNSArray.m */; }; + EDC2C9EC1A1AA50D00942777 /* FSNSDate.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E35C00D7DFE17BE9C1BD /* FSNSDate.m */; }; + EDC2C9ED1A1AA50D00942777 /* FSNSDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E35E00D7DFE17BE9C1BD /* FSNSDictionary.m */; }; + EDC2C9EE1A1AA50D00942777 /* FSNSDistantObject.m in Sources */ = {isa = PBXBuildFile; fileRef = F51CA01501B013C401BFBB24 /* FSNSDistantObject.m */; }; + EDC2C9EF1A1AA50D00942777 /* FSNSMutableString.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E36000D7DFE17BE9C1BD /* FSNSMutableString.m */; }; + EDC2C9F11A1AA50D00942777 /* FSNSNumber.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E36200D7DFE17BE9C1BD /* FSNSNumber.m */; }; + EDC2C9F21A1AA50D00942777 /* FSNSObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E36400D7DFE17BE9C1BD /* FSNSObject.m */; }; + EDC2C9F31A1AA50D00942777 /* FSNSProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E36600D7DFE17BE9C1BD /* FSNSProxy.m */; }; + EDC2C9F41A1AA50D00942777 /* FSPattern.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E36D00D7DFE17BE9C1BD /* FSPattern.m */; }; + EDC2C9F51A1AA50D00942777 /* FSUnarchiver.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E37300D7DFE17BE9C1BD /* FSUnarchiver.m */; }; + EDC2C9F61A1AA50D00942777 /* FSVoid.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E37500D7DFE17BE9C1BD /* FSVoid.m */; }; + EDC2C9F71A1AA50D00942777 /* FSGenericObjectInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E37800D7DFE17BE9C1BD /* FSGenericObjectInspector.m */; }; + EDC2C9F81A1AA50D00942777 /* KTestManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 66029E590161E0650055708C /* KTestManager.m */; }; + EDC2C9F91A1AA50D00942777 /* FSMiscTools.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E38200D7DFE17BE9C1BD /* FSMiscTools.m */; }; + EDC2C9FA1A1AA50D00942777 /* FSMsgContext.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E38400D7DFE17BE9C1BD /* FSMsgContext.m */; }; + EDC2C9FB1A1AA50D00942777 /* FSNewlyAllocatedObjectHolder.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E38800D7DFE17BE9C1BD /* FSNewlyAllocatedObjectHolder.m */; }; + EDC2C9FC1A1AA50D00942777 /* FSNumber.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E38E00D7DFE17BE9C1BD /* FSNumber.m */; }; + EDC2C9FD1A1AA50D00942777 /* FSPilot.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E39100D7DFE17BE9C1BD /* FSPilot.m */; }; + EDC2C9FE1A1AA50D00942777 /* MessagePatternCodeNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E38000D7DFE17BE9C1BD /* MessagePatternCodeNode.m */; }; + EDC2C9FF1A1AA50D00942777 /* FSReplacementForCoderForClass.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E39500D7DFE17BE9C1BD /* FSReplacementForCoderForClass.m */; }; + EDC2CA001A1AA50D00942777 /* ShellView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E39700D7DFE17BE9C1BD /* ShellView.m */; }; + EDC2CA011A1AA50D00942777 /* Space.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E39900D7DFE17BE9C1BD /* Space.m */; }; + EDC2CA021A1AA50D00942777 /* FSCommandHistory.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E39B00D7DFE17BE9C1BD /* FSCommandHistory.m */; }; + EDC2CA031A1AA50D00942777 /* FSSystem.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E39F00D7DFE17BE9C1BD /* FSSystem.m */; }; + EDC2CA041A1AA50D00942777 /* FSObjectEnumInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = ED8222E61A19554F00C42C72 /* FSObjectEnumInfo.m */; }; + EDC2CA051A1AA50D00942777 /* DOTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F5F13B4801C8BE3401CB6DF7 /* DOTest.m */; }; + EDC2CA061A1AA50D00942777 /* FSNSProtocolChecker.m in Sources */ = {isa = PBXBuildFile; fileRef = F5F1405A0223CC9D01DD698C /* FSNSProtocolChecker.m */; }; + EDC2CA071A1AA50D00942777 /* fs_main.m in Sources */ = {isa = PBXBuildFile; fileRef = F5F1A9F8022E9A96011160FE /* fs_main.m */; }; + EDC2CA081A1AA50D00942777 /* FScriptAppController.m in Sources */ = {isa = PBXBuildFile; fileRef = F5F1A9FA022E9A96011160FE /* FScriptAppController.m */; }; + EDC2CA091A1AA50D00942777 /* FSObjectBrowserToolbar.m in Sources */ = {isa = PBXBuildFile; fileRef = F538EF6D0279FD3C01345511 /* FSObjectBrowserToolbar.m */; }; + EDC2CA0A1A1AA50D00942777 /* FSEvalCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = F538EF710279FD3C01345511 /* FSEvalCommand.m */; }; + EDC2CA0B1A1AA50D00942777 /* FSServicesProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = F538EF7D0279FD3C01345511 /* FSServicesProvider.m */; }; + EDC2CA0C1A1AA50D00942777 /* FSTask.m in Sources */ = {isa = PBXBuildFile; fileRef = F538EF7F0279FD3C01345511 /* FSTask.m */; }; + EDC2CA0D1A1AA50D00942777 /* FSObjectBrowserToolbarButton.m in Sources */ = {isa = PBXBuildFile; fileRef = F5F0AD430285792F0103CD49 /* FSObjectBrowserToolbarButton.m */; }; + EDC2CA0E1A1AA50D00942777 /* FSObjectBrowserButtonsInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = F5F9569502B272FB0121B3BA /* FSObjectBrowserButtonsInspector.m */; }; + EDC2CA0F1A1AA50D00942777 /* FSObjectBrowserButtonCtxBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = F5F0261E02C243D20155CB83 /* FSObjectBrowserButtonCtxBlock.m */; }; + EDC2CA101A1AA50D00942777 /* DOCustom.m in Sources */ = {isa = PBXBuildFile; fileRef = F5F1AAAF022E9E4F011160FE /* DOCustom.m */; }; + EDC2CA111A1AA50D00942777 /* Pointer.m in Sources */ = {isa = PBXBuildFile; fileRef = F505647F02DF417501FE0326 /* Pointer.m */; }; + EDC2CA121A1AA50D00942777 /* FSIdentifierFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = F5073A2002FC5400013656B0 /* FSIdentifierFormatter.m */; }; + EDC2CA131A1AA50D00942777 /* FSObjectFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = F5EBBE810321029601CA10C6 /* FSObjectFormatter.m */; }; + EDC2CA141A1AA50D00942777 /* FSKeyedUnarchiver.m in Sources */ = {isa = PBXBuildFile; fileRef = F55D44C50358A88801B9E934 /* FSKeyedUnarchiver.m */; }; + EDC2CA151A1AA50D00942777 /* FSKeyedArchiver.m in Sources */ = {isa = PBXBuildFile; fileRef = F55D44CF0358B5D201B9E934 /* FSKeyedArchiver.m */; }; + EDC2CA161A1AA50D00942777 /* FSObjectInspectorViewModelItem.m in Sources */ = {isa = PBXBuildFile; fileRef = ED8222D51A194FD600C42C72 /* FSObjectInspectorViewModelItem.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + EDC2CA171A1AA50D00942777 /* FSConstantListBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = F52EECA7036210E2016141BB /* FSConstantListBuilder.m */; }; + EDC2CA181A1AA50D00942777 /* FSImageInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = F54B55BA036B45770140C608 /* FSImageInspector.m */; }; + EDC2CA191A1AA50D00942777 /* FSNSImage.m in Sources */ = {isa = PBXBuildFile; fileRef = F54B55C9036B4A330140C608 /* FSNSImage.m */; }; + EDC2CA1A1A1AA50D00942777 /* FSDetailedObjectInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = EDC2C8DD1A1A943600942777 /* FSDetailedObjectInspector.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + EDC2CA1B1A1AA50D00942777 /* FSObjectBrowserToolbarItem.m in Sources */ = {isa = PBXBuildFile; fileRef = F58090D003755FC701AED2EF /* FSObjectBrowserToolbarItem.m */; }; + EDC2CA1C1A1AA50D00942777 /* FSArrayEnumerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FA3AE56044D4D6700CF7A3A /* FSArrayEnumerator.m */; }; + EDC2CA1D1A1AA50D00942777 /* FSNSMutableArray.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F66F85504666E8100AFC811 /* FSNSMutableArray.m */; }; + EDC2CA1E1A1AA50D00942777 /* ArrayRepBoolean.m in Sources */ = {isa = PBXBuildFile; fileRef = F5D4BE2A038511FF01461810 /* ArrayRepBoolean.m */; }; + EDC2CA1F1A1AA50D00942777 /* FSNSValue.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F553BF80585222700A92293 /* FSNSValue.m */; }; + EDC2CA201A1AA50D00942777 /* FSReplacementForCoderForNilInArray.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F7D7DB8058E32CD00F1B8A8 /* FSReplacementForCoderForNilInArray.m */; }; + EDC2CA211A1AA50D00942777 /* FSNamedNumber.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F0E3B7F059F3DBB003F6CE9 /* FSNamedNumber.m */; }; + EDC2CA221A1AA50D00942777 /* FSCollectionInspectorTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F60216F05A25CDC0004EFF1 /* FSCollectionInspectorTableView.m */; }; + EDC2CA231A1AA50D00942777 /* FSNSSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F60F24605A9FE8B00985FEC /* FSNSSet.m */; }; + EDC2CA241A1AA50D00942777 /* FSAttributedStringInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FDCCD4F05C09F8200747C0A /* FSAttributedStringInspector.m */; }; + EDC2CA251A1AA50D00942777 /* FSNSAttributedString.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FDCCDC005C0A23000747C0A /* FSNSAttributedString.m */; }; + EDC2CA261A1AA50D00942777 /* FScriptMenuItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F0B66FC05C5639E0099180D /* FScriptMenuItem.m */; }; + EDC2CA271A1AA50D00942777 /* FSNSFont.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F658B2805C9694F0040FB24 /* FSNSFont.m */; }; + EDC2CA281A1AA50D00942777 /* FSObjectBrowserMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FB5060005D53C8600153B33 /* FSObjectBrowserMatrix.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + EDC2CA291A1AA50D00942777 /* FSNSString.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E36800D7DFE17BE9C1BD /* FSNSString.m */; }; + EDC2CA2A1A1AA50D00942777 /* FSObjectInspectorBackgroundView.m in Sources */ = {isa = PBXBuildFile; fileRef = EDC2C8EF1A1AA34D00942777 /* FSObjectInspectorBackgroundView.m */; }; + EDC2CA2B1A1AA50D00942777 /* FSSymbolTable.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F17C07E06B1309C00F07862 /* FSSymbolTable.m */; }; + EDC2CA2C1A1AA50D00942777 /* TestFS.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E3A000D7DFE17BE9C1BD /* TestFS.m */; }; + EDC2CA2D1A1AA50D00942777 /* FSObjectBrowserViewObjectInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F4E294D075B8E5600F8DCDB /* FSObjectBrowserViewObjectInfo.m */; }; + EDC2CA2E1A1AA50D00942777 /* FSCollectionInspectorView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FA8EDD307735B3B001BEC7B /* FSCollectionInspectorView.m */; }; + EDC2CA2F1A1AA50D00942777 /* ArrayRepFetchRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FBC2884077B7D5200F9B4A2 /* ArrayRepFetchRequest.m */; }; + EDC2CA301A1AA50D00942777 /* FSPointer.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F8EA718077F6A5200AC1C96 /* FSPointer.m */; }; + EDC2CA311A1AA50D00942777 /* FSGenericPointer.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F8EA786077F6C9300AC1C96 /* FSGenericPointer.m */; }; + EDC2CA321A1AA50D00942777 /* FSObjectPointer.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FE9AE1F078071CC005B2CC4 /* FSObjectPointer.m */; }; + EDC2CA331A1AA50D00942777 /* FSManagedObjectContextInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F37AEC3078B7E900083565D /* FSManagedObjectContextInspector.m */; }; + EDC2CA341A1AA50D00942777 /* FSObjectBrowserNamedObjectWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F86923707F19BA8000D20A4 /* FSObjectBrowserNamedObjectWrapper.m */; }; + EDC2CA351A1AA50D00942777 /* FSInspectorUniquier.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F7F4F9D07FB274C008E42F4 /* FSInspectorUniquier.m */; }; + EDC2CA361A1AA50D00942777 /* FSPredicateTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F95E3C208034A670030B65C /* FSPredicateTextView.m */; }; + EDC2CA371A1AA50D00942777 /* FSCoreDataSample.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FE7E0E7082AD964008231E8 /* FSCoreDataSample.m */; }; + EDC2CA381A1AA50D00942777 /* FSNSManagedObjectContext.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F5189E807F072EA00A50735 /* FSNSManagedObjectContext.m */; }; + EDC2CA391A1AA50D00942777 /* FSObjectBrowserSearchField.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F585F6F059B23F100C12B6F /* FSObjectBrowserSearchField.m */; }; + EDC2CA3A1A1AA50D00942777 /* FSBlockCompilationResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F90A2F0096DB0660064F4BC /* FSBlockCompilationResult.m */; }; + EDC2CA3B1A1AA50D00942777 /* FSReturnSignal.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FD7D4A70975B377009B2685 /* FSReturnSignal.m */; }; + EDC2CA3C1A1AA50D00942777 /* FSConstantsDictionaryGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F92F0350463F03300F4C61F /* FSConstantsDictionaryGenerator.m */; }; + EDC2CA3D1A1AA50D00942777 /* FSQTMovie.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F573F90056B780500F2796A /* FSQTMovie.m */; }; + EDC2CA3E1A1AA50D00942777 /* FSMovieInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F573F7E056B754B00F2796A /* FSMovieInspector.m */; }; + EDC2CA3F1A1AA50D00942777 /* FSMethod.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F3C13990C65E66400948776 /* FSMethod.m */; }; + EDC2CA401A1AA50D00942777 /* FSCNClassDefinition.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F5AD3210D05CFFE000CEAC6 /* FSCNClassDefinition.m */; }; + EDC2CA411A1AA50D00942777 /* FSCNBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FE6397F0D09C0F400255EBA /* FSCNBase.m */; }; + EDC2CA421A1AA50D00942777 /* FSCNIdentifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FE6398F0D09DCB600255EBA /* FSCNIdentifier.m */; }; + EDC2CA431A1AA50D00942777 /* FSTestObjCClass1.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FE3DD210D26D49900A1D767 /* FSTestObjCClass1.m */; }; + EDC2CA451A1AA50D00942777 /* FSTestObjCClass2.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F4822030D2C317700754A4E /* FSTestObjCClass2.m */; }; + EDC2CA461A1AA50D00942777 /* FSCNCategory.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F8112F10D85E58200CB3407 /* FSCNCategory.m */; }; + EDC2CA471A1AA50D00942777 /* FSCNMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F59CA700D86DD0800D67A78 /* FSCNMessage.m */; }; + EDC2CA481A1AA50D00942777 /* FSCNSuper.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F72237E0D870C6A00394C99 /* FSCNSuper.m */; }; + EDC2CA491A1AA50D00942777 /* FSCNUnaryMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F2E341F0D8DB61C00912543 /* FSCNUnaryMessage.m */; }; + EDC2CA4A1A1AA50D00942777 /* FSCNBinaryMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F2E34320D8DBF6A00912543 /* FSCNBinaryMessage.m */; }; + EDC2CA4B1A1AA50D00942777 /* FSCNKeywordMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F2E343B0D8DBFE700912543 /* FSCNKeywordMessage.m */; }; + EDC2CA4C1A1AA50D00942777 /* FSCNCascade.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F5900140D9468FC003A8B17 /* FSCNCascade.m */; }; + EDC2CA4D1A1AA50D00942777 /* FSCNStatementList.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F8F58650D9FE6A900ED0FED /* FSCNStatementList.m */; }; + EDC2CA4E1A1AA50D00942777 /* FSCNPrecomputedObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F747DA80DA03AE200148342 /* FSCNPrecomputedObject.m */; }; + EDC2CA4F1A1AA50D00942777 /* FSCNArray.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F747DB70DA0467100148342 /* FSCNArray.m */; }; + EDC2CA501A1AA50D00942777 /* FSCNBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FAE79AB0DA0ED5D00CB6E14 /* FSCNBlock.m */; }; + EDC2CA511A1AA50D00942777 /* FSCNAssignment.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FAE79F20DA109C500CB6E14 /* FSCNAssignment.m */; }; + EDC2CA521A1AA50D00942777 /* FSCNMethod.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F45CBBE0DA813F200AFA8C8 /* FSCNMethod.m */; }; + EDC2CA531A1AA50D00942777 /* FSCNReturn.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FD0A3130DD7276000E47459 /* FSCNReturn.m */; }; + EDC2CA541A1AA50D00942777 /* FSClassDefinition.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F8949D60DE08B110094EC14 /* FSClassDefinition.m */; }; + EDC2CA551A1AA50D00942777 /* FSTranscript.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F2DE65A0E57254700CF83CB /* FSTranscript.m */; }; + EDC2CA561A1AA50D00942777 /* FSArray.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FE6AD900EC740650096019D /* FSArray.m */; }; + EDC2CA571A1AA50D00942777 /* Array.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F31A4C10EC74A2E00D1B8E8 /* Array.m */; }; + EDC2CA581A1AA50D00942777 /* Block.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FCA00C20EEAF34300B10420 /* Block.m */; }; + EDC2CA591A1AA50D00942777 /* Number.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FBB2FF10EEB3467007A3163 /* Number.m */; }; + EDC2CA5A1A1AA50D00942777 /* FSGlobalScope.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FB9D5980F1CEE2100E10274 /* FSGlobalScope.m */; }; + EDC2CA5B1A1AA50D00942777 /* FSNSFileHandle.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F9D04180F1DF1CB001B8286 /* FSNSFileHandle.m */; }; + EDC2CA5C1A1AA50D00942777 /* FSAssociation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F940B820F2393B0004525E1 /* FSAssociation.m */; }; + EDC2CA5D1A1AA50D00942777 /* FSCNDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F940C6F0F23BC2E004525E1 /* FSCNDictionary.m */; }; + EDC2CA5E1A1AA50D00942777 /* FSObjectBrowserBottomBarTextDisplay.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F7A712A0F48397C00E95364 /* FSObjectBrowserBottomBarTextDisplay.m */; }; + EDC2CA5F1A1AA50D00942777 /* FSNSAffineTransform.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F2D720A0F6BD9B100F0862A /* FSNSAffineTransform.m */; }; + EDC2CA601A1AA50D00942777 /* FSDemoAssistant.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F9636410F8DF69F00A70F39 /* FSDemoAssistant.m */; }; + EDC2CA611A1AA50D00942777 /* FSNewlyAllocatedObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FCA593210883B0100F67841 /* FSNewlyAllocatedObject.m */; }; + EDC2CA621A1AA50D00942777 /* FSWorksWhenModalWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F5EDA01109B384A003A2F4C /* FSWorksWhenModalWindow.m */; }; + EDC2CA631A1AA50D00942777 /* FSNSMutableDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F44270C116549C700E88F21 /* FSNSMutableDictionary.m */; }; + EDC2CA651A1AA50D00942777 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223095189F9924002C5B6A /* Accelerate.framework */; }; + EDC2CA661A1AA50D00942777 /* Accounts.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E2DBA31F161CA5D00035A675 /* Accounts.framework */; }; + EDC2CA671A1AA50D00942777 /* AddressBook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA22309F189F9A14002C5B6A /* AddressBook.framework */; }; + EDC2CA681A1AA50D00942777 /* AGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230A0189F9A14002C5B6A /* AGL.framework */; }; + EDC2CA691A1AA50D00942777 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230A1189F9A14002C5B6A /* AppKit.framework */; }; + EDC2CA6A1A1AA50D00942777 /* AppleScriptKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230A3189F9A14002C5B6A /* AppleScriptKit.framework */; }; + EDC2CA6B1A1AA50D00942777 /* AppleScriptObjC.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230A4189F9A14002C5B6A /* AppleScriptObjC.framework */; }; + EDC2CA6C1A1AA50D00942777 /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230A6189F9A14002C5B6A /* ApplicationServices.framework */; }; + EDC2CA6D1A1AA50D00942777 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223097189F9958002C5B6A /* AudioToolbox.framework */; }; + EDC2CA6E1A1AA50D00942777 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230A7189F9A14002C5B6A /* AudioUnit.framework */; }; + EDC2CA6F1A1AA50D00942777 /* AudioVideoBridging.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E2DBA321161CA60C0035A675 /* AudioVideoBridging.framework */; }; + EDC2CA701A1AA50D00942777 /* Automator.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230A8189F9A14002C5B6A /* Automator.framework */; }; + EDC2CA711A1AA50D00942777 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E2DBA32D161CA7180035A675 /* AVFoundation.framework */; }; + EDC2CA721A1AA50D00942777 /* AVKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223099189F9976002C5B6A /* AVKit.framework */; }; + EDC2CA731A1AA50D00942777 /* CalendarStore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230B3189F9A2E002C5B6A /* CalendarStore.framework */; }; + EDC2CA741A1AA50D00942777 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230B4189F9A2E002C5B6A /* Carbon.framework */; }; + EDC2CA751A1AA50D00942777 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230B5189F9A2E002C5B6A /* CFNetwork.framework */; }; + EDC2CA761A1AA50D00942777 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230B6189F9A2E002C5B6A /* Cocoa.framework */; }; + EDC2CA771A1AA50D00942777 /* Collaboration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230B7189F9A2E002C5B6A /* Collaboration.framework */; }; + EDC2CA781A1AA50D00942777 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA22309B189F9988002C5B6A /* CoreAudio.framework */; }; + EDC2CA791A1AA50D00942777 /* CoreAudioKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230B8189F9A2F002C5B6A /* CoreAudioKit.framework */; }; + EDC2CA7A1A1AA50D00942777 /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230B9189F9A2F002C5B6A /* CoreData.framework */; }; + EDC2CA7B1A1AA50D00942777 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230BA189F9A2F002C5B6A /* CoreFoundation.framework */; }; + EDC2CA7C1A1AA50D00942777 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230BB189F9A2F002C5B6A /* CoreGraphics.framework */; }; + EDC2CA7D1A1AA50D00942777 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA22309D189F99CC002C5B6A /* CoreLocation.framework */; }; + EDC2CA7E1A1AA50D00942777 /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230BC189F9A2F002C5B6A /* CoreMedia.framework */; }; + EDC2CA7F1A1AA50D00942777 /* CoreMediaIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230BD189F9A2F002C5B6A /* CoreMediaIO.framework */; }; + EDC2CA801A1AA50D00942777 /* CoreMIDI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230BE189F9A2F002C5B6A /* CoreMIDI.framework */; }; + EDC2CA811A1AA50D00942777 /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230BF189F9A2F002C5B6A /* CoreServices.framework */; }; + EDC2CA821A1AA50D00942777 /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230C0189F9A2F002C5B6A /* CoreText.framework */; }; + EDC2CA831A1AA50D00942777 /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230C1189F9A2F002C5B6A /* CoreVideo.framework */; }; + EDC2CA841A1AA50D00942777 /* CoreWLAN.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230C2189F9A2F002C5B6A /* CoreWLAN.framework */; }; + EDC2CA851A1AA50D00942777 /* DirectoryService.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230D3189F9A7A002C5B6A /* DirectoryService.framework */; }; + EDC2CA861A1AA50D00942777 /* DiscRecording.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230D4189F9A7A002C5B6A /* DiscRecording.framework */; }; + EDC2CA871A1AA50D00942777 /* DiscRecordingUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230D5189F9A7A002C5B6A /* DiscRecordingUI.framework */; }; + EDC2CA881A1AA50D00942777 /* DiskArbitration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230D6189F9A7A002C5B6A /* DiskArbitration.framework */; }; + EDC2CA891A1AA50D00942777 /* DVDPlayback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230D9189F9A7A002C5B6A /* DVDPlayback.framework */; }; + EDC2CA8A1A1AA50D00942777 /* EventKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E2DBA31C161CA57C0035A675 /* EventKit.framework */; }; + EDC2CA8B1A1AA50D00942777 /* ExceptionHandling.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA22316F189F9AD3002C5B6A /* ExceptionHandling.framework */; }; + EDC2CA8C1A1AA50D00942777 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223170189F9AD3002C5B6A /* ForceFeedback.framework */; }; + EDC2CA8D1A1AA50D00942777 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223171189F9AD3002C5B6A /* Foundation.framework */; }; + EDC2CA8E1A1AA50D00942777 /* FWAUserLib.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223172189F9AD3002C5B6A /* FWAUserLib.framework */; }; + EDC2CA8F1A1AA50D00942777 /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223173189F9AD3002C5B6A /* GameController.framework */; }; + EDC2CA901A1AA50D00942777 /* GameKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E2DBA323161CA6270035A675 /* GameKit.framework */; }; + EDC2CA911A1AA50D00942777 /* GLUT.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223147189F9AC5002C5B6A /* GLUT.framework */; }; + EDC2CA921A1AA50D00942777 /* GSS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223148189F9AC5002C5B6A /* GSS.framework */; }; + EDC2CA931A1AA50D00942777 /* ICADevices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223149189F9AC6002C5B6A /* ICADevices.framework */; }; + EDC2CA941A1AA50D00942777 /* ImageCaptureCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA22314A189F9AC6002C5B6A /* ImageCaptureCore.framework */; }; + EDC2CA951A1AA50D00942777 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA22314B189F9AC6002C5B6A /* ImageIO.framework */; }; + EDC2CA961A1AA50D00942777 /* IMServicePlugIn.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA22314C189F9AC6002C5B6A /* IMServicePlugIn.framework */; }; + EDC2CA971A1AA50D00942777 /* InputMethodKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA22314D189F9AC6002C5B6A /* InputMethodKit.framework */; }; + EDC2CA981A1AA50D00942777 /* InstallerPlugins.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA22314E189F9AC6002C5B6A /* InstallerPlugins.framework */; }; + EDC2CA991A1AA50D00942777 /* InstantMessage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA22314F189F9AC6002C5B6A /* InstantMessage.framework */; }; + EDC2CA9A1A1AA50D00942777 /* IOBluetooth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223150189F9AC6002C5B6A /* IOBluetooth.framework */; }; + EDC2CA9B1A1AA50D00942777 /* IOBluetoothUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223151189F9AC6002C5B6A /* IOBluetoothUI.framework */; }; + EDC2CA9C1A1AA50D00942777 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223152189F9AC6002C5B6A /* IOKit.framework */; }; + EDC2CA9D1A1AA50D00942777 /* IOSurface.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223153189F9AC6002C5B6A /* IOSurface.framework */; }; + EDC2CA9E1A1AA50D00942777 /* JavaFrameEmbedding.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223154189F9AC6002C5B6A /* JavaFrameEmbedding.framework */; }; + EDC2CA9F1A1AA50D00942777 /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223155189F9AC6002C5B6A /* JavaScriptCore.framework */; }; + EDC2CAA01A1AA50D00942777 /* JavaVM.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223156189F9AC6002C5B6A /* JavaVM.framework */; }; + EDC2CAA11A1AA50D00942777 /* Kerberos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223157189F9AC6002C5B6A /* Kerberos.framework */; }; + EDC2CAA21A1AA50D00942777 /* LatentSemanticMapping.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223159189F9AC7002C5B6A /* LatentSemanticMapping.framework */; }; + EDC2CAA31A1AA50D00942777 /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E2DBA325161CA64B0035A675 /* GLKit.framework */; }; + EDC2CAA41A1AA50D00942777 /* LDAP.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223144189F9ABD002C5B6A /* LDAP.framework */; }; + EDC2CAA51A1AA50D00942777 /* MapKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230F4189F9A99002C5B6A /* MapKit.framework */; }; + EDC2CAA61A1AA50D00942777 /* MediaAccessibility.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230F5189F9A99002C5B6A /* MediaAccessibility.framework */; }; + EDC2CAA71A1AA50D00942777 /* MediaLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230F6189F9A99002C5B6A /* MediaLibrary.framework */; }; + EDC2CAA81A1AA50D00942777 /* MediaToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230F7189F9A99002C5B6A /* MediaToolbox.framework */; }; + EDC2CAA91A1AA50D00942777 /* NetFS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230F8189F9A99002C5B6A /* NetFS.framework */; }; + EDC2CAAA1A1AA50D00942777 /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230F9189F9A99002C5B6A /* OpenAL.framework */; }; + EDC2CAAB1A1AA50D00942777 /* OpenCL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230FA189F9A99002C5B6A /* OpenCL.framework */; }; + EDC2CAAC1A1AA50D00942777 /* OpenDirectory.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230FB189F9A99002C5B6A /* OpenDirectory.framework */; }; + EDC2CAAD1A1AA50D00942777 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230FC189F9A99002C5B6A /* OpenGL.framework */; }; + EDC2CAAE1A1AA50D00942777 /* OSAKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230FD189F9A99002C5B6A /* OSAKit.framework */; }; + EDC2CAAF1A1AA50D00942777 /* PCSC.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230FE189F9A99002C5B6A /* PCSC.framework */; }; + EDC2CAB01A1AA50D00942777 /* PreferencePanes.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA2230FF189F9A99002C5B6A /* PreferencePanes.framework */; }; + EDC2CAB11A1AA50D00942777 /* PubSub.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223100189F9A99002C5B6A /* PubSub.framework */; }; + EDC2CAB21A1AA50D00942777 /* QTKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223101189F9A99002C5B6A /* QTKit.framework */; }; + EDC2CAB31A1AA50D00942777 /* Quartz.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223102189F9A99002C5B6A /* Quartz.framework */; }; + EDC2CAB41A1AA50D00942777 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223103189F9A99002C5B6A /* QuartzCore.framework */; }; + EDC2CAB51A1AA50D00942777 /* QuickLook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223104189F9A99002C5B6A /* QuickLook.framework */; }; + EDC2CAB61A1AA50D00942777 /* Ruby.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223106189F9A9A002C5B6A /* Ruby.framework */; }; + EDC2CAB71A1AA50D00942777 /* ScreenSaver.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223108189F9A9A002C5B6A /* ScreenSaver.framework */; }; + EDC2CAB81A1AA50D00942777 /* ScriptingBridge.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA22310A189F9A9A002C5B6A /* ScriptingBridge.framework */; }; + EDC2CAB91A1AA50D00942777 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA22310B189F9A9A002C5B6A /* Security.framework */; }; + EDC2CABA1A1AA50D00942777 /* SecurityFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA22310C189F9A9A002C5B6A /* SecurityFoundation.framework */; }; + EDC2CABB1A1AA50D00942777 /* SecurityInterface.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA22310D189F9A9A002C5B6A /* SecurityInterface.framework */; }; + EDC2CABC1A1AA50D00942777 /* ServiceManagement.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA22310E189F9A9A002C5B6A /* ServiceManagement.framework */; }; + EDC2CABD1A1AA50D00942777 /* SpriteKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA22310F189F9A9A002C5B6A /* SpriteKit.framework */; }; + EDC2CABE1A1AA50D00942777 /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223110189F9A9A002C5B6A /* StoreKit.framework */; }; + EDC2CABF1A1AA50D00942777 /* SyncServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223111189F9A9A002C5B6A /* SyncServices.framework */; }; + EDC2CAC01A1AA50D00942777 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223112189F9A9A002C5B6A /* SystemConfiguration.framework */; }; + EDC2CAC11A1AA50D00942777 /* Tcl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223113189F9A9A002C5B6A /* Tcl.framework */; }; + EDC2CAC21A1AA50D00942777 /* Tk.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223114189F9A9A002C5B6A /* Tk.framework */; }; + EDC2CAC31A1AA50D00942777 /* TWAIN.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223115189F9A9A002C5B6A /* TWAIN.framework */; }; + EDC2CAC41A1AA50D00942777 /* VideoDecodeAcceleration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223116189F9A9A002C5B6A /* VideoDecodeAcceleration.framework */; }; + EDC2CAC51A1AA50D00942777 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA223117189F9A9A002C5B6A /* WebKit.framework */; }; + EDC2CAC61A1AA50D00942777 /* SceneKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E2DBA327161CA65A0035A675 /* SceneKit.framework */; }; + EDC2CAC71A1AA50D00942777 /* Social.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E2DBA329161CA6600035A675 /* Social.framework */; }; + EDC2CAC81A1AA50D00942777 /* VideoToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E2DBA32B161CA6660035A675 /* VideoToolbox.framework */; }; + EDC2CAD11A1AA52500942777 /* BlockSignature.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E32E00D7DFE17BE9C1BD /* BlockSignature.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CAD21A1AA52500942777 /* FSAirplane.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E30F00D7DFE17BE9C1BD /* FSAirplane.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CAD31A1AA52500942777 /* ArrayPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E31300D7DFE17BE9C1BD /* ArrayPrivate.h */; }; + EDC2CAD41A1AA52500942777 /* ArrayRep.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E31400D7DFE17BE9C1BD /* ArrayRep.h */; settings = {ATTRIBUTES = (); }; }; + EDC2CAD51A1AA52500942777 /* ArrayRepDouble.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E31700D7DFE17BE9C1BD /* ArrayRepDouble.h */; }; + EDC2CAD61A1AA52500942777 /* ArrayRepEmpty.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E31900D7DFE17BE9C1BD /* ArrayRepEmpty.h */; }; + EDC2CAD71A1AA52500942777 /* ArrayRepId.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E31B00D7DFE17BE9C1BD /* ArrayRepId.h */; }; + EDC2CAD81A1AA52500942777 /* FSCollectionInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E31D00D7DFE17BE9C1BD /* FSCollectionInspector.h */; }; + EDC2CAD91A1AA52500942777 /* FSObjectBrowser.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E32000D7DFE17BE9C1BD /* FSObjectBrowser.h */; }; + EDC2CADA1A1AA52500942777 /* FSObjectBrowserCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E32200D7DFE17BE9C1BD /* FSObjectBrowserCell.h */; }; + EDC2CADB1A1AA52500942777 /* FSObjectInspectorViewModelItem.h in Headers */ = {isa = PBXBuildFile; fileRef = ED8222D41A194FD600C42C72 /* FSObjectInspectorViewModelItem.h */; }; + EDC2CADC1A1AA52500942777 /* FSBlock.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E32600D7DFE17BE9C1BD /* FSBlock.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CADD1A1AA52500942777 /* BlockInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E32800D7DFE17BE9C1BD /* BlockInspector.h */; }; + EDC2CADE1A1AA52500942777 /* BlockPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E32B00D7DFE17BE9C1BD /* BlockPrivate.h */; }; + EDC2CADF1A1AA52500942777 /* BlockRep.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E32C00D7DFE17BE9C1BD /* BlockRep.h */; }; + EDC2CAE01A1AA52500942777 /* BlockStackElem.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E32F00D7DFE17BE9C1BD /* BlockStackElem.h */; }; + EDC2CAE11A1AA52500942777 /* build_config.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E33200D7DFE17BE9C1BD /* build_config.h */; settings = {ATTRIBUTES = (); }; }; + EDC2CAE21A1AA52500942777 /* FSDetailedObjectInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = EDC2C8DC1A1A943600942777 /* FSDetailedObjectInspector.h */; }; + EDC2CAE31A1AA52500942777 /* CLIView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E33300D7DFE17BE9C1BD /* CLIView.h */; }; + EDC2CAE41A1AA52500942777 /* FSCompilationResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E33500D7DFE17BE9C1BD /* FSCompilationResult.h */; }; + EDC2CAE51A1AA52500942777 /* CompiledCodeNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E33700D7DFE17BE9C1BD /* CompiledCodeNode.h */; }; + EDC2CAE61A1AA52500942777 /* FSCompiler.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E33900D7DFE17BE9C1BD /* FSCompiler.h */; }; + EDC2CAE71A1AA52500942777 /* FSConstantsInitialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E33B00D7DFE17BE9C1BD /* FSConstantsInitialization.h */; }; + EDC2CAE81A1AA52500942777 /* FSExecEngine.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E33D00D7DFE17BE9C1BD /* FSExecEngine.h */; }; + EDC2CAE91A1AA52500942777 /* FSExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E33F00D7DFE17BE9C1BD /* FSExecutor.h */; }; + EDC2CAEA1A1AA52500942777 /* FSFlight.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E34200D7DFE17BE9C1BD /* FSFlight.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CAEB1A1AA52500942777 /* FSArchiver.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E34500D7DFE17BE9C1BD /* FSArchiver.h */; }; + EDC2CAEC1A1AA52500942777 /* FSBoolean.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E34700D7DFE17BE9C1BD /* FSBoolean.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CAED1A1AA52500942777 /* FSBooleanPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E34900D7DFE17BE9C1BD /* FSBooleanPrivate.h */; }; + EDC2CAEE1A1AA52500942777 /* FScript.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E34C00D7DFE17BE9C1BD /* FScript.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CAEF1A1AA52500942777 /* FScriptFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E34E00D7DFE17BE9C1BD /* FScriptFunctions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CAF01A1AA52500942777 /* FSInterpreter.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E35000D7DFE17BE9C1BD /* FSInterpreter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CAF11A1AA52500942777 /* FSInterpreterResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E35200D7DFE17BE9C1BD /* FSInterpreterResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CAF21A1AA52500942777 /* FSInterpreterResultPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E35400D7DFE17BE9C1BD /* FSInterpreterResultPrivate.h */; }; + EDC2CAF31A1AA52500942777 /* FSInterpreterView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E35500D7DFE17BE9C1BD /* FSInterpreterView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CAF41A1AA52500942777 /* FSInterpreterViewIBHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E35700D7DFE17BE9C1BD /* FSInterpreterViewIBHeader.h */; }; + EDC2CAF51A1AA52500942777 /* FSNSArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E35800D7DFE17BE9C1BD /* FSNSArray.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CAF61A1AA52500942777 /* FSNSArrayPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E35A00D7DFE17BE9C1BD /* FSNSArrayPrivate.h */; settings = {ATTRIBUTES = (); }; }; + EDC2CAF71A1AA52500942777 /* FSNSDate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E35B00D7DFE17BE9C1BD /* FSNSDate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CAF81A1AA52500942777 /* FSNSDictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E35D00D7DFE17BE9C1BD /* FSNSDictionary.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CAF91A1AA52500942777 /* FSNSMutableString.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E35F00D7DFE17BE9C1BD /* FSNSMutableString.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CAFA1A1AA52500942777 /* FSNSNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E36100D7DFE17BE9C1BD /* FSNSNumber.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CAFB1A1AA52500942777 /* FSNSObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E36300D7DFE17BE9C1BD /* FSNSObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CAFC1A1AA52500942777 /* FSNSProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E36500D7DFE17BE9C1BD /* FSNSProxy.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CAFD1A1AA52500942777 /* FSNSString.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E36700D7DFE17BE9C1BD /* FSNSString.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CAFE1A1AA52500942777 /* FSNSStringPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E36900D7DFE17BE9C1BD /* FSNSStringPrivate.h */; }; + EDC2CAFF1A1AA52500942777 /* FSPattern.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E36C00D7DFE17BE9C1BD /* FSPattern.h */; }; + EDC2CB001A1AA52500942777 /* FSUnarchiver.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E37200D7DFE17BE9C1BD /* FSUnarchiver.h */; }; + EDC2CB011A1AA52500942777 /* FSVoid.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E37400D7DFE17BE9C1BD /* FSVoid.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CB021A1AA52500942777 /* FSVoidPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E37600D7DFE17BE9C1BD /* FSVoidPrivate.h */; }; + EDC2CB031A1AA52500942777 /* FSGenericObjectInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E37700D7DFE17BE9C1BD /* FSGenericObjectInspector.h */; }; + EDC2CB041A1AA52500942777 /* MessagePatternCodeNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E37F00D7DFE17BE9C1BD /* MessagePatternCodeNode.h */; }; + EDC2CB051A1AA52500942777 /* FSMiscTools.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E38100D7DFE17BE9C1BD /* FSMiscTools.h */; }; + EDC2CB061A1AA52500942777 /* FSMsgContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E38300D7DFE17BE9C1BD /* FSMsgContext.h */; }; + EDC2CB071A1AA52500942777 /* FSNewlyAllocatedObjectHolder.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E38700D7DFE17BE9C1BD /* FSNewlyAllocatedObjectHolder.h */; }; + EDC2CB081A1AA52500942777 /* FSNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E38D00D7DFE17BE9C1BD /* FSNumber.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CB091A1AA52500942777 /* NumberPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E38F00D7DFE17BE9C1BD /* NumberPrivate.h */; }; + EDC2CB0A1A1AA52500942777 /* FSPilot.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E39000D7DFE17BE9C1BD /* FSPilot.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CB0B1A1AA52500942777 /* Pointer.h in Headers */ = {isa = PBXBuildFile; fileRef = F505648002DF417501FE0326 /* Pointer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CB0C1A1AA52500942777 /* FSReplacementForCoderForClass.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E39400D7DFE17BE9C1BD /* FSReplacementForCoderForClass.h */; }; + EDC2CB0D1A1AA52500942777 /* FSObjectInspectorViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = ED3004E51A1A86EF00675D94 /* FSObjectInspectorViewController.h */; }; + EDC2CB0E1A1AA52500942777 /* metamacros.h in Headers */ = {isa = PBXBuildFile; fileRef = EDFB302E1A18CA26002C8DD7 /* metamacros.h */; }; + EDC2CB0F1A1AA52500942777 /* ShellView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E39600D7DFE17BE9C1BD /* ShellView.h */; }; + EDC2CB101A1AA52500942777 /* Space.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E39800D7DFE17BE9C1BD /* Space.h */; }; + EDC2CB111A1AA52500942777 /* FSCommandHistory.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E39A00D7DFE17BE9C1BD /* FSCommandHistory.h */; }; + EDC2CB121A1AA52500942777 /* FSSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E39E00D7DFE17BE9C1BD /* FSSystem.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CB131A1AA52500942777 /* KTestManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 66029E580161E0650055708C /* KTestManager.h */; }; + EDC2CB141A1AA52500942777 /* FSNSDistantObject.h in Headers */ = {isa = PBXBuildFile; fileRef = F51CA01401B013C401BFBB24 /* FSNSDistantObject.h */; }; + EDC2CB151A1AA52500942777 /* DOTest.h in Headers */ = {isa = PBXBuildFile; fileRef = F5F13B4701C8BE3401CB6DF7 /* DOTest.h */; }; + EDC2CB161A1AA52500942777 /* FScriptTextView.h in Headers */ = {isa = PBXBuildFile; fileRef = F5FBEF2802149D32018C0134 /* FScriptTextView.h */; }; + EDC2CB171A1AA52500942777 /* FSObjectBrowserArgumentPanel.h in Headers */ = {isa = PBXBuildFile; fileRef = F5FA8A6C0215D44C01AFEEFD /* FSObjectBrowserArgumentPanel.h */; }; + EDC2CB181A1AA52500942777 /* FSNSProtocolChecker.h in Headers */ = {isa = PBXBuildFile; fileRef = F5F140590223CC9D01DD698C /* FSNSProtocolChecker.h */; }; + EDC2CB191A1AA52500942777 /* FSObjectBrowserToolbar.h in Headers */ = {isa = PBXBuildFile; fileRef = F538EF6C0279FD3C01345511 /* FSObjectBrowserToolbar.h */; }; + EDC2CB1A1A1AA52500942777 /* FSEvalCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = F538EF700279FD3C01345511 /* FSEvalCommand.h */; }; + EDC2CB1B1A1AA52500942777 /* FSServicesProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = F538EF7C0279FD3C01345511 /* FSServicesProvider.h */; settings = {ATTRIBUTES = (); }; }; + EDC2CB1C1A1AA52500942777 /* FSTask.h in Headers */ = {isa = PBXBuildFile; fileRef = F538EF7E0279FD3C01345511 /* FSTask.h */; settings = {ATTRIBUTES = (); }; }; + EDC2CB1D1A1AA52500942777 /* FSObjectBrowserToolbarButton.h in Headers */ = {isa = PBXBuildFile; fileRef = F5F0AD420285792F0103CD49 /* FSObjectBrowserToolbarButton.h */; }; + EDC2CB1E1A1AA52500942777 /* FSObjectBrowserButtonCtxBlock.h in Headers */ = {isa = PBXBuildFile; fileRef = F5F0261F02C243D20155CB83 /* FSObjectBrowserButtonCtxBlock.h */; }; + EDC2CB1F1A1AA52500942777 /* FSObjectBrowserButtonsInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = F5F9569602B272FB0121B3BA /* FSObjectBrowserButtonsInspector.h */; }; + EDC2CB201A1AA52500942777 /* FSObjectBrowserView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CD4E32400D7DFE17BE9C1BD /* FSObjectBrowserView.h */; }; + EDC2CB211A1AA52500942777 /* PointerPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = F5F856C002EB281C01F7E6F0 /* PointerPrivate.h */; }; + EDC2CB221A1AA52500942777 /* FSInterpreterPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = F54CA17602FB2CAF01C25A35 /* FSInterpreterPrivate.h */; }; + EDC2CB231A1AA52500942777 /* FSObjectFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = F5EBBE820321029601CA10C6 /* FSObjectFormatter.h */; }; + EDC2CB241A1AA52500942777 /* FSIdentifierFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = F5073A2102FC5400013656B0 /* FSIdentifierFormatter.h */; }; + EDC2CB251A1AA52500942777 /* FSSystemPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = F5A25E260357B373011A39F8 /* FSSystemPrivate.h */; }; + EDC2CB261A1AA52500942777 /* FSKeyedUnarchiver.h in Headers */ = {isa = PBXBuildFile; fileRef = F55D44C40358A88801B9E934 /* FSKeyedUnarchiver.h */; }; + EDC2CB271A1AA52500942777 /* FSKeyedArchiver.h in Headers */ = {isa = PBXBuildFile; fileRef = F55D44CE0358B5D201B9E934 /* FSKeyedArchiver.h */; }; + EDC2CB281A1AA52500942777 /* FSConstantListBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = F52EECA6036210E2016141BB /* FSConstantListBuilder.h */; }; + EDC2CB291A1AA52500942777 /* FSImageInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = F54B55B9036B45770140C608 /* FSImageInspector.h */; }; + EDC2CB2A1A1AA52500942777 /* FSNSImage.h in Headers */ = {isa = PBXBuildFile; fileRef = F54B55C8036B4A330140C608 /* FSNSImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CB2B1A1AA52500942777 /* FSObjectBrowserToolbarItem.h in Headers */ = {isa = PBXBuildFile; fileRef = F58090CF03755FC701AED2EF /* FSObjectBrowserToolbarItem.h */; }; + EDC2CB2C1A1AA52500942777 /* ArrayRepBoolean.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D4BE29038511FF01461810 /* ArrayRepBoolean.h */; }; + EDC2CB2D1A1AA52500942777 /* FSNSObjectPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F63CC08044B95DB00B84480 /* FSNSObjectPrivate.h */; }; + EDC2CB2E1A1AA52500942777 /* FSArrayEnumerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FA3AE55044D4D6700CF7A3A /* FSArrayEnumerator.h */; }; + EDC2CB301A1AA52500942777 /* TestFS.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FBB10A4044E28FD00181279 /* TestFS.h */; }; + EDC2CB311A1AA52500942777 /* FSNSMutableArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F66F85404666E8100AFC811 /* FSNSMutableArray.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CB321A1AA52500942777 /* FSNSValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F553BF70585222700A92293 /* FSNSValue.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CB331A1AA52500942777 /* FSReplacementForCoderForNilInArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F7D7DB7058E32CD00F1B8A8 /* FSReplacementForCoderForNilInArray.h */; }; + EDC2CB341A1AA52500942777 /* FSNamedNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F0E3B7E059F3DBB003F6CE9 /* FSNamedNumber.h */; }; + EDC2CB361A1AA52500942777 /* FSCollectionInspectorTableView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F60216E05A25CDC0004EFF1 /* FSCollectionInspectorTableView.h */; }; + EDC2CB371A1AA52500942777 /* FSNSSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F60F24505A9FE8B00985FEC /* FSNSSet.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CB391A1AA52500942777 /* FSAttributedStringInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FDCCD4E05C09F8200747C0A /* FSAttributedStringInspector.h */; }; + EDC2CB3A1A1AA52500942777 /* FSNSAttributedString.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FDCCDBF05C0A23000747C0A /* FSNSAttributedString.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CB3B1A1AA52500942777 /* FSInterpreterViewPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F71F72205C43A7D00C34794 /* FSInterpreterViewPrivate.h */; }; + EDC2CB3C1A1AA52500942777 /* FScriptMenuItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F0B66FB05C5639E0099180D /* FScriptMenuItem.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CB3D1A1AA52500942777 /* FSNSFont.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F658B2705C9694F0040FB24 /* FSNSFont.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CB3E1A1AA52500942777 /* FSObjectBrowserMatrix.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FB505FF05D53C8600153B33 /* FSObjectBrowserMatrix.h */; }; + EDC2CB3F1A1AA52500942777 /* FSSymbolTable.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F17C07D06B1309C00F07862 /* FSSymbolTable.h */; }; + EDC2CB401A1AA52500942777 /* FSObjectBrowserViewObjectInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F4E294C075B8E5600F8DCDB /* FSObjectBrowserViewObjectInfo.h */; }; + EDC2CB411A1AA52500942777 /* FSCollectionInspectorView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FA8EDC607735B3B001BEC7B /* FSCollectionInspectorView.h */; }; + EDC2CB421A1AA52500942777 /* ArrayRepFetchRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FBC2877077B7D5200F9B4A2 /* ArrayRepFetchRequest.h */; }; + EDC2CB431A1AA52500942777 /* FSPointer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F8EA70B077F6A5200AC1C96 /* FSPointer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CB441A1AA52500942777 /* FSGenericPointer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F8EA779077F6C9300AC1C96 /* FSGenericPointer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CB451A1AA52500942777 /* FSPointerPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F8EA7E8077F719800AC1C96 /* FSPointerPrivate.h */; }; + EDC2CB461A1AA52500942777 /* FSGenericPointerPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F8EA841077F79A000AC1C96 /* FSGenericPointerPrivate.h */; }; + EDC2CB471A1AA52500942777 /* FSObjectPointer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FE9AE12078071CC005B2CC4 /* FSObjectPointer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CB481A1AA52500942777 /* FSObjectPointerPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FE9AE8207807269005B2CC4 /* FSObjectPointerPrivate.h */; }; + EDC2CB491A1AA52500942777 /* FSObjectBrowserNamedObjectWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F86923607F19BA8000D20A4 /* FSObjectBrowserNamedObjectWrapper.h */; }; + EDC2CB4A1A1AA52500942777 /* FSInspectorUniquier.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F7F4F9C07FB274C008E42F4 /* FSInspectorUniquier.h */; }; + EDC2CB4B1A1AA52500942777 /* FSPredicateTextView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F95E3C108034A670030B65C /* FSPredicateTextView.h */; }; + EDC2CB4C1A1AA52500942777 /* FSCoreDataSample.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FE7E0E6082AD964008231E8 /* FSCoreDataSample.h */; }; + EDC2CB4D1A1AA52500942777 /* FSManagedObjectContextInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F37AEC2078B7E900083565D /* FSManagedObjectContextInspector.h */; }; + EDC2CB4E1A1AA52500942777 /* FSObjectInspectorBackgroundView.h in Headers */ = {isa = PBXBuildFile; fileRef = EDC2C8EE1A1AA34D00942777 /* FSObjectInspectorBackgroundView.h */; }; + EDC2CB4F1A1AA52500942777 /* FSNSManagedObjectContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F5189E707F072EA00A50735 /* FSNSManagedObjectContext.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CB501A1AA52500942777 /* FSObjectBrowserSearchField.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F585F6E059B23F100C12B6F /* FSObjectBrowserSearchField.h */; }; + EDC2CB511A1AA52500942777 /* FSBlockCompilationResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F90A2EF096DB0660064F4BC /* FSBlockCompilationResult.h */; }; + EDC2CB521A1AA52500942777 /* FSObjectEnumInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = ED8222E51A19554F00C42C72 /* FSObjectEnumInfo.h */; }; + EDC2CB531A1AA52500942777 /* FSReturnSignal.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FD7D4A60975B377009B2685 /* FSReturnSignal.h */; }; + EDC2CB541A1AA52500942777 /* FSMethod.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F3C13980C65E66400948776 /* FSMethod.h */; }; + EDC2CB551A1AA52500942777 /* FSCNClassDefinition.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F5AD3200D05CFFE000CEAC6 /* FSCNClassDefinition.h */; }; + EDC2CB561A1AA52500942777 /* FSCNBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FE6397E0D09C0F400255EBA /* FSCNBase.h */; }; + EDC2CB571A1AA52500942777 /* FSCNIdentifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FE6398E0D09DCB600255EBA /* FSCNIdentifier.h */; }; + EDC2CB581A1AA52500942777 /* FSTestObjCClass1.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FE3DD200D26D49900A1D767 /* FSTestObjCClass1.h */; }; + EDC2CB591A1AA52500942777 /* FSTestObjCClass2.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F4822020D2C317700754A4E /* FSTestObjCClass2.h */; }; + EDC2CB5A1A1AA52500942777 /* FSCNCategory.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F8112F00D85E58200CB3407 /* FSCNCategory.h */; }; + EDC2CB5B1A1AA52500942777 /* FSCNMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F59CA6F0D86DD0800D67A78 /* FSCNMessage.h */; }; + EDC2CB5C1A1AA52500942777 /* FSCNSuper.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F72237D0D870C6A00394C99 /* FSCNSuper.h */; }; + EDC2CB5D1A1AA52500942777 /* FSCNUnaryMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F2E341E0D8DB61C00912543 /* FSCNUnaryMessage.h */; }; + EDC2CB5E1A1AA52500942777 /* FSCNBinaryMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F2E34310D8DBF6A00912543 /* FSCNBinaryMessage.h */; }; + EDC2CB5F1A1AA52500942777 /* FSCNKeywordMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F2E343A0D8DBFE700912543 /* FSCNKeywordMessage.h */; }; + EDC2CB601A1AA52500942777 /* FSCNCascade.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F5900130D9468FC003A8B17 /* FSCNCascade.h */; }; + EDC2CB611A1AA52500942777 /* FSCNStatementList.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F8F58640D9FE6A900ED0FED /* FSCNStatementList.h */; }; + EDC2CB621A1AA52500942777 /* FSCNPrecomputedObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F747DA70DA03AE200148342 /* FSCNPrecomputedObject.h */; }; + EDC2CB631A1AA52500942777 /* FSCNArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F747DB60DA0467100148342 /* FSCNArray.h */; }; + EDC2CB641A1AA52500942777 /* FSCNBlock.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FAE79AA0DA0ED5D00CB6E14 /* FSCNBlock.h */; }; + EDC2CB651A1AA52500942777 /* FSCNAssignment.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FAE79F10DA109C500CB6E14 /* FSCNAssignment.h */; }; + EDC2CB661A1AA52500942777 /* FSCNMethod.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F45CBBD0DA813F200AFA8C8 /* FSCNMethod.h */; }; + EDC2CB671A1AA52500942777 /* FSCNReturn.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FD0A3120DD7276000E47459 /* FSCNReturn.h */; }; + EDC2CB681A1AA52500942777 /* FSClassDefinition.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F8949D50DE08B110094EC14 /* FSClassDefinition.h */; }; + EDC2CB691A1AA52500942777 /* FSTranscript.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F2DE6590E57254700CF83CB /* FSTranscript.h */; }; + EDC2CB6A1A1AA52500942777 /* FSArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FE6AD8F0EC740650096019D /* FSArray.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CB6B1A1AA52500942777 /* Array_fscript.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F31A4C00EC74A2E00D1B8E8 /* Array_fscript.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CB6C1A1AA52500942777 /* Block_fscript.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FCA00C10EEAF34300B10420 /* Block_fscript.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CB6D1A1AA52500942777 /* Number_fscript.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FBB2FF00EEB3467007A3163 /* Number_fscript.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CB6E1A1AA52500942777 /* FSGlobalScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FB9D5970F1CEE2100E10274 /* FSGlobalScope.h */; }; + EDC2CB6F1A1AA52500942777 /* FSNSFileHandle.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F9D04170F1DF1CB001B8286 /* FSNSFileHandle.h */; settings = {ATTRIBUTES = (); }; }; + EDC2CB701A1AA52500942777 /* FSAssociation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F940B810F2393B0004525E1 /* FSAssociation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CB711A1AA52500942777 /* FSCNDictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F940C6E0F23BC2E004525E1 /* FSCNDictionary.h */; }; + EDC2CB721A1AA52500942777 /* FSObjectBrowserBottomBarTextDisplay.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F7A71290F48397C00E95364 /* FSObjectBrowserBottomBarTextDisplay.h */; }; + EDC2CB731A1AA52500942777 /* FSNSAffineTransform.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F2D72090F6BD9B100F0862A /* FSNSAffineTransform.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CB741A1AA52500942777 /* FSNewlyAllocatedObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FCA593110883B0100F67841 /* FSNewlyAllocatedObject.h */; }; + EDC2CB751A1AA52500942777 /* FSWorksWhenModalWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F5EDA00109B384A003A2F4C /* FSWorksWhenModalWindow.h */; }; + EDC2CB761A1AA52500942777 /* FSNSMutableDictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F44270B116549C700E88F21 /* FSNSMutableDictionary.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDC2CB781A1AA52500942777 /* FSConsole.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDE508D119DD4D310012F16A /* FSConsole.xib */; }; + EDC2CB791A1AA52500942777 /* FSObjectInspectorViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = ED3004E71A1A86EF00675D94 /* FSObjectInspectorViewController.xib */; }; + EDC2CB7A1A1AA52500942777 /* FSCollectionInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = 0CD4E31F00D7DFE17BE9C1BD /* FSCollectionInspector.nib */; }; + EDC2CB7B1A1AA52500942777 /* blockInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = 0CD4E32A00D7DFE17BE9C1BD /* blockInspector.nib */; }; + EDC2CB7C1A1AA52500942777 /* FlightTutorial.txt in Resources */ = {isa = PBXBuildFile; fileRef = 0CD4E34400D7DFE17BE9C1BD /* FlightTutorial.txt */; }; + EDC2CB7D1A1AA52500942777 /* genObjInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = 0CD4E37900D7DFE17BE9C1BD /* genObjInspector.nib */; }; + EDC2CB7E1A1AA52500942777 /* FScriptPreferences.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDE508DA19DD4FDC0012F16A /* FScriptPreferences.xib */; }; + EDC2CB7F1A1AA52500942777 /* KTest.txt in Resources */ = {isa = PBXBuildFile; fileRef = 0CD4E37D00D7DFE17BE9C1BD /* KTest.txt */; }; + EDC2CB801A1AA52500942777 /* license.txt in Resources */ = {isa = PBXBuildFile; fileRef = 0CD4E37E00D7DFE17BE9C1BD /* license.txt */; }; + EDC2CB811A1AA52500942777 /* fs.scriptSuite in Resources */ = {isa = PBXBuildFile; fileRef = F538EF6E0279FD3C01345511 /* fs.scriptSuite */; }; + EDC2CB821A1AA52500942777 /* fs.scriptTerminology in Resources */ = {isa = PBXBuildFile; fileRef = F538EF6F0279FD3C01345511 /* fs.scriptTerminology */; }; + EDC2CB831A1AA52500942777 /* FSImageInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = F54B55C3036B48690140C608 /* FSImageInspector.nib */; }; + EDC2CB841A1AA52500942777 /* ReadMe.txt in Resources */ = {isa = PBXBuildFile; fileRef = F58090EB0375648201AED2EF /* ReadMe.txt */; }; + EDC2CB851A1AA52500942777 /* ArrayTableView.nib in Resources */ = {isa = PBXBuildFile; fileRef = F58090FC03756D2401AED2EF /* ArrayTableView.nib */; }; + EDC2CB861A1AA52500942777 /* constantsDictionary in Resources */ = {isa = PBXBuildFile; fileRef = 8F92F0380463F2A400F4C61F /* constantsDictionary */; }; + EDC2CB871A1AA52500942777 /* FSAttributedStringInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8FDCCD7A05C0A0A000747C0A /* FSAttributedStringInspector.nib */; }; + EDC2CB881A1AA52500942777 /* run.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8F2D066F05CED9B9007EA81B /* run.tiff */; }; + EDC2CB891A1AA52500942777 /* build.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8F56036505CF22660044FA65 /* build.tiff */; }; + EDC2CB8A1A1AA52500942777 /* FSObjectBrowserButtonsInspector.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDFB2FF21A17E345002C8DD7 /* FSObjectBrowserButtonsInspector.xib */; }; + EDC2CB8B1A1AA52500942777 /* FSCollectionInspectorView.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8FA8EF9107739FD4001BEC7B /* FSCollectionInspectorView.nib */; }; + EDC2CB8C1A1AA52500942777 /* FSManagedObjectContextInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8FCA6B79078E0E4F005FC6B2 /* FSManagedObjectContextInspector.nib */; }; + EDC2CB8D1A1AA52500942777 /* FSMovieInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8F7472BE056B7ACE00E87339 /* FSMovieInspector.nib */; }; + EDC2CB8E1A1AA52500942777 /* FSTestClasses.txt in Resources */ = {isa = PBXBuildFile; fileRef = 8FE3DC990D26C0FD00A1D767 /* FSTestClasses.txt */; }; + EDC2CB901A1AA52500942777 /* FSAirplane.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E31000D7DFE17BE9C1BD /* FSAirplane.m */; }; + EDC2CB911A1AA52500942777 /* ArrayRepDouble.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E31800D7DFE17BE9C1BD /* ArrayRepDouble.m */; }; + EDC2CB921A1AA52500942777 /* ArrayRepEmpty.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E31A00D7DFE17BE9C1BD /* ArrayRepEmpty.m */; }; + EDC2CB931A1AA52500942777 /* ArrayRepId.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E31C00D7DFE17BE9C1BD /* ArrayRepId.m */; }; + EDC2CB941A1AA52500942777 /* FSCollectionInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E31E00D7DFE17BE9C1BD /* FSCollectionInspector.m */; }; + EDC2CB951A1AA52500942777 /* FSObjectBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32100D7DFE17BE9C1BD /* FSObjectBrowser.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + EDC2CB961A1AA52500942777 /* FSObjectBrowserCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32300D7DFE17BE9C1BD /* FSObjectBrowserCell.m */; }; + EDC2CB971A1AA52500942777 /* FSBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32700D7DFE17BE9C1BD /* FSBlock.m */; }; + EDC2CB981A1AA52500942777 /* BlockInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32900D7DFE17BE9C1BD /* BlockInspector.m */; }; + EDC2CB991A1AA52500942777 /* BlockRep.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32D00D7DFE17BE9C1BD /* BlockRep.m */; }; + EDC2CB9A1A1AA52500942777 /* BlockStackElem.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E33000D7DFE17BE9C1BD /* BlockStackElem.m */; }; + EDC2CB9B1A1AA52500942777 /* CLIView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E33400D7DFE17BE9C1BD /* CLIView.m */; }; + EDC2CB9C1A1AA52500942777 /* FSCompilationResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E33600D7DFE17BE9C1BD /* FSCompilationResult.m */; }; + EDC2CB9D1A1AA52500942777 /* CompiledCodeNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E33800D7DFE17BE9C1BD /* CompiledCodeNode.m */; }; + EDC2CB9E1A1AA52500942777 /* FSCompiler.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E33A00D7DFE17BE9C1BD /* FSCompiler.m */; }; + EDC2CB9F1A1AA52500942777 /* FSConstantsInitialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E33C00D7DFE17BE9C1BD /* FSConstantsInitialization.m */; }; + EDC2CBA11A1AA52500942777 /* FSExecEngine.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E33E00D7DFE17BE9C1BD /* FSExecEngine.m */; }; + EDC2CBA21A1AA52500942777 /* FSExecutor.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E34000D7DFE17BE9C1BD /* FSExecutor.m */; }; + EDC2CBA31A1AA52500942777 /* FSFlight.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E34300D7DFE17BE9C1BD /* FSFlight.m */; }; + EDC2CBA41A1AA52500942777 /* FSArchiver.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E34600D7DFE17BE9C1BD /* FSArchiver.m */; }; + EDC2CBA51A1AA52500942777 /* FSBoolean.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E34800D7DFE17BE9C1BD /* FSBoolean.m */; }; + EDC2CBA61A1AA52500942777 /* FSObjectInspectorViewModelItem.m in Sources */ = {isa = PBXBuildFile; fileRef = ED8222D51A194FD600C42C72 /* FSObjectInspectorViewModelItem.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + EDC2CBA71A1AA52500942777 /* FScriptFunctions.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E34F00D7DFE17BE9C1BD /* FScriptFunctions.m */; }; + EDC2CBA81A1AA52500942777 /* FSDetailedObjectInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = EDC2C8DD1A1A943600942777 /* FSDetailedObjectInspector.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + EDC2CBA91A1AA52500942777 /* FSInterpreter.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E35100D7DFE17BE9C1BD /* FSInterpreter.m */; }; + EDC2CBAA1A1AA52500942777 /* FSInterpreterResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E35300D7DFE17BE9C1BD /* FSInterpreterResult.m */; }; + EDC2CBAB1A1AA52500942777 /* FSInterpreterView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E35600D7DFE17BE9C1BD /* FSInterpreterView.m */; }; + EDC2CBAC1A1AA52500942777 /* FSNSArray.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E35900D7DFE17BE9C1BD /* FSNSArray.m */; }; + EDC2CBAD1A1AA52500942777 /* FSNSDate.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E35C00D7DFE17BE9C1BD /* FSNSDate.m */; }; + EDC2CBAE1A1AA52500942777 /* FSNSDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E35E00D7DFE17BE9C1BD /* FSNSDictionary.m */; }; + EDC2CBB01A1AA52500942777 /* FSNSMutableString.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E36000D7DFE17BE9C1BD /* FSNSMutableString.m */; }; + EDC2CBB11A1AA52500942777 /* FSNSNumber.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E36200D7DFE17BE9C1BD /* FSNSNumber.m */; }; + EDC2CBB21A1AA52500942777 /* FSNSObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E36400D7DFE17BE9C1BD /* FSNSObject.m */; }; + EDC2CBB31A1AA52500942777 /* FSNSProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E36600D7DFE17BE9C1BD /* FSNSProxy.m */; }; + EDC2CBB41A1AA52500942777 /* FSNSString.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E36800D7DFE17BE9C1BD /* FSNSString.m */; }; + EDC2CBB51A1AA52500942777 /* FSPattern.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E36D00D7DFE17BE9C1BD /* FSPattern.m */; }; + EDC2CBB61A1AA52500942777 /* FSUnarchiver.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E37300D7DFE17BE9C1BD /* FSUnarchiver.m */; }; + EDC2CBB71A1AA52500942777 /* FSVoid.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E37500D7DFE17BE9C1BD /* FSVoid.m */; }; + EDC2CBB81A1AA52500942777 /* FSGenericObjectInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E37800D7DFE17BE9C1BD /* FSGenericObjectInspector.m */; }; + EDC2CBB91A1AA52500942777 /* MessagePatternCodeNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E38000D7DFE17BE9C1BD /* MessagePatternCodeNode.m */; }; + EDC2CBBA1A1AA52500942777 /* FSMiscTools.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E38200D7DFE17BE9C1BD /* FSMiscTools.m */; }; + EDC2CBBB1A1AA52500942777 /* FSMsgContext.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E38400D7DFE17BE9C1BD /* FSMsgContext.m */; }; + EDC2CBBC1A1AA52500942777 /* FSNewlyAllocatedObjectHolder.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E38800D7DFE17BE9C1BD /* FSNewlyAllocatedObjectHolder.m */; }; + EDC2CBBD1A1AA52500942777 /* FSNumber.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E38E00D7DFE17BE9C1BD /* FSNumber.m */; }; + EDC2CBBE1A1AA52500942777 /* FSPilot.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E39100D7DFE17BE9C1BD /* FSPilot.m */; }; + EDC2CBBF1A1AA52500942777 /* FSReplacementForCoderForClass.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E39500D7DFE17BE9C1BD /* FSReplacementForCoderForClass.m */; }; + EDC2CBC01A1AA52500942777 /* ShellView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E39700D7DFE17BE9C1BD /* ShellView.m */; }; + EDC2CBC11A1AA52500942777 /* Space.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E39900D7DFE17BE9C1BD /* Space.m */; }; + EDC2CBC21A1AA52500942777 /* FSCommandHistory.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E39B00D7DFE17BE9C1BD /* FSCommandHistory.m */; }; + EDC2CBC31A1AA52500942777 /* FSSystem.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E39F00D7DFE17BE9C1BD /* FSSystem.m */; }; + EDC2CBC41A1AA52500942777 /* KTestManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 66029E590161E0650055708C /* KTestManager.m */; }; + EDC2CBC51A1AA52500942777 /* FSNSDistantObject.m in Sources */ = {isa = PBXBuildFile; fileRef = F51CA01501B013C401BFBB24 /* FSNSDistantObject.m */; }; + EDC2CBC61A1AA52500942777 /* DOTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F5F13B4801C8BE3401CB6DF7 /* DOTest.m */; }; + EDC2CBC71A1AA52500942777 /* FScriptTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = F501AF7B021497C401A75EC5 /* FScriptTextView.m */; }; + EDC2CBC81A1AA52500942777 /* FSObjectBrowserArgumentPanel.m in Sources */ = {isa = PBXBuildFile; fileRef = F5FA8A6D0215D44C01AFEEFD /* FSObjectBrowserArgumentPanel.m */; }; + EDC2CBC91A1AA52500942777 /* FSNSProtocolChecker.m in Sources */ = {isa = PBXBuildFile; fileRef = F5F1405A0223CC9D01DD698C /* FSNSProtocolChecker.m */; }; + EDC2CBCA1A1AA52500942777 /* FSObjectBrowserToolbar.m in Sources */ = {isa = PBXBuildFile; fileRef = F538EF6D0279FD3C01345511 /* FSObjectBrowserToolbar.m */; }; + EDC2CBCB1A1AA52500942777 /* FSEvalCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = F538EF710279FD3C01345511 /* FSEvalCommand.m */; }; + EDC2CBCC1A1AA52500942777 /* FSServicesProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = F538EF7D0279FD3C01345511 /* FSServicesProvider.m */; }; + EDC2CBCD1A1AA52500942777 /* FSTask.m in Sources */ = {isa = PBXBuildFile; fileRef = F538EF7F0279FD3C01345511 /* FSTask.m */; }; + EDC2CBCE1A1AA52500942777 /* FSObjectBrowserToolbarButton.m in Sources */ = {isa = PBXBuildFile; fileRef = F5F0AD430285792F0103CD49 /* FSObjectBrowserToolbarButton.m */; }; + EDC2CBCF1A1AA52500942777 /* FSObjectBrowserButtonCtxBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = F5F0261E02C243D20155CB83 /* FSObjectBrowserButtonCtxBlock.m */; }; + EDC2CBD01A1AA52500942777 /* FSObjectBrowserButtonsInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = F5F9569502B272FB0121B3BA /* FSObjectBrowserButtonsInspector.m */; }; + EDC2CBD11A1AA52500942777 /* FSObjectBrowserView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4E32500D7DFE17BE9C1BD /* FSObjectBrowserView.m */; }; + EDC2CBD21A1AA52500942777 /* Pointer.m in Sources */ = {isa = PBXBuildFile; fileRef = F505647F02DF417501FE0326 /* Pointer.m */; }; + EDC2CBD31A1AA52500942777 /* FSObjectFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = F5EBBE810321029601CA10C6 /* FSObjectFormatter.m */; }; + EDC2CBD41A1AA52500942777 /* FSIdentifierFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = F5073A2002FC5400013656B0 /* FSIdentifierFormatter.m */; }; + EDC2CBD51A1AA52500942777 /* FSKeyedUnarchiver.m in Sources */ = {isa = PBXBuildFile; fileRef = F55D44C50358A88801B9E934 /* FSKeyedUnarchiver.m */; }; + EDC2CBD61A1AA52500942777 /* FSKeyedArchiver.m in Sources */ = {isa = PBXBuildFile; fileRef = F55D44CF0358B5D201B9E934 /* FSKeyedArchiver.m */; }; + EDC2CBD71A1AA52500942777 /* FSConstantListBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = F52EECA7036210E2016141BB /* FSConstantListBuilder.m */; }; + EDC2CBD81A1AA52500942777 /* FSImageInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = F54B55BA036B45770140C608 /* FSImageInspector.m */; }; + EDC2CBD91A1AA52500942777 /* FSNSImage.m in Sources */ = {isa = PBXBuildFile; fileRef = F54B55C9036B4A330140C608 /* FSNSImage.m */; }; + EDC2CBDA1A1AA52500942777 /* FSObjectBrowserToolbarItem.m in Sources */ = {isa = PBXBuildFile; fileRef = F58090D003755FC701AED2EF /* FSObjectBrowserToolbarItem.m */; }; + EDC2CBDB1A1AA52500942777 /* ArrayRepBoolean.m in Sources */ = {isa = PBXBuildFile; fileRef = F5D4BE2A038511FF01461810 /* ArrayRepBoolean.m */; }; + EDC2CBDC1A1AA52500942777 /* FSArrayEnumerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FA3AE56044D4D6700CF7A3A /* FSArrayEnumerator.m */; }; + EDC2CBDD1A1AA52500942777 /* FSNSMutableArray.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F66F85504666E8100AFC811 /* FSNSMutableArray.m */; }; + EDC2CBDE1A1AA52500942777 /* FSNSValue.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F553BF80585222700A92293 /* FSNSValue.m */; }; + EDC2CBDF1A1AA52500942777 /* FSReplacementForCoderForNilInArray.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F7D7DB8058E32CD00F1B8A8 /* FSReplacementForCoderForNilInArray.m */; }; + EDC2CBE01A1AA52500942777 /* FSNamedNumber.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F0E3B7F059F3DBB003F6CE9 /* FSNamedNumber.m */; }; + EDC2CBE11A1AA52500942777 /* FSCollectionInspectorTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F60216F05A25CDC0004EFF1 /* FSCollectionInspectorTableView.m */; }; + EDC2CBE21A1AA52500942777 /* FSNSSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F60F24605A9FE8B00985FEC /* FSNSSet.m */; }; + EDC2CBE31A1AA52500942777 /* FSAttributedStringInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FDCCD4F05C09F8200747C0A /* FSAttributedStringInspector.m */; }; + EDC2CBE41A1AA52500942777 /* FSNSAttributedString.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FDCCDC005C0A23000747C0A /* FSNSAttributedString.m */; }; + EDC2CBE51A1AA52500942777 /* FScriptMenuItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F0B66FC05C5639E0099180D /* FScriptMenuItem.m */; }; + EDC2CBE61A1AA52500942777 /* FSNSFont.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F658B2805C9694F0040FB24 /* FSNSFont.m */; }; + EDC2CBE71A1AA52500942777 /* FSObjectBrowserMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FB5060005D53C8600153B33 /* FSObjectBrowserMatrix.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + EDC2CBE81A1AA52500942777 /* FSSymbolTable.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F17C07E06B1309C00F07862 /* FSSymbolTable.m */; }; + EDC2CBE91A1AA52500942777 /* FSObjectBrowserViewObjectInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F4E294D075B8E5600F8DCDB /* FSObjectBrowserViewObjectInfo.m */; }; + EDC2CBEA1A1AA52500942777 /* FSCollectionInspectorView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FA8EDD307735B3B001BEC7B /* FSCollectionInspectorView.m */; }; + EDC2CBEB1A1AA52500942777 /* ArrayRepFetchRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FBC2884077B7D5200F9B4A2 /* ArrayRepFetchRequest.m */; }; + EDC2CBED1A1AA52500942777 /* FSPointer.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F8EA718077F6A5200AC1C96 /* FSPointer.m */; }; + EDC2CBEE1A1AA52500942777 /* FSGenericPointer.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F8EA786077F6C9300AC1C96 /* FSGenericPointer.m */; }; + EDC2CBEF1A1AA52500942777 /* FSObjectPointer.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FE9AE1F078071CC005B2CC4 /* FSObjectPointer.m */; }; + EDC2CBF01A1AA52500942777 /* FSObjectBrowserNamedObjectWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F86923707F19BA8000D20A4 /* FSObjectBrowserNamedObjectWrapper.m */; }; + EDC2CBF11A1AA52500942777 /* FSInspectorUniquier.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F7F4F9D07FB274C008E42F4 /* FSInspectorUniquier.m */; }; + EDC2CBF21A1AA52500942777 /* FSPredicateTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F95E3C208034A670030B65C /* FSPredicateTextView.m */; }; + EDC2CBF31A1AA52500942777 /* FSCoreDataSample.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FE7E0E7082AD964008231E8 /* FSCoreDataSample.m */; }; + EDC2CBF41A1AA52500942777 /* FSManagedObjectContextInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F37AEC3078B7E900083565D /* FSManagedObjectContextInspector.m */; }; + EDC2CBF51A1AA52500942777 /* FSNSManagedObjectContext.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F5189E807F072EA00A50735 /* FSNSManagedObjectContext.m */; }; + EDC2CBF61A1AA52500942777 /* FSObjectBrowserSearchField.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F585F6F059B23F100C12B6F /* FSObjectBrowserSearchField.m */; }; + EDC2CBF71A1AA52500942777 /* FSBlockCompilationResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F90A2F0096DB0660064F4BC /* FSBlockCompilationResult.m */; }; + EDC2CBF81A1AA52500942777 /* FSReturnSignal.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FD7D4A70975B377009B2685 /* FSReturnSignal.m */; }; + EDC2CBF91A1AA52500942777 /* FSMovieInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F573F7E056B754B00F2796A /* FSMovieInspector.m */; }; + EDC2CBFA1A1AA52500942777 /* FSMethod.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F3C13990C65E66400948776 /* FSMethod.m */; }; + EDC2CBFB1A1AA52500942777 /* FSCNClassDefinition.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F5AD3210D05CFFE000CEAC6 /* FSCNClassDefinition.m */; }; + EDC2CBFC1A1AA52500942777 /* FSCNBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FE6397F0D09C0F400255EBA /* FSCNBase.m */; }; + EDC2CBFD1A1AA52500942777 /* FSCNIdentifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FE6398F0D09DCB600255EBA /* FSCNIdentifier.m */; }; + EDC2CBFE1A1AA52500942777 /* FSObjectEnumInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = ED8222E61A19554F00C42C72 /* FSObjectEnumInfo.m */; }; + EDC2CBFF1A1AA52500942777 /* FSTestObjCClass1.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FE3DD210D26D49900A1D767 /* FSTestObjCClass1.m */; }; + EDC2CC001A1AA52500942777 /* FSTestObjCClass2.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F4822030D2C317700754A4E /* FSTestObjCClass2.m */; }; + EDC2CC011A1AA52500942777 /* FSCNCategory.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F8112F10D85E58200CB3407 /* FSCNCategory.m */; }; + EDC2CC021A1AA52500942777 /* FSCNMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F59CA700D86DD0800D67A78 /* FSCNMessage.m */; }; + EDC2CC031A1AA52500942777 /* FSCNSuper.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F72237E0D870C6A00394C99 /* FSCNSuper.m */; }; + EDC2CC041A1AA52500942777 /* FSCNUnaryMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F2E341F0D8DB61C00912543 /* FSCNUnaryMessage.m */; }; + EDC2CC051A1AA52500942777 /* FSCNBinaryMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F2E34320D8DBF6A00912543 /* FSCNBinaryMessage.m */; }; + EDC2CC061A1AA52500942777 /* FSCNKeywordMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F2E343B0D8DBFE700912543 /* FSCNKeywordMessage.m */; }; + EDC2CC071A1AA52500942777 /* FSCNCascade.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F5900140D9468FC003A8B17 /* FSCNCascade.m */; }; + EDC2CC081A1AA52500942777 /* FSCNStatementList.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F8F58650D9FE6A900ED0FED /* FSCNStatementList.m */; }; + EDC2CC091A1AA52500942777 /* FSCNPrecomputedObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F747DA80DA03AE200148342 /* FSCNPrecomputedObject.m */; }; + EDC2CC0A1A1AA52500942777 /* FSCNArray.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F747DB70DA0467100148342 /* FSCNArray.m */; }; + EDC2CC0B1A1AA52500942777 /* FSCNBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FAE79AB0DA0ED5D00CB6E14 /* FSCNBlock.m */; }; + EDC2CC0C1A1AA52500942777 /* FSCNAssignment.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FAE79F20DA109C500CB6E14 /* FSCNAssignment.m */; }; + EDC2CC0D1A1AA52500942777 /* FSObjectInspectorViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = ED3004E61A1A86EF00675D94 /* FSObjectInspectorViewController.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; + EDC2CC0E1A1AA52500942777 /* FSCNMethod.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F45CBBE0DA813F200AFA8C8 /* FSCNMethod.m */; }; + EDC2CC0F1A1AA52500942777 /* FSCNReturn.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FD0A3130DD7276000E47459 /* FSCNReturn.m */; }; + EDC2CC101A1AA52500942777 /* FSClassDefinition.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F8949D60DE08B110094EC14 /* FSClassDefinition.m */; }; + EDC2CC111A1AA52500942777 /* FSTranscript.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F2DE65A0E57254700CF83CB /* FSTranscript.m */; }; + EDC2CC121A1AA52500942777 /* FSArray.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FE6AD900EC740650096019D /* FSArray.m */; }; + EDC2CC131A1AA52500942777 /* Array.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F31A4C10EC74A2E00D1B8E8 /* Array.m */; }; + EDC2CC141A1AA52500942777 /* Block.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FCA00C20EEAF34300B10420 /* Block.m */; }; + EDC2CC151A1AA52500942777 /* Number.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FBB2FF10EEB3467007A3163 /* Number.m */; }; + EDC2CC161A1AA52500942777 /* FSGlobalScope.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FB9D5980F1CEE2100E10274 /* FSGlobalScope.m */; }; + EDC2CC171A1AA52500942777 /* FSNSFileHandle.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F9D04180F1DF1CB001B8286 /* FSNSFileHandle.m */; }; + EDC2CC181A1AA52500942777 /* FSAssociation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F940B820F2393B0004525E1 /* FSAssociation.m */; }; + EDC2CC191A1AA52500942777 /* FSCNDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F940C6F0F23BC2E004525E1 /* FSCNDictionary.m */; }; + EDC2CC1A1A1AA52500942777 /* FSObjectInspectorBackgroundView.m in Sources */ = {isa = PBXBuildFile; fileRef = EDC2C8EF1A1AA34D00942777 /* FSObjectInspectorBackgroundView.m */; }; + EDC2CC1B1A1AA52500942777 /* FSObjectBrowserBottomBarTextDisplay.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F7A712A0F48397C00E95364 /* FSObjectBrowserBottomBarTextDisplay.m */; }; + EDC2CC1C1A1AA52500942777 /* FSNSAffineTransform.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F2D720A0F6BD9B100F0862A /* FSNSAffineTransform.m */; }; + EDC2CC1D1A1AA52500942777 /* FSNewlyAllocatedObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FCA593210883B0100F67841 /* FSNewlyAllocatedObject.m */; }; + EDC2CC1E1A1AA52500942777 /* FSWorksWhenModalWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F5EDA01109B384A003A2F4C /* FSWorksWhenModalWindow.m */; }; + EDC2CC1F1A1AA52500942777 /* FSNSMutableDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F44270C116549C700E88F21 /* FSNSMutableDictionary.m */; }; + EDC2CC211A1AA52500942777 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8F85274707F6016900E706F5 /* Cocoa.framework */; }; + EDC2CC221A1AA52500942777 /* ExceptionHandling.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F51B24640271980D01DB4759 /* ExceptionHandling.framework */; }; + EDE508D019DD4AA00012F16A /* InterfaceBuilderKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA22313D189F9AA9002C5B6A /* InterfaceBuilderKit.framework */; }; + EDE508D219DD4D310012F16A /* FSConsole.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDE508D119DD4D310012F16A /* FSConsole.xib */; }; + EDE508D319DD4D310012F16A /* FSConsole.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDE508D119DD4D310012F16A /* FSConsole.xib */; }; + EDE508D419DD4D310012F16A /* FSConsole.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDE508D119DD4D310012F16A /* FSConsole.xib */; }; + EDE508D519DD4D310012F16A /* FSConsole.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDE508D119DD4D310012F16A /* FSConsole.xib */; }; + EDE508D619DD4D310012F16A /* FSConsole.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDE508D119DD4D310012F16A /* FSConsole.xib */; }; + EDE508D719DD4D310012F16A /* FSConsole.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDE508D119DD4D310012F16A /* FSConsole.xib */; }; + EDE508D819DD4D310012F16A /* FSConsole.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDE508D119DD4D310012F16A /* FSConsole.xib */; }; + EDE508D919DD4D310012F16A /* FSConsole.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDE508D119DD4D310012F16A /* FSConsole.xib */; }; + EDE508DB19DD4FDC0012F16A /* FScriptPreferences.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDE508DA19DD4FDC0012F16A /* FScriptPreferences.xib */; }; + EDE508DC19DD4FDC0012F16A /* FScriptPreferences.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDE508DA19DD4FDC0012F16A /* FScriptPreferences.xib */; }; + EDE508DD19DD4FDC0012F16A /* FScriptPreferences.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDE508DA19DD4FDC0012F16A /* FScriptPreferences.xib */; }; + EDE508DE19DD4FDC0012F16A /* FScriptPreferences.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDE508DA19DD4FDC0012F16A /* FScriptPreferences.xib */; }; + EDE508DF19DD4FDC0012F16A /* FScriptPreferences.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDE508DA19DD4FDC0012F16A /* FScriptPreferences.xib */; }; + EDE508E019DD4FDC0012F16A /* FScriptPreferences.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDE508DA19DD4FDC0012F16A /* FScriptPreferences.xib */; }; + EDE508E119DD4FDC0012F16A /* FScriptPreferences.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDE508DA19DD4FDC0012F16A /* FScriptPreferences.xib */; }; + EDE508E219DD4FDC0012F16A /* FScriptPreferences.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDE508DA19DD4FDC0012F16A /* FScriptPreferences.xib */; }; + EDFB2FF31A17E345002C8DD7 /* FSObjectBrowserButtonsInspector.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDFB2FF21A17E345002C8DD7 /* FSObjectBrowserButtonsInspector.xib */; }; + EDFB2FF41A17E345002C8DD7 /* FSObjectBrowserButtonsInspector.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDFB2FF21A17E345002C8DD7 /* FSObjectBrowserButtonsInspector.xib */; }; + EDFB2FF51A17E345002C8DD7 /* FSObjectBrowserButtonsInspector.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDFB2FF21A17E345002C8DD7 /* FSObjectBrowserButtonsInspector.xib */; }; + EDFB2FF61A17E345002C8DD7 /* FSObjectBrowserButtonsInspector.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDFB2FF21A17E345002C8DD7 /* FSObjectBrowserButtonsInspector.xib */; }; + EDFB2FF71A17E345002C8DD7 /* FSObjectBrowserButtonsInspector.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDFB2FF21A17E345002C8DD7 /* FSObjectBrowserButtonsInspector.xib */; }; + EDFB2FF81A17E345002C8DD7 /* FSObjectBrowserButtonsInspector.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDFB2FF21A17E345002C8DD7 /* FSObjectBrowserButtonsInspector.xib */; }; + EDFB2FF91A17E345002C8DD7 /* FSObjectBrowserButtonsInspector.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDFB2FF21A17E345002C8DD7 /* FSObjectBrowserButtonsInspector.xib */; }; + EDFB2FFA1A17E345002C8DD7 /* FSObjectBrowserButtonsInspector.xib in Resources */ = {isa = PBXBuildFile; fileRef = EDFB2FF21A17E345002C8DD7 /* FSObjectBrowserButtonsInspector.xib */; }; + EDFB302F1A18CA26002C8DD7 /* metamacros.h in Headers */ = {isa = PBXBuildFile; fileRef = EDFB302E1A18CA26002C8DD7 /* metamacros.h */; }; + EDFB30301A18CA26002C8DD7 /* metamacros.h in Headers */ = {isa = PBXBuildFile; fileRef = EDFB302E1A18CA26002C8DD7 /* metamacros.h */; }; + EDFB30311A18CA26002C8DD7 /* metamacros.h in Headers */ = {isa = PBXBuildFile; fileRef = EDFB302E1A18CA26002C8DD7 /* metamacros.h */; }; + EDFB30321A18CA26002C8DD7 /* metamacros.h in Headers */ = {isa = PBXBuildFile; fileRef = EDFB302E1A18CA26002C8DD7 /* metamacros.h */; }; + EDFB30331A18CA26002C8DD7 /* metamacros.h in Headers */ = {isa = PBXBuildFile; fileRef = EDFB302E1A18CA26002C8DD7 /* metamacros.h */; }; + EDFB30341A18CA26002C8DD7 /* metamacros.h in Headers */ = {isa = PBXBuildFile; fileRef = EDFB302E1A18CA26002C8DD7 /* metamacros.h */; }; + EDFB30351A18CA26002C8DD7 /* metamacros.h in Headers */ = {isa = PBXBuildFile; fileRef = EDFB302E1A18CA26002C8DD7 /* metamacros.h */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -2814,7 +3820,7 @@ 0CD4E32200D7DFE17BE9C1BD /* FSObjectBrowserCell.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FSObjectBrowserCell.h; sourceTree = ""; }; 0CD4E32300D7DFE17BE9C1BD /* FSObjectBrowserCell.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = FSObjectBrowserCell.m; sourceTree = ""; }; 0CD4E32400D7DFE17BE9C1BD /* FSObjectBrowserView.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FSObjectBrowserView.h; sourceTree = ""; }; - 0CD4E32500D7DFE17BE9C1BD /* FSObjectBrowserView.m */ = {isa = PBXFileReference; fileEncoding = 30; languageSpecificationIdentifier = c.objc; lastKnownFileType = sourcecode.c.objc; path = FSObjectBrowserView.m; sourceTree = ""; }; + 0CD4E32500D7DFE17BE9C1BD /* FSObjectBrowserView.m */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 8; languageSpecificationIdentifier = c.objc; lastKnownFileType = sourcecode.c.objc; path = FSObjectBrowserView.m; sourceTree = ""; tabWidth = 8; }; 0CD4E32600D7DFE17BE9C1BD /* FSBlock.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FSBlock.h; sourceTree = ""; }; 0CD4E32700D7DFE17BE9C1BD /* FSBlock.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = FSBlock.m; sourceTree = ""; }; 0CD4E32800D7DFE17BE9C1BD /* BlockInspector.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = BlockInspector.h; sourceTree = ""; }; @@ -2918,8 +3924,6 @@ 0CD4E46900D7E1F17BE9C1BD /* JavaVM.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaVM.framework; path = /System/Library/Frameworks/JavaVM.framework; sourceTree = ""; }; 66029E580161E0650055708C /* KTestManager.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = KTestManager.h; sourceTree = ""; }; 66029E590161E0650055708C /* KTestManager.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = KTestManager.m; sourceTree = ""; }; - 8F0B64C805C5370D0099180D /* FSConsole.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = FSConsole.nib; path = FScriptFramework/FSConsole.nib; sourceTree = SOURCE_ROOT; }; - 8F0B664F05C557A40099180D /* FScriptPreferences.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; path = FScriptPreferences.nib; sourceTree = ""; }; 8F0B66FB05C5639E0099180D /* FScriptMenuItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FScriptMenuItem.h; sourceTree = ""; }; 8F0B66FC05C5639E0099180D /* FScriptMenuItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FScriptMenuItem.m; sourceTree = ""; }; 8F0E3B7E059F3DBB003F6CE9 /* FSNamedNumber.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSNamedNumber.h; sourceTree = ""; }; @@ -2953,7 +3957,7 @@ 8F4822020D2C317700754A4E /* FSTestObjCClass2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSTestObjCClass2.h; sourceTree = ""; }; 8F4822030D2C317700754A4E /* FSTestObjCClass2.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSTestObjCClass2.m; sourceTree = ""; }; 8F4E294C075B8E5600F8DCDB /* FSObjectBrowserViewObjectInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSObjectBrowserViewObjectInfo.h; sourceTree = ""; }; - 8F4E294D075B8E5600F8DCDB /* FSObjectBrowserViewObjectInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSObjectBrowserViewObjectInfo.m; sourceTree = ""; }; + 8F4E294D075B8E5600F8DCDB /* FSObjectBrowserViewObjectInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 8; lastKnownFileType = sourcecode.c.objc; path = FSObjectBrowserViewObjectInfo.m; sourceTree = ""; tabWidth = 8; }; 8F5189E707F072EA00A50735 /* FSNSManagedObjectContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSNSManagedObjectContext.h; sourceTree = ""; }; 8F5189E807F072EA00A50735 /* FSNSManagedObjectContext.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSNSManagedObjectContext.m; sourceTree = ""; }; 8F552A780C00A6D4002B6067 /* CalendarStore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CalendarStore.framework; path = /System/Library/Frameworks/CalendarStore.framework; sourceTree = ""; }; @@ -3061,7 +4065,7 @@ 8FAE79F10DA109C500CB6E14 /* FSCNAssignment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCNAssignment.h; sourceTree = ""; }; 8FAE79F20DA109C500CB6E14 /* FSCNAssignment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSCNAssignment.m; sourceTree = ""; }; 8FB505FF05D53C8600153B33 /* FSObjectBrowserMatrix.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FSObjectBrowserMatrix.h; sourceTree = ""; }; - 8FB5060005D53C8600153B33 /* FSObjectBrowserMatrix.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = FSObjectBrowserMatrix.m; sourceTree = ""; }; + 8FB5060005D53C8600153B33 /* FSObjectBrowserMatrix.m */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 8; lastKnownFileType = sourcecode.c.objc; path = FSObjectBrowserMatrix.m; sourceTree = ""; tabWidth = 8; }; 8FB524160C2205C20028B297 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = FScriptIBPlugin/English.lproj/FScriptIBPluginInspector.nib; sourceTree = ""; }; 8FB524180C2205C20028B297 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = FScriptIBPlugin/English.lproj/FScriptIBPluginLibrary.nib; sourceTree = ""; }; 8FB9D5970F1CEE2100E10274 /* FSGlobalScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSGlobalScope.h; sourceTree = ""; }; @@ -3228,7 +4232,7 @@ BA223360189FA403002C5B6A /* F-Script.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "F-Script.app"; sourceTree = BUILT_PRODUCTS_DIR; }; BA223520189FA412002C5B6A /* F-Script.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "F-Script.app"; sourceTree = BUILT_PRODUCTS_DIR; }; BA223668189FA429002C5B6A /* FScriptFramework.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = FScriptFramework.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - BA2237B0189FA432002C5B6A /* FScriptFramework.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = FScriptFramework.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + BA2237B0189FA432002C5B6A /* FScript.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = FScript.framework; sourceTree = BUILT_PRODUCTS_DIR; }; E2DBA31C161CA57C0035A675 /* EventKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = EventKit.framework; path = System/Library/Frameworks/EventKit.framework; sourceTree = SDKROOT; }; E2DBA31F161CA5D00035A675 /* Accounts.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accounts.framework; path = System/Library/Frameworks/Accounts.framework; sourceTree = SDKROOT; }; E2DBA321161CA60C0035A675 /* AudioVideoBridging.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioVideoBridging.framework; path = System/Library/Frameworks/AudioVideoBridging.framework; sourceTree = SDKROOT; }; @@ -3238,6 +4242,42 @@ E2DBA329161CA6600035A675 /* Social.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Social.framework; path = System/Library/Frameworks/Social.framework; sourceTree = SDKROOT; }; E2DBA32B161CA6660035A675 /* VideoToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VideoToolbox.framework; path = System/Library/Frameworks/VideoToolbox.framework; sourceTree = SDKROOT; }; E2DBA32D161CA7180035A675 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + ED051F431A234DB6000284E2 /* metamacrosorig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = metamacrosorig.h; sourceTree = ""; }; + ED3004E51A1A86EF00675D94 /* FSObjectInspectorViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSObjectInspectorViewController.h; sourceTree = ""; }; + ED3004E61A1A86EF00675D94 /* FSObjectInspectorViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 8; lastKnownFileType = sourcecode.c.objc; path = FSObjectInspectorViewController.m; sourceTree = ""; tabWidth = 8; }; + ED3004E71A1A86EF00675D94 /* FSObjectInspectorViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = FSObjectInspectorViewController.xib; sourceTree = ""; }; + ED3CB63F1A1E5B3300771077 /* FSColorWell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSColorWell.h; sourceTree = ""; }; + ED3CB6401A1E5B3300771077 /* FSColorWell.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 8; lastKnownFileType = sourcecode.c.objc; path = FSColorWell.m; sourceTree = ""; tabWidth = 8; }; + ED68BE411A35E38F00968430 /* FSObjectBrowser.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = FSObjectBrowser.xib; sourceTree = ""; }; + ED68BE4C1A35E94B00968430 /* FSObjectBrowserWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSObjectBrowserWindow.h; sourceTree = ""; }; + ED68BE4D1A35E94B00968430 /* FSObjectBrowserWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSObjectBrowserWindow.m; sourceTree = ""; }; + ED8222D41A194FD600C42C72 /* FSObjectInspectorViewModelItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSObjectInspectorViewModelItem.h; sourceTree = ""; }; + ED8222D51A194FD600C42C72 /* FSObjectInspectorViewModelItem.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 8; lastKnownFileType = sourcecode.c.objc; path = FSObjectInspectorViewModelItem.m; sourceTree = ""; tabWidth = 8; }; + ED8222E51A19554F00C42C72 /* FSObjectEnumInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSObjectEnumInfo.h; sourceTree = ""; }; + ED8222E61A19554F00C42C72 /* FSObjectEnumInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 8; lastKnownFileType = sourcecode.c.objc; path = FSObjectEnumInfo.m; sourceTree = ""; tabWidth = 8; }; + ED83191B1A1BC2B500290EE2 /* FSUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 8; lastKnownFileType = sourcecode.c.h; path = FSUtils.h; sourceTree = ""; tabWidth = 8; }; + ED83191C1A1BC2B500290EE2 /* FSUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 8; lastKnownFileType = sourcecode.c.objc; path = FSUtils.m; sourceTree = ""; tabWidth = 8; }; + ED8319301A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "FSObjectInspectorViewController+NonArc.h"; sourceTree = ""; }; + ED8319311A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 8; lastKnownFileType = sourcecode.c.objc; path = "FSObjectInspectorViewController+NonArc.m"; sourceTree = ""; tabWidth = 8; }; + EDA22BDE1A24C28D0093DB91 /* view.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = view.png; path = Resources/view.png; sourceTree = ""; }; + EDA22BDF1A24C28D0093DB91 /* window.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = window.png; path = Resources/window.png; sourceTree = ""; }; + EDA6AC3E1A1F407C001CD1F2 /* FSObjectInspectorOutlineView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSObjectInspectorOutlineView.h; sourceTree = ""; }; + EDA6AC3F1A1F407C001CD1F2 /* FSObjectInspectorOutlineView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSObjectInspectorOutlineView.m; sourceTree = ""; }; + EDA6AC531A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSObjectInspectorOptionsViewController.h; sourceTree = ""; }; + EDA6AC541A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSObjectInspectorOptionsViewController.m; sourceTree = ""; }; + EDA6AC551A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = FSObjectInspectorOptionsViewController.xib; sourceTree = ""; }; + EDC2C8DC1A1A943600942777 /* FSDetailedObjectInspector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSDetailedObjectInspector.h; sourceTree = ""; }; + EDC2C8DD1A1A943600942777 /* FSDetailedObjectInspector.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 8; lastKnownFileType = sourcecode.c.objc; path = FSDetailedObjectInspector.m; sourceTree = ""; tabWidth = 8; }; + EDC2C8EE1A1AA34D00942777 /* FSObjectInspectorBackgroundView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSObjectInspectorBackgroundView.h; sourceTree = ""; }; + EDC2C8EF1A1AA34D00942777 /* FSObjectInspectorBackgroundView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSObjectInspectorBackgroundView.m; sourceTree = ""; }; + EDC2CACD1A1AA50D00942777 /* F-Script.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "F-Script.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + EDC2CACE1A1AA50F00942777 /* F-Script 10.9 copy-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "F-Script 10.9 copy-Info.plist"; path = "/Volumes/Macintosh SSD/Users/ant/Development/GitProjects/F-Script/F-Script 10.9 copy-Info.plist"; sourceTree = ""; }; + EDC2CC271A1AA52500942777 /* FScript.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = FScript.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + EDC2CC281A1AA52700942777 /* FScriptFramework 10.9 copy-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "FScriptFramework 10.9 copy-Info.plist"; path = "/Volumes/Macintosh SSD/Users/ant/Development/GitProjects/F-Script/FScriptFramework 10.9 copy-Info.plist"; sourceTree = ""; }; + EDE508D119DD4D310012F16A /* FSConsole.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = FSConsole.xib; sourceTree = ""; }; + EDE508DA19DD4FDC0012F16A /* FScriptPreferences.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = FScriptPreferences.xib; sourceTree = ""; }; + EDFB2FF21A17E345002C8DD7 /* FSObjectBrowserButtonsInspector.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = FSObjectBrowserButtonsInspector.xib; sourceTree = ""; }; + EDFB302E1A18CA26002C8DD7 /* metamacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = metamacros.h; sourceTree = ""; }; F501AF7B021497C401A75EC5 /* FScriptTextView.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = FScriptTextView.m; sourceTree = ""; }; F505647F02DF417501FE0326 /* Pointer.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = Pointer.m; sourceTree = ""; }; F505648002DF417501FE0326 /* Pointer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Pointer.h; sourceTree = ""; }; @@ -3304,7 +4344,6 @@ F5F1AAB9022E9E90011160FE /* main.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; F5F1AABA022E9E90011160FE /* MainMenu.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; path = MainMenu.nib; sourceTree = ""; }; F5F856C002EB281C01F7E6F0 /* PointerPrivate.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PointerPrivate.h; sourceTree = ""; }; - F5F9569002B272A30121B3BA /* FSObjectBrowserButtonsInspector.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; path = FSObjectBrowserButtonsInspector.nib; sourceTree = ""; }; F5F9569502B272FB0121B3BA /* FSObjectBrowserButtonsInspector.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = FSObjectBrowserButtonsInspector.m; sourceTree = ""; }; F5F9569602B272FB0121B3BA /* FSObjectBrowserButtonsInspector.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FSObjectBrowserButtonsInspector.h; sourceTree = ""; }; F5FA8A6C0215D44C01AFEEFD /* FSObjectBrowserArgumentPanel.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FSObjectBrowserArgumentPanel.h; sourceTree = ""; }; @@ -3317,6 +4356,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + EDE508D019DD4AA00012F16A /* InterfaceBuilderKit.framework in Frameworks */, 8F86086C0CF9F0AB00D2DC99 /* ScriptingBridge.framework in Frameworks */, 8FB5239B0C21FE330028B297 /* ExceptionHandling.framework in Frameworks */, 8FB523970C21FE030028B297 /* Cocoa.framework in Frameworks */, @@ -3364,7 +4404,6 @@ BA223196189F9B2A002C5B6A /* AppKit.framework in Frameworks */, BA223198189F9B2A002C5B6A /* AppleScriptKit.framework in Frameworks */, BA223199189F9B2A002C5B6A /* AppleScriptObjC.framework in Frameworks */, - BA22319A189F9B2A002C5B6A /* AppleShareClientCore.framework in Frameworks */, BA22319B189F9B2A002C5B6A /* ApplicationServices.framework in Frameworks */, BA22319C189F9B2A002C5B6A /* AudioToolbox.framework in Frameworks */, BA22319D189F9B2A002C5B6A /* AudioUnit.framework in Frameworks */, @@ -3429,7 +4468,6 @@ BA223126189F9A9A002C5B6A /* Quartz.framework in Frameworks */, BA223127189F9A9A002C5B6A /* QuartzCore.framework in Frameworks */, BA223128189F9A9A002C5B6A /* QuickLook.framework in Frameworks */, - BA22312B189F9A9A002C5B6A /* RubyCocoa.framework in Frameworks */, BA22312C189F9A9A002C5B6A /* ScreenSaver.framework in Frameworks */, BA22312E189F9A9A002C5B6A /* ScriptingBridge.framework in Frameworks */, BA22312F189F9A9A002C5B6A /* Security.framework in Frameworks */, @@ -3568,7 +4606,6 @@ BA2234BA189FA412002C5B6A /* AppKit.framework in Frameworks */, BA2234BB189FA412002C5B6A /* AppleScriptKit.framework in Frameworks */, BA2234BC189FA412002C5B6A /* AppleScriptObjC.framework in Frameworks */, - BA2234BD189FA412002C5B6A /* AppleShareClientCore.framework in Frameworks */, BA2234BE189FA412002C5B6A /* ApplicationServices.framework in Frameworks */, BA2234BF189FA412002C5B6A /* AudioToolbox.framework in Frameworks */, BA2234C0189FA412002C5B6A /* AudioUnit.framework in Frameworks */, @@ -3644,7 +4681,6 @@ BA223506189FA412002C5B6A /* QuartzCore.framework in Frameworks */, BA223507189FA412002C5B6A /* QuickLook.framework in Frameworks */, BA223508189FA412002C5B6A /* Ruby.framework in Frameworks */, - BA223509189FA412002C5B6A /* RubyCocoa.framework in Frameworks */, BA22350A189FA412002C5B6A /* ScreenSaver.framework in Frameworks */, BA22350B189FA412002C5B6A /* ScriptingBridge.framework in Frameworks */, BA22350C189FA412002C5B6A /* Security.framework in Frameworks */, @@ -3684,169 +4720,142 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + EDC2CA641A1AA50D00942777 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + EDC2CA651A1AA50D00942777 /* Accelerate.framework in Frameworks */, + EDC2CA661A1AA50D00942777 /* Accounts.framework in Frameworks */, + EDC2CA671A1AA50D00942777 /* AddressBook.framework in Frameworks */, + EDC2CA681A1AA50D00942777 /* AGL.framework in Frameworks */, + EDC2CA691A1AA50D00942777 /* AppKit.framework in Frameworks */, + EDC2CA6A1A1AA50D00942777 /* AppleScriptKit.framework in Frameworks */, + EDC2CA6B1A1AA50D00942777 /* AppleScriptObjC.framework in Frameworks */, + EDC2CA6C1A1AA50D00942777 /* ApplicationServices.framework in Frameworks */, + EDC2CA6D1A1AA50D00942777 /* AudioToolbox.framework in Frameworks */, + EDC2CA6E1A1AA50D00942777 /* AudioUnit.framework in Frameworks */, + EDC2CA6F1A1AA50D00942777 /* AudioVideoBridging.framework in Frameworks */, + EDC2CA701A1AA50D00942777 /* Automator.framework in Frameworks */, + EDC2CA711A1AA50D00942777 /* AVFoundation.framework in Frameworks */, + EDC2CA721A1AA50D00942777 /* AVKit.framework in Frameworks */, + EDC2CA731A1AA50D00942777 /* CalendarStore.framework in Frameworks */, + EDC2CA741A1AA50D00942777 /* Carbon.framework in Frameworks */, + EDC2CA751A1AA50D00942777 /* CFNetwork.framework in Frameworks */, + EDC2CA761A1AA50D00942777 /* Cocoa.framework in Frameworks */, + EDC2CA771A1AA50D00942777 /* Collaboration.framework in Frameworks */, + EDC2CA781A1AA50D00942777 /* CoreAudio.framework in Frameworks */, + EDC2CA791A1AA50D00942777 /* CoreAudioKit.framework in Frameworks */, + EDC2CA7A1A1AA50D00942777 /* CoreData.framework in Frameworks */, + EDC2CA7B1A1AA50D00942777 /* CoreFoundation.framework in Frameworks */, + EDC2CA7C1A1AA50D00942777 /* CoreGraphics.framework in Frameworks */, + EDC2CA7D1A1AA50D00942777 /* CoreLocation.framework in Frameworks */, + EDC2CA7E1A1AA50D00942777 /* CoreMedia.framework in Frameworks */, + EDC2CA7F1A1AA50D00942777 /* CoreMediaIO.framework in Frameworks */, + EDC2CA801A1AA50D00942777 /* CoreMIDI.framework in Frameworks */, + EDC2CA811A1AA50D00942777 /* CoreServices.framework in Frameworks */, + EDC2CA821A1AA50D00942777 /* CoreText.framework in Frameworks */, + EDC2CA831A1AA50D00942777 /* CoreVideo.framework in Frameworks */, + EDC2CA841A1AA50D00942777 /* CoreWLAN.framework in Frameworks */, + EDC2CA851A1AA50D00942777 /* DirectoryService.framework in Frameworks */, + EDC2CA861A1AA50D00942777 /* DiscRecording.framework in Frameworks */, + EDC2CA871A1AA50D00942777 /* DiscRecordingUI.framework in Frameworks */, + EDC2CA881A1AA50D00942777 /* DiskArbitration.framework in Frameworks */, + EDC2CA891A1AA50D00942777 /* DVDPlayback.framework in Frameworks */, + EDC2CA8A1A1AA50D00942777 /* EventKit.framework in Frameworks */, + EDC2CA8B1A1AA50D00942777 /* ExceptionHandling.framework in Frameworks */, + EDC2CA8C1A1AA50D00942777 /* ForceFeedback.framework in Frameworks */, + EDC2CA8D1A1AA50D00942777 /* Foundation.framework in Frameworks */, + EDC2CA8E1A1AA50D00942777 /* FWAUserLib.framework in Frameworks */, + EDC2CA8F1A1AA50D00942777 /* GameController.framework in Frameworks */, + EDC2CA901A1AA50D00942777 /* GameKit.framework in Frameworks */, + EDC2CA911A1AA50D00942777 /* GLUT.framework in Frameworks */, + EDC2CA921A1AA50D00942777 /* GSS.framework in Frameworks */, + EDC2CA931A1AA50D00942777 /* ICADevices.framework in Frameworks */, + EDC2CA941A1AA50D00942777 /* ImageCaptureCore.framework in Frameworks */, + EDC2CA951A1AA50D00942777 /* ImageIO.framework in Frameworks */, + EDC2CA961A1AA50D00942777 /* IMServicePlugIn.framework in Frameworks */, + EDC2CA971A1AA50D00942777 /* InputMethodKit.framework in Frameworks */, + EDC2CA981A1AA50D00942777 /* InstallerPlugins.framework in Frameworks */, + EDC2CA991A1AA50D00942777 /* InstantMessage.framework in Frameworks */, + EDC2CA9A1A1AA50D00942777 /* IOBluetooth.framework in Frameworks */, + EDC2CA9B1A1AA50D00942777 /* IOBluetoothUI.framework in Frameworks */, + EDC2CA9C1A1AA50D00942777 /* IOKit.framework in Frameworks */, + EDC2CA9D1A1AA50D00942777 /* IOSurface.framework in Frameworks */, + EDC2CA9E1A1AA50D00942777 /* JavaFrameEmbedding.framework in Frameworks */, + EDC2CA9F1A1AA50D00942777 /* JavaScriptCore.framework in Frameworks */, + EDC2CAA01A1AA50D00942777 /* JavaVM.framework in Frameworks */, + EDC2CAA11A1AA50D00942777 /* Kerberos.framework in Frameworks */, + EDC2CAA21A1AA50D00942777 /* LatentSemanticMapping.framework in Frameworks */, + EDC2CAA31A1AA50D00942777 /* GLKit.framework in Frameworks */, + EDC2CAA41A1AA50D00942777 /* LDAP.framework in Frameworks */, + EDC2CAA51A1AA50D00942777 /* MapKit.framework in Frameworks */, + EDC2CAA61A1AA50D00942777 /* MediaAccessibility.framework in Frameworks */, + EDC2CAA71A1AA50D00942777 /* MediaLibrary.framework in Frameworks */, + EDC2CAA81A1AA50D00942777 /* MediaToolbox.framework in Frameworks */, + EDC2CAA91A1AA50D00942777 /* NetFS.framework in Frameworks */, + EDC2CAAA1A1AA50D00942777 /* OpenAL.framework in Frameworks */, + EDC2CAAB1A1AA50D00942777 /* OpenCL.framework in Frameworks */, + EDC2CAAC1A1AA50D00942777 /* OpenDirectory.framework in Frameworks */, + EDC2CAAD1A1AA50D00942777 /* OpenGL.framework in Frameworks */, + EDC2CAAE1A1AA50D00942777 /* OSAKit.framework in Frameworks */, + EDC2CAAF1A1AA50D00942777 /* PCSC.framework in Frameworks */, + EDC2CAB01A1AA50D00942777 /* PreferencePanes.framework in Frameworks */, + EDC2CAB11A1AA50D00942777 /* PubSub.framework in Frameworks */, + EDC2CAB21A1AA50D00942777 /* QTKit.framework in Frameworks */, + EDC2CAB31A1AA50D00942777 /* Quartz.framework in Frameworks */, + EDC2CAB41A1AA50D00942777 /* QuartzCore.framework in Frameworks */, + EDC2CAB51A1AA50D00942777 /* QuickLook.framework in Frameworks */, + EDC2CAB61A1AA50D00942777 /* Ruby.framework in Frameworks */, + EDC2CAB71A1AA50D00942777 /* ScreenSaver.framework in Frameworks */, + EDC2CAB81A1AA50D00942777 /* ScriptingBridge.framework in Frameworks */, + EDC2CAB91A1AA50D00942777 /* Security.framework in Frameworks */, + EDC2CABA1A1AA50D00942777 /* SecurityFoundation.framework in Frameworks */, + EDC2CABB1A1AA50D00942777 /* SecurityInterface.framework in Frameworks */, + EDC2CABC1A1AA50D00942777 /* ServiceManagement.framework in Frameworks */, + EDC2CABD1A1AA50D00942777 /* SpriteKit.framework in Frameworks */, + EDC2CABE1A1AA50D00942777 /* StoreKit.framework in Frameworks */, + EDC2CABF1A1AA50D00942777 /* SyncServices.framework in Frameworks */, + EDC2CAC01A1AA50D00942777 /* SystemConfiguration.framework in Frameworks */, + EDC2CAC11A1AA50D00942777 /* Tcl.framework in Frameworks */, + EDC2CAC21A1AA50D00942777 /* Tk.framework in Frameworks */, + EDC2CAC31A1AA50D00942777 /* TWAIN.framework in Frameworks */, + EDC2CAC41A1AA50D00942777 /* VideoDecodeAcceleration.framework in Frameworks */, + EDC2CAC51A1AA50D00942777 /* WebKit.framework in Frameworks */, + EDC2CAC61A1AA50D00942777 /* SceneKit.framework in Frameworks */, + EDC2CAC71A1AA50D00942777 /* Social.framework in Frameworks */, + EDC2CAC81A1AA50D00942777 /* VideoToolbox.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EDC2CC201A1AA52500942777 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + EDC2CC211A1AA52500942777 /* Cocoa.framework in Frameworks */, + EDC2CC221A1AA52500942777 /* ExceptionHandling.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ 0CD4E2FB00D7DD4D7BE9C1BD = { isa = PBXGroup; children = ( - BA223095189F9924002C5B6A /* Accelerate.framework */, - E2DBA31F161CA5D00035A675 /* Accounts.framework */, - BA22309F189F9A14002C5B6A /* AddressBook.framework */, - 8FC20ADE0CEE3B2F00D9871F /* AddressBook.framework */, - BA2230A0189F9A14002C5B6A /* AGL.framework */, - BA2230A1189F9A14002C5B6A /* AppKit.framework */, - 8FC20A9F0CEE3AEE00D9871F /* AppKit.framework */, - BA2230A2189F9A14002C5B6A /* AppKitScripting.framework */, - BA2230A3189F9A14002C5B6A /* AppleScriptKit.framework */, - BA2230A4189F9A14002C5B6A /* AppleScriptObjC.framework */, - BA2230A5189F9A14002C5B6A /* AppleShareClientCore.framework */, - BA2230A6189F9A14002C5B6A /* ApplicationServices.framework */, - BA223097189F9958002C5B6A /* AudioToolbox.framework */, - BA2230A7189F9A14002C5B6A /* AudioUnit.framework */, - 8F589B600CE38B3B00C1D756 /* AudioUnit.framework */, - E2DBA321161CA60C0035A675 /* AudioVideoBridging.framework */, - BA2230A8189F9A14002C5B6A /* Automator.framework */, - 8F589B800CE38B7100C1D756 /* Automator.framework */, - E2DBA32D161CA7180035A675 /* AVFoundation.framework */, - BA223099189F9976002C5B6A /* AVKit.framework */, - BA2230B3189F9A2E002C5B6A /* CalendarStore.framework */, - 8F552A780C00A6D4002B6067 /* CalendarStore.framework */, - BA2230B4189F9A2E002C5B6A /* Carbon.framework */, - BA2230B5189F9A2E002C5B6A /* CFNetwork.framework */, - BA2230B6189F9A2E002C5B6A /* Cocoa.framework */, - 8F85274707F6016900E706F5 /* Cocoa.framework */, - BA2230B7189F9A2E002C5B6A /* Collaboration.framework */, - 8FC28E9B0C4A7DDF0071E9CC /* Collaboration.framework */, - BA22309B189F9988002C5B6A /* CoreAudio.framework */, - BA2230B8189F9A2F002C5B6A /* CoreAudioKit.framework */, - 8FC28EA80C4A7E3F0071E9CC /* CoreAudioKit.framework */, - BA2230B9189F9A2F002C5B6A /* CoreData.framework */, - 8FD8FD92076624AC009820DF /* CoreData.framework */, - BA2230BA189F9A2F002C5B6A /* CoreFoundation.framework */, - BA2230BB189F9A2F002C5B6A /* CoreGraphics.framework */, - BA22309D189F99CC002C5B6A /* CoreLocation.framework */, - BA2230BC189F9A2F002C5B6A /* CoreMedia.framework */, - BA2230BD189F9A2F002C5B6A /* CoreMediaIO.framework */, - BA2230BE189F9A2F002C5B6A /* CoreMIDI.framework */, - BA2230BF189F9A2F002C5B6A /* CoreServices.framework */, - BA2230C0189F9A2F002C5B6A /* CoreText.framework */, - BA2230C1189F9A2F002C5B6A /* CoreVideo.framework */, - 8FC28EB60C4A7E980071E9CC /* CoreVideo.framework */, - BA2230C2189F9A2F002C5B6A /* CoreWLAN.framework */, - BA2230D3189F9A7A002C5B6A /* DirectoryService.framework */, - BA2230D4189F9A7A002C5B6A /* DiscRecording.framework */, - F55D42D903583F2601B9E934 /* DiscRecording.framework */, - BA2230D5189F9A7A002C5B6A /* DiscRecordingUI.framework */, - F55D42DA03583F2601B9E934 /* DiscRecordingUI.framework */, - BA2230D6189F9A7A002C5B6A /* DiskArbitration.framework */, - 8FC28ECD0C4A7EDC0071E9CC /* DiskArbitration.framework */, - BA2230D7189F9A7A002C5B6A /* DrawSprocket.framework */, - BA22313C189F9AA9002C5B6A /* DTPerformanceSession.framework */, - BA2230D8189F9A7A002C5B6A /* DVComponentGlue.framework */, - BA2230D9189F9A7A002C5B6A /* DVDPlayback.framework */, - E2DBA31C161CA57C0035A675 /* EventKit.framework */, - BA22316F189F9AD3002C5B6A /* ExceptionHandling.framework */, - F51B24640271980D01DB4759 /* ExceptionHandling.framework */, F5F1A9F4022E9A96011160FE /* F-Script */, - BA223170189F9AD3002C5B6A /* ForceFeedback.framework */, - BA223171189F9AD3002C5B6A /* Foundation.framework */, - 0CD4E46500D7E1C37BE9C1BD /* Foundation.framework */, 0CD4E30D00D7DFE17BE9C1BD /* FScriptFramework */, 8F6392E00BDB855B005C8D94 /* FScriptIBPlugin */, F5F1AAAD022E9E4F011160FE /* FSTest1 */, F5F1AAB6022E9E90011160FE /* FSTest2 */, - BA223172189F9AD3002C5B6A /* FWAUserLib.framework */, - BA223173189F9AD3002C5B6A /* GameController.framework */, - E2DBA323161CA6270035A675 /* GameKit.framework */, - E2DBA325161CA64B0035A675 /* GLKit.framework */, - BA223147189F9AC5002C5B6A /* GLUT.framework */, - BA223148189F9AC5002C5B6A /* GSS.framework */, - BA223149189F9AC6002C5B6A /* ICADevices.framework */, - BA22314A189F9AC6002C5B6A /* ImageCaptureCore.framework */, - BA22314B189F9AC6002C5B6A /* ImageIO.framework */, - BA22314C189F9AC6002C5B6A /* IMServicePlugIn.framework */, 8F6DA8EB055FC70C0050409A /* Info-F_Script__Upgraded_.plist */, 8F6DA9DC055FC7200050409A /* Info-FScriptFramework__Upgraded_.plist */, 8F6DA6E7055FC6C80050409A /* Info-FSTest1_2.plist */, 8F6DA6D1055FC6980050409A /* Info-FSTest2_2.plist */, - BA22314D189F9AC6002C5B6A /* InputMethodKit.framework */, - 8F589B980CE38CAB00C1D756 /* InputMethodKit.framework */, - BA22314E189F9AC6002C5B6A /* InstallerPlugins.framework */, - 8F589BA50CE38CCE00C1D756 /* InstallerPlugins.framework */, - BA22314F189F9AC6002C5B6A /* InstantMessage.framework */, - 8FC28FC70C4A7FDC0071E9CC /* InstantMessage.framework */, - BA22313D189F9AA9002C5B6A /* InterfaceBuilderKit.framework */, - BA223150189F9AC6002C5B6A /* IOBluetooth.framework */, - F55D431803583F8501B9E934 /* IOBluetooth.framework */, - BA223151189F9AC6002C5B6A /* IOBluetoothUI.framework */, - F55D431903583F8501B9E934 /* IOBluetoothUI.framework */, - BA223152189F9AC6002C5B6A /* IOKit.framework */, - BA223153189F9AC6002C5B6A /* IOSurface.framework */, - BA223154189F9AC6002C5B6A /* JavaFrameEmbedding.framework */, - BA223155189F9AC6002C5B6A /* JavaScriptCore.framework */, - BA223156189F9AC6002C5B6A /* JavaVM.framework */, - 0CD4E46900D7E1F17BE9C1BD /* JavaVM.framework */, F5F00F100279FB69016D9B48 /* JGAdditions */, - BA223157189F9AC6002C5B6A /* Kerberos.framework */, - BA223158189F9AC7002C5B6A /* Kernel.framework */, - BA223159189F9AC7002C5B6A /* LatentSemanticMapping.framework */, - BA223144189F9ABD002C5B6A /* LDAP.framework */, - BA2230F4189F9A99002C5B6A /* MapKit.framework */, - BA2230F5189F9A99002C5B6A /* MediaAccessibility.framework */, - BA2230F6189F9A99002C5B6A /* MediaLibrary.framework */, - BA2230F7189F9A99002C5B6A /* MediaToolbox.framework */, - BA2230F8189F9A99002C5B6A /* NetFS.framework */, - BA2230F9189F9A99002C5B6A /* OpenAL.framework */, - BA2230FA189F9A99002C5B6A /* OpenCL.framework */, - BA2230FB189F9A99002C5B6A /* OpenDirectory.framework */, - BA2230FC189F9A99002C5B6A /* OpenGL.framework */, - BA2230FD189F9A99002C5B6A /* OSAKit.framework */, - 8FC28FEE0C4A80D80071E9CC /* OSAKit.framework */, - BA2230FE189F9A99002C5B6A /* PCSC.framework */, - BA2230FF189F9A99002C5B6A /* PreferencePanes.framework */, - 8FC290F90C4A81630071E9CC /* PreferencePanes.framework */, 0CD4E2FC00D7DDB47BE9C1BD /* Products */, - BA223100189F9A99002C5B6A /* PubSub.framework */, - 8FC291040C4A81A60071E9CC /* PubSub.framework */, - BA223101189F9A99002C5B6A /* QTKit.framework */, - 8FDF6FCF082BD9560044FD86 /* QTKit.framework */, - BA223102189F9A99002C5B6A /* Quartz.framework */, - 8FC291160C4A82070071E9CC /* Quartz.framework */, - BA223103189F9A99002C5B6A /* QuartzCore.framework */, - 8F1873160B99C7AA003974F2 /* QuartzCore.framework */, - BA223104189F9A99002C5B6A /* QuickLook.framework */, - BA223105189F9A99002C5B6A /* QuickTime.framework */, - BA223106189F9A9A002C5B6A /* Ruby.framework */, - BA223107189F9A9A002C5B6A /* RubyCocoa.framework */, - 8FC2911F0C4A82730071E9CC /* RubyCocoa.framework */, - E2DBA327161CA65A0035A675 /* SceneKit.framework */, - BA223108189F9A9A002C5B6A /* ScreenSaver.framework */, - 8FA095F80CE38F27001AC147 /* ScreenSaver.framework */, - BA223109189F9A9A002C5B6A /* Scripting.framework */, - BA22310A189F9A9A002C5B6A /* ScriptingBridge.framework */, - 8F6584F80C484A5100C8A3FC /* ScriptingBridge.framework */, - BA22310B189F9A9A002C5B6A /* Security.framework */, - BA22310C189F9A9A002C5B6A /* SecurityFoundation.framework */, - 8FC291710C4A82D10071E9CC /* SecurityFoundation.framework */, - BA22310D189F9A9A002C5B6A /* SecurityInterface.framework */, - 8FC2917F0C4A82F90071E9CC /* SecurityInterface.framework */, - BA22313E189F9AA9002C5B6A /* SenTestingKit.framework */, - BA22310E189F9A9A002C5B6A /* ServiceManagement.framework */, - E2DBA329161CA6600035A675 /* Social.framework */, - BA22310F189F9A9A002C5B6A /* SpriteKit.framework */, - BA223110189F9A9A002C5B6A /* StoreKit.framework */, - BA223111189F9A9A002C5B6A /* SyncServices.framework */, - 8FC291920C4A83380071E9CC /* SyncServices.framework */, - BA223112189F9A9A002C5B6A /* SystemConfiguration.framework */, - BA223113189F9A9A002C5B6A /* Tcl.framework */, - BA223114189F9A9A002C5B6A /* Tk.framework */, - BA223115189F9A9A002C5B6A /* TWAIN.framework */, - BA223116189F9A9A002C5B6A /* VideoDecodeAcceleration.framework */, - E2DBA32B161CA6660035A675 /* VideoToolbox.framework */, - BA223117189F9A9A002C5B6A /* WebKit.framework */, - 8FF5AEF80961E56400A3BEA9 /* WebKit.framework */, - BA22313F189F9AA9002C5B6A /* XCTest.framework */, + ED48525318B603C300877668 /* Frameworks */, + EDC2CACE1A1AA50F00942777 /* F-Script 10.9 copy-Info.plist */, + EDC2CC281A1AA52700942777 /* FScriptFramework 10.9 copy-Info.plist */, ); sourceTree = ""; }; @@ -3861,7 +4870,9 @@ BA223360189FA403002C5B6A /* F-Script.app */, BA223520189FA412002C5B6A /* F-Script.app */, BA223668189FA429002C5B6A /* FScriptFramework.framework */, - BA2237B0189FA432002C5B6A /* FScriptFramework.framework */, + BA2237B0189FA432002C5B6A /* FScript.framework */, + EDC2CACD1A1AA50D00942777 /* F-Script.app */, + EDC2CC271A1AA52500942777 /* FScript.framework */, ); name = Products; sourceTree = ""; @@ -3899,29 +4910,25 @@ 0CD4E32E00D7DFE17BE9C1BD /* BlockSignature.h */, 0CD4E32F00D7DFE17BE9C1BD /* BlockStackElem.h */, 0CD4E33000D7DFE17BE9C1BD /* BlockStackElem.m */, - 8F56036505CF22660044FA65 /* build.tiff */, 0CD4E33200D7DFE17BE9C1BD /* build_config.h */, + 8F56036505CF22660044FA65 /* build.tiff */, 0CD4E33300D7DFE17BE9C1BD /* CLIView.h */, 0CD4E33400D7DFE17BE9C1BD /* CLIView.m */, 0CD4E33700D7DFE17BE9C1BD /* CompiledCodeNode.h */, 0CD4E33800D7DFE17BE9C1BD /* CompiledCodeNode.m */, 8F92F0380463F2A400F4C61F /* constantsDictionary */, - 8F92F0340463F03300F4C61F /* FSConstantsDictionaryGenerator.h */, - 8F92F0350463F03300F4C61F /* FSConstantsDictionaryGenerator.m */, - 0CD4E33B00D7DFE17BE9C1BD /* FSConstantsInitialization.h */, - 0CD4E33C00D7DFE17BE9C1BD /* FSConstantsInitialization.m */, F5F13B4701C8BE3401CB6DF7 /* DOTest.h */, F5F13B4801C8BE3401CB6DF7 /* DOTest.m */, 8FE99A49082CF1C1005BD642 /* Employee.xcdatamodel */, 0CD4E34400D7DFE17BE9C1BD /* FlightTutorial.txt */, 0CD4E30F00D7DFE17BE9C1BD /* FSAirplane.h */, 0CD4E31000D7DFE17BE9C1BD /* FSAirplane.m */, - 8FA3AE55044D4D6700CF7A3A /* FSArrayEnumerator.h */, - 8FA3AE56044D4D6700CF7A3A /* FSArrayEnumerator.m */, 0CD4E34500D7DFE17BE9C1BD /* FSArchiver.h */, 0CD4E34600D7DFE17BE9C1BD /* FSArchiver.m */, 8FE6AD8F0EC740650096019D /* FSArray.h */, 8FE6AD900EC740650096019D /* FSArray.m */, + 8FA3AE55044D4D6700CF7A3A /* FSArrayEnumerator.h */, + 8FA3AE56044D4D6700CF7A3A /* FSArrayEnumerator.m */, 8F940B810F2393B0004525E1 /* FSAssociation.h */, 8F940B820F2393B0004525E1 /* FSAssociation.m */, 8FDCCD4E05C09F8200747C0A /* FSAttributedStringInspector.h */, @@ -3986,9 +4993,13 @@ 0CD4E33600D7DFE17BE9C1BD /* FSCompilationResult.m */, 0CD4E33900D7DFE17BE9C1BD /* FSCompiler.h */, 0CD4E33A00D7DFE17BE9C1BD /* FSCompiler.m */, - 8F0B64C805C5370D0099180D /* FSConsole.nib */, + EDE508D119DD4D310012F16A /* FSConsole.xib */, F52EECA6036210E2016141BB /* FSConstantListBuilder.h */, F52EECA7036210E2016141BB /* FSConstantListBuilder.m */, + 8F92F0340463F03300F4C61F /* FSConstantsDictionaryGenerator.h */, + 8F92F0350463F03300F4C61F /* FSConstantsDictionaryGenerator.m */, + 0CD4E33B00D7DFE17BE9C1BD /* FSConstantsInitialization.h */, + 0CD4E33C00D7DFE17BE9C1BD /* FSConstantsInitialization.m */, 8FE7E0E6082AD964008231E8 /* FSCoreDataSample.h */, 8FE7E0E7082AD964008231E8 /* FSCoreDataSample.m */, 0CD4E34C00D7DFE17BE9C1BD /* FScript.h */, @@ -3996,7 +5007,7 @@ 0CD4E34F00D7DFE17BE9C1BD /* FScriptFunctions.m */, 8F0B66FB05C5639E0099180D /* FScriptMenuItem.h */, 8F0B66FC05C5639E0099180D /* FScriptMenuItem.m */, - 8F0B664F05C557A40099180D /* FScriptPreferences.nib */, + EDE508DA19DD4FDC0012F16A /* FScriptPreferences.xib */, F5FBEF2802149D32018C0134 /* FScriptTextView.h */, F501AF7B021497C401A75EC5 /* FScriptTextView.m */, 0CD4E33D00D7DFE17BE9C1BD /* FSExecEngine.h */, @@ -4008,8 +5019,8 @@ 0CD4E37700D7DFE17BE9C1BD /* FSGenericObjectInspector.h */, 0CD4E37800D7DFE17BE9C1BD /* FSGenericObjectInspector.m */, 8F8EA779077F6C9300AC1C96 /* FSGenericPointer.h */, - 8F8EA841077F79A000AC1C96 /* FSGenericPointerPrivate.h */, 8F8EA786077F6C9300AC1C96 /* FSGenericPointer.m */, + 8F8EA841077F79A000AC1C96 /* FSGenericPointerPrivate.h */, 8FB9D5970F1CEE2100E10274 /* FSGlobalScope.h */, 8FB9D5980F1CEE2100E10274 /* FSGlobalScope.m */, F5073A2102FC5400013656B0 /* FSIdentifierFormatter.h */, @@ -4020,15 +5031,15 @@ 8F7F4F9C07FB274C008E42F4 /* FSInspectorUniquier.h */, 8F7F4F9D07FB274C008E42F4 /* FSInspectorUniquier.m */, 0CD4E35000D7DFE17BE9C1BD /* FSInterpreter.h */, - F54CA17602FB2CAF01C25A35 /* FSInterpreterPrivate.h */, 0CD4E35100D7DFE17BE9C1BD /* FSInterpreter.m */, + F54CA17602FB2CAF01C25A35 /* FSInterpreterPrivate.h */, 0CD4E35200D7DFE17BE9C1BD /* FSInterpreterResult.h */, 0CD4E35300D7DFE17BE9C1BD /* FSInterpreterResult.m */, 0CD4E35400D7DFE17BE9C1BD /* FSInterpreterResultPrivate.h */, - 8F71F72205C43A7D00C34794 /* FSInterpreterViewPrivate.h */, 0CD4E35500D7DFE17BE9C1BD /* FSInterpreterView.h */, 0CD4E35600D7DFE17BE9C1BD /* FSInterpreterView.m */, 0CD4E35700D7DFE17BE9C1BD /* FSInterpreterViewIBHeader.h */, + 8F71F72205C43A7D00C34794 /* FSInterpreterViewPrivate.h */, F55D44CE0358B5D201B9E934 /* FSKeyedArchiver.h */, F55D44CF0358B5D201B9E934 /* FSKeyedArchiver.m */, F55D44C40358A88801B9E934 /* FSKeyedUnarchiver.h */, @@ -4054,8 +5065,8 @@ 8F2D72090F6BD9B100F0862A /* FSNSAffineTransform.h */, 8F2D720A0F6BD9B100F0862A /* FSNSAffineTransform.m */, 0CD4E35800D7DFE17BE9C1BD /* FSNSArray.h */, - 0CD4E35A00D7DFE17BE9C1BD /* FSNSArrayPrivate.h */, 0CD4E35900D7DFE17BE9C1BD /* FSNSArray.m */, + 0CD4E35A00D7DFE17BE9C1BD /* FSNSArrayPrivate.h */, 8FDCCDBF05C0A23000747C0A /* FSNSAttributedString.h */, 8FDCCDC005C0A23000747C0A /* FSNSAttributedString.m */, 0CD4E35B00D7DFE17BE9C1BD /* FSNSDate.h */, @@ -4081,8 +5092,8 @@ 0CD4E36100D7DFE17BE9C1BD /* FSNSNumber.h */, 0CD4E36200D7DFE17BE9C1BD /* FSNSNumber.m */, 0CD4E36300D7DFE17BE9C1BD /* FSNSObject.h */, - 8F63CC08044B95DB00B84480 /* FSNSObjectPrivate.h */, 0CD4E36400D7DFE17BE9C1BD /* FSNSObject.m */, + 8F63CC08044B95DB00B84480 /* FSNSObjectPrivate.h */, F5F140590223CC9D01DD698C /* FSNSProtocolChecker.h */, F5F1405A0223CC9D01DD698C /* FSNSProtocolChecker.m */, 0CD4E36500D7DFE17BE9C1BD /* FSNSProxy.h */, @@ -4098,6 +5109,9 @@ 0CD4E38E00D7DFE17BE9C1BD /* FSNumber.m */, 0CD4E32000D7DFE17BE9C1BD /* FSObjectBrowser.h */, 0CD4E32100D7DFE17BE9C1BD /* FSObjectBrowser.m */, + ED68BE4C1A35E94B00968430 /* FSObjectBrowserWindow.h */, + ED68BE4D1A35E94B00968430 /* FSObjectBrowserWindow.m */, + ED68BE411A35E38F00968430 /* FSObjectBrowser.xib */, F5FA8A6C0215D44C01AFEEFD /* FSObjectBrowserArgumentPanel.h */, F5FA8A6D0215D44C01AFEEFD /* FSObjectBrowserArgumentPanel.m */, 8F7A71290F48397C00E95364 /* FSObjectBrowserBottomBarTextDisplay.h */, @@ -4106,7 +5120,7 @@ F5F0261E02C243D20155CB83 /* FSObjectBrowserButtonCtxBlock.m */, F5F9569602B272FB0121B3BA /* FSObjectBrowserButtonsInspector.h */, F5F9569502B272FB0121B3BA /* FSObjectBrowserButtonsInspector.m */, - F5F9569002B272A30121B3BA /* FSObjectBrowserButtonsInspector.nib */, + EDFB2FF21A17E345002C8DD7 /* FSObjectBrowserButtonsInspector.xib */, 0CD4E32200D7DFE17BE9C1BD /* FSObjectBrowserCell.h */, 0CD4E32300D7DFE17BE9C1BD /* FSObjectBrowserCell.m */, 8FB505FF05D53C8600153B33 /* FSObjectBrowserMatrix.h */, @@ -4123,18 +5137,20 @@ 0CD4E32500D7DFE17BE9C1BD /* FSObjectBrowserView.m */, 8F4E294C075B8E5600F8DCDB /* FSObjectBrowserViewObjectInfo.h */, 8F4E294D075B8E5600F8DCDB /* FSObjectBrowserViewObjectInfo.m */, - F5EBBE810321029601CA10C6 /* FSObjectFormatter.m */, + ED8222E51A19554F00C42C72 /* FSObjectEnumInfo.h */, + ED8222E61A19554F00C42C72 /* FSObjectEnumInfo.m */, F5EBBE820321029601CA10C6 /* FSObjectFormatter.h */, + F5EBBE810321029601CA10C6 /* FSObjectFormatter.m */, 8FE9AE12078071CC005B2CC4 /* FSObjectPointer.h */, - 8FE9AE8207807269005B2CC4 /* FSObjectPointerPrivate.h */, 8FE9AE1F078071CC005B2CC4 /* FSObjectPointer.m */, - 0CD4E39000D7DFE17BE9C1BD /* FSPilot.h */, - 0CD4E39100D7DFE17BE9C1BD /* FSPilot.m */, - 8F8EA7E8077F719800AC1C96 /* FSPointerPrivate.h */, + 8FE9AE8207807269005B2CC4 /* FSObjectPointerPrivate.h */, 0CD4E36C00D7DFE17BE9C1BD /* FSPattern.h */, 0CD4E36D00D7DFE17BE9C1BD /* FSPattern.m */, + 0CD4E39000D7DFE17BE9C1BD /* FSPilot.h */, + 0CD4E39100D7DFE17BE9C1BD /* FSPilot.m */, 8F8EA70B077F6A5200AC1C96 /* FSPointer.h */, 8F8EA718077F6A5200AC1C96 /* FSPointer.m */, + 8F8EA7E8077F719800AC1C96 /* FSPointerPrivate.h */, 8F95E3C108034A670030B65C /* FSPredicateTextView.h */, 8F95E3C208034A670030B65C /* FSPredicateTextView.m */, 8F573F8F056B780500F2796A /* FSQTMovie.h */, @@ -4148,8 +5164,8 @@ 8F17C07D06B1309C00F07862 /* FSSymbolTable.h */, 8F17C07E06B1309C00F07862 /* FSSymbolTable.m */, 0CD4E39E00D7DFE17BE9C1BD /* FSSystem.h */, - F5A25E260357B373011A39F8 /* FSSystemPrivate.h */, 0CD4E39F00D7DFE17BE9C1BD /* FSSystem.m */, + F5A25E260357B373011A39F8 /* FSSystemPrivate.h */, 8FE3DC990D26C0FD00A1D767 /* FSTestClasses.txt */, 8FE3DD200D26D49900A1D767 /* FSTestObjCClass1.h */, 8FE3DD210D26D49900A1D767 /* FSTestObjCClass1.m */, @@ -4159,6 +5175,8 @@ 8F2DE65A0E57254700CF83CB /* FSTranscript.m */, 0CD4E37200D7DFE17BE9C1BD /* FSUnarchiver.h */, 0CD4E37300D7DFE17BE9C1BD /* FSUnarchiver.m */, + ED83191B1A1BC2B500290EE2 /* FSUtils.h */, + ED83191C1A1BC2B500290EE2 /* FSUtils.m */, 0CD4E37400D7DFE17BE9C1BD /* FSVoid.h */, 0CD4E37500D7DFE17BE9C1BD /* FSVoid.m */, 0CD4E37600D7DFE17BE9C1BD /* FSVoidPrivate.h */, @@ -4171,12 +5189,14 @@ 0CD4E37E00D7DFE17BE9C1BD /* license.txt */, 0CD4E37F00D7DFE17BE9C1BD /* MessagePatternCodeNode.h */, 0CD4E38000D7DFE17BE9C1BD /* MessagePatternCodeNode.m */, + EDFB302E1A18CA26002C8DD7 /* metamacros.h */, 8FBB2FF00EEB3467007A3163 /* Number_fscript.h */, 8FBB2FF10EEB3467007A3163 /* Number.m */, 0CD4E38F00D7DFE17BE9C1BD /* NumberPrivate.h */, + EDC2C8DB1A1A925800942777 /* Object Inspector */, F505648002DF417501FE0326 /* Pointer.h */, - F5F856C002EB281C01F7E6F0 /* PointerPrivate.h */, F505647F02DF417501FE0326 /* Pointer.m */, + F5F856C002EB281C01F7E6F0 /* PointerPrivate.h */, 8F2D066F05CED9B9007EA81B /* run.tiff */, 0CD4E39600D7DFE17BE9C1BD /* ShellView.h */, 0CD4E39700D7DFE17BE9C1BD /* ShellView.m */, @@ -4185,28 +5205,209 @@ 8FBB10A4044E28FD00181279 /* TestFS.h */, 0CD4E3A000D7DFE17BE9C1BD /* TestFS.m */, ); - indentWidth = 2; - path = FScriptFramework; + indentWidth = 2; + path = FScriptFramework; + sourceTree = ""; + tabWidth = 2; + }; + 8F6392E00BDB855B005C8D94 /* FScriptIBPlugin */ = { + isa = PBXGroup; + children = ( + 8F913FD30BDB92FC001685EA /* FScriptIBPlugin-Info.plist */, + 8F913FD40BDB92FC001685EA /* FScriptIBPluginInspector.h */, + 8F913FD50BDB92FC001685EA /* FScriptIBPluginInspector.m */, + 8F913FD90BDB92FC001685EA /* Info.plist */, + 8F913FDA0BDB92FC001685EA /* version.plist */, + 8F6597B50C37F061006CDCA0 /* FScriptMenuItem.png */, + 8FB524150C2205C20028B297 /* FScriptIBPluginInspector.nib */, + 8FB524170C2205C20028B297 /* FScriptIBPluginLibrary.nib */, + 8F913FCE0BDB92EE001685EA /* FScriptIBPlugin_Prefix.pch */, + 8F913FCF0BDB92EE001685EA /* FScriptIBPlugin.h */, + 8F913FD00BDB92EE001685EA /* FScriptIBPlugin.m */, + 8F6597D90C381103006CDCA0 /* FSInterpreterView.classdescription */, + ); + name = FScriptIBPlugin; + sourceTree = ""; + }; + ED48525318B603C300877668 /* Frameworks */ = { + isa = PBXGroup; + children = ( + BA223095189F9924002C5B6A /* Accelerate.framework */, + E2DBA31F161CA5D00035A675 /* Accounts.framework */, + BA22309F189F9A14002C5B6A /* AddressBook.framework */, + 8FC20ADE0CEE3B2F00D9871F /* AddressBook.framework */, + BA2230A0189F9A14002C5B6A /* AGL.framework */, + BA2230A1189F9A14002C5B6A /* AppKit.framework */, + 8FC20A9F0CEE3AEE00D9871F /* AppKit.framework */, + BA2230A2189F9A14002C5B6A /* AppKitScripting.framework */, + BA2230A3189F9A14002C5B6A /* AppleScriptKit.framework */, + BA2230A4189F9A14002C5B6A /* AppleScriptObjC.framework */, + BA2230A5189F9A14002C5B6A /* AppleShareClientCore.framework */, + BA2230A6189F9A14002C5B6A /* ApplicationServices.framework */, + BA223097189F9958002C5B6A /* AudioToolbox.framework */, + BA2230A7189F9A14002C5B6A /* AudioUnit.framework */, + 8F589B600CE38B3B00C1D756 /* AudioUnit.framework */, + E2DBA321161CA60C0035A675 /* AudioVideoBridging.framework */, + BA2230A8189F9A14002C5B6A /* Automator.framework */, + 8F589B800CE38B7100C1D756 /* Automator.framework */, + E2DBA32D161CA7180035A675 /* AVFoundation.framework */, + BA223099189F9976002C5B6A /* AVKit.framework */, + BA2230B3189F9A2E002C5B6A /* CalendarStore.framework */, + 8F552A780C00A6D4002B6067 /* CalendarStore.framework */, + BA2230B4189F9A2E002C5B6A /* Carbon.framework */, + BA2230B5189F9A2E002C5B6A /* CFNetwork.framework */, + BA2230B6189F9A2E002C5B6A /* Cocoa.framework */, + 8F85274707F6016900E706F5 /* Cocoa.framework */, + BA2230B7189F9A2E002C5B6A /* Collaboration.framework */, + 8FC28E9B0C4A7DDF0071E9CC /* Collaboration.framework */, + BA22309B189F9988002C5B6A /* CoreAudio.framework */, + BA2230B8189F9A2F002C5B6A /* CoreAudioKit.framework */, + 8FC28EA80C4A7E3F0071E9CC /* CoreAudioKit.framework */, + BA2230B9189F9A2F002C5B6A /* CoreData.framework */, + 8FD8FD92076624AC009820DF /* CoreData.framework */, + BA2230BA189F9A2F002C5B6A /* CoreFoundation.framework */, + BA2230BB189F9A2F002C5B6A /* CoreGraphics.framework */, + BA22309D189F99CC002C5B6A /* CoreLocation.framework */, + BA2230BC189F9A2F002C5B6A /* CoreMedia.framework */, + BA2230BD189F9A2F002C5B6A /* CoreMediaIO.framework */, + BA2230BE189F9A2F002C5B6A /* CoreMIDI.framework */, + BA2230BF189F9A2F002C5B6A /* CoreServices.framework */, + BA2230C0189F9A2F002C5B6A /* CoreText.framework */, + BA2230C1189F9A2F002C5B6A /* CoreVideo.framework */, + 8FC28EB60C4A7E980071E9CC /* CoreVideo.framework */, + BA2230C2189F9A2F002C5B6A /* CoreWLAN.framework */, + BA2230D3189F9A7A002C5B6A /* DirectoryService.framework */, + BA2230D4189F9A7A002C5B6A /* DiscRecording.framework */, + F55D42D903583F2601B9E934 /* DiscRecording.framework */, + BA2230D5189F9A7A002C5B6A /* DiscRecordingUI.framework */, + F55D42DA03583F2601B9E934 /* DiscRecordingUI.framework */, + BA2230D6189F9A7A002C5B6A /* DiskArbitration.framework */, + 8FC28ECD0C4A7EDC0071E9CC /* DiskArbitration.framework */, + BA2230D7189F9A7A002C5B6A /* DrawSprocket.framework */, + BA22313C189F9AA9002C5B6A /* DTPerformanceSession.framework */, + BA2230D8189F9A7A002C5B6A /* DVComponentGlue.framework */, + BA2230D9189F9A7A002C5B6A /* DVDPlayback.framework */, + E2DBA31C161CA57C0035A675 /* EventKit.framework */, + BA22316F189F9AD3002C5B6A /* ExceptionHandling.framework */, + F51B24640271980D01DB4759 /* ExceptionHandling.framework */, + BA223170189F9AD3002C5B6A /* ForceFeedback.framework */, + BA223171189F9AD3002C5B6A /* Foundation.framework */, + 0CD4E46500D7E1C37BE9C1BD /* Foundation.framework */, + BA223172189F9AD3002C5B6A /* FWAUserLib.framework */, + BA223173189F9AD3002C5B6A /* GameController.framework */, + E2DBA323161CA6270035A675 /* GameKit.framework */, + E2DBA325161CA64B0035A675 /* GLKit.framework */, + BA223147189F9AC5002C5B6A /* GLUT.framework */, + BA223148189F9AC5002C5B6A /* GSS.framework */, + BA223149189F9AC6002C5B6A /* ICADevices.framework */, + BA22314A189F9AC6002C5B6A /* ImageCaptureCore.framework */, + BA22314B189F9AC6002C5B6A /* ImageIO.framework */, + BA22314C189F9AC6002C5B6A /* IMServicePlugIn.framework */, + BA22314D189F9AC6002C5B6A /* InputMethodKit.framework */, + 8F589B980CE38CAB00C1D756 /* InputMethodKit.framework */, + BA22314E189F9AC6002C5B6A /* InstallerPlugins.framework */, + 8F589BA50CE38CCE00C1D756 /* InstallerPlugins.framework */, + BA22314F189F9AC6002C5B6A /* InstantMessage.framework */, + 8FC28FC70C4A7FDC0071E9CC /* InstantMessage.framework */, + BA22313D189F9AA9002C5B6A /* InterfaceBuilderKit.framework */, + BA223150189F9AC6002C5B6A /* IOBluetooth.framework */, + F55D431803583F8501B9E934 /* IOBluetooth.framework */, + BA223151189F9AC6002C5B6A /* IOBluetoothUI.framework */, + F55D431903583F8501B9E934 /* IOBluetoothUI.framework */, + BA223152189F9AC6002C5B6A /* IOKit.framework */, + BA223153189F9AC6002C5B6A /* IOSurface.framework */, + BA223154189F9AC6002C5B6A /* JavaFrameEmbedding.framework */, + BA223155189F9AC6002C5B6A /* JavaScriptCore.framework */, + BA223156189F9AC6002C5B6A /* JavaVM.framework */, + 0CD4E46900D7E1F17BE9C1BD /* JavaVM.framework */, + BA223157189F9AC6002C5B6A /* Kerberos.framework */, + BA223158189F9AC7002C5B6A /* Kernel.framework */, + BA223159189F9AC7002C5B6A /* LatentSemanticMapping.framework */, + BA223144189F9ABD002C5B6A /* LDAP.framework */, + BA2230F4189F9A99002C5B6A /* MapKit.framework */, + BA2230F5189F9A99002C5B6A /* MediaAccessibility.framework */, + BA2230F6189F9A99002C5B6A /* MediaLibrary.framework */, + BA2230F7189F9A99002C5B6A /* MediaToolbox.framework */, + BA2230F8189F9A99002C5B6A /* NetFS.framework */, + BA2230F9189F9A99002C5B6A /* OpenAL.framework */, + BA2230FA189F9A99002C5B6A /* OpenCL.framework */, + BA2230FB189F9A99002C5B6A /* OpenDirectory.framework */, + BA2230FC189F9A99002C5B6A /* OpenGL.framework */, + BA2230FD189F9A99002C5B6A /* OSAKit.framework */, + 8FC28FEE0C4A80D80071E9CC /* OSAKit.framework */, + BA2230FE189F9A99002C5B6A /* PCSC.framework */, + BA2230FF189F9A99002C5B6A /* PreferencePanes.framework */, + 8FC290F90C4A81630071E9CC /* PreferencePanes.framework */, + BA223100189F9A99002C5B6A /* PubSub.framework */, + 8FC291040C4A81A60071E9CC /* PubSub.framework */, + BA223101189F9A99002C5B6A /* QTKit.framework */, + 8FDF6FCF082BD9560044FD86 /* QTKit.framework */, + BA223102189F9A99002C5B6A /* Quartz.framework */, + 8FC291160C4A82070071E9CC /* Quartz.framework */, + BA223103189F9A99002C5B6A /* QuartzCore.framework */, + 8F1873160B99C7AA003974F2 /* QuartzCore.framework */, + BA223104189F9A99002C5B6A /* QuickLook.framework */, + BA223105189F9A99002C5B6A /* QuickTime.framework */, + BA223106189F9A9A002C5B6A /* Ruby.framework */, + BA223107189F9A9A002C5B6A /* RubyCocoa.framework */, + 8FC2911F0C4A82730071E9CC /* RubyCocoa.framework */, + E2DBA327161CA65A0035A675 /* SceneKit.framework */, + BA223108189F9A9A002C5B6A /* ScreenSaver.framework */, + 8FA095F80CE38F27001AC147 /* ScreenSaver.framework */, + BA223109189F9A9A002C5B6A /* Scripting.framework */, + BA22310A189F9A9A002C5B6A /* ScriptingBridge.framework */, + 8F6584F80C484A5100C8A3FC /* ScriptingBridge.framework */, + BA22310B189F9A9A002C5B6A /* Security.framework */, + BA22310C189F9A9A002C5B6A /* SecurityFoundation.framework */, + 8FC291710C4A82D10071E9CC /* SecurityFoundation.framework */, + BA22310D189F9A9A002C5B6A /* SecurityInterface.framework */, + 8FC2917F0C4A82F90071E9CC /* SecurityInterface.framework */, + BA22313E189F9AA9002C5B6A /* SenTestingKit.framework */, + BA22310E189F9A9A002C5B6A /* ServiceManagement.framework */, + E2DBA329161CA6600035A675 /* Social.framework */, + BA22310F189F9A9A002C5B6A /* SpriteKit.framework */, + BA223110189F9A9A002C5B6A /* StoreKit.framework */, + BA223111189F9A9A002C5B6A /* SyncServices.framework */, + 8FC291920C4A83380071E9CC /* SyncServices.framework */, + BA223112189F9A9A002C5B6A /* SystemConfiguration.framework */, + BA223113189F9A9A002C5B6A /* Tcl.framework */, + BA223114189F9A9A002C5B6A /* Tk.framework */, + BA223115189F9A9A002C5B6A /* TWAIN.framework */, + BA223116189F9A9A002C5B6A /* VideoDecodeAcceleration.framework */, + E2DBA32B161CA6660035A675 /* VideoToolbox.framework */, + BA223117189F9A9A002C5B6A /* WebKit.framework */, + 8FF5AEF80961E56400A3BEA9 /* WebKit.framework */, + BA22313F189F9AA9002C5B6A /* XCTest.framework */, + ); + name = Frameworks; sourceTree = ""; - tabWidth = 2; }; - 8F6392E00BDB855B005C8D94 /* FScriptIBPlugin */ = { + EDC2C8DB1A1A925800942777 /* Object Inspector */ = { isa = PBXGroup; children = ( - 8F913FD30BDB92FC001685EA /* FScriptIBPlugin-Info.plist */, - 8F913FD40BDB92FC001685EA /* FScriptIBPluginInspector.h */, - 8F913FD50BDB92FC001685EA /* FScriptIBPluginInspector.m */, - 8F913FD90BDB92FC001685EA /* Info.plist */, - 8F913FDA0BDB92FC001685EA /* version.plist */, - 8F6597B50C37F061006CDCA0 /* FScriptMenuItem.png */, - 8FB524150C2205C20028B297 /* FScriptIBPluginInspector.nib */, - 8FB524170C2205C20028B297 /* FScriptIBPluginLibrary.nib */, - 8F913FCE0BDB92EE001685EA /* FScriptIBPlugin_Prefix.pch */, - 8F913FCF0BDB92EE001685EA /* FScriptIBPlugin.h */, - 8F913FD00BDB92EE001685EA /* FScriptIBPlugin.m */, - 8F6597D90C381103006CDCA0 /* FSInterpreterView.classdescription */, + EDA22BDE1A24C28D0093DB91 /* view.png */, + EDA22BDF1A24C28D0093DB91 /* window.png */, + ED051F431A234DB6000284E2 /* metamacrosorig.h */, + EDC2C8DC1A1A943600942777 /* FSDetailedObjectInspector.h */, + EDC2C8DD1A1A943600942777 /* FSDetailedObjectInspector.m */, + ED8222D41A194FD600C42C72 /* FSObjectInspectorViewModelItem.h */, + ED8222D51A194FD600C42C72 /* FSObjectInspectorViewModelItem.m */, + ED3004E51A1A86EF00675D94 /* FSObjectInspectorViewController.h */, + ED3004E61A1A86EF00675D94 /* FSObjectInspectorViewController.m */, + ED8319301A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.h */, + ED8319311A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.m */, + ED3004E71A1A86EF00675D94 /* FSObjectInspectorViewController.xib */, + EDC2C8EE1A1AA34D00942777 /* FSObjectInspectorBackgroundView.h */, + EDC2C8EF1A1AA34D00942777 /* FSObjectInspectorBackgroundView.m */, + ED3CB63F1A1E5B3300771077 /* FSColorWell.h */, + ED3CB6401A1E5B3300771077 /* FSColorWell.m */, + EDA6AC3E1A1F407C001CD1F2 /* FSObjectInspectorOutlineView.h */, + EDA6AC3F1A1F407C001CD1F2 /* FSObjectInspectorOutlineView.m */, + EDA6AC531A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.h */, + EDA6AC541A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.m */, + EDA6AC551A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.xib */, ); - name = FScriptIBPlugin; + name = "Object Inspector"; sourceTree = ""; }; F5F00F100279FB69016D9B48 /* JGAdditions */ = { @@ -4284,6 +5485,7 @@ 8F6DA5EA055FC6980050409A /* FSObjectBrowserArgumentPanel.h in Headers */, 8F6DA5EB055FC6980050409A /* FSObjectBrowserCell.h in Headers */, 8F6DA5EC055FC6980050409A /* FSObjectBrowserView.h in Headers */, + EDFB30351A18CA26002C8DD7 /* metamacros.h in Headers */, 8F6DA5ED055FC6980050409A /* FSBlock.h in Headers */, 8F6DA5EE055FC6980050409A /* BlockInspector.h in Headers */, 8F6DA5EF055FC6980050409A /* BlockPrivate.h in Headers */, @@ -4301,10 +5503,13 @@ 8F6DA5FB055FC6980050409A /* FSArchiver.h in Headers */, 8F6DA5FC055FC6980050409A /* FSFlight.h in Headers */, 8F6DA5FD055FC6980050409A /* FSBoolean.h in Headers */, + ED3CB6481A1E5B3300771077 /* FSColorWell.h in Headers */, 8F6DA5FE055FC6980050409A /* FSBooleanPrivate.h in Headers */, 8F6DA600055FC6980050409A /* FScriptFunctions.h in Headers */, 8F6DA601055FC6980050409A /* FSInterpreter.h in Headers */, 8F6DA602055FC6980050409A /* FSInterpreterView.h in Headers */, + ED68BE561A35E94B00968430 /* FSObjectBrowserWindow.h in Headers */, + EDA6AC5E1A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.h in Headers */, 8F6DA603055FC6980050409A /* FSInterpreterViewIBHeader.h in Headers */, 8F6DA604055FC6980050409A /* FSNSArray.h in Headers */, 8F6DA605055FC6980050409A /* FSNSDictionary.h in Headers */, @@ -4320,6 +5525,7 @@ 8F6DA60F055FC6980050409A /* FScript.h in Headers */, 8F6DA610055FC6980050409A /* FSNSProxy.h in Headers */, 8F6DA611055FC6980050409A /* FSNSString.h in Headers */, + ED8222ED1A19554F00C42C72 /* FSObjectEnumInfo.h in Headers */, 8F6DA612055FC6980050409A /* FSNSStringPrivate.h in Headers */, 8F6DA614055FC6980050409A /* FSPattern.h in Headers */, 8F6DA616055FC6980050409A /* FSUnarchiver.h in Headers */, @@ -4369,6 +5575,7 @@ 8F60217605A25CDC0004EFF1 /* FSCollectionInspectorTableView.h in Headers */, 8F60F24D05A9FE8B00985FEC /* FSNSSet.h in Headers */, 8FDCCD5605C09F8200747C0A /* FSAttributedStringInspector.h in Headers */, + EDA6AC481A1F407C001CD1F2 /* FSObjectInspectorOutlineView.h in Headers */, 8FDCCDC705C0A23100747C0A /* FSNSAttributedString.h in Headers */, 8F71F72605C43A7D00C34794 /* FSInterpreterViewPrivate.h in Headers */, 8F0B670105C5639E0099180D /* FScriptMenuItem.h in Headers */, @@ -4381,12 +5588,15 @@ 8F8EA793077F6C9300AC1C96 /* FSGenericPointer.h in Headers */, 8F8EA7F5077F719800AC1C96 /* FSPointerPrivate.h in Headers */, 8F8EA85B077F79A000AC1C96 /* FSGenericPointerPrivate.h in Headers */, + ED8222DC1A194FD600C42C72 /* FSObjectInspectorViewModelItem.h in Headers */, 8FE9AE2C078071CC005B2CC4 /* FSObjectPointer.h in Headers */, + EDC2C8EC1A1A99F600942777 /* FSObjectInspectorViewController.h in Headers */, 8FE9AE8F07807269005B2CC4 /* FSObjectPointerPrivate.h in Headers */, 8F86923A07F19BA8000D20A4 /* FSObjectBrowserNamedObjectWrapper.h in Headers */, 8F95E3C908034A670030B65C /* FSPredicateTextView.h in Headers */, 8FE7E0EE082AD964008231E8 /* FSCoreDataSample.h in Headers */, 8F936BF5082E8DBA00A04EBF /* FSManagedObjectContextInspector.h in Headers */, + ED83193A1A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.h in Headers */, 8F936C00082E8E6D00A04EBF /* FSNSManagedObjectContext.h in Headers */, 8F917E20095F5DE3000932D0 /* FSObjectBrowserSearchField.h in Headers */, 8F90A2F5096DB0660064F4BC /* FSBlockCompilationResult.h in Headers */, @@ -4401,11 +5611,13 @@ 8F8112F40D85E58200CB3407 /* FSCNCategory.h in Headers */, 8F59CA710D86DD0800D67A78 /* FSCNMessage.h in Headers */, 8F7223810D870C6A00394C99 /* FSCNSuper.h in Headers */, + ED8319251A1BC2B500290EE2 /* FSUtils.h in Headers */, 8F2E34240D8DB61C00912543 /* FSCNUnaryMessage.h in Headers */, 8F2E34370D8DBF6A00912543 /* FSCNBinaryMessage.h in Headers */, 8F2E34400D8DBFE700912543 /* FSCNKeywordMessage.h in Headers */, 8F5900150D9468FC003A8B17 /* FSCNCascade.h in Headers */, 8F8F58680D9FE6AA00ED0FED /* FSCNStatementList.h in Headers */, + EDC2C8EA1A1A99BF00942777 /* FSDetailedObjectInspector.h in Headers */, 8F747DAB0DA03AE200148342 /* FSCNPrecomputedObject.h in Headers */, 8F747DBA0DA0467100148342 /* FSCNArray.h in Headers */, 8FAE79AF0DA0ED5D00CB6E14 /* FSCNBlock.h in Headers */, @@ -4415,6 +5627,7 @@ 8F8949D70DE08B110094EC14 /* FSClassDefinition.h in Headers */, 8F2DE6600E57254700CF83CB /* FSTranscript.h in Headers */, 8FE6AD960EC740650096019D /* FSArray.h in Headers */, + EDC2C8F61A1AA34D00942777 /* FSObjectInspectorBackgroundView.h in Headers */, 8F31A4C70EC74A2E00D1B8E8 /* Array_fscript.h in Headers */, 8FCA00C80EEAF34300B10420 /* Block_fscript.h in Headers */, 8FBB2FF70EEB3467007A3163 /* Number_fscript.h in Headers */, @@ -4462,6 +5675,7 @@ 8F6DA803055FC70C0050409A /* BlockSignature.h in Headers */, 8F6DA804055FC70C0050409A /* BlockStackElem.h in Headers */, 8F6DA805055FC70C0050409A /* build_config.h in Headers */, + EDC2C8DE1A1A943600942777 /* FSDetailedObjectInspector.h in Headers */, 8F6DA806055FC70C0050409A /* CLIView.h in Headers */, 8F6DA807055FC70C0050409A /* FSCompilationResult.h in Headers */, 8F6DA808055FC70C0050409A /* CompiledCodeNode.h in Headers */, @@ -4471,6 +5685,7 @@ 8F6DA80C055FC70C0050409A /* FSExecutor.h in Headers */, 8F6DA80D055FC70C0050409A /* FSFlight.h in Headers */, 8F6DA80E055FC70C0050409A /* FSArchiver.h in Headers */, + ED83191D1A1BC2B500290EE2 /* FSUtils.h in Headers */, 8F6DA80F055FC70C0050409A /* FSBoolean.h in Headers */, 8F6DA810055FC70C0050409A /* FSBooleanPrivate.h in Headers */, 8F6DA812055FC70C0050409A /* FScript.h in Headers */, @@ -4483,6 +5698,7 @@ 8F6DA819055FC70C0050409A /* FSInterpreterViewIBHeader.h in Headers */, 8F6DA81A055FC70C0050409A /* FSNSArray.h in Headers */, 8F6DA81B055FC70C0050409A /* FSNSArrayPrivate.h in Headers */, + ED3CB6411A1E5B3300771077 /* FSColorWell.h in Headers */, 8F6DA81C055FC70C0050409A /* FSNSDate.h in Headers */, 8F6DA81D055FC70C0050409A /* FSNSDictionary.h in Headers */, 8F6DA81E055FC70C0050409A /* FSNSDistantObject.h in Headers */, @@ -4504,6 +5720,7 @@ 8F6DA833055FC70C0050409A /* NumberPrivate.h in Headers */, 8F6DA834055FC70C0050409A /* FSPilot.h in Headers */, 8F6DA837055FC70C0050409A /* FSReplacementForCoderForClass.h in Headers */, + ED8222E71A19554F00C42C72 /* FSObjectEnumInfo.h in Headers */, 8F6DA838055FC70C0050409A /* ShellView.h in Headers */, 8F6DA839055FC70C0050409A /* Space.h in Headers */, 8F6DA83A055FC70C0050409A /* FSCommandHistory.h in Headers */, @@ -4518,8 +5735,11 @@ 8F6DA84A055FC70C0050409A /* FSObjectBrowserToolbarButton.h in Headers */, 8F6DA84B055FC70C0050409A /* FSObjectBrowserButtonCtxBlock.h in Headers */, 8F6DA84C055FC70C0050409A /* DOCustom.h in Headers */, + ED8222D61A194FD600C42C72 /* FSObjectInspectorViewModelItem.h in Headers */, 8F6DA84E055FC70C0050409A /* Pointer.h in Headers */, + ED3004E81A1A86EF00675D94 /* FSObjectInspectorViewController.h in Headers */, 8F6DA84F055FC70C0050409A /* PointerPrivate.h in Headers */, + EDFB302F1A18CA26002C8DD7 /* metamacros.h in Headers */, 8F6DA850055FC70C0050409A /* FSInterpreterPrivate.h in Headers */, 8F6DA851055FC70C0050409A /* FSIdentifierFormatter.h in Headers */, 8F6DA852055FC70C0050409A /* FSObjectFormatter.h in Headers */, @@ -4559,12 +5779,14 @@ 8F8EA860077F79A000AC1C96 /* FSGenericPointerPrivate.h in Headers */, 8FE9AE35078071CC005B2CC4 /* FSObjectPointer.h in Headers */, 8FE9AE9207807269005B2CC4 /* FSObjectPointerPrivate.h in Headers */, + ED8319321A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.h in Headers */, 8F37AEC6078B7E900083565D /* FSManagedObjectContextInspector.h in Headers */, 8F86923E07F19BA8000D20A4 /* FSObjectBrowserNamedObjectWrapper.h in Headers */, 8F7F4FA007FB274C008E42F4 /* FSInspectorUniquier.h in Headers */, 8F95E3C708034A670030B65C /* FSPredicateTextView.h in Headers */, 8FE7E0EA082AD964008231E8 /* FSCoreDataSample.h in Headers */, 8F936BFA082E8E5000A04EBF /* FSNSManagedObjectContext.h in Headers */, + EDA6AC561A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.h in Headers */, 8F917E28095F5DE5000932D0 /* FSObjectBrowserSearchField.h in Headers */, 8F90A2F7096DB0660064F4BC /* FSBlockCompilationResult.h in Headers */, 8FD7D4A80975B377009B2685 /* FSReturnSignal.h in Headers */, @@ -4577,10 +5799,12 @@ 8F4822090D2C317700754A4E /* FSTestObjCClass2.h in Headers */, 8F8112F60D85E58200CB3407 /* FSCNCategory.h in Headers */, 8F59CA750D86DD0800D67A78 /* FSCNMessage.h in Headers */, + EDA6AC401A1F407C001CD1F2 /* FSObjectInspectorOutlineView.h in Headers */, 8F7223830D870C6A00394C99 /* FSCNSuper.h in Headers */, 8F2E34220D8DB61C00912543 /* FSCNUnaryMessage.h in Headers */, 8F2E34350D8DBF6A00912543 /* FSCNBinaryMessage.h in Headers */, 8F2E343E0D8DBFE700912543 /* FSCNKeywordMessage.h in Headers */, + ED68BE4E1A35E94B00968430 /* FSObjectBrowserWindow.h in Headers */, 8F5900170D9468FC003A8B17 /* FSCNCascade.h in Headers */, 8F8F58660D9FE6A900ED0FED /* FSCNStatementList.h in Headers */, 8F747DAD0DA03AE200148342 /* FSCNPrecomputedObject.h in Headers */, @@ -4589,6 +5813,7 @@ 8FAE79F80DA109C500CB6E14 /* FSCNAssignment.h in Headers */, 8F45CBC20DA813F200AFA8C8 /* FSCNMethod.h in Headers */, 8FD0A3170DD7276000E47459 /* FSCNReturn.h in Headers */, + EDC2C8F01A1AA34D00942777 /* FSObjectInspectorBackgroundView.h in Headers */, 8F8949D90DE08B110094EC14 /* FSClassDefinition.h in Headers */, 8F2DE65D0E57254700CF83CB /* FSTranscript.h in Headers */, 8FE6AD930EC740650096019D /* FSArray.h in Headers */, @@ -4622,12 +5847,14 @@ 8F6DA8FB055FC71F0050409A /* FSCollectionInspector.h in Headers */, 8F6DA8FC055FC71F0050409A /* FSObjectBrowser.h in Headers */, 8F6DA8FD055FC71F0050409A /* FSObjectBrowserCell.h in Headers */, + ED8222D71A194FD600C42C72 /* FSObjectInspectorViewModelItem.h in Headers */, 8F6DA8FE055FC71F0050409A /* FSBlock.h in Headers */, 8F6DA8FF055FC71F0050409A /* BlockInspector.h in Headers */, 8F6DA900055FC71F0050409A /* BlockPrivate.h in Headers */, 8F6DA901055FC71F0050409A /* BlockRep.h in Headers */, 8F6DA903055FC71F0050409A /* BlockStackElem.h in Headers */, 8F6DA904055FC71F0050409A /* build_config.h in Headers */, + EDC2C8DF1A1A943600942777 /* FSDetailedObjectInspector.h in Headers */, 8F6DA905055FC71F0050409A /* CLIView.h in Headers */, 8F6DA906055FC71F0050409A /* FSCompilationResult.h in Headers */, 8F6DA907055FC71F0050409A /* CompiledCodeNode.h in Headers */, @@ -4646,7 +5873,9 @@ 8F6DA915055FC71F0050409A /* FSInterpreterResultPrivate.h in Headers */, 8F6DA916055FC71F0050409A /* FSInterpreterView.h in Headers */, 8F6DA917055FC71F0050409A /* FSInterpreterViewIBHeader.h in Headers */, + ED68BE4F1A35E94B00968430 /* FSObjectBrowserWindow.h in Headers */, 8F6DA918055FC71F0050409A /* FSNSArray.h in Headers */, + ED83191E1A1BC2B500290EE2 /* FSUtils.h in Headers */, 8F6DA919055FC71F0050409A /* FSNSArrayPrivate.h in Headers */, 8F6DA91A055FC71F0050409A /* FSNSDate.h in Headers */, 8F6DA91B055FC71F0050409A /* FSNSDictionary.h in Headers */, @@ -4670,6 +5899,8 @@ 8F6DA930055FC71F0050409A /* FSPilot.h in Headers */, 8F6DA931055FC71F0050409A /* Pointer.h in Headers */, 8F6DA933055FC71F0050409A /* FSReplacementForCoderForClass.h in Headers */, + ED3004E91A1A86EF00675D94 /* FSObjectInspectorViewController.h in Headers */, + EDFB30301A18CA26002C8DD7 /* metamacros.h in Headers */, 8F6DA934055FC71F0050409A /* ShellView.h in Headers */, 8F6DA935055FC71F0050409A /* Space.h in Headers */, 8F6DA936055FC71F0050409A /* FSCommandHistory.h in Headers */, @@ -4679,6 +5910,7 @@ 8F6DA93D055FC71F0050409A /* DOTest.h in Headers */, 8F6DA93E055FC71F0050409A /* FScriptTextView.h in Headers */, 8F6DA93F055FC71F0050409A /* FSObjectBrowserArgumentPanel.h in Headers */, + ED8319331A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.h in Headers */, 8F6DA940055FC71F0050409A /* FSNSProtocolChecker.h in Headers */, 8F6DA941055FC71F0050409A /* FSObjectBrowserToolbar.h in Headers */, 8F6DA942055FC71F0050409A /* FSEvalCommand.h in Headers */, @@ -4707,10 +5939,12 @@ 8F553BF90585222700A92293 /* FSNSValue.h in Headers */, 8F7D7DBF058E32CD00F1B8A8 /* FSReplacementForCoderForNilInArray.h in Headers */, 8F0E3B82059F3DBB003F6CE9 /* FSNamedNumber.h in Headers */, + ED3CB6421A1E5B3300771077 /* FSColorWell.h in Headers */, 8F60217205A25CDC0004EFF1 /* FSCollectionInspectorTableView.h in Headers */, 8F60F24B05A9FE8B00985FEC /* FSNSSet.h in Headers */, 8FDCCD5205C09F8200747C0A /* FSAttributedStringInspector.h in Headers */, 8FDCCDC305C0A23000747C0A /* FSNSAttributedString.h in Headers */, + EDA6AC571A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.h in Headers */, 8F71F72405C43A7D00C34794 /* FSInterpreterViewPrivate.h in Headers */, 8F0B66FF05C5639E0099180D /* FScriptMenuItem.h in Headers */, 8F658B2F05C9694F0040FB24 /* FSNSFont.h in Headers */, @@ -4730,9 +5964,12 @@ 8F95E3C308034A670030B65C /* FSPredicateTextView.h in Headers */, 8FE7E0EC082AD964008231E8 /* FSCoreDataSample.h in Headers */, 8F936BF1082E8DA400A04EBF /* FSManagedObjectContextInspector.h in Headers */, + EDA6AC411A1F407C001CD1F2 /* FSObjectInspectorOutlineView.h in Headers */, + EDC2C8F11A1AA34D00942777 /* FSObjectInspectorBackgroundView.h in Headers */, 8F936BFD082E8E5C00A04EBF /* FSNSManagedObjectContext.h in Headers */, 8F917E2C095F5DE7000932D0 /* FSObjectBrowserSearchField.h in Headers */, 8F90A2F3096DB0660064F4BC /* FSBlockCompilationResult.h in Headers */, + ED8222E81A19554F00C42C72 /* FSObjectEnumInfo.h in Headers */, 8FD7D4AA0975B377009B2685 /* FSReturnSignal.h in Headers */, 8F3C139F0C65E66400948776 /* FSMethod.h in Headers */, 8F5AD3230D05CFFE000CEAC6 /* FSCNClassDefinition.h in Headers */, @@ -4794,6 +6031,7 @@ BA2231B7189FA403002C5B6A /* BlockSignature.h in Headers */, BA2231B8189FA403002C5B6A /* BlockStackElem.h in Headers */, BA2231B9189FA403002C5B6A /* build_config.h in Headers */, + EDC2C8E01A1A943600942777 /* FSDetailedObjectInspector.h in Headers */, BA2231BA189FA403002C5B6A /* CLIView.h in Headers */, BA2231BB189FA403002C5B6A /* FSCompilationResult.h in Headers */, BA2231BC189FA403002C5B6A /* CompiledCodeNode.h in Headers */, @@ -4803,6 +6041,7 @@ BA2231C0189FA403002C5B6A /* FSExecutor.h in Headers */, BA2231C1189FA403002C5B6A /* FSFlight.h in Headers */, BA2231C2189FA403002C5B6A /* FSArchiver.h in Headers */, + ED83191F1A1BC2B500290EE2 /* FSUtils.h in Headers */, BA2231C3189FA403002C5B6A /* FSBoolean.h in Headers */, BA2231C4189FA403002C5B6A /* FSBooleanPrivate.h in Headers */, BA2231C5189FA403002C5B6A /* FScript.h in Headers */, @@ -4815,6 +6054,7 @@ BA2231CC189FA403002C5B6A /* FSInterpreterViewIBHeader.h in Headers */, BA2231CD189FA403002C5B6A /* FSNSArray.h in Headers */, BA2231CE189FA403002C5B6A /* FSNSArrayPrivate.h in Headers */, + ED3CB6431A1E5B3300771077 /* FSColorWell.h in Headers */, BA2231CF189FA403002C5B6A /* FSNSDate.h in Headers */, BA2231D0189FA403002C5B6A /* FSNSDictionary.h in Headers */, BA2231D1189FA403002C5B6A /* FSNSDistantObject.h in Headers */, @@ -4836,6 +6076,7 @@ BA2231E1189FA403002C5B6A /* NumberPrivate.h in Headers */, BA2231E2189FA403002C5B6A /* FSPilot.h in Headers */, BA2231E3189FA403002C5B6A /* FSReplacementForCoderForClass.h in Headers */, + ED8222E91A19554F00C42C72 /* FSObjectEnumInfo.h in Headers */, BA2231E4189FA403002C5B6A /* ShellView.h in Headers */, BA2231E5189FA403002C5B6A /* Space.h in Headers */, BA2231E6189FA403002C5B6A /* FSCommandHistory.h in Headers */, @@ -4850,8 +6091,11 @@ BA2231EF189FA403002C5B6A /* FSObjectBrowserToolbarButton.h in Headers */, BA2231F0189FA403002C5B6A /* FSObjectBrowserButtonCtxBlock.h in Headers */, BA2231F1189FA403002C5B6A /* DOCustom.h in Headers */, + ED8222D81A194FD600C42C72 /* FSObjectInspectorViewModelItem.h in Headers */, BA2231F2189FA403002C5B6A /* Pointer.h in Headers */, + ED3004EA1A1A86EF00675D94 /* FSObjectInspectorViewController.h in Headers */, BA2231F3189FA403002C5B6A /* PointerPrivate.h in Headers */, + EDFB30311A18CA26002C8DD7 /* metamacros.h in Headers */, BA2231F4189FA403002C5B6A /* FSInterpreterPrivate.h in Headers */, BA2231F5189FA403002C5B6A /* FSIdentifierFormatter.h in Headers */, BA2231F6189FA403002C5B6A /* FSObjectFormatter.h in Headers */, @@ -4891,12 +6135,14 @@ BA223218189FA403002C5B6A /* FSGenericPointerPrivate.h in Headers */, BA223219189FA403002C5B6A /* FSObjectPointer.h in Headers */, BA22321A189FA403002C5B6A /* FSObjectPointerPrivate.h in Headers */, + ED8319341A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.h in Headers */, BA22321B189FA403002C5B6A /* FSManagedObjectContextInspector.h in Headers */, BA22321C189FA403002C5B6A /* FSObjectBrowserNamedObjectWrapper.h in Headers */, BA22321D189FA403002C5B6A /* FSInspectorUniquier.h in Headers */, BA22321E189FA403002C5B6A /* FSPredicateTextView.h in Headers */, BA22321F189FA403002C5B6A /* FSCoreDataSample.h in Headers */, BA223220189FA403002C5B6A /* FSNSManagedObjectContext.h in Headers */, + EDA6AC581A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.h in Headers */, BA223221189FA403002C5B6A /* FSObjectBrowserSearchField.h in Headers */, BA223222189FA403002C5B6A /* FSBlockCompilationResult.h in Headers */, BA223223189FA403002C5B6A /* FSReturnSignal.h in Headers */, @@ -4909,10 +6155,12 @@ BA22322A189FA403002C5B6A /* FSTestObjCClass2.h in Headers */, BA22322B189FA403002C5B6A /* FSCNCategory.h in Headers */, BA22322C189FA403002C5B6A /* FSCNMessage.h in Headers */, + EDA6AC421A1F407C001CD1F2 /* FSObjectInspectorOutlineView.h in Headers */, BA22322D189FA403002C5B6A /* FSCNSuper.h in Headers */, BA22322E189FA403002C5B6A /* FSCNUnaryMessage.h in Headers */, BA22322F189FA403002C5B6A /* FSCNBinaryMessage.h in Headers */, BA223230189FA403002C5B6A /* FSCNKeywordMessage.h in Headers */, + ED68BE501A35E94B00968430 /* FSObjectBrowserWindow.h in Headers */, BA223231189FA403002C5B6A /* FSCNCascade.h in Headers */, BA223232189FA403002C5B6A /* FSCNStatementList.h in Headers */, BA223233189FA403002C5B6A /* FSCNPrecomputedObject.h in Headers */, @@ -4921,6 +6169,7 @@ BA223236189FA403002C5B6A /* FSCNAssignment.h in Headers */, BA223237189FA403002C5B6A /* FSCNMethod.h in Headers */, BA223238189FA403002C5B6A /* FSCNReturn.h in Headers */, + EDC2C8F21A1AA34D00942777 /* FSObjectInspectorBackgroundView.h in Headers */, BA223239189FA403002C5B6A /* FSClassDefinition.h in Headers */, BA22323A189FA403002C5B6A /* FSTranscript.h in Headers */, BA22323B189FA403002C5B6A /* FSArray.h in Headers */, @@ -4962,6 +6211,7 @@ BA223377189FA412002C5B6A /* BlockSignature.h in Headers */, BA223378189FA412002C5B6A /* BlockStackElem.h in Headers */, BA223379189FA412002C5B6A /* build_config.h in Headers */, + EDC2C8E21A1A943600942777 /* FSDetailedObjectInspector.h in Headers */, BA22337A189FA412002C5B6A /* CLIView.h in Headers */, BA22337B189FA412002C5B6A /* FSCompilationResult.h in Headers */, BA22337C189FA412002C5B6A /* CompiledCodeNode.h in Headers */, @@ -4971,6 +6221,7 @@ BA223380189FA412002C5B6A /* FSExecutor.h in Headers */, BA223381189FA412002C5B6A /* FSFlight.h in Headers */, BA223382189FA412002C5B6A /* FSArchiver.h in Headers */, + ED8319211A1BC2B500290EE2 /* FSUtils.h in Headers */, BA223383189FA412002C5B6A /* FSBoolean.h in Headers */, BA223384189FA412002C5B6A /* FSBooleanPrivate.h in Headers */, BA223385189FA412002C5B6A /* FScript.h in Headers */, @@ -4983,6 +6234,7 @@ BA22338C189FA412002C5B6A /* FSInterpreterViewIBHeader.h in Headers */, BA22338D189FA412002C5B6A /* FSNSArray.h in Headers */, BA22338E189FA412002C5B6A /* FSNSArrayPrivate.h in Headers */, + ED3CB6451A1E5B3300771077 /* FSColorWell.h in Headers */, BA22338F189FA412002C5B6A /* FSNSDate.h in Headers */, BA223390189FA412002C5B6A /* FSNSDictionary.h in Headers */, BA223391189FA412002C5B6A /* FSNSDistantObject.h in Headers */, @@ -5004,6 +6256,7 @@ BA2233A1189FA412002C5B6A /* NumberPrivate.h in Headers */, BA2233A2189FA412002C5B6A /* FSPilot.h in Headers */, BA2233A3189FA412002C5B6A /* FSReplacementForCoderForClass.h in Headers */, + ED8222EB1A19554F00C42C72 /* FSObjectEnumInfo.h in Headers */, BA2233A4189FA412002C5B6A /* ShellView.h in Headers */, BA2233A5189FA412002C5B6A /* Space.h in Headers */, BA2233A6189FA412002C5B6A /* FSCommandHistory.h in Headers */, @@ -5018,8 +6271,11 @@ BA2233AF189FA412002C5B6A /* FSObjectBrowserToolbarButton.h in Headers */, BA2233B0189FA412002C5B6A /* FSObjectBrowserButtonCtxBlock.h in Headers */, BA2233B1189FA412002C5B6A /* DOCustom.h in Headers */, + ED8222DA1A194FD600C42C72 /* FSObjectInspectorViewModelItem.h in Headers */, BA2233B2189FA412002C5B6A /* Pointer.h in Headers */, + ED3004EC1A1A86EF00675D94 /* FSObjectInspectorViewController.h in Headers */, BA2233B3189FA412002C5B6A /* PointerPrivate.h in Headers */, + EDFB30331A18CA26002C8DD7 /* metamacros.h in Headers */, BA2233B4189FA412002C5B6A /* FSInterpreterPrivate.h in Headers */, BA2233B5189FA412002C5B6A /* FSIdentifierFormatter.h in Headers */, BA2233B6189FA412002C5B6A /* FSObjectFormatter.h in Headers */, @@ -5059,12 +6315,14 @@ BA2233D8189FA412002C5B6A /* FSGenericPointerPrivate.h in Headers */, BA2233D9189FA412002C5B6A /* FSObjectPointer.h in Headers */, BA2233DA189FA412002C5B6A /* FSObjectPointerPrivate.h in Headers */, + ED8319361A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.h in Headers */, BA2233DB189FA412002C5B6A /* FSManagedObjectContextInspector.h in Headers */, BA2233DC189FA412002C5B6A /* FSObjectBrowserNamedObjectWrapper.h in Headers */, BA2233DD189FA412002C5B6A /* FSInspectorUniquier.h in Headers */, BA2233DE189FA412002C5B6A /* FSPredicateTextView.h in Headers */, BA2233DF189FA412002C5B6A /* FSCoreDataSample.h in Headers */, BA2233E0189FA412002C5B6A /* FSNSManagedObjectContext.h in Headers */, + EDA6AC5A1A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.h in Headers */, BA2233E1189FA412002C5B6A /* FSObjectBrowserSearchField.h in Headers */, BA2233E2189FA412002C5B6A /* FSBlockCompilationResult.h in Headers */, BA2233E3189FA412002C5B6A /* FSReturnSignal.h in Headers */, @@ -5077,10 +6335,12 @@ BA2233EA189FA412002C5B6A /* FSTestObjCClass2.h in Headers */, BA2233EB189FA412002C5B6A /* FSCNCategory.h in Headers */, BA2233EC189FA412002C5B6A /* FSCNMessage.h in Headers */, + EDA6AC441A1F407C001CD1F2 /* FSObjectInspectorOutlineView.h in Headers */, BA2233ED189FA412002C5B6A /* FSCNSuper.h in Headers */, BA2233EE189FA412002C5B6A /* FSCNUnaryMessage.h in Headers */, BA2233EF189FA412002C5B6A /* FSCNBinaryMessage.h in Headers */, BA2233F0189FA412002C5B6A /* FSCNKeywordMessage.h in Headers */, + ED68BE521A35E94B00968430 /* FSObjectBrowserWindow.h in Headers */, BA2233F1189FA412002C5B6A /* FSCNCascade.h in Headers */, BA2233F2189FA412002C5B6A /* FSCNStatementList.h in Headers */, BA2233F3189FA412002C5B6A /* FSCNPrecomputedObject.h in Headers */, @@ -5089,6 +6349,7 @@ BA2233F6189FA412002C5B6A /* FSCNAssignment.h in Headers */, BA2233F7189FA412002C5B6A /* FSCNMethod.h in Headers */, BA2233F8189FA412002C5B6A /* FSCNReturn.h in Headers */, + EDC2C8F41A1AA34D00942777 /* FSObjectInspectorBackgroundView.h in Headers */, BA2233F9189FA412002C5B6A /* FSClassDefinition.h in Headers */, BA2233FA189FA412002C5B6A /* FSTranscript.h in Headers */, BA2233FB189FA412002C5B6A /* FSArray.h in Headers */, @@ -5122,12 +6383,14 @@ BA22352B189FA429002C5B6A /* FSCollectionInspector.h in Headers */, BA22352C189FA429002C5B6A /* FSObjectBrowser.h in Headers */, BA22352D189FA429002C5B6A /* FSObjectBrowserCell.h in Headers */, + ED8222D91A194FD600C42C72 /* FSObjectInspectorViewModelItem.h in Headers */, BA22352E189FA429002C5B6A /* FSBlock.h in Headers */, BA22352F189FA429002C5B6A /* BlockInspector.h in Headers */, BA223530189FA429002C5B6A /* BlockPrivate.h in Headers */, BA223531189FA429002C5B6A /* BlockRep.h in Headers */, BA223532189FA429002C5B6A /* BlockStackElem.h in Headers */, BA223533189FA429002C5B6A /* build_config.h in Headers */, + EDC2C8E11A1A943600942777 /* FSDetailedObjectInspector.h in Headers */, BA223534189FA429002C5B6A /* CLIView.h in Headers */, BA223535189FA429002C5B6A /* FSCompilationResult.h in Headers */, BA223536189FA429002C5B6A /* CompiledCodeNode.h in Headers */, @@ -5146,7 +6409,9 @@ BA223543189FA429002C5B6A /* FSInterpreterResultPrivate.h in Headers */, BA223544189FA429002C5B6A /* FSInterpreterView.h in Headers */, BA223545189FA429002C5B6A /* FSInterpreterViewIBHeader.h in Headers */, + ED68BE511A35E94B00968430 /* FSObjectBrowserWindow.h in Headers */, BA223546189FA429002C5B6A /* FSNSArray.h in Headers */, + ED8319201A1BC2B500290EE2 /* FSUtils.h in Headers */, BA223547189FA429002C5B6A /* FSNSArrayPrivate.h in Headers */, BA223548189FA429002C5B6A /* FSNSDate.h in Headers */, BA223549189FA429002C5B6A /* FSNSDictionary.h in Headers */, @@ -5170,6 +6435,8 @@ BA22355B189FA429002C5B6A /* FSPilot.h in Headers */, BA22355C189FA429002C5B6A /* Pointer.h in Headers */, BA22355D189FA429002C5B6A /* FSReplacementForCoderForClass.h in Headers */, + ED3004EB1A1A86EF00675D94 /* FSObjectInspectorViewController.h in Headers */, + EDFB30321A18CA26002C8DD7 /* metamacros.h in Headers */, BA22355E189FA429002C5B6A /* ShellView.h in Headers */, BA22355F189FA429002C5B6A /* Space.h in Headers */, BA223560189FA429002C5B6A /* FSCommandHistory.h in Headers */, @@ -5179,6 +6446,7 @@ BA223564189FA429002C5B6A /* DOTest.h in Headers */, BA223565189FA429002C5B6A /* FScriptTextView.h in Headers */, BA223566189FA429002C5B6A /* FSObjectBrowserArgumentPanel.h in Headers */, + ED8319351A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.h in Headers */, BA223567189FA429002C5B6A /* FSNSProtocolChecker.h in Headers */, BA223568189FA429002C5B6A /* FSObjectBrowserToolbar.h in Headers */, BA223569189FA429002C5B6A /* FSEvalCommand.h in Headers */, @@ -5207,10 +6475,12 @@ BA223580189FA429002C5B6A /* FSNSValue.h in Headers */, BA223581189FA429002C5B6A /* FSReplacementForCoderForNilInArray.h in Headers */, BA223582189FA429002C5B6A /* FSNamedNumber.h in Headers */, + ED3CB6441A1E5B3300771077 /* FSColorWell.h in Headers */, BA223583189FA429002C5B6A /* FSCollectionInspectorTableView.h in Headers */, BA223584189FA429002C5B6A /* FSNSSet.h in Headers */, BA223585189FA429002C5B6A /* FSAttributedStringInspector.h in Headers */, BA223586189FA429002C5B6A /* FSNSAttributedString.h in Headers */, + EDA6AC591A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.h in Headers */, BA223587189FA429002C5B6A /* FSInterpreterViewPrivate.h in Headers */, BA223588189FA429002C5B6A /* FScriptMenuItem.h in Headers */, BA223589189FA429002C5B6A /* FSNSFont.h in Headers */, @@ -5230,9 +6500,12 @@ BA223597189FA429002C5B6A /* FSPredicateTextView.h in Headers */, BA223598189FA429002C5B6A /* FSCoreDataSample.h in Headers */, BA223599189FA429002C5B6A /* FSManagedObjectContextInspector.h in Headers */, + EDA6AC431A1F407C001CD1F2 /* FSObjectInspectorOutlineView.h in Headers */, + EDC2C8F31A1AA34D00942777 /* FSObjectInspectorBackgroundView.h in Headers */, BA22359A189FA429002C5B6A /* FSNSManagedObjectContext.h in Headers */, BA22359B189FA429002C5B6A /* FSObjectBrowserSearchField.h in Headers */, BA22359C189FA429002C5B6A /* FSBlockCompilationResult.h in Headers */, + ED8222EA1A19554F00C42C72 /* FSObjectEnumInfo.h in Headers */, BA22359D189FA429002C5B6A /* FSReturnSignal.h in Headers */, BA22359E189FA429002C5B6A /* FSMethod.h in Headers */, BA22359F189FA429002C5B6A /* FSCNClassDefinition.h in Headers */, @@ -5286,12 +6559,14 @@ BA223673189FA431002C5B6A /* FSCollectionInspector.h in Headers */, BA223674189FA431002C5B6A /* FSObjectBrowser.h in Headers */, BA223675189FA431002C5B6A /* FSObjectBrowserCell.h in Headers */, + ED8222DB1A194FD600C42C72 /* FSObjectInspectorViewModelItem.h in Headers */, BA223676189FA431002C5B6A /* FSBlock.h in Headers */, BA223677189FA431002C5B6A /* BlockInspector.h in Headers */, BA223678189FA431002C5B6A /* BlockPrivate.h in Headers */, BA223679189FA431002C5B6A /* BlockRep.h in Headers */, BA22367A189FA431002C5B6A /* BlockStackElem.h in Headers */, BA22367B189FA431002C5B6A /* build_config.h in Headers */, + EDC2C8E31A1A943600942777 /* FSDetailedObjectInspector.h in Headers */, BA22367C189FA431002C5B6A /* CLIView.h in Headers */, BA22367D189FA431002C5B6A /* FSCompilationResult.h in Headers */, BA22367E189FA431002C5B6A /* CompiledCodeNode.h in Headers */, @@ -5310,7 +6585,9 @@ BA22368B189FA431002C5B6A /* FSInterpreterResultPrivate.h in Headers */, BA22368C189FA431002C5B6A /* FSInterpreterView.h in Headers */, BA22368D189FA431002C5B6A /* FSInterpreterViewIBHeader.h in Headers */, + ED68BE531A35E94B00968430 /* FSObjectBrowserWindow.h in Headers */, BA22368E189FA431002C5B6A /* FSNSArray.h in Headers */, + ED8319221A1BC2B500290EE2 /* FSUtils.h in Headers */, BA22368F189FA431002C5B6A /* FSNSArrayPrivate.h in Headers */, BA223690189FA431002C5B6A /* FSNSDate.h in Headers */, BA223691189FA431002C5B6A /* FSNSDictionary.h in Headers */, @@ -5334,6 +6611,8 @@ BA2236A3189FA431002C5B6A /* FSPilot.h in Headers */, BA2236A4189FA431002C5B6A /* Pointer.h in Headers */, BA2236A5189FA431002C5B6A /* FSReplacementForCoderForClass.h in Headers */, + ED3004ED1A1A86EF00675D94 /* FSObjectInspectorViewController.h in Headers */, + EDFB30341A18CA26002C8DD7 /* metamacros.h in Headers */, BA2236A6189FA431002C5B6A /* ShellView.h in Headers */, BA2236A7189FA431002C5B6A /* Space.h in Headers */, BA2236A8189FA431002C5B6A /* FSCommandHistory.h in Headers */, @@ -5343,6 +6622,7 @@ BA2236AC189FA431002C5B6A /* DOTest.h in Headers */, BA2236AD189FA431002C5B6A /* FScriptTextView.h in Headers */, BA2236AE189FA431002C5B6A /* FSObjectBrowserArgumentPanel.h in Headers */, + ED8319371A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.h in Headers */, BA2236AF189FA431002C5B6A /* FSNSProtocolChecker.h in Headers */, BA2236B0189FA431002C5B6A /* FSObjectBrowserToolbar.h in Headers */, BA2236B1189FA431002C5B6A /* FSEvalCommand.h in Headers */, @@ -5371,10 +6651,12 @@ BA2236C8189FA431002C5B6A /* FSNSValue.h in Headers */, BA2236C9189FA431002C5B6A /* FSReplacementForCoderForNilInArray.h in Headers */, BA2236CA189FA431002C5B6A /* FSNamedNumber.h in Headers */, + ED3CB6461A1E5B3300771077 /* FSColorWell.h in Headers */, BA2236CB189FA431002C5B6A /* FSCollectionInspectorTableView.h in Headers */, BA2236CC189FA431002C5B6A /* FSNSSet.h in Headers */, BA2236CD189FA431002C5B6A /* FSAttributedStringInspector.h in Headers */, BA2236CE189FA431002C5B6A /* FSNSAttributedString.h in Headers */, + EDA6AC5B1A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.h in Headers */, BA2236CF189FA431002C5B6A /* FSInterpreterViewPrivate.h in Headers */, BA2236D0189FA431002C5B6A /* FScriptMenuItem.h in Headers */, BA2236D1189FA431002C5B6A /* FSNSFont.h in Headers */, @@ -5394,9 +6676,12 @@ BA2236DF189FA431002C5B6A /* FSPredicateTextView.h in Headers */, BA2236E0189FA431002C5B6A /* FSCoreDataSample.h in Headers */, BA2236E1189FA431002C5B6A /* FSManagedObjectContextInspector.h in Headers */, + EDA6AC451A1F407C001CD1F2 /* FSObjectInspectorOutlineView.h in Headers */, + EDC2C8F51A1AA34D00942777 /* FSObjectInspectorBackgroundView.h in Headers */, BA2236E2189FA431002C5B6A /* FSNSManagedObjectContext.h in Headers */, BA2236E3189FA431002C5B6A /* FSObjectBrowserSearchField.h in Headers */, BA2236E4189FA431002C5B6A /* FSBlockCompilationResult.h in Headers */, + ED8222EC1A19554F00C42C72 /* FSObjectEnumInfo.h in Headers */, BA2236E5189FA431002C5B6A /* FSReturnSignal.h in Headers */, BA2236E6189FA431002C5B6A /* FSMethod.h in Headers */, BA2236E7189FA431002C5B6A /* FSCNClassDefinition.h in Headers */, @@ -5436,6 +6721,361 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + EDC2C9041A1AA50D00942777 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + EDC2C9051A1AA50D00942777 /* FSAirplane.h in Headers */, + EDC2C9061A1AA50D00942777 /* ArrayPrivate.h in Headers */, + EDC2C9071A1AA50D00942777 /* ArrayRep.h in Headers */, + EDC2C9081A1AA50D00942777 /* ArrayRepDouble.h in Headers */, + EDC2C9091A1AA50D00942777 /* ArrayRepEmpty.h in Headers */, + EDC2C90A1A1AA50D00942777 /* ArrayRepId.h in Headers */, + EDC2C90B1A1AA50D00942777 /* FSCollectionInspector.h in Headers */, + EDC2C90C1A1AA50D00942777 /* FSObjectBrowser.h in Headers */, + EDC2C90D1A1AA50D00942777 /* FSObjectBrowserArgumentPanel.h in Headers */, + EDC2C90E1A1AA50D00942777 /* FSObjectBrowserCell.h in Headers */, + EDC2C90F1A1AA50D00942777 /* FSObjectBrowserView.h in Headers */, + EDC2C9101A1AA50D00942777 /* FSBlock.h in Headers */, + EDC2C9111A1AA50D00942777 /* BlockInspector.h in Headers */, + EDC2C9121A1AA50D00942777 /* BlockPrivate.h in Headers */, + EDC2C9131A1AA50D00942777 /* BlockRep.h in Headers */, + EDC2C9141A1AA50D00942777 /* BlockSignature.h in Headers */, + EDC2C9151A1AA50D00942777 /* BlockStackElem.h in Headers */, + EDC2C9161A1AA50D00942777 /* build_config.h in Headers */, + EDC2C9171A1AA50D00942777 /* FSDetailedObjectInspector.h in Headers */, + EDC2C9181A1AA50D00942777 /* CLIView.h in Headers */, + EDC2C9191A1AA50D00942777 /* FSCompilationResult.h in Headers */, + EDC2C91A1A1AA50D00942777 /* CompiledCodeNode.h in Headers */, + EDC2C91B1A1AA50D00942777 /* FSCompiler.h in Headers */, + EDC2C91C1A1AA50D00942777 /* FSConstantsInitialization.h in Headers */, + EDC2C91D1A1AA50D00942777 /* FSExecEngine.h in Headers */, + EDC2C91E1A1AA50D00942777 /* FSExecutor.h in Headers */, + EDC2C91F1A1AA50D00942777 /* FSFlight.h in Headers */, + EDC2C9201A1AA50D00942777 /* FSArchiver.h in Headers */, + ED8319231A1BC2B500290EE2 /* FSUtils.h in Headers */, + EDC2C9211A1AA50D00942777 /* FSBoolean.h in Headers */, + EDC2C9221A1AA50D00942777 /* FSBooleanPrivate.h in Headers */, + EDC2C9231A1AA50D00942777 /* FScript.h in Headers */, + EDC2C9241A1AA50D00942777 /* FScriptFunctions.h in Headers */, + EDC2C9251A1AA50D00942777 /* FScriptTextView.h in Headers */, + EDC2C9261A1AA50D00942777 /* FSInterpreter.h in Headers */, + EDC2C9271A1AA50D00942777 /* FSInterpreterResult.h in Headers */, + EDC2C9281A1AA50D00942777 /* FSInterpreterResultPrivate.h in Headers */, + EDC2C9291A1AA50D00942777 /* FSInterpreterView.h in Headers */, + EDC2C92A1A1AA50D00942777 /* FSInterpreterViewIBHeader.h in Headers */, + EDC2C92B1A1AA50D00942777 /* FSNSArray.h in Headers */, + EDC2C92C1A1AA50D00942777 /* FSNSArrayPrivate.h in Headers */, + ED3CB6471A1E5B3300771077 /* FSColorWell.h in Headers */, + EDC2C92D1A1AA50D00942777 /* FSNSDate.h in Headers */, + EDC2C92F1A1AA50D00942777 /* FSNSDictionary.h in Headers */, + EDC2C9301A1AA50D00942777 /* FSNSDistantObject.h in Headers */, + EDC2C9311A1AA50D00942777 /* FSNSMutableString.h in Headers */, + EDC2C9321A1AA50D00942777 /* FSNSNumber.h in Headers */, + EDC2C9331A1AA50D00942777 /* FSNSObject.h in Headers */, + EDC2C9351A1AA50D00942777 /* FSNSProxy.h in Headers */, + EDC2C9361A1AA50D00942777 /* FSPattern.h in Headers */, + EDC2C9371A1AA50D00942777 /* FSUnarchiver.h in Headers */, + EDC2C9381A1AA50D00942777 /* FSVoid.h in Headers */, + EDC2C9391A1AA50D00942777 /* FSVoidPrivate.h in Headers */, + EDC2C93A1A1AA50D00942777 /* FSGenericObjectInspector.h in Headers */, + EDC2C93B1A1AA50D00942777 /* KTestManager.h in Headers */, + EDC2C93C1A1AA50D00942777 /* MessagePatternCodeNode.h in Headers */, + EDC2C93D1A1AA50D00942777 /* FSMiscTools.h in Headers */, + EDC2C93E1A1AA50D00942777 /* FSMsgContext.h in Headers */, + EDC2C93F1A1AA50D00942777 /* FSNewlyAllocatedObjectHolder.h in Headers */, + EDC2C9401A1AA50D00942777 /* FSNumber.h in Headers */, + EDC2C9411A1AA50D00942777 /* NumberPrivate.h in Headers */, + EDC2C9421A1AA50D00942777 /* FSPilot.h in Headers */, + EDC2C9431A1AA50D00942777 /* FSReplacementForCoderForClass.h in Headers */, + EDC2C9441A1AA50D00942777 /* FSObjectEnumInfo.h in Headers */, + EDC2C9451A1AA50D00942777 /* ShellView.h in Headers */, + EDC2C9461A1AA50D00942777 /* Space.h in Headers */, + EDC2C9471A1AA50D00942777 /* FSCommandHistory.h in Headers */, + EDC2C9481A1AA50D00942777 /* FSSystem.h in Headers */, + EDC2C9491A1AA50D00942777 /* DOTest.h in Headers */, + EDC2C94A1A1AA50D00942777 /* FSNSProtocolChecker.h in Headers */, + EDC2C94B1A1AA50D00942777 /* FScriptAppController.h in Headers */, + EDC2C94C1A1AA50D00942777 /* FSObjectBrowserToolbar.h in Headers */, + EDC2C94D1A1AA50D00942777 /* FSEvalCommand.h in Headers */, + EDC2C94E1A1AA50D00942777 /* FSServicesProvider.h in Headers */, + EDC2C94F1A1AA50D00942777 /* FSTask.h in Headers */, + EDC2C9501A1AA50D00942777 /* FSObjectBrowserToolbarButton.h in Headers */, + EDC2C9511A1AA50D00942777 /* FSObjectBrowserButtonCtxBlock.h in Headers */, + EDC2C9521A1AA50D00942777 /* DOCustom.h in Headers */, + EDC2C9531A1AA50D00942777 /* FSObjectInspectorViewModelItem.h in Headers */, + EDC2C9541A1AA50D00942777 /* Pointer.h in Headers */, + EDC2C9551A1AA50D00942777 /* FSObjectInspectorViewController.h in Headers */, + EDC2C9561A1AA50D00942777 /* PointerPrivate.h in Headers */, + EDC2C9571A1AA50D00942777 /* metamacros.h in Headers */, + EDC2C9581A1AA50D00942777 /* FSInterpreterPrivate.h in Headers */, + EDC2C9591A1AA50D00942777 /* FSIdentifierFormatter.h in Headers */, + EDC2C95A1A1AA50D00942777 /* FSObjectFormatter.h in Headers */, + EDC2C95B1A1AA50D00942777 /* FSSystemPrivate.h in Headers */, + EDC2C95C1A1AA50D00942777 /* FSKeyedUnarchiver.h in Headers */, + EDC2C95D1A1AA50D00942777 /* FSKeyedArchiver.h in Headers */, + EDC2C95E1A1AA50D00942777 /* FSConstantListBuilder.h in Headers */, + EDC2C95F1A1AA50D00942777 /* FSImageInspector.h in Headers */, + EDC2C9601A1AA50D00942777 /* FSNSImage.h in Headers */, + EDC2C9611A1AA50D00942777 /* FSObjectBrowserToolbarItem.h in Headers */, + EDC2C9621A1AA50D00942777 /* FSNSObjectPrivate.h in Headers */, + EDC2C9631A1AA50D00942777 /* FSArrayEnumerator.h in Headers */, + EDC2C9641A1AA50D00942777 /* FSNSMutableArray.h in Headers */, + EDC2C9651A1AA50D00942777 /* FSObjectBrowserButtonsInspector.h in Headers */, + EDC2C9661A1AA50D00942777 /* ArrayRepBoolean.h in Headers */, + EDC2C9671A1AA50D00942777 /* FSNSValue.h in Headers */, + EDC2C9681A1AA50D00942777 /* FSReplacementForCoderForNilInArray.h in Headers */, + EDC2C9691A1AA50D00942777 /* FSNamedNumber.h in Headers */, + EDC2C96A1A1AA50D00942777 /* FSCollectionInspectorTableView.h in Headers */, + EDC2C96B1A1AA50D00942777 /* FSNSSet.h in Headers */, + EDC2C96C1A1AA50D00942777 /* FSAttributedStringInspector.h in Headers */, + EDC2C96D1A1AA50D00942777 /* FSNSAttributedString.h in Headers */, + EDC2C96E1A1AA50D00942777 /* FSInterpreterViewPrivate.h in Headers */, + EDC2C96F1A1AA50D00942777 /* FScriptMenuItem.h in Headers */, + EDC2C9701A1AA50D00942777 /* FSNSFont.h in Headers */, + EDC2C9711A1AA50D00942777 /* FSObjectBrowserMatrix.h in Headers */, + EDC2C9721A1AA50D00942777 /* FSNSString.h in Headers */, + EDC2C9741A1AA50D00942777 /* FSNSStringPrivate.h in Headers */, + EDC2C9751A1AA50D00942777 /* FSSymbolTable.h in Headers */, + EDC2C9761A1AA50D00942777 /* TestFS.h in Headers */, + EDC2C9771A1AA50D00942777 /* FSObjectBrowserViewObjectInfo.h in Headers */, + EDC2C9781A1AA50D00942777 /* FSCollectionInspectorView.h in Headers */, + EDC2C9791A1AA50D00942777 /* ArrayRepFetchRequest.h in Headers */, + EDC2C97A1A1AA50D00942777 /* FSPointer.h in Headers */, + EDC2C97B1A1AA50D00942777 /* FSGenericPointer.h in Headers */, + EDC2C97C1A1AA50D00942777 /* FSPointerPrivate.h in Headers */, + EDC2C97D1A1AA50D00942777 /* FSGenericPointerPrivate.h in Headers */, + EDC2C97E1A1AA50D00942777 /* FSObjectPointer.h in Headers */, + EDC2C97F1A1AA50D00942777 /* FSObjectPointerPrivate.h in Headers */, + ED8319381A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.h in Headers */, + EDC2C9801A1AA50D00942777 /* FSManagedObjectContextInspector.h in Headers */, + EDC2C9811A1AA50D00942777 /* FSObjectBrowserNamedObjectWrapper.h in Headers */, + EDC2C9821A1AA50D00942777 /* FSInspectorUniquier.h in Headers */, + EDC2C9831A1AA50D00942777 /* FSPredicateTextView.h in Headers */, + EDC2C9841A1AA50D00942777 /* FSCoreDataSample.h in Headers */, + EDC2C9851A1AA50D00942777 /* FSNSManagedObjectContext.h in Headers */, + EDA6AC5C1A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.h in Headers */, + EDC2C9861A1AA50D00942777 /* FSObjectBrowserSearchField.h in Headers */, + EDC2C9871A1AA50D00942777 /* FSBlockCompilationResult.h in Headers */, + EDC2C9881A1AA50D00942777 /* FSReturnSignal.h in Headers */, + EDC2C9891A1AA50D00942777 /* FSConstantsDictionaryGenerator.h in Headers */, + EDC2C98A1A1AA50D00942777 /* FSMethod.h in Headers */, + EDC2C98B1A1AA50D00942777 /* FSCNClassDefinition.h in Headers */, + EDC2C98C1A1AA50D00942777 /* FSCNBase.h in Headers */, + EDC2C98D1A1AA50D00942777 /* FSCNIdentifier.h in Headers */, + EDC2C98E1A1AA50D00942777 /* FSTestObjCClass1.h in Headers */, + EDC2C98F1A1AA50D00942777 /* FSTestObjCClass2.h in Headers */, + EDC2C9901A1AA50D00942777 /* FSCNCategory.h in Headers */, + EDC2C9911A1AA50D00942777 /* FSCNMessage.h in Headers */, + EDA6AC461A1F407C001CD1F2 /* FSObjectInspectorOutlineView.h in Headers */, + EDC2C9921A1AA50D00942777 /* FSCNSuper.h in Headers */, + EDC2C9931A1AA50D00942777 /* FSCNUnaryMessage.h in Headers */, + EDC2C9941A1AA50D00942777 /* FSCNBinaryMessage.h in Headers */, + EDC2C9951A1AA50D00942777 /* FSCNKeywordMessage.h in Headers */, + ED68BE541A35E94B00968430 /* FSObjectBrowserWindow.h in Headers */, + EDC2C9961A1AA50D00942777 /* FSCNCascade.h in Headers */, + EDC2C9971A1AA50D00942777 /* FSCNStatementList.h in Headers */, + EDC2C9981A1AA50D00942777 /* FSCNPrecomputedObject.h in Headers */, + EDC2C9991A1AA50D00942777 /* FSCNArray.h in Headers */, + EDC2C99A1A1AA50D00942777 /* FSCNBlock.h in Headers */, + EDC2C99B1A1AA50D00942777 /* FSCNAssignment.h in Headers */, + EDC2C99C1A1AA50D00942777 /* FSCNMethod.h in Headers */, + EDC2C99D1A1AA50D00942777 /* FSCNReturn.h in Headers */, + EDC2C99E1A1AA50D00942777 /* FSObjectInspectorBackgroundView.h in Headers */, + EDC2C99F1A1AA50D00942777 /* FSClassDefinition.h in Headers */, + EDC2C9A01A1AA50D00942777 /* FSTranscript.h in Headers */, + EDC2C9A11A1AA50D00942777 /* FSArray.h in Headers */, + EDC2C9A21A1AA50D00942777 /* Array_fscript.h in Headers */, + EDC2C9A31A1AA50D00942777 /* Block_fscript.h in Headers */, + EDC2C9A41A1AA50D00942777 /* Number_fscript.h in Headers */, + EDC2C9A51A1AA50D00942777 /* FSGlobalScope.h in Headers */, + EDC2C9A61A1AA50D00942777 /* FSNSFileHandle.h in Headers */, + EDC2C9A71A1AA50D00942777 /* FSAssociation.h in Headers */, + EDC2C9A81A1AA50D00942777 /* FSCNDictionary.h in Headers */, + EDC2C9A91A1AA50D00942777 /* FSObjectBrowserBottomBarTextDisplay.h in Headers */, + EDC2C9AA1A1AA50D00942777 /* FSNSAffineTransform.h in Headers */, + EDC2C9AB1A1AA50D00942777 /* FSDemoAssistant.h in Headers */, + EDC2C9AC1A1AA50D00942777 /* FSNewlyAllocatedObject.h in Headers */, + EDC2C9AD1A1AA50D00942777 /* FSWorksWhenModalWindow.h in Headers */, + EDC2C9AE1A1AA50D00942777 /* FSNSMutableDictionary.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EDC2CAD01A1AA52500942777 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + EDC2CAD11A1AA52500942777 /* BlockSignature.h in Headers */, + EDC2CAD21A1AA52500942777 /* FSAirplane.h in Headers */, + EDC2CAD31A1AA52500942777 /* ArrayPrivate.h in Headers */, + EDC2CAD41A1AA52500942777 /* ArrayRep.h in Headers */, + EDC2CAD51A1AA52500942777 /* ArrayRepDouble.h in Headers */, + EDC2CAD61A1AA52500942777 /* ArrayRepEmpty.h in Headers */, + EDC2CAD71A1AA52500942777 /* ArrayRepId.h in Headers */, + EDC2CAD81A1AA52500942777 /* FSCollectionInspector.h in Headers */, + EDC2CAD91A1AA52500942777 /* FSObjectBrowser.h in Headers */, + EDC2CADA1A1AA52500942777 /* FSObjectBrowserCell.h in Headers */, + EDC2CADB1A1AA52500942777 /* FSObjectInspectorViewModelItem.h in Headers */, + EDA6AC471A1F407C001CD1F2 /* FSObjectInspectorOutlineView.h in Headers */, + EDC2CADC1A1AA52500942777 /* FSBlock.h in Headers */, + EDC2CADD1A1AA52500942777 /* BlockInspector.h in Headers */, + EDC2CADE1A1AA52500942777 /* BlockPrivate.h in Headers */, + EDC2CADF1A1AA52500942777 /* BlockRep.h in Headers */, + EDC2CAE01A1AA52500942777 /* BlockStackElem.h in Headers */, + EDC2CAE11A1AA52500942777 /* build_config.h in Headers */, + EDC2CAE21A1AA52500942777 /* FSDetailedObjectInspector.h in Headers */, + EDC2CAE31A1AA52500942777 /* CLIView.h in Headers */, + EDC2CAE41A1AA52500942777 /* FSCompilationResult.h in Headers */, + EDC2CAE51A1AA52500942777 /* CompiledCodeNode.h in Headers */, + EDC2CAE61A1AA52500942777 /* FSCompiler.h in Headers */, + EDC2CAE71A1AA52500942777 /* FSConstantsInitialization.h in Headers */, + EDC2CAE81A1AA52500942777 /* FSExecEngine.h in Headers */, + EDC2CAE91A1AA52500942777 /* FSExecutor.h in Headers */, + EDC2CAEA1A1AA52500942777 /* FSFlight.h in Headers */, + EDC2CAEB1A1AA52500942777 /* FSArchiver.h in Headers */, + EDC2CAEC1A1AA52500942777 /* FSBoolean.h in Headers */, + EDC2CAED1A1AA52500942777 /* FSBooleanPrivate.h in Headers */, + EDC2CAEE1A1AA52500942777 /* FScript.h in Headers */, + EDC2CAEF1A1AA52500942777 /* FScriptFunctions.h in Headers */, + EDC2CAF01A1AA52500942777 /* FSInterpreter.h in Headers */, + EDC2CAF11A1AA52500942777 /* FSInterpreterResult.h in Headers */, + EDC2CAF21A1AA52500942777 /* FSInterpreterResultPrivate.h in Headers */, + EDC2CAF31A1AA52500942777 /* FSInterpreterView.h in Headers */, + EDC2CAF41A1AA52500942777 /* FSInterpreterViewIBHeader.h in Headers */, + EDC2CAF51A1AA52500942777 /* FSNSArray.h in Headers */, + ED8319241A1BC2B500290EE2 /* FSUtils.h in Headers */, + EDC2CAF61A1AA52500942777 /* FSNSArrayPrivate.h in Headers */, + EDC2CAF71A1AA52500942777 /* FSNSDate.h in Headers */, + EDC2CAF81A1AA52500942777 /* FSNSDictionary.h in Headers */, + EDC2CAF91A1AA52500942777 /* FSNSMutableString.h in Headers */, + EDC2CAFA1A1AA52500942777 /* FSNSNumber.h in Headers */, + EDC2CAFB1A1AA52500942777 /* FSNSObject.h in Headers */, + EDC2CAFC1A1AA52500942777 /* FSNSProxy.h in Headers */, + EDC2CAFD1A1AA52500942777 /* FSNSString.h in Headers */, + EDC2CAFE1A1AA52500942777 /* FSNSStringPrivate.h in Headers */, + EDC2CAFF1A1AA52500942777 /* FSPattern.h in Headers */, + EDC2CB001A1AA52500942777 /* FSUnarchiver.h in Headers */, + EDC2CB011A1AA52500942777 /* FSVoid.h in Headers */, + EDC2CB021A1AA52500942777 /* FSVoidPrivate.h in Headers */, + EDC2CB031A1AA52500942777 /* FSGenericObjectInspector.h in Headers */, + EDC2CB041A1AA52500942777 /* MessagePatternCodeNode.h in Headers */, + EDC2CB051A1AA52500942777 /* FSMiscTools.h in Headers */, + EDC2CB061A1AA52500942777 /* FSMsgContext.h in Headers */, + EDC2CB071A1AA52500942777 /* FSNewlyAllocatedObjectHolder.h in Headers */, + EDC2CB081A1AA52500942777 /* FSNumber.h in Headers */, + EDC2CB091A1AA52500942777 /* NumberPrivate.h in Headers */, + EDC2CB0A1A1AA52500942777 /* FSPilot.h in Headers */, + EDC2CB0B1A1AA52500942777 /* Pointer.h in Headers */, + EDC2CB0C1A1AA52500942777 /* FSReplacementForCoderForClass.h in Headers */, + EDC2CB0D1A1AA52500942777 /* FSObjectInspectorViewController.h in Headers */, + EDC2CB0E1A1AA52500942777 /* metamacros.h in Headers */, + EDC2CB0F1A1AA52500942777 /* ShellView.h in Headers */, + EDC2CB101A1AA52500942777 /* Space.h in Headers */, + EDC2CB111A1AA52500942777 /* FSCommandHistory.h in Headers */, + EDC2CB121A1AA52500942777 /* FSSystem.h in Headers */, + EDC2CB131A1AA52500942777 /* KTestManager.h in Headers */, + EDC2CB141A1AA52500942777 /* FSNSDistantObject.h in Headers */, + EDC2CB151A1AA52500942777 /* DOTest.h in Headers */, + EDC2CB161A1AA52500942777 /* FScriptTextView.h in Headers */, + EDC2CB171A1AA52500942777 /* FSObjectBrowserArgumentPanel.h in Headers */, + ED68BE551A35E94B00968430 /* FSObjectBrowserWindow.h in Headers */, + ED8319391A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.h in Headers */, + EDC2CB181A1AA52500942777 /* FSNSProtocolChecker.h in Headers */, + EDC2CB191A1AA52500942777 /* FSObjectBrowserToolbar.h in Headers */, + EDC2CB1A1A1AA52500942777 /* FSEvalCommand.h in Headers */, + EDC2CB1B1A1AA52500942777 /* FSServicesProvider.h in Headers */, + EDC2CB1C1A1AA52500942777 /* FSTask.h in Headers */, + EDC2CB1D1A1AA52500942777 /* FSObjectBrowserToolbarButton.h in Headers */, + EDC2CB1E1A1AA52500942777 /* FSObjectBrowserButtonCtxBlock.h in Headers */, + EDC2CB1F1A1AA52500942777 /* FSObjectBrowserButtonsInspector.h in Headers */, + EDC2CB201A1AA52500942777 /* FSObjectBrowserView.h in Headers */, + EDC2CB211A1AA52500942777 /* PointerPrivate.h in Headers */, + EDC2CB221A1AA52500942777 /* FSInterpreterPrivate.h in Headers */, + EDC2CB231A1AA52500942777 /* FSObjectFormatter.h in Headers */, + EDC2CB241A1AA52500942777 /* FSIdentifierFormatter.h in Headers */, + EDC2CB251A1AA52500942777 /* FSSystemPrivate.h in Headers */, + EDC2CB261A1AA52500942777 /* FSKeyedUnarchiver.h in Headers */, + EDC2CB271A1AA52500942777 /* FSKeyedArchiver.h in Headers */, + EDC2CB281A1AA52500942777 /* FSConstantListBuilder.h in Headers */, + EDC2CB291A1AA52500942777 /* FSImageInspector.h in Headers */, + EDC2CB2A1A1AA52500942777 /* FSNSImage.h in Headers */, + EDC2CB2B1A1AA52500942777 /* FSObjectBrowserToolbarItem.h in Headers */, + EDC2CB2C1A1AA52500942777 /* ArrayRepBoolean.h in Headers */, + EDC2CB2D1A1AA52500942777 /* FSNSObjectPrivate.h in Headers */, + EDC2CB2E1A1AA52500942777 /* FSArrayEnumerator.h in Headers */, + EDC2CB301A1AA52500942777 /* TestFS.h in Headers */, + EDC2CB311A1AA52500942777 /* FSNSMutableArray.h in Headers */, + EDC2CB321A1AA52500942777 /* FSNSValue.h in Headers */, + EDC2CB331A1AA52500942777 /* FSReplacementForCoderForNilInArray.h in Headers */, + EDC2CB341A1AA52500942777 /* FSNamedNumber.h in Headers */, + EDC2CB361A1AA52500942777 /* FSCollectionInspectorTableView.h in Headers */, + EDC2CB371A1AA52500942777 /* FSNSSet.h in Headers */, + EDC2CB391A1AA52500942777 /* FSAttributedStringInspector.h in Headers */, + EDC2CB3A1A1AA52500942777 /* FSNSAttributedString.h in Headers */, + EDC2CB3B1A1AA52500942777 /* FSInterpreterViewPrivate.h in Headers */, + EDC2CB3C1A1AA52500942777 /* FScriptMenuItem.h in Headers */, + EDC2CB3D1A1AA52500942777 /* FSNSFont.h in Headers */, + EDC2CB3E1A1AA52500942777 /* FSObjectBrowserMatrix.h in Headers */, + EDC2CB3F1A1AA52500942777 /* FSSymbolTable.h in Headers */, + EDC2CB401A1AA52500942777 /* FSObjectBrowserViewObjectInfo.h in Headers */, + EDC2CB411A1AA52500942777 /* FSCollectionInspectorView.h in Headers */, + EDC2CB421A1AA52500942777 /* ArrayRepFetchRequest.h in Headers */, + EDC2CB431A1AA52500942777 /* FSPointer.h in Headers */, + EDC2CB441A1AA52500942777 /* FSGenericPointer.h in Headers */, + EDC2CB451A1AA52500942777 /* FSPointerPrivate.h in Headers */, + EDC2CB461A1AA52500942777 /* FSGenericPointerPrivate.h in Headers */, + EDC2CB471A1AA52500942777 /* FSObjectPointer.h in Headers */, + EDC2CB481A1AA52500942777 /* FSObjectPointerPrivate.h in Headers */, + EDC2CB491A1AA52500942777 /* FSObjectBrowserNamedObjectWrapper.h in Headers */, + EDC2CB4A1A1AA52500942777 /* FSInspectorUniquier.h in Headers */, + EDC2CB4B1A1AA52500942777 /* FSPredicateTextView.h in Headers */, + EDC2CB4C1A1AA52500942777 /* FSCoreDataSample.h in Headers */, + EDC2CB4D1A1AA52500942777 /* FSManagedObjectContextInspector.h in Headers */, + EDC2CB4E1A1AA52500942777 /* FSObjectInspectorBackgroundView.h in Headers */, + EDC2CB4F1A1AA52500942777 /* FSNSManagedObjectContext.h in Headers */, + EDC2CB501A1AA52500942777 /* FSObjectBrowserSearchField.h in Headers */, + EDC2CB511A1AA52500942777 /* FSBlockCompilationResult.h in Headers */, + EDC2CB521A1AA52500942777 /* FSObjectEnumInfo.h in Headers */, + EDC2CB531A1AA52500942777 /* FSReturnSignal.h in Headers */, + EDC2CB541A1AA52500942777 /* FSMethod.h in Headers */, + EDC2CB551A1AA52500942777 /* FSCNClassDefinition.h in Headers */, + EDC2CB561A1AA52500942777 /* FSCNBase.h in Headers */, + EDC2CB571A1AA52500942777 /* FSCNIdentifier.h in Headers */, + EDC2CB581A1AA52500942777 /* FSTestObjCClass1.h in Headers */, + EDC2CB591A1AA52500942777 /* FSTestObjCClass2.h in Headers */, + EDC2CB5A1A1AA52500942777 /* FSCNCategory.h in Headers */, + EDC2CB5B1A1AA52500942777 /* FSCNMessage.h in Headers */, + EDA6AC5D1A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.h in Headers */, + EDC2CB5C1A1AA52500942777 /* FSCNSuper.h in Headers */, + EDC2CB5D1A1AA52500942777 /* FSCNUnaryMessage.h in Headers */, + EDC2CB5E1A1AA52500942777 /* FSCNBinaryMessage.h in Headers */, + EDC2CB5F1A1AA52500942777 /* FSCNKeywordMessage.h in Headers */, + EDC2CB601A1AA52500942777 /* FSCNCascade.h in Headers */, + EDC2CB611A1AA52500942777 /* FSCNStatementList.h in Headers */, + EDC2CB621A1AA52500942777 /* FSCNPrecomputedObject.h in Headers */, + EDC2CB631A1AA52500942777 /* FSCNArray.h in Headers */, + EDC2CB641A1AA52500942777 /* FSCNBlock.h in Headers */, + EDC2CB651A1AA52500942777 /* FSCNAssignment.h in Headers */, + EDC2CB661A1AA52500942777 /* FSCNMethod.h in Headers */, + EDC2CB671A1AA52500942777 /* FSCNReturn.h in Headers */, + EDC2CB681A1AA52500942777 /* FSClassDefinition.h in Headers */, + EDC2CB691A1AA52500942777 /* FSTranscript.h in Headers */, + EDC2CB6A1A1AA52500942777 /* FSArray.h in Headers */, + EDC2CB6B1A1AA52500942777 /* Array_fscript.h in Headers */, + EDC2CB6C1A1AA52500942777 /* Block_fscript.h in Headers */, + EDC2CB6D1A1AA52500942777 /* Number_fscript.h in Headers */, + EDC2CB6E1A1AA52500942777 /* FSGlobalScope.h in Headers */, + EDC2CB6F1A1AA52500942777 /* FSNSFileHandle.h in Headers */, + EDC2CB701A1AA52500942777 /* FSAssociation.h in Headers */, + EDC2CB711A1AA52500942777 /* FSCNDictionary.h in Headers */, + EDC2CB721A1AA52500942777 /* FSObjectBrowserBottomBarTextDisplay.h in Headers */, + EDC2CB731A1AA52500942777 /* FSNSAffineTransform.h in Headers */, + EDC2CB741A1AA52500942777 /* FSNewlyAllocatedObject.h in Headers */, + EDC2CB751A1AA52500942777 /* FSWorksWhenModalWindow.h in Headers */, + EDC2CB761A1AA52500942777 /* FSNSMutableDictionary.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ @@ -5617,7 +7257,46 @@ name = "FScriptFramework 10.9"; productInstallPath = ""; productName = FScript; - productReference = BA2237B0189FA432002C5B6A /* FScriptFramework.framework */; + productReference = BA2237B0189FA432002C5B6A /* FScript.framework */; + productType = "com.apple.product-type.framework"; + }; + EDC2C8FF1A1AA50D00942777 /* F-Script 10.10 */ = { + isa = PBXNativeTarget; + buildConfigurationList = EDC2CACA1A1AA50D00942777 /* Build configuration list for PBXNativeTarget "F-Script 10.10" */; + buildPhases = ( + EDC2C9041A1AA50D00942777 /* Headers */, + EDC2C9AF1A1AA50D00942777 /* Resources */, + EDC2C9CC1A1AA50D00942777 /* Sources */, + EDC2CA641A1AA50D00942777 /* Frameworks */, + EDC2CAC91A1AA50D00942777 /* Rez */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "F-Script 10.10"; + productName = fs; + productReference = EDC2CACD1A1AA50D00942777 /* F-Script.app */; + productType = "com.apple.product-type.application"; + }; + EDC2CACF1A1AA52500942777 /* FScriptFramework 10.10 */ = { + isa = PBXNativeTarget; + buildConfigurationList = EDC2CC241A1AA52500942777 /* Build configuration list for PBXNativeTarget "FScriptFramework 10.10" */; + buildPhases = ( + EDC2CAD01A1AA52500942777 /* Headers */, + EDC2CB771A1AA52500942777 /* Resources */, + EDC2CB8F1A1AA52500942777 /* Sources */, + EDC2CC201A1AA52500942777 /* Frameworks */, + EDC2CC231A1AA52500942777 /* Rez */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "FScriptFramework 10.10"; + productInstallPath = ""; + productName = FScript; + productReference = EDC2CC271A1AA52500942777 /* FScript.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ @@ -5646,6 +7325,8 @@ BA223522189FA429002C5B6A /* FScriptFramework 10.8 */, BA223362189FA412002C5B6A /* F-Script 10.9 */, BA22366A189FA431002C5B6A /* FScriptFramework 10.9 */, + EDC2C8FF1A1AA50D00942777 /* F-Script 10.10 */, + EDC2CACF1A1AA52500942777 /* FScriptFramework 10.10 */, 8F6DA6D8055FC6C80050409A /* FSTest1 */, 8F6DA5DE055FC6980050409A /* FSTest2 */, 8F6392D00BDB8521005C8D94 /* FScriptIBPlugin */, @@ -5667,25 +7348,29 @@ 8F0CBC660BDB9519002B0AD7 /* license.txt in Resources */, 8F0CBC670BDB9519002B0AD7 /* fs.scriptSuite in Resources */, 8F0CBC680BDB9519002B0AD7 /* fs.scriptTerminology in Resources */, - 8F0CBC6A0BDB9519002B0AD7 /* FSObjectBrowserButtonsInspector.nib in Resources */, + ED68BE4B1A35E39000968430 /* FSObjectBrowser.xib in Resources */, 8F0CBC6B0BDB9519002B0AD7 /* FSImageInspector.nib in Resources */, 8F0CBC6C0BDB9519002B0AD7 /* ReadMe.txt in Resources */, 8F0CBC6D0BDB9519002B0AD7 /* ArrayTableView.nib in Resources */, 8F0CBC6E0BDB9519002B0AD7 /* constantsDictionary in Resources */, 8F0CBC6F0BDB9519002B0AD7 /* FSAttributedStringInspector.nib in Resources */, - 8F0CBC700BDB9519002B0AD7 /* FSConsole.nib in Resources */, - 8F0CBC710BDB9519002B0AD7 /* FScriptPreferences.nib in Resources */, 8F0CBC720BDB9519002B0AD7 /* run.tiff in Resources */, 8F0CBC730BDB9519002B0AD7 /* build.tiff in Resources */, 8F0CBC750BDB9519002B0AD7 /* FSCollectionInspectorView.nib in Resources */, 8F0CBC770BDB9519002B0AD7 /* FSManagedObjectContextInspector.nib in Resources */, 8F913FDF0BDB92FC001685EA /* Info.plist in Resources */, 8F913FE00BDB92FC001685EA /* version.plist in Resources */, + EDE508E219DD4FDC0012F16A /* FScriptPreferences.xib in Resources */, + EDA22BF31A24C28D0093DB91 /* window.png in Resources */, 8FB524190C2205C20028B297 /* FScriptIBPluginInspector.nib in Resources */, 8FB5241A0C2205C20028B297 /* FScriptIBPluginLibrary.nib in Resources */, + EDA22BE91A24C28D0093DB91 /* view.png in Resources */, 8F38D0FA0C36AD13002512EE /* FScript.framework in Resources */, + EDE508D919DD4D310012F16A /* FSConsole.xib in Resources */, 8F6597B60C37F061006CDCA0 /* FScriptMenuItem.png in Resources */, 8F6631D20C4A270000FA798A /* FSMovieInspector.nib in Resources */, + EDA6AC721A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.xib in Resources */, + EDFB2FFA1A17E345002C8DD7 /* FSObjectBrowserButtonsInspector.xib in Resources */, 8FE3DC9B0D26C0FD00A1D767 /* FSTestClasses.txt in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -5700,19 +7385,23 @@ 8F6DA653055FC6980050409A /* FlightTutorial.txt in Resources */, 8F6DA655055FC6980050409A /* KTest.txt in Resources */, 8F6DA656055FC6980050409A /* license.txt in Resources */, + EDFB2FF91A17E345002C8DD7 /* FSObjectBrowserButtonsInspector.xib in Resources */, + EDA6AC711A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.xib in Resources */, 8F6DA657055FC6980050409A /* genObjInspector.nib in Resources */, 8F6DA658055FC6980050409A /* fs.scriptSuite in Resources */, 8F6DA659055FC6980050409A /* fs.scriptTerminology in Resources */, - 8F6DA65B055FC6980050409A /* FSObjectBrowserButtonsInspector.nib in Resources */, + EDE508D819DD4D310012F16A /* FSConsole.xib in Resources */, 8F6DA65D055FC6980050409A /* FSImageInspector.nib in Resources */, + EDA22BE81A24C28D0093DB91 /* view.png in Resources */, + EDE508E119DD4FDC0012F16A /* FScriptPreferences.xib in Resources */, 8F6DA65F055FC6980050409A /* ArrayTableView.nib in Resources */, 8FDCCD7E05C0A0A000747C0A /* FSAttributedStringInspector.nib in Resources */, - 8F0B64CC05C5370E0099180D /* FSConsole.nib in Resources */, - 8F0B665305C557A40099180D /* FScriptPreferences.nib in Resources */, + ED68BE4A1A35E39000968430 /* FSObjectBrowser.xib in Resources */, 8F2D067305CED9B9007EA81B /* run.tiff in Resources */, 8F56036705CF22660044FA65 /* build.tiff in Resources */, 8FA8EFA307739FD5001BEC7B /* FSCollectionInspectorView.nib in Resources */, 8F936BF7082E8DC300A04EBF /* FSManagedObjectContextInspector.nib in Resources */, + EDA22BF21A24C28D0093DB91 /* window.png in Resources */, 8F6631D30C4A270100FA798A /* FSMovieInspector.nib in Resources */, 8FE3DC9A0D26C0FD00A1D767 /* FSTestClasses.txt in Resources */, ); @@ -5732,10 +7421,12 @@ files = ( 8FCFCF19094F712400FF7406 /* FSTest2.app in Resources */, 8FCFCF08094F711900FF7406 /* FSTest1.app in Resources */, + EDFB2FF31A17E345002C8DD7 /* FSObjectBrowserButtonsInspector.xib in Resources */, 8F6DA865055FC70C0050409A /* FSCollectionInspector.nib in Resources */, 8F6DA866055FC70C0050409A /* blockInspector.nib in Resources */, 8F6DA869055FC70C0050409A /* FlightTutorial.txt in Resources */, 8F6DA86A055FC70C0050409A /* genObjInspector.nib in Resources */, + EDE508D219DD4D310012F16A /* FSConsole.xib in Resources */, 8F6DA86B055FC70C0050409A /* KTest.txt in Resources */, 8F6DA86C055FC70C0050409A /* license.txt in Resources */, 8F6DA86D055FC70C0050409A /* fs.icns in Resources */, @@ -5743,17 +7434,20 @@ 8F6DA870055FC70C0050409A /* fs.nib in Resources */, 8F6DA871055FC70C0050409A /* fs.scriptSuite in Resources */, 8F6DA872055FC70C0050409A /* fs.scriptTerminology in Resources */, - 8F6DA874055FC70C0050409A /* FSObjectBrowserButtonsInspector.nib in Resources */, 8F6DA876055FC70C0050409A /* FSImageInspector.nib in Resources */, 8F6DA878055FC70C0050409A /* ArrayTableView.nib in Resources */, 8F6DA879055FC70C0050409A /* constantsDictionary in Resources */, + ED3004F41A1A86EF00675D94 /* FSObjectInspectorViewController.xib in Resources */, 8FDCCD7C05C0A0A000747C0A /* FSAttributedStringInspector.nib in Resources */, - 8F0B64CA05C5370D0099180D /* FSConsole.nib in Resources */, - 8F0B665105C557A40099180D /* FScriptPreferences.nib in Resources */, + EDE508DB19DD4FDC0012F16A /* FScriptPreferences.xib in Resources */, 8F2D067105CED9B9007EA81B /* run.tiff in Resources */, + EDA22BEA1A24C28D0093DB91 /* window.png in Resources */, 8F56036805CF22660044FA65 /* build.tiff in Resources */, + ED68BE421A35E39000968430 /* FSObjectBrowser.xib in Resources */, + EDA6AC691A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.xib in Resources */, 8FA8EFA007739FD5001BEC7B /* FSCollectionInspectorView.nib in Resources */, 8FCA6B88078E0E4F005FC6B2 /* FSManagedObjectContextInspector.nib in Resources */, + EDA22BE01A24C28D0093DB91 /* view.png in Resources */, 8F6631D40C4A270200FA798A /* FSMovieInspector.nib in Resources */, 8FE3DC9C0D26C0FD00A1D767 /* FSTestClasses.txt in Resources */, 8F9636490F8DF86600A70F39 /* DemoAssistant.xib in Resources */, @@ -5764,26 +7458,31 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + EDE508D319DD4D310012F16A /* FSConsole.xib in Resources */, + ED3004F51A1A86EF00675D94 /* FSObjectInspectorViewController.xib in Resources */, 8F6DA964055FC71F0050409A /* FSCollectionInspector.nib in Resources */, 8F6DA965055FC71F0050409A /* blockInspector.nib in Resources */, 8F6DA968055FC71F0050409A /* FlightTutorial.txt in Resources */, 8F6DA969055FC71F0050409A /* genObjInspector.nib in Resources */, + ED68BE431A35E39000968430 /* FSObjectBrowser.xib in Resources */, + EDE508DC19DD4FDC0012F16A /* FScriptPreferences.xib in Resources */, 8F6DA96A055FC71F0050409A /* KTest.txt in Resources */, 8F6DA96B055FC71F0050409A /* license.txt in Resources */, 8F6DA96D055FC71F0050409A /* fs.scriptSuite in Resources */, 8F6DA96E055FC71F0050409A /* fs.scriptTerminology in Resources */, - 8F6DA970055FC71F0050409A /* FSObjectBrowserButtonsInspector.nib in Resources */, 8F6DA972055FC71F0050409A /* FSImageInspector.nib in Resources */, 8F6DA973055FC71F0050409A /* ReadMe.txt in Resources */, 8F6DA974055FC71F0050409A /* ArrayTableView.nib in Resources */, 8F6DA975055FC71F0050409A /* constantsDictionary in Resources */, 8FDCCD7B05C0A0A000747C0A /* FSAttributedStringInspector.nib in Resources */, - 8F0B64C905C5370D0099180D /* FSConsole.nib in Resources */, - 8F0B665005C557A40099180D /* FScriptPreferences.nib in Resources */, + EDA22BE11A24C28D0093DB91 /* view.png in Resources */, 8F2D067005CED9B9007EA81B /* run.tiff in Resources */, 8F56036905CF22660044FA65 /* build.tiff in Resources */, + EDFB2FF41A17E345002C8DD7 /* FSObjectBrowserButtonsInspector.xib in Resources */, 8FA8EF9F07739FD4001BEC7B /* FSCollectionInspectorView.nib in Resources */, + EDA22BEB1A24C28D0093DB91 /* window.png in Resources */, 8F936BEF082E8D9F00A04EBF /* FSManagedObjectContextInspector.nib in Resources */, + EDA6AC6A1A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.xib in Resources */, 8F6631D50C4A270200FA798A /* FSMovieInspector.nib in Resources */, 8FE3DC9D0D26C0FD00A1D767 /* FSTestClasses.txt in Resources */, ); @@ -5795,10 +7494,12 @@ files = ( BA22324A189FA403002C5B6A /* FSTest2.app in Resources */, BA22324B189FA403002C5B6A /* FSTest1.app in Resources */, + EDFB2FF51A17E345002C8DD7 /* FSObjectBrowserButtonsInspector.xib in Resources */, BA22324C189FA403002C5B6A /* FSCollectionInspector.nib in Resources */, BA22324D189FA403002C5B6A /* blockInspector.nib in Resources */, BA22324E189FA403002C5B6A /* FlightTutorial.txt in Resources */, BA22324F189FA403002C5B6A /* genObjInspector.nib in Resources */, + EDE508D419DD4D310012F16A /* FSConsole.xib in Resources */, BA223250189FA403002C5B6A /* KTest.txt in Resources */, BA223251189FA403002C5B6A /* license.txt in Resources */, BA223252189FA403002C5B6A /* fs.icns in Resources */, @@ -5806,17 +7507,20 @@ BA223254189FA403002C5B6A /* fs.nib in Resources */, BA223255189FA403002C5B6A /* fs.scriptSuite in Resources */, BA223256189FA403002C5B6A /* fs.scriptTerminology in Resources */, - BA223257189FA403002C5B6A /* FSObjectBrowserButtonsInspector.nib in Resources */, BA223258189FA403002C5B6A /* FSImageInspector.nib in Resources */, BA223259189FA403002C5B6A /* ArrayTableView.nib in Resources */, BA22325A189FA403002C5B6A /* constantsDictionary in Resources */, + ED3004F61A1A86EF00675D94 /* FSObjectInspectorViewController.xib in Resources */, BA22325B189FA403002C5B6A /* FSAttributedStringInspector.nib in Resources */, - BA22325C189FA403002C5B6A /* FSConsole.nib in Resources */, - BA22325D189FA403002C5B6A /* FScriptPreferences.nib in Resources */, + EDE508DD19DD4FDC0012F16A /* FScriptPreferences.xib in Resources */, BA22325E189FA403002C5B6A /* run.tiff in Resources */, + EDA22BEC1A24C28D0093DB91 /* window.png in Resources */, BA22325F189FA403002C5B6A /* build.tiff in Resources */, + ED68BE441A35E39000968430 /* FSObjectBrowser.xib in Resources */, + EDA6AC6B1A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.xib in Resources */, BA223260189FA403002C5B6A /* FSCollectionInspectorView.nib in Resources */, BA223261189FA403002C5B6A /* FSManagedObjectContextInspector.nib in Resources */, + EDA22BE21A24C28D0093DB91 /* view.png in Resources */, BA223262189FA403002C5B6A /* FSMovieInspector.nib in Resources */, BA223263189FA403002C5B6A /* FSTestClasses.txt in Resources */, BA223264189FA403002C5B6A /* DemoAssistant.xib in Resources */, @@ -5829,10 +7533,12 @@ files = ( BA22340A189FA412002C5B6A /* FSTest2.app in Resources */, BA22340B189FA412002C5B6A /* FSTest1.app in Resources */, + EDFB2FF71A17E345002C8DD7 /* FSObjectBrowserButtonsInspector.xib in Resources */, BA22340C189FA412002C5B6A /* FSCollectionInspector.nib in Resources */, BA22340D189FA412002C5B6A /* blockInspector.nib in Resources */, BA22340E189FA412002C5B6A /* FlightTutorial.txt in Resources */, BA22340F189FA412002C5B6A /* genObjInspector.nib in Resources */, + EDE508D619DD4D310012F16A /* FSConsole.xib in Resources */, BA223410189FA412002C5B6A /* KTest.txt in Resources */, BA223411189FA412002C5B6A /* license.txt in Resources */, BA223412189FA412002C5B6A /* fs.icns in Resources */, @@ -5840,17 +7546,20 @@ BA223414189FA412002C5B6A /* fs.nib in Resources */, BA223415189FA412002C5B6A /* fs.scriptSuite in Resources */, BA223416189FA412002C5B6A /* fs.scriptTerminology in Resources */, - BA223417189FA412002C5B6A /* FSObjectBrowserButtonsInspector.nib in Resources */, BA223418189FA412002C5B6A /* FSImageInspector.nib in Resources */, BA223419189FA412002C5B6A /* ArrayTableView.nib in Resources */, BA22341A189FA412002C5B6A /* constantsDictionary in Resources */, + ED3004F81A1A86EF00675D94 /* FSObjectInspectorViewController.xib in Resources */, BA22341B189FA412002C5B6A /* FSAttributedStringInspector.nib in Resources */, - BA22341C189FA412002C5B6A /* FSConsole.nib in Resources */, - BA22341D189FA412002C5B6A /* FScriptPreferences.nib in Resources */, + EDE508DF19DD4FDC0012F16A /* FScriptPreferences.xib in Resources */, BA22341E189FA412002C5B6A /* run.tiff in Resources */, + EDA22BEE1A24C28D0093DB91 /* window.png in Resources */, BA22341F189FA412002C5B6A /* build.tiff in Resources */, + ED68BE461A35E39000968430 /* FSObjectBrowser.xib in Resources */, + EDA6AC6D1A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.xib in Resources */, BA223420189FA412002C5B6A /* FSCollectionInspectorView.nib in Resources */, BA223421189FA412002C5B6A /* FSManagedObjectContextInspector.nib in Resources */, + EDA22BE41A24C28D0093DB91 /* view.png in Resources */, BA223422189FA412002C5B6A /* FSMovieInspector.nib in Resources */, BA223423189FA412002C5B6A /* FSTestClasses.txt in Resources */, BA223424189FA412002C5B6A /* DemoAssistant.xib in Resources */, @@ -5861,26 +7570,31 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + EDE508D519DD4D310012F16A /* FSConsole.xib in Resources */, + ED3004F71A1A86EF00675D94 /* FSObjectInspectorViewController.xib in Resources */, BA2235C2189FA429002C5B6A /* FSCollectionInspector.nib in Resources */, BA2235C3189FA429002C5B6A /* blockInspector.nib in Resources */, BA2235C4189FA429002C5B6A /* FlightTutorial.txt in Resources */, BA2235C5189FA429002C5B6A /* genObjInspector.nib in Resources */, + ED68BE451A35E39000968430 /* FSObjectBrowser.xib in Resources */, + EDE508DE19DD4FDC0012F16A /* FScriptPreferences.xib in Resources */, BA2235C6189FA429002C5B6A /* KTest.txt in Resources */, BA2235C7189FA429002C5B6A /* license.txt in Resources */, BA2235C8189FA429002C5B6A /* fs.scriptSuite in Resources */, BA2235C9189FA429002C5B6A /* fs.scriptTerminology in Resources */, - BA2235CA189FA429002C5B6A /* FSObjectBrowserButtonsInspector.nib in Resources */, BA2235CB189FA429002C5B6A /* FSImageInspector.nib in Resources */, BA2235CC189FA429002C5B6A /* ReadMe.txt in Resources */, BA2235CD189FA429002C5B6A /* ArrayTableView.nib in Resources */, BA2235CE189FA429002C5B6A /* constantsDictionary in Resources */, BA2235CF189FA429002C5B6A /* FSAttributedStringInspector.nib in Resources */, - BA2235D0189FA429002C5B6A /* FSConsole.nib in Resources */, - BA2235D1189FA429002C5B6A /* FScriptPreferences.nib in Resources */, + EDA22BE31A24C28D0093DB91 /* view.png in Resources */, BA2235D2189FA429002C5B6A /* run.tiff in Resources */, BA2235D3189FA429002C5B6A /* build.tiff in Resources */, + EDFB2FF61A17E345002C8DD7 /* FSObjectBrowserButtonsInspector.xib in Resources */, BA2235D4189FA429002C5B6A /* FSCollectionInspectorView.nib in Resources */, + EDA22BED1A24C28D0093DB91 /* window.png in Resources */, BA2235D5189FA429002C5B6A /* FSManagedObjectContextInspector.nib in Resources */, + EDA6AC6C1A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.xib in Resources */, BA2235D6189FA429002C5B6A /* FSMovieInspector.nib in Resources */, BA2235D7189FA429002C5B6A /* FSTestClasses.txt in Resources */, ); @@ -5890,31 +7604,107 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + EDE508D719DD4D310012F16A /* FSConsole.xib in Resources */, + ED3004F91A1A86EF00675D94 /* FSObjectInspectorViewController.xib in Resources */, BA22370A189FA431002C5B6A /* FSCollectionInspector.nib in Resources */, BA22370B189FA431002C5B6A /* blockInspector.nib in Resources */, BA22370C189FA431002C5B6A /* FlightTutorial.txt in Resources */, BA22370D189FA431002C5B6A /* genObjInspector.nib in Resources */, + ED68BE471A35E39000968430 /* FSObjectBrowser.xib in Resources */, + EDE508E019DD4FDC0012F16A /* FScriptPreferences.xib in Resources */, BA22370E189FA431002C5B6A /* KTest.txt in Resources */, BA22370F189FA431002C5B6A /* license.txt in Resources */, BA223710189FA431002C5B6A /* fs.scriptSuite in Resources */, BA223711189FA431002C5B6A /* fs.scriptTerminology in Resources */, - BA223712189FA431002C5B6A /* FSObjectBrowserButtonsInspector.nib in Resources */, BA223713189FA431002C5B6A /* FSImageInspector.nib in Resources */, BA223714189FA431002C5B6A /* ReadMe.txt in Resources */, BA223715189FA431002C5B6A /* ArrayTableView.nib in Resources */, BA223716189FA431002C5B6A /* constantsDictionary in Resources */, BA223717189FA431002C5B6A /* FSAttributedStringInspector.nib in Resources */, - BA223718189FA431002C5B6A /* FSConsole.nib in Resources */, - BA223719189FA431002C5B6A /* FScriptPreferences.nib in Resources */, + EDA22BE51A24C28D0093DB91 /* view.png in Resources */, BA22371A189FA431002C5B6A /* run.tiff in Resources */, BA22371B189FA431002C5B6A /* build.tiff in Resources */, + EDFB2FF81A17E345002C8DD7 /* FSObjectBrowserButtonsInspector.xib in Resources */, BA22371C189FA431002C5B6A /* FSCollectionInspectorView.nib in Resources */, + EDA22BEF1A24C28D0093DB91 /* window.png in Resources */, BA22371D189FA431002C5B6A /* FSManagedObjectContextInspector.nib in Resources */, + EDA6AC6E1A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.xib in Resources */, BA22371E189FA431002C5B6A /* FSMovieInspector.nib in Resources */, BA22371F189FA431002C5B6A /* FSTestClasses.txt in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; + EDC2C9AF1A1AA50D00942777 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EDC2C9B21A1AA50D00942777 /* FSObjectBrowserButtonsInspector.xib in Resources */, + EDC2C9B31A1AA50D00942777 /* FSCollectionInspector.nib in Resources */, + EDC2C9B41A1AA50D00942777 /* blockInspector.nib in Resources */, + EDC2C9B51A1AA50D00942777 /* FlightTutorial.txt in Resources */, + EDA22BF01A24C28D0093DB91 /* window.png in Resources */, + EDC2C9B61A1AA50D00942777 /* genObjInspector.nib in Resources */, + EDC2C9B71A1AA50D00942777 /* FSConsole.xib in Resources */, + EDC2C9B81A1AA50D00942777 /* KTest.txt in Resources */, + EDC2C9B91A1AA50D00942777 /* license.txt in Resources */, + EDC2C9BA1A1AA50D00942777 /* fs.icns in Resources */, + EDC2C9BB1A1AA50D00942777 /* FScriptAppPreference.nib in Resources */, + EDC2C9BC1A1AA50D00942777 /* fs.nib in Resources */, + ED68BE481A35E39000968430 /* FSObjectBrowser.xib in Resources */, + EDC2C9BD1A1AA50D00942777 /* fs.scriptSuite in Resources */, + EDC2C9BE1A1AA50D00942777 /* fs.scriptTerminology in Resources */, + EDC2C9BF1A1AA50D00942777 /* FSImageInspector.nib in Resources */, + EDA22BE61A24C28D0093DB91 /* view.png in Resources */, + EDC2C9C01A1AA50D00942777 /* ArrayTableView.nib in Resources */, + EDC2C9C11A1AA50D00942777 /* constantsDictionary in Resources */, + EDC2C9C21A1AA50D00942777 /* FSObjectInspectorViewController.xib in Resources */, + EDC2C9C31A1AA50D00942777 /* FSAttributedStringInspector.nib in Resources */, + EDC2C9C41A1AA50D00942777 /* FScriptPreferences.xib in Resources */, + EDC2C9C51A1AA50D00942777 /* run.tiff in Resources */, + EDC2C9C61A1AA50D00942777 /* build.tiff in Resources */, + EDA6AC6F1A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.xib in Resources */, + EDC2C9C71A1AA50D00942777 /* FSCollectionInspectorView.nib in Resources */, + EDC2C9C81A1AA50D00942777 /* FSManagedObjectContextInspector.nib in Resources */, + EDC2C9C91A1AA50D00942777 /* FSMovieInspector.nib in Resources */, + EDC2C9CA1A1AA50D00942777 /* FSTestClasses.txt in Resources */, + EDC2C9CB1A1AA50D00942777 /* DemoAssistant.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EDC2CB771A1AA52500942777 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EDC2CB781A1AA52500942777 /* FSConsole.xib in Resources */, + EDC2CB791A1AA52500942777 /* FSObjectInspectorViewController.xib in Resources */, + EDC2CB7A1A1AA52500942777 /* FSCollectionInspector.nib in Resources */, + EDC2CB7B1A1AA52500942777 /* blockInspector.nib in Resources */, + EDC2CB7C1A1AA52500942777 /* FlightTutorial.txt in Resources */, + EDC2CB7D1A1AA52500942777 /* genObjInspector.nib in Resources */, + ED68BE491A35E39000968430 /* FSObjectBrowser.xib in Resources */, + EDC2CB7E1A1AA52500942777 /* FScriptPreferences.xib in Resources */, + EDC2CB7F1A1AA52500942777 /* KTest.txt in Resources */, + EDC2CB801A1AA52500942777 /* license.txt in Resources */, + EDC2CB811A1AA52500942777 /* fs.scriptSuite in Resources */, + EDC2CB821A1AA52500942777 /* fs.scriptTerminology in Resources */, + EDC2CB831A1AA52500942777 /* FSImageInspector.nib in Resources */, + EDC2CB841A1AA52500942777 /* ReadMe.txt in Resources */, + EDC2CB851A1AA52500942777 /* ArrayTableView.nib in Resources */, + EDC2CB861A1AA52500942777 /* constantsDictionary in Resources */, + EDC2CB871A1AA52500942777 /* FSAttributedStringInspector.nib in Resources */, + EDA22BE71A24C28D0093DB91 /* view.png in Resources */, + EDC2CB881A1AA52500942777 /* run.tiff in Resources */, + EDC2CB891A1AA52500942777 /* build.tiff in Resources */, + EDC2CB8A1A1AA52500942777 /* FSObjectBrowserButtonsInspector.xib in Resources */, + EDC2CB8B1A1AA52500942777 /* FSCollectionInspectorView.nib in Resources */, + EDA22BF11A24C28D0093DB91 /* window.png in Resources */, + EDC2CB8C1A1AA52500942777 /* FSManagedObjectContextInspector.nib in Resources */, + EDA6AC701A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.xib in Resources */, + EDC2CB8D1A1AA52500942777 /* FSMovieInspector.nib in Resources */, + EDC2CB8E1A1AA52500942777 /* FSTestClasses.txt in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXRezBuildPhase section */ @@ -5974,6 +7764,20 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + EDC2CAC91A1AA50D00942777 /* Rez */ = { + isa = PBXRezBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EDC2CC231A1AA52500942777 /* Rez */ = { + isa = PBXRezBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXRezBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -6007,7 +7811,9 @@ 8F0CBBFF0BDB94AD002B0AD7 /* FSInterpreterResult.m in Sources */, 8F0CBC000BDB94AD002B0AD7 /* FSInterpreterView.m in Sources */, 8F0CBC010BDB94AD002B0AD7 /* FSNSArray.m in Sources */, + ED8222F51A19554F00C42C72 /* FSObjectEnumInfo.m in Sources */, 8F0CBC020BDB94AD002B0AD7 /* FSNSDate.m in Sources */, + ED3CB6511A1E5B3300771077 /* FSColorWell.m in Sources */, 8F0CBC030BDB94AD002B0AD7 /* FSNSDictionary.m in Sources */, 8F0CBC040BDB94AD002B0AD7 /* FSNSMutableString.m in Sources */, 8F0CBC050BDB94AD002B0AD7 /* FSNSNumber.m in Sources */, @@ -6049,25 +7855,30 @@ 8F0CBC310BDB94AD002B0AD7 /* FSKeyedUnarchiver.m in Sources */, 8F0CBC320BDB94AD002B0AD7 /* FSKeyedArchiver.m in Sources */, 8F0CBC330BDB94AD002B0AD7 /* FSConstantListBuilder.m in Sources */, + ED68BE601A35E94B00968430 /* FSObjectBrowserWindow.m in Sources */, 8F0CBC340BDB94AD002B0AD7 /* FSImageInspector.m in Sources */, 8F0CBC350BDB94AD002B0AD7 /* FSNSImage.m in Sources */, 8F0CBC360BDB94AD002B0AD7 /* FSObjectBrowserToolbarItem.m in Sources */, 8F0CBC370BDB94AD002B0AD7 /* ArrayRepBoolean.m in Sources */, + ED8222E41A194FD600C42C72 /* FSObjectInspectorViewModelItem.m in Sources */, 8F0CBC380BDB94AD002B0AD7 /* FSArrayEnumerator.m in Sources */, 8F0CBC390BDB94AD002B0AD7 /* FSNSMutableArray.m in Sources */, 8F0CBC3C0BDB94AD002B0AD7 /* FSNSValue.m in Sources */, 8F0CBC3D0BDB94AD002B0AD7 /* FSReplacementForCoderForNilInArray.m in Sources */, 8F0CBC3E0BDB94AD002B0AD7 /* FSNamedNumber.m in Sources */, + ED8319441A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.m in Sources */, 8F0CBC3F0BDB94AD002B0AD7 /* FSCollectionInspectorTableView.m in Sources */, 8F0CBC400BDB94AD002B0AD7 /* FSNSSet.m in Sources */, 8F0CBC410BDB94AD002B0AD7 /* FSAttributedStringInspector.m in Sources */, 8F0CBC420BDB94AD002B0AD7 /* FSNSAttributedString.m in Sources */, 8F0CBC430BDB94AD002B0AD7 /* FScriptMenuItem.m in Sources */, + ED83192F1A1BC2B500290EE2 /* FSUtils.m in Sources */, 8F0CBC440BDB94AD002B0AD7 /* FSNSFont.m in Sources */, 8F0CBC450BDB94AD002B0AD7 /* FSObjectBrowserMatrix.m in Sources */, 8F0CBC460BDB94AD002B0AD7 /* FSSymbolTable.m in Sources */, 8F0CBC480BDB94AD002B0AD7 /* FSObjectBrowserViewObjectInfo.m in Sources */, 8F0CBC490BDB94AD002B0AD7 /* FSCollectionInspectorView.m in Sources */, + EDA6AC521A1F407C001CD1F2 /* FSObjectInspectorOutlineView.m in Sources */, 8F0CBC4A0BDB94AD002B0AD7 /* ArrayRepFetchRequest.m in Sources */, 8F0CBC4B0BDB94AD002B0AD7 /* FSPointer.m in Sources */, 8F0CBC4C0BDB94AD002B0AD7 /* FSGenericPointer.m in Sources */, @@ -6101,6 +7912,7 @@ 8F747DAF0DA03AE200148342 /* FSCNPrecomputedObject.m in Sources */, 8F747DBE0DA0467100148342 /* FSCNArray.m in Sources */, 8FAE79AC0DA0ED5D00CB6E14 /* FSCNBlock.m in Sources */, + EDA6AC681A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.m in Sources */, 8FAE79F30DA109C500CB6E14 /* FSCNAssignment.m in Sources */, 8F45CBBF0DA813F200AFA8C8 /* FSCNMethod.m in Sources */, 8FD0A3140DD7276000E47459 /* FSCNReturn.m in Sources */, @@ -6114,6 +7926,7 @@ 8F9D041D0F1DF1CB001B8286 /* FSNSFileHandle.m in Sources */, 8F940B850F2393B0004525E1 /* FSAssociation.m in Sources */, 8F940C720F23BC2E004525E1 /* FSCNDictionary.m in Sources */, + EDC2C8FE1A1AA34D00942777 /* FSObjectInspectorBackgroundView.m in Sources */, 8F7A712F0F48397C00E95364 /* FSObjectBrowserBottomBarTextDisplay.m in Sources */, 8F2D720B0F6BD9B100F0862A /* FSNSAffineTransform.m in Sources */, 8FCA593310883B0100F67841 /* FSNewlyAllocatedObject.m in Sources */, @@ -6142,6 +7955,7 @@ 8F6DA66F055FC6980050409A /* BlockRep.m in Sources */, 8F6DA670055FC6980050409A /* BlockStackElem.m in Sources */, 8F6DA671055FC6980050409A /* CLIView.m in Sources */, + ED8222E31A194FD600C42C72 /* FSObjectInspectorViewModelItem.m in Sources */, 8F6DA672055FC6980050409A /* FSCompilationResult.m in Sources */, 8F6DA673055FC6980050409A /* CompiledCodeNode.m in Sources */, 8F6DA674055FC6980050409A /* FSCompiler.m in Sources */, @@ -6170,6 +7984,8 @@ 8F6DA68E055FC6980050409A /* FSUnarchiver.m in Sources */, 8F6DA68F055FC6980050409A /* FSGenericObjectInspector.m in Sources */, 8F6DA690055FC6980050409A /* KTestManager.m in Sources */, + EDA6AC671A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.m in Sources */, + ED68BE5F1A35E94B00968430 /* FSObjectBrowserWindow.m in Sources */, 8F6DA691055FC6980050409A /* MessagePatternCodeNode.m in Sources */, 8F6DA692055FC6980050409A /* FSMiscTools.m in Sources */, 8F6DA693055FC6980050409A /* FSMsgContext.m in Sources */, @@ -6192,6 +8008,7 @@ 8F6DA6B0055FC6980050409A /* FSObjectBrowserButtonCtxBlock.m in Sources */, 8F6DA6B1055FC6980050409A /* FSObjectBrowserButtonsInspector.m in Sources */, 8F6DA6B2055FC6980050409A /* Pointer.m in Sources */, + ED3CB6501A1E5B3300771077 /* FSColorWell.m in Sources */, 8F6DA6B3055FC6980050409A /* FSIdentifierFormatter.m in Sources */, 8F6DA6B4055FC6980050409A /* FSObjectFormatter.m in Sources */, 8F6DA6B7055FC6980050409A /* FSKeyedUnarchiver.m in Sources */, @@ -6220,6 +8037,7 @@ 8F8EA797077F6C9300AC1C96 /* FSGenericPointer.m in Sources */, 8FE9AE30078071CC005B2CC4 /* FSObjectPointer.m in Sources */, 8F86923B07F19BA8000D20A4 /* FSObjectBrowserNamedObjectWrapper.m in Sources */, + EDC2C8EB1A1A99BF00942777 /* FSDetailedObjectInspector.m in Sources */, 8F7F4F9F07FB274C008E42F4 /* FSInspectorUniquier.m in Sources */, 8F95E3CA08034A670030B65C /* FSPredicateTextView.m in Sources */, 8FE7E0EF082AD964008231E8 /* FSCoreDataSample.m in Sources */, @@ -6239,9 +8057,12 @@ 8F8112F50D85E58200CB3407 /* FSCNCategory.m in Sources */, 8F59CA720D86DD0800D67A78 /* FSCNMessage.m in Sources */, 8F7223820D870C6A00394C99 /* FSCNSuper.m in Sources */, + ED8319431A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.m in Sources */, 8F2E34250D8DB61C00912543 /* FSCNUnaryMessage.m in Sources */, + EDA6AC511A1F407C001CD1F2 /* FSObjectInspectorOutlineView.m in Sources */, 8F2E34380D8DBF6A00912543 /* FSCNBinaryMessage.m in Sources */, 8F2E34410D8DBFE700912543 /* FSCNKeywordMessage.m in Sources */, + EDC2C8ED1A1A99F600942777 /* FSObjectInspectorViewController.m in Sources */, 8F5900160D9468FC003A8B17 /* FSCNCascade.m in Sources */, 8F8F58690D9FE6AA00ED0FED /* FSCNStatementList.m in Sources */, 8F747DAC0DA03AE200148342 /* FSCNPrecomputedObject.m in Sources */, @@ -6249,6 +8070,8 @@ 8FAE79B00DA0ED5D00CB6E14 /* FSCNBlock.m in Sources */, 8FAE79F70DA109C500CB6E14 /* FSCNAssignment.m in Sources */, 8F45CBC50DA813F200AFA8C8 /* FSCNMethod.m in Sources */, + EDC2C8FD1A1AA34D00942777 /* FSObjectInspectorBackgroundView.m in Sources */, + ED83192E1A1BC2B500290EE2 /* FSUtils.m in Sources */, 8FD0A31A0DD7276000E47459 /* FSCNReturn.m in Sources */, 8F8949D80DE08B110094EC14 /* FSClassDefinition.m in Sources */, 8F2DE6610E57254700CF83CB /* FSTranscript.m in Sources */, @@ -6264,6 +8087,7 @@ 8F2D720F0F6BD9B100F0862A /* FSNSAffineTransform.m in Sources */, 8FCA593710883B0100F67841 /* FSNewlyAllocatedObject.m in Sources */, 8F5EDA05109B384A003A2F4C /* FSWorksWhenModalWindow.m in Sources */, + ED8222F41A19554F00C42C72 /* FSObjectEnumInfo.m in Sources */, 8F442713116549C700E88F21 /* FSNSMutableDictionary.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -6296,6 +8120,8 @@ 8F6DA888055FC70C0050409A /* BlockStackElem.m in Sources */, 8F6DA889055FC70C0050409A /* CLIView.m in Sources */, 8F6DA88A055FC70C0050409A /* FSCompilationResult.m in Sources */, + ED3004EE1A1A86EF00675D94 /* FSObjectInspectorViewController.m in Sources */, + ED83193B1A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.m in Sources */, 8F6DA88B055FC70C0050409A /* CompiledCodeNode.m in Sources */, 8F6DA88C055FC70C0050409A /* FSCompiler.m in Sources */, 8F6DA88D055FC70C0050409A /* FSConstantsInitialization.m in Sources */, @@ -6333,7 +8159,9 @@ 8F6DA8B5055FC70C0050409A /* Space.m in Sources */, 8F6DA8B6055FC70C0050409A /* FSCommandHistory.m in Sources */, 8F6DA8B8055FC70C0050409A /* FSSystem.m in Sources */, + ED8222EE1A19554F00C42C72 /* FSObjectEnumInfo.m in Sources */, 8F6DA8BB055FC70C0050409A /* DOTest.m in Sources */, + ED68BE571A35E94B00968430 /* FSObjectBrowserWindow.m in Sources */, 8F6DA8BC055FC70C0050409A /* FSNSProtocolChecker.m in Sources */, 8F6DA8BD055FC70C0050409A /* fs_main.m in Sources */, 8F6DA8BE055FC70C0050409A /* FScriptAppController.m in Sources */, @@ -6350,9 +8178,12 @@ 8F6DA8CF055FC70C0050409A /* FSObjectFormatter.m in Sources */, 8F6DA8D2055FC70C0050409A /* FSKeyedUnarchiver.m in Sources */, 8F6DA8D3055FC70C0050409A /* FSKeyedArchiver.m in Sources */, + ED8222DD1A194FD600C42C72 /* FSObjectInspectorViewModelItem.m in Sources */, 8F6DA8D4055FC70C0050409A /* FSConstantListBuilder.m in Sources */, 8F6DA8D5055FC70C0050409A /* FSImageInspector.m in Sources */, 8F6DA8D6055FC70C0050409A /* FSNSImage.m in Sources */, + ED3CB6491A1E5B3300771077 /* FSColorWell.m in Sources */, + EDC2C8E41A1A943600942777 /* FSDetailedObjectInspector.m in Sources */, 8F6DA8D7055FC70C0050409A /* FSObjectBrowserToolbarItem.m in Sources */, 8F6DA8D8055FC70C0050409A /* FSArrayEnumerator.m in Sources */, 8F6DA8D9055FC70C0050409A /* FSNSMutableArray.m in Sources */, @@ -6368,6 +8199,7 @@ 8F658B2E05C9694F0040FB24 /* FSNSFont.m in Sources */, 8FB5060605D53C8600153B33 /* FSObjectBrowserMatrix.m in Sources */, 8F130139064EC78200A90302 /* FSNSString.m in Sources */, + EDC2C8F71A1AA34D00942777 /* FSObjectInspectorBackgroundView.m in Sources */, 8F17C08206B1309C00F07862 /* FSSymbolTable.m in Sources */, 8F6B34B206E27E4600B3943E /* TestFS.m in Sources */, 8F4E2951075B8E5600F8DCDB /* FSObjectBrowserViewObjectInfo.m in Sources */, @@ -6396,6 +8228,7 @@ 8F48220A0D2C317700754A4E /* FSTestObjCClass2.m in Sources */, 8F8112F70D85E58200CB3407 /* FSCNCategory.m in Sources */, 8F59CA760D86DD0800D67A78 /* FSCNMessage.m in Sources */, + EDA6AC5F1A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.m in Sources */, 8F7223840D870C6A00394C99 /* FSCNSuper.m in Sources */, 8F2E34230D8DB61C00912543 /* FSCNUnaryMessage.m in Sources */, 8F2E34360D8DBF6A00912543 /* FSCNBinaryMessage.m in Sources */, @@ -6404,6 +8237,7 @@ 8F8F58670D9FE6AA00ED0FED /* FSCNStatementList.m in Sources */, 8F747DAE0DA03AE200148342 /* FSCNPrecomputedObject.m in Sources */, 8F747DBD0DA0467100148342 /* FSCNArray.m in Sources */, + EDA6AC491A1F407C001CD1F2 /* FSObjectInspectorOutlineView.m in Sources */, 8FAE79B20DA0ED5D00CB6E14 /* FSCNBlock.m in Sources */, 8FAE79F90DA109C500CB6E14 /* FSCNAssignment.m in Sources */, 8F45CBC30DA813F200AFA8C8 /* FSCNMethod.m in Sources */, @@ -6415,6 +8249,7 @@ 8FCA00C60EEAF34300B10420 /* Block.m in Sources */, 8FBB2FF50EEB3467007A3163 /* Number.m in Sources */, 8FB9D59B0F1CEE2100E10274 /* FSGlobalScope.m in Sources */, + ED8319261A1BC2B500290EE2 /* FSUtils.m in Sources */, 8F9D041C0F1DF1CB001B8286 /* FSNSFileHandle.m in Sources */, 8F940B890F2393B0004525E1 /* FSAssociation.m in Sources */, 8F940C760F23BC2E004525E1 /* FSCNDictionary.m in Sources */, @@ -6452,11 +8287,14 @@ 8F6DA98A055FC71F0050409A /* FSFlight.m in Sources */, 8F6DA98B055FC71F0050409A /* FSArchiver.m in Sources */, 8F6DA98C055FC71F0050409A /* FSBoolean.m in Sources */, + ED8222DE1A194FD600C42C72 /* FSObjectInspectorViewModelItem.m in Sources */, 8F6DA98E055FC71F0050409A /* FScriptFunctions.m in Sources */, + EDC2C8E51A1A943600942777 /* FSDetailedObjectInspector.m in Sources */, 8F6DA98F055FC71F0050409A /* FSInterpreter.m in Sources */, 8F6DA990055FC71F0050409A /* FSInterpreterResult.m in Sources */, 8F6DA991055FC71F0050409A /* FSInterpreterView.m in Sources */, 8F6DA992055FC71F0050409A /* FSNSArray.m in Sources */, + ED3CB64A1A1E5B3300771077 /* FSColorWell.m in Sources */, 8F6DA993055FC71F0050409A /* FSNSDate.m in Sources */, 8F6DA994055FC71F0050409A /* FSNSDictionary.m in Sources */, 8F6DA995055FC71F0050409A /* FSNSMutableString.m in Sources */, @@ -6498,6 +8336,7 @@ 8F6DA9C8055FC71F0050409A /* FSIdentifierFormatter.m in Sources */, 8F6DA9CA055FC71F0050409A /* FSKeyedUnarchiver.m in Sources */, 8F6DA9CB055FC71F0050409A /* FSKeyedArchiver.m in Sources */, + ED68BE581A35E94B00968430 /* FSObjectBrowserWindow.m in Sources */, 8F6DA9CC055FC71F0050409A /* FSConstantListBuilder.m in Sources */, 8F6DA9CD055FC71F0050409A /* FSImageInspector.m in Sources */, 8F6DA9CE055FC71F0050409A /* FSNSImage.m in Sources */, @@ -6508,17 +8347,20 @@ 8F553BFA0585222700A92293 /* FSNSValue.m in Sources */, 8F7D7DC0058E32CD00F1B8A8 /* FSReplacementForCoderForNilInArray.m in Sources */, 8F0E3B83059F3DBB003F6CE9 /* FSNamedNumber.m in Sources */, + ED83193C1A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.m in Sources */, 8F60217305A25CDC0004EFF1 /* FSCollectionInspectorTableView.m in Sources */, 8F60F24C05A9FE8B00985FEC /* FSNSSet.m in Sources */, 8FDCCD5305C09F8200747C0A /* FSAttributedStringInspector.m in Sources */, 8FDCCDC405C0A23100747C0A /* FSNSAttributedString.m in Sources */, 8F0B670005C5639E0099180D /* FScriptMenuItem.m in Sources */, + ED8319271A1BC2B500290EE2 /* FSUtils.m in Sources */, 8F658B3005C9694F0040FB24 /* FSNSFont.m in Sources */, 8FB5060805D53C8600153B33 /* FSObjectBrowserMatrix.m in Sources */, 8F17C08006B1309C00F07862 /* FSSymbolTable.m in Sources */, 8F4E294F075B8E5600F8DCDB /* FSObjectBrowserViewObjectInfo.m in Sources */, 8FA8EDEC07735B3B001BEC7B /* FSCollectionInspectorView.m in Sources */, 8FBC289F077B7D5200F9B4A2 /* ArrayRepFetchRequest.m in Sources */, + EDA6AC4A1A1F407C001CD1F2 /* FSObjectInspectorOutlineView.m in Sources */, 8F8EA731077F6A5200AC1C96 /* FSPointer.m in Sources */, 8F8EA7A1077F6C9300AC1C96 /* FSGenericPointer.m in Sources */, 8FE9AE3A078071CC005B2CC4 /* FSObjectPointer.m in Sources */, @@ -6536,6 +8378,7 @@ 8F5AD3240D05CFFE000CEAC6 /* FSCNClassDefinition.m in Sources */, 8FE639860D09C0F400255EBA /* FSCNBase.m in Sources */, 8FE639960D09DCB600255EBA /* FSCNIdentifier.m in Sources */, + ED8222EF1A19554F00C42C72 /* FSObjectEnumInfo.m in Sources */, 8FE3DD280D26D49900A1D767 /* FSTestObjCClass1.m in Sources */, 8F4822070D2C317700754A4E /* FSTestObjCClass2.m in Sources */, 8F8112F30D85E58200CB3407 /* FSCNCategory.m in Sources */, @@ -6550,6 +8393,8 @@ 8F747DB90DA0467100148342 /* FSCNArray.m in Sources */, 8FAE79AE0DA0ED5D00CB6E14 /* FSCNBlock.m in Sources */, 8FAE79F50DA109C500CB6E14 /* FSCNAssignment.m in Sources */, + EDA6AC601A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.m in Sources */, + ED3004EF1A1A86EF00675D94 /* FSObjectInspectorViewController.m in Sources */, 8F45CBC10DA813F200AFA8C8 /* FSCNMethod.m in Sources */, 8FD0A3160DD7276000E47459 /* FSCNReturn.m in Sources */, 8F8949DD0DE08B110094EC14 /* FSClassDefinition.m in Sources */, @@ -6562,6 +8407,7 @@ 8F9D041F0F1DF1CB001B8286 /* FSNSFileHandle.m in Sources */, 8F940B870F2393B0004525E1 /* FSAssociation.m in Sources */, 8F940C740F23BC2E004525E1 /* FSCNDictionary.m in Sources */, + EDC2C8F81A1AA34D00942777 /* FSObjectInspectorBackgroundView.m in Sources */, 8F7A712C0F48397C00E95364 /* FSObjectBrowserBottomBarTextDisplay.m in Sources */, 8F2D720D0F6BD9B100F0862A /* FSNSAffineTransform.m in Sources */, 8FCA593910883B0100F67841 /* FSNewlyAllocatedObject.m in Sources */, @@ -6589,6 +8435,8 @@ BA223272189FA403002C5B6A /* BlockStackElem.m in Sources */, BA223273189FA403002C5B6A /* CLIView.m in Sources */, BA223274189FA403002C5B6A /* FSCompilationResult.m in Sources */, + ED3004F01A1A86EF00675D94 /* FSObjectInspectorViewController.m in Sources */, + ED83193D1A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.m in Sources */, BA223275189FA403002C5B6A /* CompiledCodeNode.m in Sources */, BA223276189FA403002C5B6A /* FSCompiler.m in Sources */, BA223277189FA403002C5B6A /* FSConstantsInitialization.m in Sources */, @@ -6626,7 +8474,9 @@ BA223297189FA403002C5B6A /* Space.m in Sources */, BA223298189FA403002C5B6A /* FSCommandHistory.m in Sources */, BA223299189FA403002C5B6A /* FSSystem.m in Sources */, + ED8222F01A19554F00C42C72 /* FSObjectEnumInfo.m in Sources */, BA22329A189FA403002C5B6A /* DOTest.m in Sources */, + ED68BE591A35E94B00968430 /* FSObjectBrowserWindow.m in Sources */, BA22329B189FA403002C5B6A /* FSNSProtocolChecker.m in Sources */, BA22329C189FA403002C5B6A /* fs_main.m in Sources */, BA22329D189FA403002C5B6A /* FScriptAppController.m in Sources */, @@ -6643,9 +8493,12 @@ BA2232A8189FA403002C5B6A /* FSObjectFormatter.m in Sources */, BA2232A9189FA403002C5B6A /* FSKeyedUnarchiver.m in Sources */, BA2232AA189FA403002C5B6A /* FSKeyedArchiver.m in Sources */, + ED8222DF1A194FD600C42C72 /* FSObjectInspectorViewModelItem.m in Sources */, BA2232AB189FA403002C5B6A /* FSConstantListBuilder.m in Sources */, BA2232AC189FA403002C5B6A /* FSImageInspector.m in Sources */, BA2232AD189FA403002C5B6A /* FSNSImage.m in Sources */, + ED3CB64B1A1E5B3300771077 /* FSColorWell.m in Sources */, + EDC2C8E61A1A943600942777 /* FSDetailedObjectInspector.m in Sources */, BA2232AE189FA403002C5B6A /* FSObjectBrowserToolbarItem.m in Sources */, BA2232AF189FA403002C5B6A /* FSArrayEnumerator.m in Sources */, BA2232B0189FA403002C5B6A /* FSNSMutableArray.m in Sources */, @@ -6661,6 +8514,7 @@ BA2232BA189FA403002C5B6A /* FSNSFont.m in Sources */, BA2232BB189FA403002C5B6A /* FSObjectBrowserMatrix.m in Sources */, BA2232BC189FA403002C5B6A /* FSNSString.m in Sources */, + EDC2C8F91A1AA34D00942777 /* FSObjectInspectorBackgroundView.m in Sources */, BA2232BD189FA403002C5B6A /* FSSymbolTable.m in Sources */, BA2232BE189FA403002C5B6A /* TestFS.m in Sources */, BA2232BF189FA403002C5B6A /* FSObjectBrowserViewObjectInfo.m in Sources */, @@ -6689,6 +8543,7 @@ BA2232D6189FA403002C5B6A /* FSTestObjCClass2.m in Sources */, BA2232D7189FA403002C5B6A /* FSCNCategory.m in Sources */, BA2232D8189FA403002C5B6A /* FSCNMessage.m in Sources */, + EDA6AC611A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.m in Sources */, BA2232D9189FA403002C5B6A /* FSCNSuper.m in Sources */, BA2232DA189FA403002C5B6A /* FSCNUnaryMessage.m in Sources */, BA2232DB189FA403002C5B6A /* FSCNBinaryMessage.m in Sources */, @@ -6697,6 +8552,7 @@ BA2232DE189FA403002C5B6A /* FSCNStatementList.m in Sources */, BA2232DF189FA403002C5B6A /* FSCNPrecomputedObject.m in Sources */, BA2232E0189FA403002C5B6A /* FSCNArray.m in Sources */, + EDA6AC4B1A1F407C001CD1F2 /* FSObjectInspectorOutlineView.m in Sources */, BA2232E1189FA403002C5B6A /* FSCNBlock.m in Sources */, BA2232E2189FA403002C5B6A /* FSCNAssignment.m in Sources */, BA2232E3189FA403002C5B6A /* FSCNMethod.m in Sources */, @@ -6708,6 +8564,7 @@ BA2232E9189FA403002C5B6A /* Block.m in Sources */, BA2232EA189FA403002C5B6A /* Number.m in Sources */, BA2232EB189FA403002C5B6A /* FSGlobalScope.m in Sources */, + ED8319281A1BC2B500290EE2 /* FSUtils.m in Sources */, BA2232EC189FA403002C5B6A /* FSNSFileHandle.m in Sources */, BA2232ED189FA403002C5B6A /* FSAssociation.m in Sources */, BA2232EE189FA403002C5B6A /* FSCNDictionary.m in Sources */, @@ -6739,6 +8596,8 @@ BA223432189FA412002C5B6A /* BlockStackElem.m in Sources */, BA223433189FA412002C5B6A /* CLIView.m in Sources */, BA223434189FA412002C5B6A /* FSCompilationResult.m in Sources */, + ED3004F21A1A86EF00675D94 /* FSObjectInspectorViewController.m in Sources */, + ED83193F1A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.m in Sources */, BA223435189FA412002C5B6A /* CompiledCodeNode.m in Sources */, BA223436189FA412002C5B6A /* FSCompiler.m in Sources */, BA223437189FA412002C5B6A /* FSConstantsInitialization.m in Sources */, @@ -6776,7 +8635,9 @@ BA223457189FA412002C5B6A /* Space.m in Sources */, BA223458189FA412002C5B6A /* FSCommandHistory.m in Sources */, BA223459189FA412002C5B6A /* FSSystem.m in Sources */, + ED8222F21A19554F00C42C72 /* FSObjectEnumInfo.m in Sources */, BA22345A189FA412002C5B6A /* DOTest.m in Sources */, + ED68BE5B1A35E94B00968430 /* FSObjectBrowserWindow.m in Sources */, BA22345B189FA412002C5B6A /* FSNSProtocolChecker.m in Sources */, BA22345C189FA412002C5B6A /* fs_main.m in Sources */, BA22345D189FA412002C5B6A /* FScriptAppController.m in Sources */, @@ -6793,9 +8654,12 @@ BA223468189FA412002C5B6A /* FSObjectFormatter.m in Sources */, BA223469189FA412002C5B6A /* FSKeyedUnarchiver.m in Sources */, BA22346A189FA412002C5B6A /* FSKeyedArchiver.m in Sources */, + ED8222E11A194FD600C42C72 /* FSObjectInspectorViewModelItem.m in Sources */, BA22346B189FA412002C5B6A /* FSConstantListBuilder.m in Sources */, BA22346C189FA412002C5B6A /* FSImageInspector.m in Sources */, BA22346D189FA412002C5B6A /* FSNSImage.m in Sources */, + ED3CB64D1A1E5B3300771077 /* FSColorWell.m in Sources */, + EDC2C8E81A1A943600942777 /* FSDetailedObjectInspector.m in Sources */, BA22346E189FA412002C5B6A /* FSObjectBrowserToolbarItem.m in Sources */, BA22346F189FA412002C5B6A /* FSArrayEnumerator.m in Sources */, BA223470189FA412002C5B6A /* FSNSMutableArray.m in Sources */, @@ -6811,6 +8675,7 @@ BA22347A189FA412002C5B6A /* FSNSFont.m in Sources */, BA22347B189FA412002C5B6A /* FSObjectBrowserMatrix.m in Sources */, BA22347C189FA412002C5B6A /* FSNSString.m in Sources */, + EDC2C8FB1A1AA34D00942777 /* FSObjectInspectorBackgroundView.m in Sources */, BA22347D189FA412002C5B6A /* FSSymbolTable.m in Sources */, BA22347E189FA412002C5B6A /* TestFS.m in Sources */, BA22347F189FA412002C5B6A /* FSObjectBrowserViewObjectInfo.m in Sources */, @@ -6839,6 +8704,7 @@ BA223496189FA412002C5B6A /* FSTestObjCClass2.m in Sources */, BA223497189FA412002C5B6A /* FSCNCategory.m in Sources */, BA223498189FA412002C5B6A /* FSCNMessage.m in Sources */, + EDA6AC631A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.m in Sources */, BA223499189FA412002C5B6A /* FSCNSuper.m in Sources */, BA22349A189FA412002C5B6A /* FSCNUnaryMessage.m in Sources */, BA22349B189FA412002C5B6A /* FSCNBinaryMessage.m in Sources */, @@ -6847,6 +8713,7 @@ BA22349E189FA412002C5B6A /* FSCNStatementList.m in Sources */, BA22349F189FA412002C5B6A /* FSCNPrecomputedObject.m in Sources */, BA2234A0189FA412002C5B6A /* FSCNArray.m in Sources */, + EDA6AC4D1A1F407C001CD1F2 /* FSObjectInspectorOutlineView.m in Sources */, BA2234A1189FA412002C5B6A /* FSCNBlock.m in Sources */, BA2234A2189FA412002C5B6A /* FSCNAssignment.m in Sources */, BA2234A3189FA412002C5B6A /* FSCNMethod.m in Sources */, @@ -6858,6 +8725,7 @@ BA2234A9189FA412002C5B6A /* Block.m in Sources */, BA2234AA189FA412002C5B6A /* Number.m in Sources */, BA2234AB189FA412002C5B6A /* FSGlobalScope.m in Sources */, + ED83192A1A1BC2B500290EE2 /* FSUtils.m in Sources */, BA2234AC189FA412002C5B6A /* FSNSFileHandle.m in Sources */, BA2234AD189FA412002C5B6A /* FSAssociation.m in Sources */, BA2234AE189FA412002C5B6A /* FSCNDictionary.m in Sources */, @@ -6895,11 +8763,14 @@ BA2235EB189FA429002C5B6A /* FSFlight.m in Sources */, BA2235EC189FA429002C5B6A /* FSArchiver.m in Sources */, BA2235ED189FA429002C5B6A /* FSBoolean.m in Sources */, + ED8222E01A194FD600C42C72 /* FSObjectInspectorViewModelItem.m in Sources */, BA2235EE189FA429002C5B6A /* FScriptFunctions.m in Sources */, + EDC2C8E71A1A943600942777 /* FSDetailedObjectInspector.m in Sources */, BA2235EF189FA429002C5B6A /* FSInterpreter.m in Sources */, BA2235F0189FA429002C5B6A /* FSInterpreterResult.m in Sources */, BA2235F1189FA429002C5B6A /* FSInterpreterView.m in Sources */, BA2235F2189FA429002C5B6A /* FSNSArray.m in Sources */, + ED3CB64C1A1E5B3300771077 /* FSColorWell.m in Sources */, BA2235F3189FA429002C5B6A /* FSNSDate.m in Sources */, BA2235F4189FA429002C5B6A /* FSNSDictionary.m in Sources */, BA2235F5189FA429002C5B6A /* FSNSMutableString.m in Sources */, @@ -6941,6 +8812,7 @@ BA223619189FA429002C5B6A /* FSIdentifierFormatter.m in Sources */, BA22361A189FA429002C5B6A /* FSKeyedUnarchiver.m in Sources */, BA22361B189FA429002C5B6A /* FSKeyedArchiver.m in Sources */, + ED68BE5A1A35E94B00968430 /* FSObjectBrowserWindow.m in Sources */, BA22361C189FA429002C5B6A /* FSConstantListBuilder.m in Sources */, BA22361D189FA429002C5B6A /* FSImageInspector.m in Sources */, BA22361E189FA429002C5B6A /* FSNSImage.m in Sources */, @@ -6951,17 +8823,20 @@ BA223623189FA429002C5B6A /* FSNSValue.m in Sources */, BA223624189FA429002C5B6A /* FSReplacementForCoderForNilInArray.m in Sources */, BA223625189FA429002C5B6A /* FSNamedNumber.m in Sources */, + ED83193E1A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.m in Sources */, BA223626189FA429002C5B6A /* FSCollectionInspectorTableView.m in Sources */, BA223627189FA429002C5B6A /* FSNSSet.m in Sources */, BA223628189FA429002C5B6A /* FSAttributedStringInspector.m in Sources */, BA223629189FA429002C5B6A /* FSNSAttributedString.m in Sources */, BA22362A189FA429002C5B6A /* FScriptMenuItem.m in Sources */, + ED8319291A1BC2B500290EE2 /* FSUtils.m in Sources */, BA22362B189FA429002C5B6A /* FSNSFont.m in Sources */, BA22362C189FA429002C5B6A /* FSObjectBrowserMatrix.m in Sources */, BA22362D189FA429002C5B6A /* FSSymbolTable.m in Sources */, BA22362E189FA429002C5B6A /* FSObjectBrowserViewObjectInfo.m in Sources */, BA22362F189FA429002C5B6A /* FSCollectionInspectorView.m in Sources */, BA223630189FA429002C5B6A /* ArrayRepFetchRequest.m in Sources */, + EDA6AC4C1A1F407C001CD1F2 /* FSObjectInspectorOutlineView.m in Sources */, BA223631189FA429002C5B6A /* FSPointer.m in Sources */, BA223632189FA429002C5B6A /* FSGenericPointer.m in Sources */, BA223633189FA429002C5B6A /* FSObjectPointer.m in Sources */, @@ -6979,6 +8854,7 @@ BA22363F189FA429002C5B6A /* FSCNClassDefinition.m in Sources */, BA223640189FA429002C5B6A /* FSCNBase.m in Sources */, BA223641189FA429002C5B6A /* FSCNIdentifier.m in Sources */, + ED8222F11A19554F00C42C72 /* FSObjectEnumInfo.m in Sources */, BA223642189FA429002C5B6A /* FSTestObjCClass1.m in Sources */, BA223643189FA429002C5B6A /* FSTestObjCClass2.m in Sources */, BA223644189FA429002C5B6A /* FSCNCategory.m in Sources */, @@ -6993,6 +8869,8 @@ BA22364D189FA429002C5B6A /* FSCNArray.m in Sources */, BA22364E189FA429002C5B6A /* FSCNBlock.m in Sources */, BA22364F189FA429002C5B6A /* FSCNAssignment.m in Sources */, + EDA6AC621A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.m in Sources */, + ED3004F11A1A86EF00675D94 /* FSObjectInspectorViewController.m in Sources */, BA223650189FA429002C5B6A /* FSCNMethod.m in Sources */, BA223651189FA429002C5B6A /* FSCNReturn.m in Sources */, BA223652189FA429002C5B6A /* FSClassDefinition.m in Sources */, @@ -7005,6 +8883,7 @@ BA223659189FA429002C5B6A /* FSNSFileHandle.m in Sources */, BA22365A189FA429002C5B6A /* FSAssociation.m in Sources */, BA22365B189FA429002C5B6A /* FSCNDictionary.m in Sources */, + EDC2C8FA1A1AA34D00942777 /* FSObjectInspectorBackgroundView.m in Sources */, BA22365C189FA429002C5B6A /* FSObjectBrowserBottomBarTextDisplay.m in Sources */, BA22365D189FA429002C5B6A /* FSNSAffineTransform.m in Sources */, BA22365E189FA429002C5B6A /* FSNewlyAllocatedObject.m in Sources */, @@ -7038,11 +8917,14 @@ BA223733189FA431002C5B6A /* FSFlight.m in Sources */, BA223734189FA431002C5B6A /* FSArchiver.m in Sources */, BA223735189FA431002C5B6A /* FSBoolean.m in Sources */, + ED8222E21A194FD600C42C72 /* FSObjectInspectorViewModelItem.m in Sources */, BA223736189FA431002C5B6A /* FScriptFunctions.m in Sources */, + EDC2C8E91A1A943600942777 /* FSDetailedObjectInspector.m in Sources */, BA223737189FA431002C5B6A /* FSInterpreter.m in Sources */, BA223738189FA431002C5B6A /* FSInterpreterResult.m in Sources */, BA223739189FA431002C5B6A /* FSInterpreterView.m in Sources */, BA22373A189FA431002C5B6A /* FSNSArray.m in Sources */, + ED3CB64E1A1E5B3300771077 /* FSColorWell.m in Sources */, BA22373B189FA431002C5B6A /* FSNSDate.m in Sources */, BA22373C189FA431002C5B6A /* FSNSDictionary.m in Sources */, BA22373D189FA431002C5B6A /* FSNSMutableString.m in Sources */, @@ -7084,6 +8966,7 @@ BA223761189FA431002C5B6A /* FSIdentifierFormatter.m in Sources */, BA223762189FA431002C5B6A /* FSKeyedUnarchiver.m in Sources */, BA223763189FA431002C5B6A /* FSKeyedArchiver.m in Sources */, + ED68BE5C1A35E94B00968430 /* FSObjectBrowserWindow.m in Sources */, BA223764189FA431002C5B6A /* FSConstantListBuilder.m in Sources */, BA223765189FA431002C5B6A /* FSImageInspector.m in Sources */, BA223766189FA431002C5B6A /* FSNSImage.m in Sources */, @@ -7094,17 +8977,20 @@ BA22376B189FA431002C5B6A /* FSNSValue.m in Sources */, BA22376C189FA431002C5B6A /* FSReplacementForCoderForNilInArray.m in Sources */, BA22376D189FA431002C5B6A /* FSNamedNumber.m in Sources */, + ED8319401A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.m in Sources */, BA22376E189FA431002C5B6A /* FSCollectionInspectorTableView.m in Sources */, BA22376F189FA431002C5B6A /* FSNSSet.m in Sources */, BA223770189FA431002C5B6A /* FSAttributedStringInspector.m in Sources */, BA223771189FA431002C5B6A /* FSNSAttributedString.m in Sources */, BA223772189FA431002C5B6A /* FScriptMenuItem.m in Sources */, + ED83192B1A1BC2B500290EE2 /* FSUtils.m in Sources */, BA223773189FA431002C5B6A /* FSNSFont.m in Sources */, BA223774189FA431002C5B6A /* FSObjectBrowserMatrix.m in Sources */, BA223775189FA431002C5B6A /* FSSymbolTable.m in Sources */, BA223776189FA431002C5B6A /* FSObjectBrowserViewObjectInfo.m in Sources */, BA223777189FA431002C5B6A /* FSCollectionInspectorView.m in Sources */, BA223778189FA431002C5B6A /* ArrayRepFetchRequest.m in Sources */, + EDA6AC4E1A1F407C001CD1F2 /* FSObjectInspectorOutlineView.m in Sources */, BA223779189FA432002C5B6A /* FSPointer.m in Sources */, BA22377A189FA432002C5B6A /* FSGenericPointer.m in Sources */, BA22377B189FA432002C5B6A /* FSObjectPointer.m in Sources */, @@ -7122,6 +9008,7 @@ BA223787189FA432002C5B6A /* FSCNClassDefinition.m in Sources */, BA223788189FA432002C5B6A /* FSCNBase.m in Sources */, BA223789189FA432002C5B6A /* FSCNIdentifier.m in Sources */, + ED8222F31A19554F00C42C72 /* FSObjectEnumInfo.m in Sources */, BA22378A189FA432002C5B6A /* FSTestObjCClass1.m in Sources */, BA22378B189FA432002C5B6A /* FSTestObjCClass2.m in Sources */, BA22378C189FA432002C5B6A /* FSCNCategory.m in Sources */, @@ -7136,6 +9023,8 @@ BA223795189FA432002C5B6A /* FSCNArray.m in Sources */, BA223796189FA432002C5B6A /* FSCNBlock.m in Sources */, BA223797189FA432002C5B6A /* FSCNAssignment.m in Sources */, + EDA6AC641A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.m in Sources */, + ED3004F31A1A86EF00675D94 /* FSObjectInspectorViewController.m in Sources */, BA223798189FA432002C5B6A /* FSCNMethod.m in Sources */, BA223799189FA432002C5B6A /* FSCNReturn.m in Sources */, BA22379A189FA432002C5B6A /* FSClassDefinition.m in Sources */, @@ -7148,6 +9037,7 @@ BA2237A1189FA432002C5B6A /* FSNSFileHandle.m in Sources */, BA2237A2189FA432002C5B6A /* FSAssociation.m in Sources */, BA2237A3189FA432002C5B6A /* FSCNDictionary.m in Sources */, + EDC2C8FC1A1AA34D00942777 /* FSObjectInspectorBackgroundView.m in Sources */, BA2237A4189FA432002C5B6A /* FSObjectBrowserBottomBarTextDisplay.m in Sources */, BA2237A5189FA432002C5B6A /* FSNSAffineTransform.m in Sources */, BA2237A6189FA432002C5B6A /* FSNewlyAllocatedObject.m in Sources */, @@ -7156,6 +9046,321 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + EDC2C9CC1A1AA50D00942777 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EDC2C9CD1A1AA50D00942777 /* FSAirplane.m in Sources */, + EDC2C9CE1A1AA50D00942777 /* ArrayRepDouble.m in Sources */, + EDC2C9CF1A1AA50D00942777 /* ArrayRepEmpty.m in Sources */, + EDC2C9D01A1AA50D00942777 /* ArrayRepId.m in Sources */, + EDC2C9D11A1AA50D00942777 /* FSCollectionInspector.m in Sources */, + EDC2C9D21A1AA50D00942777 /* FSObjectBrowser.m in Sources */, + EDC2C9D31A1AA50D00942777 /* FSObjectBrowserArgumentPanel.m in Sources */, + EDC2C9D41A1AA50D00942777 /* FSObjectBrowserCell.m in Sources */, + EDC2C9D51A1AA50D00942777 /* FSObjectBrowserView.m in Sources */, + EDC2C9D61A1AA50D00942777 /* FSBlock.m in Sources */, + EDC2C9D71A1AA50D00942777 /* BlockInspector.m in Sources */, + EDC2C9D81A1AA50D00942777 /* BlockRep.m in Sources */, + EDC2C9D91A1AA50D00942777 /* BlockStackElem.m in Sources */, + EDC2C9DA1A1AA50D00942777 /* CLIView.m in Sources */, + EDC2C9DB1A1AA50D00942777 /* FSCompilationResult.m in Sources */, + EDC2C9DC1A1AA50D00942777 /* FSObjectInspectorViewController.m in Sources */, + ED8319411A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.m in Sources */, + EDC2C9DD1A1AA50D00942777 /* CompiledCodeNode.m in Sources */, + EDC2C9DE1A1AA50D00942777 /* FSCompiler.m in Sources */, + EDC2C9DF1A1AA50D00942777 /* FSConstantsInitialization.m in Sources */, + EDC2C9E01A1AA50D00942777 /* FSExecEngine.m in Sources */, + EDC2C9E11A1AA50D00942777 /* FSExecutor.m in Sources */, + EDC2C9E21A1AA50D00942777 /* FSFlight.m in Sources */, + EDC2C9E41A1AA50D00942777 /* FSArchiver.m in Sources */, + EDC2C9E51A1AA50D00942777 /* FSBoolean.m in Sources */, + EDC2C9E61A1AA50D00942777 /* FScriptFunctions.m in Sources */, + EDC2C9E71A1AA50D00942777 /* FScriptTextView.m in Sources */, + EDC2C9E81A1AA50D00942777 /* FSInterpreter.m in Sources */, + EDC2C9E91A1AA50D00942777 /* FSInterpreterResult.m in Sources */, + EDC2C9EA1A1AA50D00942777 /* FSInterpreterView.m in Sources */, + EDC2C9EB1A1AA50D00942777 /* FSNSArray.m in Sources */, + EDC2C9EC1A1AA50D00942777 /* FSNSDate.m in Sources */, + EDC2C9ED1A1AA50D00942777 /* FSNSDictionary.m in Sources */, + EDC2C9EE1A1AA50D00942777 /* FSNSDistantObject.m in Sources */, + EDC2C9EF1A1AA50D00942777 /* FSNSMutableString.m in Sources */, + EDC2C9F11A1AA50D00942777 /* FSNSNumber.m in Sources */, + EDC2C9F21A1AA50D00942777 /* FSNSObject.m in Sources */, + EDC2C9F31A1AA50D00942777 /* FSNSProxy.m in Sources */, + EDC2C9F41A1AA50D00942777 /* FSPattern.m in Sources */, + EDC2C9F51A1AA50D00942777 /* FSUnarchiver.m in Sources */, + EDC2C9F61A1AA50D00942777 /* FSVoid.m in Sources */, + EDC2C9F71A1AA50D00942777 /* FSGenericObjectInspector.m in Sources */, + EDC2C9F81A1AA50D00942777 /* KTestManager.m in Sources */, + EDC2C9F91A1AA50D00942777 /* FSMiscTools.m in Sources */, + EDC2C9FA1A1AA50D00942777 /* FSMsgContext.m in Sources */, + EDC2C9FB1A1AA50D00942777 /* FSNewlyAllocatedObjectHolder.m in Sources */, + EDC2C9FC1A1AA50D00942777 /* FSNumber.m in Sources */, + EDC2C9FD1A1AA50D00942777 /* FSPilot.m in Sources */, + EDC2C9FE1A1AA50D00942777 /* MessagePatternCodeNode.m in Sources */, + EDC2C9FF1A1AA50D00942777 /* FSReplacementForCoderForClass.m in Sources */, + EDC2CA001A1AA50D00942777 /* ShellView.m in Sources */, + EDC2CA011A1AA50D00942777 /* Space.m in Sources */, + EDC2CA021A1AA50D00942777 /* FSCommandHistory.m in Sources */, + EDC2CA031A1AA50D00942777 /* FSSystem.m in Sources */, + EDC2CA041A1AA50D00942777 /* FSObjectEnumInfo.m in Sources */, + EDC2CA051A1AA50D00942777 /* DOTest.m in Sources */, + ED68BE5D1A35E94B00968430 /* FSObjectBrowserWindow.m in Sources */, + EDC2CA061A1AA50D00942777 /* FSNSProtocolChecker.m in Sources */, + EDC2CA071A1AA50D00942777 /* fs_main.m in Sources */, + EDC2CA081A1AA50D00942777 /* FScriptAppController.m in Sources */, + EDC2CA091A1AA50D00942777 /* FSObjectBrowserToolbar.m in Sources */, + EDC2CA0A1A1AA50D00942777 /* FSEvalCommand.m in Sources */, + EDC2CA0B1A1AA50D00942777 /* FSServicesProvider.m in Sources */, + EDC2CA0C1A1AA50D00942777 /* FSTask.m in Sources */, + EDC2CA0D1A1AA50D00942777 /* FSObjectBrowserToolbarButton.m in Sources */, + EDC2CA0E1A1AA50D00942777 /* FSObjectBrowserButtonsInspector.m in Sources */, + EDC2CA0F1A1AA50D00942777 /* FSObjectBrowserButtonCtxBlock.m in Sources */, + EDC2CA101A1AA50D00942777 /* DOCustom.m in Sources */, + EDC2CA111A1AA50D00942777 /* Pointer.m in Sources */, + EDC2CA121A1AA50D00942777 /* FSIdentifierFormatter.m in Sources */, + EDC2CA131A1AA50D00942777 /* FSObjectFormatter.m in Sources */, + EDC2CA141A1AA50D00942777 /* FSKeyedUnarchiver.m in Sources */, + EDC2CA151A1AA50D00942777 /* FSKeyedArchiver.m in Sources */, + EDC2CA161A1AA50D00942777 /* FSObjectInspectorViewModelItem.m in Sources */, + EDC2CA171A1AA50D00942777 /* FSConstantListBuilder.m in Sources */, + EDC2CA181A1AA50D00942777 /* FSImageInspector.m in Sources */, + EDC2CA191A1AA50D00942777 /* FSNSImage.m in Sources */, + ED3CB64F1A1E5B3300771077 /* FSColorWell.m in Sources */, + EDC2CA1A1A1AA50D00942777 /* FSDetailedObjectInspector.m in Sources */, + EDC2CA1B1A1AA50D00942777 /* FSObjectBrowserToolbarItem.m in Sources */, + EDC2CA1C1A1AA50D00942777 /* FSArrayEnumerator.m in Sources */, + EDC2CA1D1A1AA50D00942777 /* FSNSMutableArray.m in Sources */, + EDC2CA1E1A1AA50D00942777 /* ArrayRepBoolean.m in Sources */, + EDC2CA1F1A1AA50D00942777 /* FSNSValue.m in Sources */, + EDC2CA201A1AA50D00942777 /* FSReplacementForCoderForNilInArray.m in Sources */, + EDC2CA211A1AA50D00942777 /* FSNamedNumber.m in Sources */, + EDC2CA221A1AA50D00942777 /* FSCollectionInspectorTableView.m in Sources */, + EDC2CA231A1AA50D00942777 /* FSNSSet.m in Sources */, + EDC2CA241A1AA50D00942777 /* FSAttributedStringInspector.m in Sources */, + EDC2CA251A1AA50D00942777 /* FSNSAttributedString.m in Sources */, + EDC2CA261A1AA50D00942777 /* FScriptMenuItem.m in Sources */, + EDC2CA271A1AA50D00942777 /* FSNSFont.m in Sources */, + EDC2CA281A1AA50D00942777 /* FSObjectBrowserMatrix.m in Sources */, + EDC2CA291A1AA50D00942777 /* FSNSString.m in Sources */, + EDC2CA2A1A1AA50D00942777 /* FSObjectInspectorBackgroundView.m in Sources */, + EDC2CA2B1A1AA50D00942777 /* FSSymbolTable.m in Sources */, + EDC2CA2C1A1AA50D00942777 /* TestFS.m in Sources */, + EDC2CA2D1A1AA50D00942777 /* FSObjectBrowserViewObjectInfo.m in Sources */, + EDC2CA2E1A1AA50D00942777 /* FSCollectionInspectorView.m in Sources */, + EDC2CA2F1A1AA50D00942777 /* ArrayRepFetchRequest.m in Sources */, + EDC2CA301A1AA50D00942777 /* FSPointer.m in Sources */, + EDC2CA311A1AA50D00942777 /* FSGenericPointer.m in Sources */, + EDC2CA321A1AA50D00942777 /* FSObjectPointer.m in Sources */, + EDC2CA331A1AA50D00942777 /* FSManagedObjectContextInspector.m in Sources */, + EDC2CA341A1AA50D00942777 /* FSObjectBrowserNamedObjectWrapper.m in Sources */, + EDC2CA351A1AA50D00942777 /* FSInspectorUniquier.m in Sources */, + EDC2CA361A1AA50D00942777 /* FSPredicateTextView.m in Sources */, + EDC2CA371A1AA50D00942777 /* FSCoreDataSample.m in Sources */, + EDC2CA381A1AA50D00942777 /* FSNSManagedObjectContext.m in Sources */, + EDC2CA391A1AA50D00942777 /* FSObjectBrowserSearchField.m in Sources */, + EDC2CA3A1A1AA50D00942777 /* FSBlockCompilationResult.m in Sources */, + EDC2CA3B1A1AA50D00942777 /* FSReturnSignal.m in Sources */, + EDC2CA3C1A1AA50D00942777 /* FSConstantsDictionaryGenerator.m in Sources */, + EDC2CA3D1A1AA50D00942777 /* FSQTMovie.m in Sources */, + EDC2CA3E1A1AA50D00942777 /* FSMovieInspector.m in Sources */, + EDC2CA3F1A1AA50D00942777 /* FSMethod.m in Sources */, + EDC2CA401A1AA50D00942777 /* FSCNClassDefinition.m in Sources */, + EDC2CA411A1AA50D00942777 /* FSCNBase.m in Sources */, + EDC2CA421A1AA50D00942777 /* FSCNIdentifier.m in Sources */, + EDC2CA431A1AA50D00942777 /* FSTestObjCClass1.m in Sources */, + EDC2CA451A1AA50D00942777 /* FSTestObjCClass2.m in Sources */, + EDC2CA461A1AA50D00942777 /* FSCNCategory.m in Sources */, + EDC2CA471A1AA50D00942777 /* FSCNMessage.m in Sources */, + EDA6AC651A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.m in Sources */, + EDC2CA481A1AA50D00942777 /* FSCNSuper.m in Sources */, + EDC2CA491A1AA50D00942777 /* FSCNUnaryMessage.m in Sources */, + EDC2CA4A1A1AA50D00942777 /* FSCNBinaryMessage.m in Sources */, + EDC2CA4B1A1AA50D00942777 /* FSCNKeywordMessage.m in Sources */, + EDC2CA4C1A1AA50D00942777 /* FSCNCascade.m in Sources */, + EDC2CA4D1A1AA50D00942777 /* FSCNStatementList.m in Sources */, + EDC2CA4E1A1AA50D00942777 /* FSCNPrecomputedObject.m in Sources */, + EDC2CA4F1A1AA50D00942777 /* FSCNArray.m in Sources */, + EDA6AC4F1A1F407C001CD1F2 /* FSObjectInspectorOutlineView.m in Sources */, + EDC2CA501A1AA50D00942777 /* FSCNBlock.m in Sources */, + EDC2CA511A1AA50D00942777 /* FSCNAssignment.m in Sources */, + EDC2CA521A1AA50D00942777 /* FSCNMethod.m in Sources */, + EDC2CA531A1AA50D00942777 /* FSCNReturn.m in Sources */, + EDC2CA541A1AA50D00942777 /* FSClassDefinition.m in Sources */, + EDC2CA551A1AA50D00942777 /* FSTranscript.m in Sources */, + EDC2CA561A1AA50D00942777 /* FSArray.m in Sources */, + EDC2CA571A1AA50D00942777 /* Array.m in Sources */, + EDC2CA581A1AA50D00942777 /* Block.m in Sources */, + EDC2CA591A1AA50D00942777 /* Number.m in Sources */, + EDC2CA5A1A1AA50D00942777 /* FSGlobalScope.m in Sources */, + ED83192C1A1BC2B500290EE2 /* FSUtils.m in Sources */, + EDC2CA5B1A1AA50D00942777 /* FSNSFileHandle.m in Sources */, + EDC2CA5C1A1AA50D00942777 /* FSAssociation.m in Sources */, + EDC2CA5D1A1AA50D00942777 /* FSCNDictionary.m in Sources */, + EDC2CA5E1A1AA50D00942777 /* FSObjectBrowserBottomBarTextDisplay.m in Sources */, + EDC2CA5F1A1AA50D00942777 /* FSNSAffineTransform.m in Sources */, + EDC2CA601A1AA50D00942777 /* FSDemoAssistant.m in Sources */, + EDC2CA611A1AA50D00942777 /* FSNewlyAllocatedObject.m in Sources */, + EDC2CA621A1AA50D00942777 /* FSWorksWhenModalWindow.m in Sources */, + EDC2CA631A1AA50D00942777 /* FSNSMutableDictionary.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EDC2CB8F1A1AA52500942777 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EDC2CB901A1AA52500942777 /* FSAirplane.m in Sources */, + EDC2CB911A1AA52500942777 /* ArrayRepDouble.m in Sources */, + EDC2CB921A1AA52500942777 /* ArrayRepEmpty.m in Sources */, + EDC2CB931A1AA52500942777 /* ArrayRepId.m in Sources */, + EDC2CB941A1AA52500942777 /* FSCollectionInspector.m in Sources */, + EDC2CB951A1AA52500942777 /* FSObjectBrowser.m in Sources */, + EDC2CB961A1AA52500942777 /* FSObjectBrowserCell.m in Sources */, + EDC2CB971A1AA52500942777 /* FSBlock.m in Sources */, + EDC2CB981A1AA52500942777 /* BlockInspector.m in Sources */, + EDC2CB991A1AA52500942777 /* BlockRep.m in Sources */, + EDC2CB9A1A1AA52500942777 /* BlockStackElem.m in Sources */, + EDC2CB9B1A1AA52500942777 /* CLIView.m in Sources */, + EDC2CB9C1A1AA52500942777 /* FSCompilationResult.m in Sources */, + EDC2CB9D1A1AA52500942777 /* CompiledCodeNode.m in Sources */, + EDC2CB9E1A1AA52500942777 /* FSCompiler.m in Sources */, + EDC2CB9F1A1AA52500942777 /* FSConstantsInitialization.m in Sources */, + EDC2CBA11A1AA52500942777 /* FSExecEngine.m in Sources */, + EDC2CBA21A1AA52500942777 /* FSExecutor.m in Sources */, + EDC2CBA31A1AA52500942777 /* FSFlight.m in Sources */, + EDC2CBA41A1AA52500942777 /* FSArchiver.m in Sources */, + EDC2CBA51A1AA52500942777 /* FSBoolean.m in Sources */, + EDC2CBA61A1AA52500942777 /* FSObjectInspectorViewModelItem.m in Sources */, + EDC2CBA71A1AA52500942777 /* FScriptFunctions.m in Sources */, + EDC2CBA81A1AA52500942777 /* FSDetailedObjectInspector.m in Sources */, + EDC2CBA91A1AA52500942777 /* FSInterpreter.m in Sources */, + EDC2CBAA1A1AA52500942777 /* FSInterpreterResult.m in Sources */, + EDC2CBAB1A1AA52500942777 /* FSInterpreterView.m in Sources */, + EDC2CBAC1A1AA52500942777 /* FSNSArray.m in Sources */, + ED3CB6521A1E5B9100771077 /* FSColorWell.m in Sources */, + EDC2CBAD1A1AA52500942777 /* FSNSDate.m in Sources */, + EDC2CBAE1A1AA52500942777 /* FSNSDictionary.m in Sources */, + EDC2CBB01A1AA52500942777 /* FSNSMutableString.m in Sources */, + EDC2CBB11A1AA52500942777 /* FSNSNumber.m in Sources */, + EDC2CBB21A1AA52500942777 /* FSNSObject.m in Sources */, + EDC2CBB31A1AA52500942777 /* FSNSProxy.m in Sources */, + EDC2CBB41A1AA52500942777 /* FSNSString.m in Sources */, + EDC2CBB51A1AA52500942777 /* FSPattern.m in Sources */, + EDC2CBB61A1AA52500942777 /* FSUnarchiver.m in Sources */, + EDC2CBB71A1AA52500942777 /* FSVoid.m in Sources */, + EDC2CBB81A1AA52500942777 /* FSGenericObjectInspector.m in Sources */, + EDC2CBB91A1AA52500942777 /* MessagePatternCodeNode.m in Sources */, + EDC2CBBA1A1AA52500942777 /* FSMiscTools.m in Sources */, + EDC2CBBB1A1AA52500942777 /* FSMsgContext.m in Sources */, + EDC2CBBC1A1AA52500942777 /* FSNewlyAllocatedObjectHolder.m in Sources */, + EDC2CBBD1A1AA52500942777 /* FSNumber.m in Sources */, + EDC2CBBE1A1AA52500942777 /* FSPilot.m in Sources */, + EDC2CBBF1A1AA52500942777 /* FSReplacementForCoderForClass.m in Sources */, + EDC2CBC01A1AA52500942777 /* ShellView.m in Sources */, + EDC2CBC11A1AA52500942777 /* Space.m in Sources */, + EDC2CBC21A1AA52500942777 /* FSCommandHistory.m in Sources */, + EDC2CBC31A1AA52500942777 /* FSSystem.m in Sources */, + EDC2CBC41A1AA52500942777 /* KTestManager.m in Sources */, + EDC2CBC51A1AA52500942777 /* FSNSDistantObject.m in Sources */, + EDC2CBC61A1AA52500942777 /* DOTest.m in Sources */, + EDC2CBC71A1AA52500942777 /* FScriptTextView.m in Sources */, + EDC2CBC81A1AA52500942777 /* FSObjectBrowserArgumentPanel.m in Sources */, + EDC2CBC91A1AA52500942777 /* FSNSProtocolChecker.m in Sources */, + EDC2CBCA1A1AA52500942777 /* FSObjectBrowserToolbar.m in Sources */, + EDC2CBCB1A1AA52500942777 /* FSEvalCommand.m in Sources */, + EDC2CBCC1A1AA52500942777 /* FSServicesProvider.m in Sources */, + EDC2CBCD1A1AA52500942777 /* FSTask.m in Sources */, + EDC2CBCE1A1AA52500942777 /* FSObjectBrowserToolbarButton.m in Sources */, + EDC2CBCF1A1AA52500942777 /* FSObjectBrowserButtonCtxBlock.m in Sources */, + EDC2CBD01A1AA52500942777 /* FSObjectBrowserButtonsInspector.m in Sources */, + EDC2CBD11A1AA52500942777 /* FSObjectBrowserView.m in Sources */, + EDC2CBD21A1AA52500942777 /* Pointer.m in Sources */, + EDC2CBD31A1AA52500942777 /* FSObjectFormatter.m in Sources */, + EDC2CBD41A1AA52500942777 /* FSIdentifierFormatter.m in Sources */, + EDC2CBD51A1AA52500942777 /* FSKeyedUnarchiver.m in Sources */, + EDC2CBD61A1AA52500942777 /* FSKeyedArchiver.m in Sources */, + ED68BE5E1A35E94B00968430 /* FSObjectBrowserWindow.m in Sources */, + EDC2CBD71A1AA52500942777 /* FSConstantListBuilder.m in Sources */, + EDC2CBD81A1AA52500942777 /* FSImageInspector.m in Sources */, + EDC2CBD91A1AA52500942777 /* FSNSImage.m in Sources */, + EDC2CBDA1A1AA52500942777 /* FSObjectBrowserToolbarItem.m in Sources */, + EDC2CBDB1A1AA52500942777 /* ArrayRepBoolean.m in Sources */, + EDC2CBDC1A1AA52500942777 /* FSArrayEnumerator.m in Sources */, + EDC2CBDD1A1AA52500942777 /* FSNSMutableArray.m in Sources */, + EDC2CBDE1A1AA52500942777 /* FSNSValue.m in Sources */, + EDC2CBDF1A1AA52500942777 /* FSReplacementForCoderForNilInArray.m in Sources */, + EDC2CBE01A1AA52500942777 /* FSNamedNumber.m in Sources */, + ED8319421A1BFA7400290EE2 /* FSObjectInspectorViewController+NonArc.m in Sources */, + EDC2CBE11A1AA52500942777 /* FSCollectionInspectorTableView.m in Sources */, + EDC2CBE21A1AA52500942777 /* FSNSSet.m in Sources */, + EDC2CBE31A1AA52500942777 /* FSAttributedStringInspector.m in Sources */, + EDC2CBE41A1AA52500942777 /* FSNSAttributedString.m in Sources */, + EDC2CBE51A1AA52500942777 /* FScriptMenuItem.m in Sources */, + ED83192D1A1BC2B500290EE2 /* FSUtils.m in Sources */, + EDC2CBE61A1AA52500942777 /* FSNSFont.m in Sources */, + EDC2CBE71A1AA52500942777 /* FSObjectBrowserMatrix.m in Sources */, + EDC2CBE81A1AA52500942777 /* FSSymbolTable.m in Sources */, + EDC2CBE91A1AA52500942777 /* FSObjectBrowserViewObjectInfo.m in Sources */, + EDC2CBEA1A1AA52500942777 /* FSCollectionInspectorView.m in Sources */, + EDC2CBEB1A1AA52500942777 /* ArrayRepFetchRequest.m in Sources */, + EDA6AC501A1F407C001CD1F2 /* FSObjectInspectorOutlineView.m in Sources */, + EDC2CBED1A1AA52500942777 /* FSPointer.m in Sources */, + EDC2CBEE1A1AA52500942777 /* FSGenericPointer.m in Sources */, + EDC2CBEF1A1AA52500942777 /* FSObjectPointer.m in Sources */, + EDC2CBF01A1AA52500942777 /* FSObjectBrowserNamedObjectWrapper.m in Sources */, + EDC2CBF11A1AA52500942777 /* FSInspectorUniquier.m in Sources */, + EDC2CBF21A1AA52500942777 /* FSPredicateTextView.m in Sources */, + EDC2CBF31A1AA52500942777 /* FSCoreDataSample.m in Sources */, + EDC2CBF41A1AA52500942777 /* FSManagedObjectContextInspector.m in Sources */, + EDC2CBF51A1AA52500942777 /* FSNSManagedObjectContext.m in Sources */, + EDC2CBF61A1AA52500942777 /* FSObjectBrowserSearchField.m in Sources */, + EDC2CBF71A1AA52500942777 /* FSBlockCompilationResult.m in Sources */, + EDC2CBF81A1AA52500942777 /* FSReturnSignal.m in Sources */, + EDC2CBF91A1AA52500942777 /* FSMovieInspector.m in Sources */, + EDC2CBFA1A1AA52500942777 /* FSMethod.m in Sources */, + EDC2CBFB1A1AA52500942777 /* FSCNClassDefinition.m in Sources */, + EDC2CBFC1A1AA52500942777 /* FSCNBase.m in Sources */, + EDC2CBFD1A1AA52500942777 /* FSCNIdentifier.m in Sources */, + EDC2CBFE1A1AA52500942777 /* FSObjectEnumInfo.m in Sources */, + EDC2CBFF1A1AA52500942777 /* FSTestObjCClass1.m in Sources */, + EDC2CC001A1AA52500942777 /* FSTestObjCClass2.m in Sources */, + EDC2CC011A1AA52500942777 /* FSCNCategory.m in Sources */, + EDC2CC021A1AA52500942777 /* FSCNMessage.m in Sources */, + EDC2CC031A1AA52500942777 /* FSCNSuper.m in Sources */, + EDC2CC041A1AA52500942777 /* FSCNUnaryMessage.m in Sources */, + EDC2CC051A1AA52500942777 /* FSCNBinaryMessage.m in Sources */, + EDC2CC061A1AA52500942777 /* FSCNKeywordMessage.m in Sources */, + EDC2CC071A1AA52500942777 /* FSCNCascade.m in Sources */, + EDC2CC081A1AA52500942777 /* FSCNStatementList.m in Sources */, + EDC2CC091A1AA52500942777 /* FSCNPrecomputedObject.m in Sources */, + EDC2CC0A1A1AA52500942777 /* FSCNArray.m in Sources */, + EDC2CC0B1A1AA52500942777 /* FSCNBlock.m in Sources */, + EDC2CC0C1A1AA52500942777 /* FSCNAssignment.m in Sources */, + EDA6AC661A1F52E6001CD1F2 /* FSObjectInspectorOptionsViewController.m in Sources */, + EDC2CC0D1A1AA52500942777 /* FSObjectInspectorViewController.m in Sources */, + EDC2CC0E1A1AA52500942777 /* FSCNMethod.m in Sources */, + EDC2CC0F1A1AA52500942777 /* FSCNReturn.m in Sources */, + EDC2CC101A1AA52500942777 /* FSClassDefinition.m in Sources */, + EDC2CC111A1AA52500942777 /* FSTranscript.m in Sources */, + EDC2CC121A1AA52500942777 /* FSArray.m in Sources */, + EDC2CC131A1AA52500942777 /* Array.m in Sources */, + EDC2CC141A1AA52500942777 /* Block.m in Sources */, + EDC2CC151A1AA52500942777 /* Number.m in Sources */, + EDC2CC161A1AA52500942777 /* FSGlobalScope.m in Sources */, + EDC2CC171A1AA52500942777 /* FSNSFileHandle.m in Sources */, + EDC2CC181A1AA52500942777 /* FSAssociation.m in Sources */, + EDC2CC191A1AA52500942777 /* FSCNDictionary.m in Sources */, + EDC2CC1A1A1AA52500942777 /* FSObjectInspectorBackgroundView.m in Sources */, + EDC2CC1B1A1AA52500942777 /* FSObjectBrowserBottomBarTextDisplay.m in Sources */, + EDC2CC1C1A1AA52500942777 /* FSNSAffineTransform.m in Sources */, + EDC2CC1D1A1AA52500942777 /* FSNewlyAllocatedObject.m in Sources */, + EDC2CC1E1A1AA52500942777 /* FSWorksWhenModalWindow.m in Sources */, + EDC2CC1F1A1AA52500942777 /* FSNSMutableDictionary.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -7535,6 +9740,7 @@ FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + "$(DEVELOPER_FRAMEWORKS_DIR)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SYSTEM_DEVELOPER_DIR)/Library/Frameworks\""; GCC_DYNAMIC_NO_PIC = NO; @@ -7566,6 +9772,7 @@ FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_1)", + "$(DEVELOPER_FRAMEWORKS_DIR)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_1 = "\"$(SYSTEM_DEVELOPER_DIR)/Library/Frameworks\""; GCC_ENABLE_OBJC_GC = unsupported; @@ -7835,7 +10042,7 @@ OTHER_LIBTOOL_FLAGS = "$(value) "; OTHER_REZFLAGS = ""; PRINCIPAL_CLASS = ""; - PRODUCT_NAME = FScriptFramework; + PRODUCT_NAME = FScript; SECTORDER_FLAGS = ""; SKIP_INSTALL = YES; WRAPPER_EXTENSION = framework; @@ -7870,7 +10077,156 @@ OTHER_LIBTOOL_FLAGS = "$(value) "; OTHER_REZFLAGS = ""; PRINCIPAL_CLASS = ""; - PRODUCT_NAME = FScriptFramework; + PRODUCT_NAME = FScript; + SECTORDER_FLAGS = ""; + SKIP_INSTALL = YES; + WRAPPER_EXTENSION = framework; + ZERO_LINK = NO; + }; + name = Release; + }; + EDC2CACB1A1AA50D00942777 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + AUTO_SHADOW = YES; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = "$(value) NO"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + "$(DEVELOPER_FRAMEWORKS_DIR)", + ); + FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(DEVELOPER_FRAMEWORKS_DIR)\""; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_PASCAL_STRINGS = NO; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_MODEL_TUNING = ""; + GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; + GCC_WARN_UNKNOWN_PRAGMAS = NO; + HEADER_SEARCH_PATHS = ""; + INFOPLIST_FILE = "F-Script 10.9 copy-Info.plist"; + MACOSX_DEPLOYMENT_TARGET = 10.10; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = "-lffi"; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = "F-Script"; + SDKROOT = macosx10.10; + SECTORDER_FLAGS = ""; + VALID_ARCHS = x86_64; + WRAPPER_EXTENSION = app; + ZERO_LINK = NO; + }; + name = Debug; + }; + EDC2CACC1A1AA50D00942777 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(FRAMEWORK_SEARCH_PATHS_QUOTED_1)", + "$(DEVELOPER_FRAMEWORKS_DIR)", + ); + FRAMEWORK_SEARCH_PATHS_QUOTED_1 = "\"$(DEVELOPER_FRAMEWORKS_DIR)\""; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = YES; + GCC_ENABLE_PASCAL_STRINGS = NO; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_TUNING = ""; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_WARN_64_TO_32_BIT_CONVERSION = NO; + GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES; + GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_CHECK_SWITCH_STATEMENTS = YES; + GCC_WARN_FOUR_CHARACTER_CONSTANTS = YES; + GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES; + GCC_WARN_MISSING_PARENTHESES = NO; + GCC_WARN_SHADOW = NO; + GCC_WARN_UNKNOWN_PRAGMAS = NO; + GCC_WARN_UNUSED_PARAMETER = YES; + HEADER_SEARCH_PATHS = ""; + INFOPLIST_FILE = "F-Script 10.9 copy-Info.plist"; + MACOSX_DEPLOYMENT_TARGET = 10.10; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = "-lffi"; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = "F-Script"; + SDKROOT = macosx10.10; + SECTORDER_FLAGS = ""; + VALID_ARCHS = x86_64; + WARNING_CFLAGS = "-Wmost"; + WRAPPER_EXTENSION = app; + ZERO_LINK = NO; + }; + name = Release; + }; + EDC2CC251A1AA52500942777 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = "$(value) NO"; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 2; + FRAMEWORK_SEARCH_PATHS = ""; + FRAMEWORK_VERSION = A; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_PASCAL_STRINGS = NO; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_MODEL_TUNING = ""; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; + GCC_WARN_UNKNOWN_PRAGMAS = NO; + INFOPLIST_FILE = "FScriptFramework 10.9 copy-Info.plist"; + INSTALL_PATH = "@executable_path/../Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.10; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ( + "-lffi", + "-weak_framework", + Cocoa, + ); + OTHER_LIBTOOL_FLAGS = "$(value) "; + OTHER_REZFLAGS = ""; + PRINCIPAL_CLASS = ""; + PRODUCT_NAME = FScript; + SECTORDER_FLAGS = ""; + SKIP_INSTALL = YES; + WRAPPER_EXTENSION = framework; + ZERO_LINK = NO; + }; + name = Debug; + }; + EDC2CC261A1AA52500942777 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 2; + FRAMEWORK_SEARCH_PATHS = ""; + FRAMEWORK_VERSION = A; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_PASCAL_STRINGS = NO; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; + GCC_WARN_UNKNOWN_PRAGMAS = NO; + INFOPLIST_FILE = "FScriptFramework 10.9 copy-Info.plist"; + INSTALL_PATH = "@executable_path/../Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.10; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ( + "-lffi", + "-weak_framework", + Cocoa, + ); + OTHER_LIBTOOL_FLAGS = "$(value) "; + OTHER_REZFLAGS = ""; + PRINCIPAL_CLASS = ""; + PRODUCT_NAME = FScript; SECTORDER_FLAGS = ""; SKIP_INSTALL = YES; WRAPPER_EXTENSION = framework; @@ -7971,6 +10327,24 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; + EDC2CACA1A1AA50D00942777 /* Build configuration list for PBXNativeTarget "F-Script 10.10" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EDC2CACB1A1AA50D00942777 /* Debug */, + EDC2CACC1A1AA50D00942777 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + EDC2CC241A1AA52500942777 /* Build configuration list for PBXNativeTarget "FScriptFramework 10.10" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EDC2CC251A1AA52500942777 /* Debug */, + EDC2CC261A1AA52500942777 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; /* End XCConfigurationList section */ }; rootObject = 0CD4E2FA00D7DD4D7BE9C1BD /* Project object */; diff --git a/FScript.xcodeproj/xcshareddata/xcschemes/F-Script 10.8.xcscheme b/FScript.xcodeproj/xcshareddata/xcschemes/F-Script 10.8.xcscheme index 595db86..5a626be 100644 --- a/FScript.xcodeproj/xcshareddata/xcschemes/F-Script 10.8.xcscheme +++ b/FScript.xcodeproj/xcshareddata/xcschemes/F-Script 10.8.xcscheme @@ -15,7 +15,7 @@ @@ -29,7 +29,7 @@ diff --git a/FScript.xcodeproj/xcshareddata/xcschemes/F-Script 10.9.xcscheme b/FScript.xcodeproj/xcshareddata/xcschemes/F-Script 10.9.xcscheme index 7c0b39c..75e307c 100644 --- a/FScript.xcodeproj/xcshareddata/xcschemes/F-Script 10.9.xcscheme +++ b/FScript.xcodeproj/xcshareddata/xcschemes/F-Script 10.9.xcscheme @@ -15,7 +15,7 @@ @@ -29,7 +29,7 @@ @@ -47,7 +47,7 @@ @@ -66,7 +66,7 @@ @@ -84,7 +84,7 @@ diff --git a/FScriptFramework 10.9 copy-Info.plist b/FScriptFramework 10.9 copy-Info.plist new file mode 100644 index 0000000..69012ac --- /dev/null +++ b/FScriptFramework 10.9 copy-Info.plist @@ -0,0 +1,28 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + FScript + CFBundleGetInfoString + + CFBundleIconFile + + CFBundleIdentifier + org.fscript.fscriptframework + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + F-Script Framework + CFBundlePackageType + FMWK + CFBundleShortVersionString + Version 2.0 + CFBundleSignature + ???? + CFBundleVersion + 2.2 + + diff --git a/FScriptFramework/ArrayTableView.xib b/FScriptFramework/ArrayTableView.xib new file mode 100644 index 0000000..d0eca84 --- /dev/null +++ b/FScriptFramework/ArrayTableView.xib @@ -0,0 +1,511 @@ + + + + 1050 + 14A379a + 941 + 1343.13 + 755.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 941 + + + YES + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + ArrayTableView + + + FirstResponder + + + NSApplication + + + 15 + 2 + {{178, 303}, {488, 244}} + 813170688 + ArrayTableView + NSWindow + View + + {1.7976931348623157e+308, 1.7976931348623157e+308} + + + 256 + + YES + + + 274 + + YES + + + 2304 + + YES + + + 256 + {471, 211} + + YES + NO + YES + + + 256 + {471, 17} + + + + + + 256 + {{472, 0}, {16, 17}} + + + + YES + + 47 + 10 + 1000 + + 75497536 + 2048 + + + .HelveticaNeueDeskInterface-Regular + 12 + 4880 + + + 3 + MC4zMzMzMzMzMzMzAA + + + 6 + System + headerTextColor + + 3 + MAA + + + + + 338690112 + 1024 + 9 + + Helvetica + 12 + 16 + + + + 3 + MQA + + + 6 + System + controlTextColor + + + + 3 + YES + YES + + + + 418 + 10 + 1000 + + 75497536 + 2048 + + + + + + + 338690112 + 1024 + Redwood City + + + + + + 3 + YES + YES + + + + 3 + 2 + + 6 + System + controlBackgroundColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + gridColor + + 3 + MC41AA + + + 16 + -767557632 + + + 4 + -1 + 0 + YES + 0 + 1 + + + {{1, 17}, {471, 211}} + + + + + 4 + YES + + + + 256 + {{472, 17}, {15, 211}} + + NO + _doScroller: + + + _doScroller: + 0.7849462628364563 + + + + 256 + {{1, 228}, {471, 15}} + + NO + _doScroller: + + 1 + + _doScroller: + 0.99009901285171509 + + + + 2304 + + YES + + + {{1, 0}, {471, 17}} + + + + YES + + + + {488, 244} + + + 133170 + + + + + QSAAAEEgAABBkAAAQZAAAA + 0.25 + 4 + 1 + + + {{1, 9}, {488, 244}} + + {{0, 0}, {1440, 878}} + {1.7976931348623157e+308, 1.7976931348623157e+308} + YES + + + + + YES + + + dataSource + + + + 11 + + + + tableView + + + + 19 + + + + + YES + + 0 + + YES + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 5 + + + YES + + + + Window + + + 6 + + + YES + + + + + + 7 + + + YES + + + + + + + + + 8 + + + YES + + + + + + + 9 + + + YES + + + + + + 10 + + + YES + + + + + + 21 + + + + + 22 + + + + + 23 + + + + + 24 + + + + + 25 + + + + + + + YES + + YES + -3.IBPluginDependency + -3.ImportedFromIB2 + 10.IBPluginDependency + 10.ImportedFromIB2 + 21.IBShouldRemoveOnLegacySave + 22.IBShouldRemoveOnLegacySave + 23.IBShouldRemoveOnLegacySave + 24.IBShouldRemoveOnLegacySave + 25.IBShouldRemoveOnLegacySave + 5.IBPluginDependency + 5.ImportedFromIB2 + 5.NSWindowTemplate.visibleAtLaunch + 6.IBPluginDependency + 6.ImportedFromIB2 + 7.IBPluginDependency + 7.ImportedFromIB2 + 8.IBPluginDependency + 8.ImportedFromIB2 + 9.IBPluginDependency + 9.ImportedFromIB2 + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + YES + + + YES + + + + + YES + + + YES + + + + 25 + + + + YES + + ArrayTableView + NSObject + + tableView + id + + + tableView + + tableView + id + + + + IBUserSource + + + + + FirstResponder + + IBUserSource + + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + + 3 + + diff --git a/FScriptFramework/CLIView.h b/FScriptFramework/CLIView.h index dee7c90..675239a 100644 --- a/FScriptFramework/CLIView.h +++ b/FScriptFramework/CLIView.h @@ -1,7 +1,36 @@ /* CLIView.h Copyright (c) 1998-2009 Philippe Mougin. */ /* This software is open source. See the license. */ -/* CLIView is the public API for a Command Line Interface component.*/ +/// CLIView is the public API for a Command Line Interface component. +/** + +The organisation of the view hierarchy: + + ----- CLIView -------------------------------------- + | | + | ----- NSScrollView ---------------------------- | + | | | | + | | ----- ShellView ------------------------- | | + | | | prompt> | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | ----------------------------------------- | | + | | | | + | ----------------------------------------------- | + | | + ---------------------------------------------------- + +A CLIView has one subview: an NSScrollView. + +This NSScrollView has a ShellView as document view. + +The ShellView is the view that displays the prompt, receive the keyboard events from the user, display +the commands entered by the user and the results of those commands etc. + +*/ #import diff --git a/FScriptFramework/CLIView.m b/FScriptFramework/CLIView.m index 041d9de..d74a14a 100644 --- a/FScriptFramework/CLIView.m +++ b/FScriptFramework/CLIView.m @@ -1,35 +1,6 @@ /* CLIView.m Copyright (c) 1998-2009 Philippe Mougin. */ /* This software is open source. See the license. */ -/* - -The organisation of the view hierarchy: - - ----- CLIView -------------------------------------- - | | - | ----- NSScrollView ---------------------------- | - | | | | - | | ----- ShellView ------------------------- | | - | | | prompt> | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | ----------------------------------------- | | - | | | | - | ----------------------------------------------- | - | | - ---------------------------------------------------- - -A CLIView has one subview: an NSScrollView. - -This NSScrollView has a ShellView as document view. - -The ShellView is the view that displays the prompt, receive the keyboard events from the user, display -the commands entered by the user and the results of those commands etc. - -*/ #import "CLIView.h" #import "ShellView.h" diff --git a/FScriptFramework/FSAttributedStringInspector.xib b/FScriptFramework/FSAttributedStringInspector.xib new file mode 100644 index 0000000..2c9202a --- /dev/null +++ b/FScriptFramework/FSAttributedStringInspector.xib @@ -0,0 +1,711 @@ + + + + 1060 + 14A379a + 941 + 1343.13 + 755.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 941 + + + YES + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + FSAttributedStringInspector + + + FirstResponder + + + NSApplication + + + 15 + 2 + {{721, 310}, {610, 302}} + 813170688 + + NSWindow + + + A0BE7FD8-A5F5-4118-889F-13CF410CA36E + + + YES + NO + YES + YES + 2 + 1 + + 3B5643D3-DE2E-46CD-BDFE-2EEBA19BFFA3 + + + 3B5643D3-DE2E-46CD-BDFE-2EEBA19BFFA3 + + Refresh + Refresh + + + + 268 + {{0, 14}, {80, 25}} + YES + + -2080374784 + 134217728 + Refresh + + .HelveticaNeueDeskInterface-Regular + 13 + 1040 + + + -2038153216 + 163 + + + 400 + 75 + + NO + + + + + {80, 25} + {80, 25} + YES + YES + 0 + YES + 0 + + + + YES + + + + YES + + + + YES + + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {213, 107} + + + 256 + + YES + + + 274 + + YES + + + 274 + + YES + + + 2304 + + YES + + + 2322 + {{0, 2}, {608, 109}} + + + + + + + + + + + YES + + + 38 + + + + 608 + 1 + + + 100674413 + 0 + + + 3 + MQA + + + YES + + YES + NSBackgroundColor + NSColor + + + YES + + 6 + System + selectedTextBackgroundColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + selectedTextColor + + 3 + MAA + + + + + + 6 + System + controlTextColor + + + + YES + + YES + NSColor + NSUnderline + + + YES + + 1 + MCAwIDEAA + + + + + + + 1 + + 6 + {608, 10000000} + + + + {{1, 1}, {608, 109}} + + + + + + {4, 5} + + 12582912 + + YES + + YES + + + + TU0AKgAAAHCAFUqgBVKsAAAAwdVQUqwaEQeIRGJRGFlYqwWLQ+JxuOQpVRmEx2RROKwOQyOUQSPyaUym +SxqWyKXyeYxyZzWbSuJTScRCbz2Nz+gRKhUOfTqeUai0OSxiWTiBQSHSGFquGwekxyAgAAAOAQAAAwAA +AAEAEAAAAQEAAwAAAAEAEAAAAQIAAwAAAAIACAAIAQMAAwAAAAEABQAAAQYAAwAAAAEAAQAAAREABAAA +AAEAAAAIARIAAwAAAAEAAQAAARUAAwAAAAEAAgAAARYAAwAAAAEAEAAAARcABAAAAAEAAABnARwAAwAA +AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA + + + + + + 3 + MCAwAA + + + + 4 + YES + + + + -2147483392 + {{-30, 1}, {15, 68}} + + NO + _doScroller: + + + _doScroller: + 1 + + + + -2147483392 + {{-100, -100}, {87, 18}} + + NO + _doScroller: + + 1 + + _doScroller: + 1 + 0.94565220000000005 + + + {610, 111} + + + 133650 + + + + 0.25 + 4 + 1 + + + + 274 + + YES + + + 2304 + + YES + + + 2322 + {{0, 56}, {608, 181}} + + + + + + + + + + + YES + + + 38 + + + + 608 + 1 + + + 100674413 + 0 + + + + YES + + YES + NSBackgroundColor + NSColor + + + YES + + + + + + + YES + + YES + NSColor + NSUnderline + + + YES + + + + + + + 1 + + 6 + {608, 10000000} + + + + {{1, 1}, {608, 181}} + + + + + + 4 + YES + + + + -2147483392 + {{-30, 1}, {15, 68}} + + NO + _doScroller: + + + _doScroller: + 1 + + + + -2147483392 + {{-100, -100}, {87, 18}} + + NO + _doScroller: + + 1 + + _doScroller: + 1 + 0.94565220000000005 + + + {{0, 120}, {610, 183}} + + + 133650 + + + + 0.25 + 4 + 1 + + + {{0, -1}, {610, 303}} + + + + {610, 302} + + {{0, 0}, {1440, 878}} + {213, 161} + {1.7976931348623157e+308, 1.7976931348623157e+308} + YES + + + + + YES + + + delegate + + + + 34 + + + + window + + + + 43 + + + + attributedStringView + + + + 75 + + + + printStringView + + + + 76 + + + + updateAction: + + + + 98 + + + + + YES + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 5 + + + YES + + + + + Window + + + 6 + + + YES + + + + + + 78 + + + YES + + + + + + + 71 + + + YES + + + + + + + + 70 + + + + + 73 + + + YES + + + + + + + + 72 + + + + + 81 + + + + + 82 + + + + + 83 + + + + + 84 + + + + + 85 + + + YES + + + + + + 97 + + + YES + + + + + + 95 + + + YES + + + + + + 96 + + + + + + + YES + + YES + -1.IBPluginDependency + -2.IBPluginDependency + -3.IBPluginDependency + 5.IBPluginDependency + 5.IBWindowTemplateEditedContentRect + 5.windowTemplate.hasMinSize + 5.windowTemplate.minSize + 6.IBPluginDependency + 70.IBPluginDependency + 71.IBPluginDependency + 72.IBPluginDependency + 73.IBPluginDependency + 78.IBPluginDependency + 81.IBPluginDependency + 81.IBShouldRemoveOnLegacySave + 82.IBPluginDependency + 82.IBShouldRemoveOnLegacySave + 83.IBPluginDependency + 83.IBShouldRemoveOnLegacySave + 84.IBPluginDependency + 84.IBShouldRemoveOnLegacySave + 85.IBPluginDependency + 95.IBPluginDependency + 96.IBPluginDependency + 97.IBPluginDependency + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{121, 125}, {610, 302}} + + {213, 107} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + YES + + + YES + + + + + YES + + + YES + + + + 98 + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + + 3 + + diff --git a/FScriptFramework/FSAttributedStringInspector_alternate.xib b/FScriptFramework/FSAttributedStringInspector_alternate.xib new file mode 100644 index 0000000..033101e --- /dev/null +++ b/FScriptFramework/FSAttributedStringInspector_alternate.xib @@ -0,0 +1,839 @@ + + + + 1060 + 14A379a + 941 + 1343.13 + 755.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 941 + + + YES + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + FSAttributedStringInspector + + + FirstResponder + + + NSApplication + + + 15 + 2 + {{202, 343}, {518, 301}} + 813170688 + + NSWindow + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {313, 107} + + + 256 + + YES + + + 268 + {{14, 266}, {88, 32}} + + YES + + 67108864 + 137887744 + Refresh + + .HelveticaNeueDeskInterface-Regular + 13 + 1040 + + + -2038284288 + 1 + + Helvetica + 13 + 16 + + + + + + + + 200 + 25 + + NO + + + + 274 + {{-29, -70}, {577, 340}} + + + YES + + + + 256 + + YES + + + 274 + + YES + + + 2304 + + YES + + + 2322 + + YES + + YES + Apple HTML pasteboard type + Apple PDF pasteboard type + Apple PICT pasteboard type + CorePasteboardFlavorType 0x6D6F6F76 + NSColor pasteboard type + NSFilenamesPboardType + NSStringPboardType + NeXT Encapsulated PostScript v1.2 pasteboard type + NeXT RTFD pasteboard type + NeXT Rich Text Format v1.0 pasteboard type + NeXT TIFF v4.0 pasteboard type + + + {523, 236} + + + + + + + + + + + YES + + + 38 + + + + 523 + 1 + + + 100674541 + 0 + + + 3 + MQA + + + YES + + YES + NSBackgroundColor + NSColor + + + YES + + 6 + System + selectedTextBackgroundColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + selectedTextColor + + 3 + MAA + + + + + + 6 + System + controlTextColor + + + + YES + + YES + NSColor + NSCursor + NSUnderline + + + YES + + 1 + MCAwIDEAA + + + {8, -8} + 13 + + + + + + + 1 + + 6 + {610, 10000000} + + + + {523, 236} + + + + + + {4, -5} + 1 + + 4 + YES + + + + -2147483392 + {{-30, 1}, {15, 68}} + + NO + _doScroller: + + + _doScroller: + 1 + + + + -2147483392 + {{-100, -100}, {87, 18}} + + NO + _doScroller: + + 1 + + _doScroller: + 1 + 0.94565218687057495 + + + {{14, 58}, {523, 236}} + + + 133648 + + + + 0.25 + 4 + 1 + + + {{10, 33}, {557, 294}} + + + Preview + + 6 + System + controlColor + + + + + + + + 256 + + YES + + + 274 + + YES + + + 2304 + + YES + + + 2322 + + YES + + YES + Apple HTML pasteboard type + Apple PDF pasteboard type + Apple PICT pasteboard type + CorePasteboardFlavorType 0x6D6F6F76 + NSColor pasteboard type + NSFilenamesPboardType + NSStringPboardType + NeXT Encapsulated PostScript v1.2 pasteboard type + NeXT RTFD pasteboard type + NeXT Rich Text Format v1.0 pasteboard type + NeXT TIFF v4.0 pasteboard type + + + {517, 236} + + + + + + + + + + + YES + + + 38 + + + + 517 + 1 + + + 100674541 + 0 + + + + YES + + YES + NSBackgroundColor + NSColor + + + YES + + + + + + + YES + + YES + NSColor + NSCursor + NSUnderline + + + YES + + + + + + + + 1 + + 6 + {619, 10000000} + + + + {517, 236} + + + + + + 4 + YES + + + + -2147483392 + {{-30, 1}, {15, 68}} + + NO + _doScroller: + + + _doScroller: + 1 + + + + -2147483392 + {{-100, -100}, {87, 18}} + + NO + _doScroller: + + 1 + + _doScroller: + 1 + 0.94565218687057495 + + + {{20, 58}, {517, 236}} + + + 133648 + + + + 0.25 + 4 + 1 + + + {{10, 33}, {557, 294}} + + Description + + + + + + + 0 + YES + YES + + YES + + + + + {{1, 9}, {518, 301}} + + {{0, 0}, {1440, 878}} + {313, 129} + {1.7976931348623157e+308, 1.7976931348623157e+308} + YES + + + + + YES + + + delegate + + + + 34 + + + + window + + + + 43 + + + + updateAction: + + + + 44 + + + + attributedStringView + + + + 75 + + + + printStringView + + + + 86 + + + + + YES + + 0 + + YES + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + 5 + + + YES + + + + Window + + + 6 + + + YES + + + + + + + 35 + + + YES + + + + + + 79 + + + YES + + + + + + + 80 + + + YES + + + + + + 82 + + + YES + + + + + + 71 + + + YES + + + + + + + + 70 + + + + + 81 + + + YES + + + + + + 83 + + + YES + + + + + + 84 + + + YES + + + + + + + + 85 + + + + + 88 + + + + + 89 + + + + + 90 + + + + + 91 + + + + + 92 + + + + + -3 + + + Application + + + + + YES + + YES + 35.IBPluginDependency + 35.ImportedFromIB2 + 5.IBPluginDependency + 5.ImportedFromIB2 + 5.windowTemplate.hasMinSize + 5.windowTemplate.minSize + 6.IBPluginDependency + 6.ImportedFromIB2 + 70.IBPluginDependency + 70.ImportedFromIB2 + 71.IBPluginDependency + 71.ImportedFromIB2 + 79.IBPluginDependency + 79.ImportedFromIB2 + 80.IBPluginDependency + 80.ImportedFromIB2 + 81.IBPluginDependency + 81.ImportedFromIB2 + 82.IBPluginDependency + 82.ImportedFromIB2 + 83.IBPluginDependency + 83.ImportedFromIB2 + 84.IBPluginDependency + 84.ImportedFromIB2 + 85.IBPluginDependency + 85.ImportedFromIB2 + 89.IBShouldRemoveOnLegacySave + 90.IBShouldRemoveOnLegacySave + 91.IBShouldRemoveOnLegacySave + 92.IBShouldRemoveOnLegacySave + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + {313, 107} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + + + YES + + + YES + + + + + YES + + + YES + + + + 92 + + + + YES + + FSAttributedStringInspector + NSObject + + updateAction: + id + + + updateAction: + + updateAction: + id + + + + YES + + YES + attributedStringView + printStringView + window + + + YES + NSTextView + NSTextView + NSWindow + + + + YES + + YES + attributedStringView + printStringView + window + + + YES + + attributedStringView + NSTextView + + + printStringView + NSTextView + + + window + NSWindow + + + + + IBUserSource + + + + + FirstResponder + + IBUserSource + + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + + 3 + + diff --git a/FScriptFramework/FSCollectionInspector.xib b/FScriptFramework/FSCollectionInspector.xib new file mode 100644 index 0000000..221ee35 --- /dev/null +++ b/FScriptFramework/FSCollectionInspector.xib @@ -0,0 +1,419 @@ + + + + 1050 + 14A379a + 941 + 1343.13 + 755.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 941 + + + YES + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + FSCollectionInspector + + + FirstResponder + + + NSApplication + + + 271 + 2 + {{465, 530}, {897, 309}} + 813170688 + Collection Inspector + NSWindow + View + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {800, 130} + + + 256 + + YES + + + 274 + {897, 309} + + FSCollectionInspectorView + NSView + + + {897, 309} + + {{0, 0}, {1680, 1028}} + {800, 152} + {1.7976931348623157e+308, 1.7976931348623157e+308} + YES + + + + + YES + + + collectionInspectorView + + + + 49 + + + + delegate + + + + 50 + + + + + YES + + 0 + + YES + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 5 + + + YES + + + + Window + + + 6 + + + YES + + + + + + 48 + + + + + + + YES + + YES + -3.IBPluginDependency + -3.ImportedFromIB2 + 48.IBPluginDependency + 48.ImportedFromIB2 + 5.IBPluginDependency + 5.ImportedFromIB2 + 5.windowTemplate.hasMinSize + 5.windowTemplate.minSize + 6.IBPluginDependency + 6.ImportedFromIB2 + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + {800, 130} + com.apple.InterfaceBuilder.CocoaPlugin + + + + + YES + + + YES + + + + + YES + + + YES + + + + 51 + + + + YES + + FSCollectionInspector + NSObject + + collectionInspectorView + FSCollectionInspectorView + + + collectionInspectorView + + collectionInspectorView + FSCollectionInspectorView + + + + IBUserSource + + + + + FSCollectionInspectorView + NSView + + YES + + YES + add: + browse: + filter: + inspect: + modify: + narrow: + refresh: + remove: + sort: + + + YES + id + id + id + id + id + id + id + id + id + + + + YES + + YES + add: + browse: + filter: + inspect: + modify: + narrow: + refresh: + remove: + sort: + + + YES + + add: + id + + + browse: + id + + + filter: + id + + + inspect: + id + + + modify: + id + + + narrow: + id + + + refresh: + id + + + remove: + id + + + sort: + id + + + + + YES + + YES + browseButton + contentView + inspectButton + model + modifyButton + narrowButton + removeButton + searchField + sortButton + tableView + + + YES + NSButton + NSView + NSButton + id + NSButton + NSButton + NSButton + id + NSButton + NSTableView + + + + YES + + YES + browseButton + contentView + inspectButton + model + modifyButton + narrowButton + removeButton + searchField + sortButton + tableView + + + YES + + browseButton + NSButton + + + contentView + NSView + + + inspectButton + NSButton + + + model + id + + + modifyButton + NSButton + + + narrowButton + NSButton + + + removeButton + NSButton + + + searchField + id + + + sortButton + NSButton + + + tableView + NSTableView + + + + + IBUserSource + + + + + FirstResponder + + IBUserSource + + + + + NSObject + + IBUserSource + + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + ../FScript.xcodeproj + 3 + + diff --git a/FScriptFramework/FSCollectionInspectorView.nib/classes.nib b/FScriptFramework/FSCollectionInspectorView.nib/classes.nib deleted file mode 100644 index e38155e..0000000 --- a/FScriptFramework/FSCollectionInspectorView.nib/classes.nib +++ /dev/null @@ -1,85 +0,0 @@ - - - - - IBClasses - - - CLASS - NSObject - LANGUAGE - ObjC - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - FSCollectionInspectorTableView - LANGUAGE - ObjC - SUPERCLASS - NSTableView - - - ACTIONS - - add - id - browse - id - filter - id - inspect - id - modify - id - narrow - id - refresh - id - remove - id - sort - id - - CLASS - FSCollectionInspectorView - LANGUAGE - ObjC - OUTLETS - - browseButton - NSButton - contentView - NSView - inspectButton - NSButton - model - id - modifyButton - NSButton - narrowButton - NSButton - removeButton - NSButton - searchField - id - sortButton - NSButton - tableView - NSTableView - - SUPERCLASS - NSView - - - IBVersion - 1 - - diff --git a/FScriptFramework/FSCollectionInspectorView.nib/designable.nib b/FScriptFramework/FSCollectionInspectorView.nib/designable.nib new file mode 100644 index 0000000..d155e37 --- /dev/null +++ b/FScriptFramework/FSCollectionInspectorView.nib/designable.nib @@ -0,0 +1,1055 @@ + + + + 1050 + 14B23 + 6254 + 1343.16 + 755.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 6254 + + + NSButton + NSButtonCell + NSCustomObject + NSCustomView + NSScrollView + NSScroller + NSSearchField + NSSearchFieldCell + NSTableHeaderView + NSTableView + + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + FSCollectionInspectorView + + + FirstResponder + + + NSApplication + + + + 274 + + + + 268 + {{661, 345}, {80, 25}} + + + + YES + + 67108864 + 134217728 + Refresh + + YES + 13 + 1044 + + + -2038284288 + 32 + + + + + + 200 + 25 + + NO + + + + 268 + {{194, 345}, {80, 25}} + + + + YES + + 603979776 + 134217728 + Remove + + + -2038284288 + 32 + + + + + + 200 + 25 + + NO + + + + 268 + {{9, 345}, {80, 25}} + + + + YES + + 67108864 + 134217728 + Add + + + -2038284288 + 32 + + LucidaGrande + 13 + 16 + + + + + + 200 + 25 + + NO + + + + 268 + {{102, 345}, {80, 25}} + + + + YES + + 603979776 + 134217728 + Modify + + + -2038284288 + 32 + + + + + + 200 + 25 + + NO + + + + 268 + {{287, 345}, {80, 25}} + + + + YES + + 603979776 + 134217728 + Sort + + + -2038284288 + 32 + + + + + + 200 + 25 + + NO + + + + 268 + {{381, 345}, {80, 25}} + + + + YES + + 603979776 + 134217728 + Inspect + + + -2038284288 + 32 + + + + + + 200 + 25 + + NO + + + + 268 + {{475, 345}, {80, 25}} + + + + YES + + 603979776 + 134217728 + Browse + + + -2038284288 + 32 + + + + + + 200 + 25 + + NO + + + + 266 + {{753, 347}, {129, 22}} + + + + YES + YES + + 342884416 + 1024 + + + + YES + 1 + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + 0 + 0 + search + + _searchFieldSearch: + + 138690560 + 0 + + 400 + 75 + + + 0 + 0 + clear + + + cancel + + + + + _searchFieldCancel: + + 138690560 + 0 + + 400 + 75 + + 255 + BgAAAA + + NO + 1 + + + + 268 + {{568, 345}, {80, 25}} + + + + YES + + 603979776 + 134217728 + Narrow + + + -2038284288 + 32 + + + + + + 200 + 25 + + NO + + + + 274 + + + + 2322 + + + + 256 + {907, 322} + + + + YES + NO + YES + + + 256 + {907, 17} + + + + + + + + -2147483392 + {{-26, 0}, {16, 17}} + + + 3 + 2 + + + 6 + System + gridColor + + 3 + MC41AA + + + 16 + -559906816 + + + 1 + 15 + 0 + YES + 0 + 1 + + + {{0, 17}, {907, 322}} + + + + + + 6 + System + controlBackgroundColor + + 3 + MC42NjY2NjY2NjY3AA + + + 4 + YES + + + + -2147483392 + {{886, 17}, {15, 307}} + + + + NO + _doScroller: + + + _doScroller: + 0.99378883838653564 + + + + -2147483392 + {{1, 323}, {880, 15}} + + + + NO + _doScroller: + + 1 + + _doScroller: + 0.98331481218338013 + + + + 2338 + + + + {907, 17} + + + + + YES + + + {907, 339} + + + + 133680 + + + + + QSAAAEEgAABBkAAAQZAAAA + 0.25 + 4 + 1 + + + {907, 378} + + + + + NSView + + NSResponder + + + + + + + browse: + + + + 74 + + + + filter: + + + + 77 + + + + contentView + + + + 61 + + + + tableView + + + + 68 + + + + searchField + + + + 67 + + + + add: + + + + 69 + + + + modifyButton + + + + 63 + + + + browseButton + + + + 60 + + + + refresh: + + + + 76 + + + + sortButton + + + + 66 + + + + remove: + + + + 80 + + + + removeButton + + + + 65 + + + + inspect: + + + + 73 + + + + inspectButton + + + + 62 + + + + narrow: + + + + 75 + + + + modify: + + + + 81 + + + + sort: + + + + 72 + + + + narrowButton + + + + 64 + + + + delegate + + + + 78 + + + + dataSource + + + + 79 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 48 + + + + + + + + + + + + + + + View + + + 49 + + + + + + + + + + + 50 + + + + + 51 + + + + + + + + 52 + + + + + + + + 53 + + + + + + + + 54 + + + + + + + + 55 + + + + + + + + 56 + + + + + + + + 57 + + + + + + + + 58 + + + + + + + + 59 + + + + + + + + 83 + + + + + 84 + + + + + 85 + + + + + 86 + + + + + 87 + + + + + 88 + + + + + 89 + + + + + 90 + + + + + 91 + + + + + 92 + + + + + 93 + + + + + 94 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + FSCollectionInspectorTableView + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + 94 + + + + + FSCollectionInspectorTableView + NSTableView + + IBProjectSource + ../FScriptFramework/FSCollectionInspectorTableView.h + + + + FSCollectionInspectorView + NSView + + id + id + id + id + id + id + id + id + id + + + + add: + id + + + browse: + id + + + filter: + id + + + inspect: + id + + + modify: + id + + + narrow: + id + + + refresh: + id + + + remove: + id + + + sort: + id + + + + NSButton + NSView + NSButton + NSButton + NSButton + NSButton + id + NSButton + NSTableView + + + + browseButton + NSButton + + + contentView + NSView + + + inspectButton + NSButton + + + modifyButton + NSButton + + + narrowButton + NSButton + + + removeButton + NSButton + + + searchField + id + + + sortButton + NSButton + + + tableView + NSTableView + + + + IBProjectSource + ../FScriptFramework/FSCollectionInspectorView.h + + + + FSCollectionInspectorView + + id + id + id + id + id + id + id + id + id + + + + add: + id + + + browse: + id + + + filter: + id + + + inspect: + id + + + modify: + id + + + narrow: + id + + + refresh: + id + + + remove: + id + + + sort: + id + + + + IBProjectSource + ../FScriptFramework/FSCollectionInspectorView.m + + + + + 0 + IBCocoaFramework + YES + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + 3 + + diff --git a/FScriptFramework/FSCollectionInspectorView.nib/info.nib b/FScriptFramework/FSCollectionInspectorView.nib/info.nib deleted file mode 100644 index b72ea1f..0000000 --- a/FScriptFramework/FSCollectionInspectorView.nib/info.nib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - IBFramework Version - 677 - IBLastKnownRelativeProjectPath - ../FScript.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 48 - - IBSystem Version - 9G55 - targetFramework - IBCocoaFramework - - diff --git a/FScriptFramework/FSCollectionInspectorView.nib/keyedobjects.nib b/FScriptFramework/FSCollectionInspectorView.nib/keyedobjects.nib index 12bd0de..9803471 100644 Binary files a/FScriptFramework/FSCollectionInspectorView.nib/keyedobjects.nib and b/FScriptFramework/FSCollectionInspectorView.nib/keyedobjects.nib differ diff --git a/FScriptFramework/FSCollectionInspectorView.xib b/FScriptFramework/FSCollectionInspectorView.xib new file mode 100644 index 0000000..00b4bf6 --- /dev/null +++ b/FScriptFramework/FSCollectionInspectorView.xib @@ -0,0 +1,1131 @@ + + + + 1050 + 14A379a + 941 + 1343.13 + 755.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 941 + + + YES + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + FSCollectionInspectorView + + + FirstResponder + + + NSApplication + + + + 274 + + YES + + + 268 + {{661, 345}, {80, 25}} + + YES + + 67108864 + 134217728 + Refresh + + .HelveticaNeueDeskInterface-Regular + 13 + 1040 + + + -2038284288 + 32 + + + + + + 200 + 25 + + NO + + + + 268 + {{194, 345}, {80, 25}} + + YES + + 603979776 + 134217728 + Remove + + + -2038284288 + 32 + + + + + + 200 + 25 + + NO + + + + 268 + {{9, 345}, {80, 25}} + + YES + + 67108864 + 134217728 + Add + + + -2038284288 + 32 + + LucidaGrande + 13 + 16 + + + + + + 200 + 25 + + NO + + + + 268 + {{102, 345}, {80, 25}} + + YES + + 603979776 + 134217728 + Modify + + + -2038284288 + 32 + + + + + + 200 + 25 + + NO + + + + 268 + {{287, 345}, {80, 25}} + + YES + + 603979776 + 134217728 + Sort + + + -2038284288 + 32 + + + + + + 200 + 25 + + NO + + + + 268 + {{381, 345}, {80, 25}} + + YES + + 603979776 + 134217728 + Inspect + + + -2038284288 + 32 + + + + + + 200 + 25 + + NO + + + + 268 + {{475, 345}, {80, 25}} + + YES + + 603979776 + 134217728 + Browse + + + -2038284288 + 32 + + + + + + 200 + 25 + + NO + + + + 266 + {{753, 347}, {129, 22}} + + YES + + 342884416 + 1024 + + + + YES + 1 + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + 0 + 0 + search + + _searchFieldSearch: + + 138690560 + 0 + + 400 + 75 + + + 0 + 0 + clear + + YES + + YES + + YES + AXDescription + NSAccessibilityEncodedAttributesValueType + + + YES + cancel + + + + + _searchFieldCancel: + + 138428416 + 0 + + 400 + 75 + + 255 + BgAAAA + + NO + 1 + + + + 268 + {{568, 345}, {80, 25}} + + YES + + 603979776 + 134217728 + Narrow + + + -2038284288 + 32 + + + + + + 200 + 25 + + NO + + + + 274 + + YES + + + 2304 + + YES + + + 256 + {907, 322} + + YES + NO + YES + + + 256 + {907, 17} + + + + + + -2147483392 + {{-26, 0}, {16, 17}} + + + + YES + + 3 + 2 + + + 6 + System + gridColor + + 3 + MC41AA + + + 16 + -559906816 + + + 1 + 15 + 0 + YES + 0 + 1 + + + {{0, 17}, {907, 322}} + + + + + 6 + System + controlBackgroundColor + + 3 + MC42NjY2NjY2NjY3AA + + + 4 + YES + + + + -2147483392 + {{886, 17}, {15, 307}} + + NO + _doScroller: + + + _doScroller: + 0.99378883838653564 + + + + -2147483392 + {{1, 323}, {880, 15}} + + NO + _doScroller: + + 1 + + _doScroller: + 0.98331481218338013 + + + + 2304 + + YES + + + {907, 17} + + + + YES + + + + {907, 339} + + + 133680 + + + + + QSAAAEEgAABBkAAAQZAAAA + 0.25 + 4 + 1 + + + {907, 378} + + NSView + + NSResponder + + + + + YES + + + browseButton + + + + 60 + + + + contentView + + + + 61 + + + + inspectButton + + + + 62 + + + + modifyButton + + + + 63 + + + + narrowButton + + + + 64 + + + + removeButton + + + + 65 + + + + sortButton + + + + 66 + + + + searchField + + + + 67 + + + + tableView + + + + 68 + + + + add: + + + + 69 + + + + sort: + + + + 72 + + + + inspect: + + + + 73 + + + + browse: + + + + 74 + + + + narrow: + + + + 75 + + + + refresh: + + + + 76 + + + + filter: + + + + 77 + + + + delegate + + + + 78 + + + + dataSource + + + + 79 + + + + remove: + + + + 80 + + + + modify: + + + + 81 + + + + + YES + + 0 + + YES + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 48 + + + YES + + + + + + + + + + + + + View + + + 49 + + + YES + + + + + + + + + 50 + + + + + 51 + + + YES + + + + + + 52 + + + YES + + + + + + 53 + + + YES + + + + + + 54 + + + YES + + + + + + 55 + + + YES + + + + + + 56 + + + YES + + + + + + 57 + + + YES + + + + + + 58 + + + YES + + + + + + 59 + + + YES + + + + + + 83 + + + + + 84 + + + + + 85 + + + + + 86 + + + + + 87 + + + + + 88 + + + + + 89 + + + + + 90 + + + + + 91 + + + + + 92 + + + + + 93 + + + + + 94 + + + + + + + YES + + YES + -3.IBPluginDependency + -3.ImportedFromIB2 + 48.IBPluginDependency + 48.ImportedFromIB2 + 49.IBPluginDependency + 49.ImportedFromIB2 + 50.CustomClassName + 50.IBPluginDependency + 50.ImportedFromIB2 + 51.IBPluginDependency + 51.ImportedFromIB2 + 52.IBPluginDependency + 52.ImportedFromIB2 + 53.IBPluginDependency + 53.ImportedFromIB2 + 54.IBPluginDependency + 54.ImportedFromIB2 + 55.IBPluginDependency + 55.ImportedFromIB2 + 56.IBPluginDependency + 56.ImportedFromIB2 + 57.IBPluginDependency + 57.ImportedFromIB2 + 58.IBPluginDependency + 58.ImportedFromIB2 + 59.IBPluginDependency + 59.ImportedFromIB2 + 92.IBShouldRemoveOnLegacySave + 93.IBShouldRemoveOnLegacySave + 94.IBShouldRemoveOnLegacySave + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + FSCollectionInspectorTableView + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + + YES + + + YES + + + + + YES + + + YES + + + + 94 + + + + YES + + FSCollectionInspectorTableView + NSTableView + + IBUserSource + + + + + FSCollectionInspectorView + NSView + + YES + + YES + add: + browse: + filter: + inspect: + modify: + narrow: + refresh: + remove: + sort: + + + YES + id + id + id + id + id + id + id + id + id + + + + YES + + YES + add: + browse: + filter: + inspect: + modify: + narrow: + refresh: + remove: + sort: + + + YES + + add: + id + + + browse: + id + + + filter: + id + + + inspect: + id + + + modify: + id + + + narrow: + id + + + refresh: + id + + + remove: + id + + + sort: + id + + + + + YES + + YES + browseButton + contentView + inspectButton + model + modifyButton + narrowButton + removeButton + searchField + sortButton + tableView + + + YES + NSButton + NSView + NSButton + id + NSButton + NSButton + NSButton + id + NSButton + NSTableView + + + + YES + + YES + browseButton + contentView + inspectButton + model + modifyButton + narrowButton + removeButton + searchField + sortButton + tableView + + + YES + + browseButton + NSButton + + + contentView + NSView + + + inspectButton + NSButton + + + model + id + + + modifyButton + NSButton + + + narrowButton + NSButton + + + removeButton + NSButton + + + searchField + id + + + sortButton + NSButton + + + tableView + NSTableView + + + + + IBUserSource + + + + + FirstResponder + + IBUserSource + + + + + NSObject + + IBUserSource + + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + ../FScript.xcodeproj + 3 + + diff --git a/FScriptFramework/FSColorWell.h b/FScriptFramework/FSColorWell.h new file mode 100644 index 0000000..24634c8 --- /dev/null +++ b/FScriptFramework/FSColorWell.h @@ -0,0 +1,12 @@ +// +// FSColorWell.h +// FScript +// +// Created by Anthony Dervish on 20/11/2014. +// +// + +#import + +@interface FSColorWell : NSColorWell +@end diff --git a/FScriptFramework/FSColorWell.m b/FScriptFramework/FSColorWell.m new file mode 100644 index 0000000..782f00f --- /dev/null +++ b/FScriptFramework/FSColorWell.m @@ -0,0 +1,24 @@ +// +// FSColorWell.m +// FScript +// +// Created by Anthony Dervish on 20/11/2014. +// +// + +#import "FSColorWell.h" + +@implementation FSColorWell + +- (void)drawRect:(NSRect)dirtyRect +{ + [super drawRect:dirtyRect]; + + // Drawing code here. +} + +- (void)mouseDown:(NSEvent*)theEvent +{ + [self sendAction:self.action to:self.target]; +} +@end diff --git a/FScriptFramework/FSCommandHistory.h b/FScriptFramework/FSCommandHistory.h index 0746de9..f9ab49a 100644 --- a/FScriptFramework/FSCommandHistory.h +++ b/FScriptFramework/FSCommandHistory.h @@ -26,7 +26,7 @@ store is removed. @interface FSCommandHistory : NSObject { NSMutableArray *array; // an array of NSString - NSInteger head, queue, cursor; + NSInteger head, queue, cursor, size; } - (id)addStr:(NSString *)str; // adds a string @@ -44,5 +44,7 @@ store is removed. // set to the value of the argument. The receiver is filled // with empty strings. - (NSInteger)size; +-(void)save; ++(FSCommandHistory*)latestHistoryWithSize:(NSUInteger)size; @end diff --git a/FScriptFramework/FSCommandHistory.m b/FScriptFramework/FSCommandHistory.m index 10935a8..48e547f 100644 --- a/FScriptFramework/FSCommandHistory.m +++ b/FScriptFramework/FSCommandHistory.m @@ -5,30 +5,48 @@ @implementation FSCommandHistory -- (id)addStr:(NSString *)str -{ - if ([array count] != 0) + +- (id)init {return [self initWithUIntSize:0];} + +- (id)initWithUIntSize:(NSUInteger)maxSize +{ + if ((self = [super init])) { - head = (head+1) % [array count]; - if (head == queue) queue = (queue+1) % [array count]; - [array replaceObjectAtIndex:head withObject:str]; - [self goToLast]; - } - return self; -} - + size = maxSize; + array = [[NSMutableArray alloc] initWithCapacity:maxSize]; + [array addObject:@""]; + head = 0; queue =0; + return self; + } + return nil; +} - (void)dealloc { [array release]; [super dealloc]; -} +} + +-(void)resizeToSize:(NSUInteger)newSize +{ + // TODO +} - (void)encodeWithCoder:(NSCoder *)coder { - [coder encodeObject:array forKey:@"array"]; - [coder encodeInteger:head forKey:@"head"]; - [coder encodeInteger:queue forKey:@"queue"]; - [coder encodeInteger:cursor forKey:@"cursor"]; + if ([coder allowsKeyedCoding]) + { + [coder encodeObject:array forKey:@"array"]; + [coder encodeInteger:head forKey:@"head"]; + [coder encodeInteger:queue forKey:@"queue"]; + [coder encodeInteger:cursor forKey:@"cursor"]; + } + else { + [coder encodeObject:array] ; + [coder encodeValueOfObjCType:@encode(NSInteger) at:&head]; + [coder encodeValueOfObjCType:@encode(NSInteger) at:&queue]; + [coder decodeValueOfObjCType:@encode(NSInteger) at:&cursor]; + + } } - (id)initWithCoder:(NSCoder *)coder @@ -36,22 +54,18 @@ - (id)initWithCoder:(NSCoder *)coder self = [super init]; if ([coder allowsKeyedCoding]) { - array = [[coder decodeObjectForKey:@"array"] retain]; + array = [[coder decodeObjectForKey:@"array"] mutableCopy]; head = [coder decodeIntegerForKey:@"head"]; queue = [coder decodeIntegerForKey:@"queue"]; cursor= [coder decodeIntegerForKey:@"cursor"]; } else { - int intHead, intQueue, intCursor; array = [[coder decodeObject] retain]; - [coder decodeValueOfObjCType:@encode(int) at:&intHead]; - head = intHead; - [coder decodeValueOfObjCType:@encode(int) at:&intQueue]; - queue = intQueue; - [coder decodeValueOfObjCType:@encode(int) at:&intCursor]; - cursor = intCursor; - } + [coder decodeValueOfObjCType:@encode(NSInteger) at:&head]; + [coder decodeValueOfObjCType:@encode(NSInteger) at:&queue]; + [coder decodeValueOfObjCType:@encode(NSInteger) at:&cursor]; + } return self; } @@ -69,10 +83,10 @@ - (id)goToLast - (id)goToNext { - if ([array count] != 0) + if (size != 0) { if (cursor == head) cursor = queue; - else cursor = (cursor+1) % [array count]; + else cursor = (cursor+1) % array.count; } return self; } @@ -82,37 +96,91 @@ - (id)goToPrevious if([array count] != 0) { if (cursor == queue) cursor = head; - else cursor = (cursor-1+[array count]) % [array count]; + else cursor = (cursor - 1 + array.count) % array.count; } return self; } - (NSString *)getMostRecentlyInsertedStr { - if ([array count] != 0) return [array objectAtIndex:head]; - else return(@""); + return (size != 0) ? [array objectAtIndex:head] : @""; } - (NSString *)getStr { - if ([array count] != 0) return [array objectAtIndex:cursor]; - else return(@""); -} + return (size != 0) ? [array objectAtIndex:cursor] : @""; +} + +- (id)addStr:(NSString *)str +{ + if (size != 0) + { + if (head == array.count-1 && array.count < size) { [array addObject:@""]; } + head = (head+1) % size; + if (head == queue) queue = (queue+1) % size; + [array replaceObjectAtIndex:head withObject:str]; + [self goToLast]; + } + [self save]; + return self; +} -- (id)init {return [self initWithUIntSize:0];} -- (id)initWithUIntSize:(NSUInteger)size ++(NSString*)_historyPath:(NSError**)errorOut { - if ((self = [super init])) - { - array = [[NSMutableArray alloc] initWithCapacity:size]; - head = 0; queue =0; - for (; size > 0; size--) [array addObject:@""]; - return self; + static NSString *sHistoryPath = nil; + if (sHistoryPath == nil) { + NSArray* paths = NSSearchPathForDirectoriesInDomains( NSApplicationSupportDirectory, NSUserDomainMask, YES ) ; + if ( paths.count ) { + NSBundle *appBundle = [NSBundle mainBundle]; + NSString *appName = [ appBundle.infoDictionary objectForKey:@"CFBundleExecutable" ]; + NSString *applicationSupportDir = [paths[0] stringByAppendingPathComponent:appName]; + NSFileManager *fileManager = [NSFileManager new]; + if (![fileManager fileExistsAtPath:applicationSupportDir]) { + NSError *error = nil ; + BOOL success = [ fileManager + createDirectoryAtPath:applicationSupportDir + withIntermediateDirectories:YES + attributes:nil + error:&error ] ; + if ( !success ) { + if ( errorOut ) { + *errorOut = error ; + } + [fileManager release]; + return nil ; + } + } + sHistoryPath = [applicationSupportDir stringByAppendingPathComponent:@"FScriptHistory.dat"]; + [sHistoryPath retain]; + } } - return nil; -} - -- (NSInteger)size {return [array count];} + return sHistoryPath; +} +-(void)save +{ + NSString *historyPath = [FSCommandHistory _historyPath:nil]; + if (historyPath) { + NSData *archiveData = [NSKeyedArchiver archivedDataWithRootObject:self]; + if (archiveData.length) { + [archiveData writeToFile:historyPath atomically:YES]; + } + } +} + ++(FSCommandHistory*)latestHistoryWithSize:(NSUInteger)maxSize +{ + NSString *historyPath = [FSCommandHistory _historyPath:nil]; + FSCommandHistory *history = nil; + NSFileManager *fileManager = [NSFileManager new]; + if (historyPath && [fileManager fileExistsAtPath:historyPath]) { + history = [[NSKeyedUnarchiver unarchiveObjectWithFile:historyPath] retain]; + history->size = maxSize; + } + [fileManager release]; + return history ?: [[FSCommandHistory alloc] initWithUIntSize:maxSize]; + + +} @end diff --git a/FScriptFramework/FSConsole.xib b/FScriptFramework/FSConsole.xib new file mode 100644 index 0000000..811a1e1 --- /dev/null +++ b/FScriptFramework/FSConsole.xib @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/FScriptFramework/FSDetailedObjectInspector.h b/FScriptFramework/FSDetailedObjectInspector.h new file mode 100644 index 0000000..49e3e70 --- /dev/null +++ b/FScriptFramework/FSDetailedObjectInspector.h @@ -0,0 +1,21 @@ +// FSGenericObjectInspector.h Copyright (c) 2001-2009 Philippe Mougin. +// This software is open source. See the license. + +#import + +@class FSObjectInspectorViewModelItem; +@class FSInterpreter; + +@interface FSDetailedObjectInspector : NSObject +@property (strong,nonatomic) id inspectedObject; +@property (readonly,nonatomic) NSWindow *window; +@property (strong,nonatomic) FSInterpreter* interpreter; + ++ (FSDetailedObjectInspector*)detailedObjectInspectorWithObject:(id)object interpreter:(FSInterpreter*)interpreter; +- (FSDetailedObjectInspector *)initWithObject:(id)object interpreter:(FSInterpreter*)interpreter; + +- (void)windowWillClose:(NSNotification *)aNotification; +-(IBAction)refreshModel:(id)sender; +- (IBAction)browseAction:(id)sender; + +@end diff --git a/FScriptFramework/FSDetailedObjectInspector.m b/FScriptFramework/FSDetailedObjectInspector.m new file mode 100644 index 0000000..eb251df --- /dev/null +++ b/FScriptFramework/FSDetailedObjectInspector.m @@ -0,0 +1,178 @@ +// FSDetailedObjectInspector.m Copyright (c) 2001-2009 Philippe Mougin. +// This software is open source. See the license. + +#import "FSDetailedObjectInspector.h" +#import "FSMiscTools.h" +#import "FSInterpreter.h" +#import "FSObjectInspectorViewModelItem.h" +#import "FSObjectInspectorViewController.h" +#import "FSObjectBrowserViewObjectInfo.h" +#import "FSUtils.h" + +static NSPoint sTopLeftPoint = { 0, 0 }; // Used for cascading windows. +static BOOL sIsFirstWindow = YES; +static void *TREE_OBSERVATION_CONTEXT = &TREE_OBSERVATION_CONTEXT; + +@interface NSTreeNode (FSTraversal) +-(void)fs_visitNodesWithBlock:(void(^)(NSTreeNode*node))block; +@end +@implementation NSTreeNode (FSTraversal) +-(void)fs_visitNodesWithBlock:(void(^)(NSTreeNode*node))block +{ + assert(block && "block cannot be nil"); + block(self); + for (NSTreeNode *child in self.childNodes) { + [child fs_visitNodesWithBlock:block]; + } +} +@end + + + +@interface FSDetailedObjectInspector () +@property (strong,readwrite,nonatomic) NSWindow *window; +@property (strong,nonatomic) FSObjectInspectorViewController *viewController; +@property (strong,nonatomic) FSObjectInspectorViewModelItem *rootViewModelItem; +@end + +@implementation FSDetailedObjectInspector { +} + ++ (FSDetailedObjectInspector*)detailedObjectInspectorWithObject:(id)object interpreter:(FSInterpreter*)interpreter +{ + return [[self alloc] initWithObject:object interpreter:(FSInterpreter*)interpreter]; +} + +- (FSDetailedObjectInspector *)initWithObject:(id)object interpreter:(FSInterpreter*)interpreter +{ + if ((self = [super init])) { + NSPanel* panel = [[NSPanel alloc] initWithContentRect:NSMakeRect(100.0, 100.0, 500.0, 300.0) + styleMask:(NSClosableWindowMask | NSTitledWindowMask | NSResizableWindowMask) + backing:NSBackingStoreBuffered + defer:NO]; + panel.delegate = self; +#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10 + panel.appearance = [NSAppearance appearanceNamed:NSAppearanceNameVibrantDark]; +#endif + self.interpreter = interpreter; + self.window = panel; + + _inspectedObject = object; + FSObjectInspectorViewController *objectInspectorViewController = [[FSObjectInspectorViewController alloc] initWithNibName:@"FSObjectInspectorViewController" bundle:[NSBundle bundleForClass:self.class]]; + self.viewController = objectInspectorViewController; + objectInspectorViewController.inspector = self; + objectInspectorViewController.interpreter = self.interpreter; + [self refreshModel:self]; + panel.contentView = objectInspectorViewController.view; + NSSize desiredSize = self.viewController.desiredSize; + [panel setFrame:[panel frameRectForContentRect:rectWithSize(desiredSize)] display:YES]; + sTopLeftPoint = [self.window cascadeTopLeftFromPoint:sTopLeftPoint]; + if (sIsFirstWindow) { + sIsFirstWindow = NO; + sTopLeftPoint = [self.window cascadeTopLeftFromPoint:sTopLeftPoint]; + } + [self.window makeKeyAndOrderFront:nil]; + return self; + } + return nil; +} + + +-(void)dealloc +{ + //NSLog(@"Dealloc %@",self); + [self _unwatchItems]; +} + + +-(IBAction)refreshModel:(id)sender +{ + [self.window setTitle:[NSString stringWithFormat:@"Inspecting %@ at address %p", descriptionForFSMessage(self.inspectedObject), self.inspectedObject]]; + FSObjectBrowserViewObjectHelper *objectInfoHelper = [FSObjectBrowserViewObjectHelper new]; + [objectInfoHelper introspectPropertiesOfObject:self.inspectedObject]; + [objectInfoHelper populateModelWithObject:self.inspectedObject]; + self.rootViewModelItem = objectInfoHelper.rootViewModelItem; + self.viewController.rootViewModelItem = self.rootViewModelItem; +} +- (IBAction)browseAction:(id)sender +{ + [self.interpreter browse:self.inspectedObject]; +} + +/////////////////// Window delegate callbacks + +- (void)windowWillClose:(NSNotification*)aNotification +{ +} + +/* + * + * + *================================================================================================*/ +#pragma mark - Properties +/*================================================================================================== + */ + + +-(void)setRootViewModelItem:(FSObjectInspectorViewModelItem *)rootViewModelItem +{ + [self _unwatchItems]; + _rootViewModelItem = rootViewModelItem; + [self _watchItems]; +} + +-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context +{ + if (context == TREE_OBSERVATION_CONTEXT) { + NSLog(@"Value changed for %@. Change = %@", object, change); + id target = self.inspectedObject; + FSObjectInspectorViewModelItem *item = object; + @try { + if (item.setter) { + if (item.valueType == FS_ITEM_OBJECT + || item.valueType == FS_ITEM_RECT + || item.valueType == FS_ITEM_SIZE + || item.valueType == FS_ITEM_RANGE + || item.valueType == FS_ITEM_POINT + ) { + item.setter(target, item.value, item); + NSLog(@"[%@ setValue:%@ forKey:%@",target,item.value,item.getter); + } + else { + item.setter(target, @(item.numValue), item); + NSLog(@"[%@ setValue:%@ forKey:%@",target,@(item.numValue),item.getter); + } + } + } + @catch(NSException *e) { + NSLog(@"Exception when setting value for key %@ on %@: %@", keyPath, target, e); + } + } +} +/* + * + * + *================================================================================================*/ +#pragma mark - Utilities +/*================================================================================================== + */ + + +-(void)_watchItems +{ + [self.rootViewModelItem fs_visitNodesWithBlock:^(NSTreeNode *node) { + [node addObserver:self + forKeyPath:@"value" + options:0 + context:TREE_OBSERVATION_CONTEXT]; + }]; +} +-(void)_unwatchItems +{ + [self.rootViewModelItem fs_visitNodesWithBlock:^(NSTreeNode *node) { + [node removeObserver:self + forKeyPath:@"value" ]; + }]; +} + +@end diff --git a/FScriptFramework/FSExecEngine.m b/FScriptFramework/FSExecEngine.m index 3372631..032ade3 100644 --- a/FScriptFramework/FSExecEngine.m +++ b/FScriptFramework/FSExecEngine.m @@ -144,6 +144,7 @@ id FSMapToObject(void *valuePtr, NSUInteger index, char fsEncodedType, const cha case fscode_CGSize: return [NSValue valueWithSize:((NSSize *)valuePtr)[index]]; case fscode_NSRect: case fscode_CGRect: return [NSValue valueWithRect:((NSRect *)valuePtr)[index]]; + case fscode_NSEdgeInsets: return [NSValue valueWithEdgeInsets:((NSEdgeInsets *)valuePtr)[index]]; case fscode_CGAffineTransform: return FSNSAffineTransformFromCGAffineTransform(((CGAffineTransform *)valuePtr)[index]); case '*': case '^': @@ -303,6 +304,13 @@ void FSMapFromObject(void *valuePtr, NSUInteger index, char fsEncodedType, id ob else if (strcmp([object objCType], @encode(NSRect)) != 0) FSExecError([NSString stringWithFormat:@"%@ must be an NSValue containing a NSRect", description(mapType, argumentNumber, selector, ivarName)]); else ((NSRect *)valuePtr)[index] = [object rectValue]; break; + } + case fscode_NSEdgeInsets: + { + if (![object isKindOfClass:[NSValue class]]) FSExecError([NSString stringWithFormat:@"%@ is %@. An instance of NSValue containing a NSEdgeInsets was expected", description(mapType, argumentNumber, selector, ivarName), descriptionForFSMessage(object)]); + else if (strcmp([object objCType], @encode(NSEdgeInsets)) != 0) FSExecError([NSString stringWithFormat:@"%@ must be an NSValue containing a NSEdgeInsets", description(mapType, argumentNumber, selector, ivarName)]); + else ((NSEdgeInsets *)valuePtr)[index] = [object edgeInsetsValue]; + break; } case fscode_CGAffineTransform: { diff --git a/FScriptFramework/FSGenericPointer.m b/FScriptFramework/FSGenericPointer.m index ffd6c3e..ea9c6fe 100644 --- a/FScriptFramework/FSGenericPointer.m +++ b/FScriptFramework/FSGenericPointer.m @@ -187,6 +187,7 @@ - (NSArray *)memoryContent case fscode_CGSize: itemSize = sizeof(NSSize); break; case fscode_NSRect: case fscode_CGRect: itemSize = sizeof(NSRect); break; + case fscode_NSEdgeInsets: itemSize = sizeof(NSEdgeInsets); break; case fscode_CGAffineTransform: itemSize = sizeof(CGAffineTransform); break; default: itemSize = 0; } diff --git a/FScriptFramework/FSImageInspector.xib b/FScriptFramework/FSImageInspector.xib new file mode 100644 index 0000000..ad64d93 --- /dev/null +++ b/FScriptFramework/FSImageInspector.xib @@ -0,0 +1,360 @@ + + + + 1060 + 14A379a + 941 + 1343.13 + 755.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 941 + + + YES + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + FSImageInspector + + + FirstResponder + + + NSApplication + + + 15 + 2 + {{525, 117}, {498, 392}} + 813170688 + Image Inspector + NSWindow + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {120.1300048828125, 5} + + + 256 + + YES + + + 274 + + YES + + + 2304 + + YES + + + 301 + + YES + + {480, 281} + + NSImageView + NSControl + + + {483, 377} + + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + 4 + YES + + + + 256 + {{483, 0}, {15, 377}} + + NO + _doScroller: + + + _doScroller: + 0.96441280841827393 + + + + 256 + {{0, 377}, {483, 15}} + + NO + _doScroller: + + 1 + + _doScroller: + 0.25 + 0.99166667461395264 + + + {498, 392} + + + 1050672 + + + + 0.25 + 4 + 1 + {0, 0, 0, 0} + + + {{1, 9}, {498, 392}} + + {{0, 0}, {1440, 878}} + {120.1300048828125, 27} + {1.7976931348623157e+308, 1.7976931348623157e+308} + YES + + + + + YES + + + window + + + + 11 + + + + imageView + + + + 20 + + + + delegate + + + + 21 + + + + + YES + + 0 + + YES + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + 5 + + + YES + + + + Window + + + 6 + + + YES + + + + + + 19 + + + YES + + + + + + + + 18 + + + + + 24 + + + + + 25 + + + + + -3 + + + Application + + + + + YES + + YES + 18.IBPluginDependency + 18.ImportedFromIB2 + 19.IBPluginDependency + 19.ImportedFromIB2 + 24.IBShouldRemoveOnLegacySave + 25.IBShouldRemoveOnLegacySave + 5.IBPluginDependency + 5.ImportedFromIB2 + 5.windowTemplate.hasMinSize + 5.windowTemplate.minSize + 6.IBPluginDependency + 6.ImportedFromIB2 + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + {120.1300048828125, 5} + com.apple.InterfaceBuilder.CocoaPlugin + + + + + YES + + + YES + + + + + YES + + + YES + + + + 25 + + + + YES + + FSImageInspector + NSObject + + YES + + YES + imageView + window + + + YES + NSImageView + NSWindow + + + + YES + + YES + imageView + window + + + YES + + imageView + NSImageView + + + window + NSWindow + + + + + IBUserSource + + + + + FirstResponder + + IBUserSource + + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + + 3 + + diff --git a/FScriptFramework/FSManagedObjectContextInspector.nib/designable.nib b/FScriptFramework/FSManagedObjectContextInspector.nib/designable.nib index d361e87..4c95ab2 100644 --- a/FScriptFramework/FSManagedObjectContextInspector.nib/designable.nib +++ b/FScriptFramework/FSManagedObjectContextInspector.nib/designable.nib @@ -2,32 +2,32 @@ 1060 - 11C74 - 1938 - 1138.23 - 567.00 + 14B23 + 6254 + 1343.16 + 755.00 com.apple.InterfaceBuilder.CocoaPlugin - 1938 + 6254 - NSObjectController - NSPopUpButtonCell - NSScroller - NSPopUpButton + NSBox NSButton - NSMenu - NSScrollView NSButtonCell + NSCustomObject + NSCustomView + NSMenu NSMenuItem - NSBox + NSObjectController + NSPopUpButton + NSPopUpButtonCell + NSScrollView + NSScroller NSTabView - NSCustomView NSTabViewItem + NSTextView NSView NSWindowTemplate - NSTextView - NSCustomObject com.apple.InterfaceBuilder.CocoaPlugin @@ -61,7 +61,7 @@ {854, 282} - + 256 @@ -69,7 +69,6 @@ 274 {{0, 100}, {896, 294}} - collection @@ -105,7 +104,7 @@ message - 256 + 274 @@ -113,14 +112,14 @@ - 2304 + 2322 2322 - {{0, 62}, {898, 132}} + {{0, 62}, {898, 294}} - + @@ -197,7 +196,7 @@ IHlldA - 6 + 38 @@ -229,7 +228,12 @@ IHlldA - + + 6 + System + controlTextColor + + 1 @@ -243,11 +247,12 @@ IHlldA 6 {898, 10000000} - {799, 132} + {896, 294} {896, 294} + {{0, 62}, {896, 294}} @@ -277,6 +282,7 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA 4 + YES @@ -284,6 +290,9 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA {{-30, 1}, {15, 292}} + NO + _doScroller: + _doScroller: 1 @@ -295,6 +304,9 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA YES + NO + _doScroller: + 1 _doScroller: @@ -304,11 +316,14 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA {896, 294} - + 133776 + 0.25 + 4 + 1 {896, 294} @@ -322,7 +337,7 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA - LucidaGrande + YES 13 1044 @@ -340,7 +355,7 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA {0, 0} - 67239424 + 67108864 0 Box @@ -350,9 +365,11 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA textBackgroundColor - - 3 - MCAwLjgwMDAwMDAxAA + + 6 + System + labelColor + 3 @@ -376,12 +393,12 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA YES - 67239424 + 67108864 0 Fetch automatically - 1211912703 + 1211912448 2 NSImage @@ -395,21 +412,21 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA 200 25 + NO 289 {{708, 26}, {130, 32}} - YES - 67239424 + 67108864 134217728 New Inspector - -2038284033 + -2038284288 1 @@ -419,6 +436,7 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA 200 25 + NO @@ -428,12 +446,12 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA YES - 67239424 + 67108864 134217728 Fetch - -2038284033 + -2038284288 1 @@ -443,6 +461,7 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA 200 25 + NO @@ -452,11 +471,11 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA YES - -2076049856 + -2076180416 1024 - 109199615 + 109199360 1 LucidaGrande @@ -501,6 +520,7 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA YES 1 + NO @@ -508,14 +528,14 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA - 2048 + 2066 274 {457, 69} - + FSPredicateTextView NSTextView @@ -526,6 +546,7 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA 4 + YES @@ -533,6 +554,9 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA {{-30, 1}, {15, 69}} + NO + _doScroller: + _doScroller: 0.73913043737411499 @@ -544,6 +568,9 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA YES + NO + _doScroller: + 1 _doScroller: @@ -552,11 +579,14 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA {{18, 23}, {458, 71}} - + 133778 + 0.25 + 4 + 1 {{1, 1}, {896, 104}} @@ -569,19 +599,16 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA {0, 0} - 67239424 + 67108864 0 Box - LucidaGrande + YES 11 3100 - - 3 - MCAwLjgwMDAwMDAxAA - + 1 @@ -595,10 +622,9 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA {896, 395} - - {{0, 0}, {1440, 878}} + {{0, 0}, {2560, 1417}} {854, 304} {10000000000000, 10000000000000} YES @@ -618,7 +644,7 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA - + collectionInspectorView @@ -1016,15 +1042,20 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA 0 IBCocoaFramework + NO com.apple.InterfaceBuilder.CocoaPlugin.macosx + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + YES 3 - {9, 8} - {7, 2} + {12, 12} + {10, 2} {15, 15} diff --git a/FScriptFramework/FSManagedObjectContextInspector.nib/keyedobjects.nib b/FScriptFramework/FSManagedObjectContextInspector.nib/keyedobjects.nib index a818686..256705a 100644 Binary files a/FScriptFramework/FSManagedObjectContextInspector.nib/keyedobjects.nib and b/FScriptFramework/FSManagedObjectContextInspector.nib/keyedobjects.nib differ diff --git a/FScriptFramework/FSManagedObjectContextInspector.xib b/FScriptFramework/FSManagedObjectContextInspector.xib new file mode 100644 index 0000000..11bb528 --- /dev/null +++ b/FScriptFramework/FSManagedObjectContextInspector.xib @@ -0,0 +1,1042 @@ + + + + 1060 + 14A379a + 941 + 1343.13 + 755.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 941 + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + FSManagedObjectContextInspector + + + FirstResponder + + + NSApplication + + + 271 + 2 + {{191, 138}, {896, 395}} + 813170688 + Managed Object Context Inspector + + NSWindow + + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {854, 282} + + + 256 + + + + 274 + {{0, 100}, {896, 294}} + + + + collection + + + 256 + + + + 274 + {896, 294} + + FSCollectionInspectorView + NSView + + + {896, 294} + + + collection + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + + + message + + + 256 + + + + 274 + + + + 2304 + + + + 2322 + {{0, 62}, {898, 294}} + + + + + + + CgkJCQkJCQkJCQkJCQoJCQkKCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCk5vIG9iamVjdCBmZXRjaGVk +IHlldA + + + + + Helvetica + 12 + 16 + + + 4 + + + + + + Helvetica + 14 + 16 + + + 2 + + + 28 + + + 56 + + + 84 + + + 112 + + + 140 + + + 168 + + + 196 + + + 224 + + + 252 + + + 280 + + + 308 + + + 336 + + + + + + + KwAVAQ + + + + + + + 38 + + + + 898 + 1 + + + 100674405 + 0 + + + 3 + MQA + + + + 6 + System + selectedTextBackgroundColor + + + + 6 + System + selectedTextColor + + 3 + MAA + + + + + 6 + System + controlTextColor + + + + + 1 + MCAwIDEAA + + + + + + 1 + + 6 + {898, 10000000} + {896, 294} + + + + {896, 294} + + + + + + {4, 5} + + 12582912 + + + + + + TU0AKgAAAHCAFUqgBVKsAAAAwdVQUqwaEQeIRGJRGFlYqwWLQ+JxuOQpVRmEx2RROKwOQyOUQSPyaUym +SxqWyKXyeYxyZzWbSuJTScRCbz2Nz+gRKhUOfTqeUai0OSxiWTiBQSHSGFquGwekxyAgAAAOAQAAAwAA +AAEAEAAAAQEAAwAAAAEAEAAAAQIAAwAAAAIACAAIAQMAAwAAAAEABQAAAQYAAwAAAAEAAQAAAREABAAA +AAEAAAAIARIAAwAAAAEAAQAAARUAAwAAAAEAAgAAARYAAwAAAAEAEAAAARcABAAAAAEAAABnARwAAwAA +AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA + + + + + + 3 + MCAwAA + + + + 4 + YES + + + + -2147483392 + {{-30, 1}, {15, 292}} + + + NO + _doScroller: + + + _doScroller: + 1 + + + + -2147483392 + {{-100, -100}, {87, 18}} + + + YES + NO + _doScroller: + + 1 + + _doScroller: + 1 + 0.94565218687057495 + + + {896, 294} + + + 133776 + + + + 0.25 + 4 + 1 + + + {896, 294} + + + + message + + + + + + + .HelveticaNeueDeskInterface-Regular + 13 + 1040 + + 6 + YES + + + + + + + 258 + {{0, 97}, {896, 5}} + + + {0, 0} + + 67108864 + 0 + Box + + + 6 + System + textBackgroundColor + + + + 6 + System + labelColor + + + + 3 + 2 + 0 + NO + + + + 294 + + + + 274 + + + + 289 + {{563, 35}, {145, 18}} + + + YES + + 67108864 + 0 + Fetch automatically + + + 1211912448 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + NO + + + + 289 + {{708, 26}, {130, 32}} + + YES + + 67108864 + 134217728 + New Inspector + + + -2038284288 + 1 + + + + + + 200 + 25 + + NO + + + + 289 + {{481, 26}, {82, 32}} + + + YES + + 67108864 + 134217728 + Fetch + + + -2038284288 + 1 + + + + + + 200 + 25 + + NO + + + + 289 + {{484, 70}, {225, 26}} + + + YES + + -2076180416 + 1024 + + + 109199360 + 1 + + LucidaGrande + 13 + 16 + + + + + + 400 + 75 + + + Item3 + + 1048576 + 2147483647 + 1 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + _popUpItemAction: + + + YES + + + OtherViews + + + + + + 3 + YES + YES + 1 + + NO + + + + 258 + + + + 2048 + + + + 274 + {457, 69} + + + FSPredicateTextView + NSTextView + + + {{1, 1}, {456, 69}} + + + + + 4 + YES + + + + -2147483392 + {{-30, 1}, {15, 69}} + + + NO + _doScroller: + + + _doScroller: + 0.73913043737411499 + + + + -2147483392 + {{-100, -100}, {343, 15}} + + + YES + NO + _doScroller: + + 1 + + _doScroller: + 0.42565599083900452 + + + {{18, 23}, {458, 71}} + + + 133778 + + + + 0.25 + 4 + 1 + + + {{1, 1}, {896, 104}} + + + + + {{0, -6}, {898, 106}} + + + {0, 0} + + 67108864 + 0 + Box + + .HelveticaNeueDeskInterface-Regular + 11 + 3088 + + + + + + 1 + 4 + 0 + NO + + 2 + MC45MDk4MDM5OSAwLjkwOTgwMzk5IDAuOTA5ODAzOTkAA + + + + {896, 395} + + + {{0, 0}, {1440, 878}} + {854, 304} + {1.7976931348623157e+308, 1.7976931348623157e+308} + YES + + + + stalenessInterval + + NSManagedObjectContext + YES + + + + + 256 + {125, 1} + + + + + + + collectionInspectorView + + + + 10 + + + + entityList + + + + 20 + + + + executeRequest: + + + + 22 + + + + tabView + + + + 35 + + + + messageTextView + + + + 36 + + + + changeEntity: + + + + 39 + + + + newInspector: + + + + 44 + + + + predicateTextView + + + + 49 + + + + delegate + + + + 50 + + + + controller + + + + 58 + + + + delegate + + + + 63 + + + + fetchAutomaticallyButton + + + + 70 + + + + changeFetchAutomatically: + + + + 72 + + + + initialFirstResponder + + + + 73 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 5 + + + + + + Window + + + 6 + + + + + + + + + + 23 + + + + + + + + + 24 + + + + + + + + 26 + + + + + + + + 7 + + + + + 25 + + + + + + + + 27 + + + + + + + + 32 + + + + + + + + + + 33 + + + + + 40 + + + + + + 87 + + + + + + + + + + + + 57 + + + Controller + + + 95 + + + + + 96 + + + + + 37 + + + + + + + + 93 + + + + + 43 + + + + + + + + 94 + + + + + 21 + + + + + + + + 92 + + + + + 15 + + + + + + + + 91 + + + + + + + + 16 + + + + + + + + 17 + + + + + 47 + + + + + + + + + + 98 + + + + + 97 + + + + + 46 + + + + + 41 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + {854, 282} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + 98 + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + YES + + 3 + + {12, 12} + {10, 2} + {15, 15} + + + diff --git a/FScriptFramework/FSMiscTools.h b/FScriptFramework/FSMiscTools.h index a06ce80..89b112c 100644 --- a/FScriptFramework/FSMiscTools.h +++ b/FScriptFramework/FSMiscTools.h @@ -22,7 +22,7 @@ ffi_type *ffiTypeFromFSEncodedType(char fsEncodedType); enum e_FSObjCTypeCode {fscode_CGAffineTransform = '9', fscode_NSRect = 'w', fscode_NSSize = 'x', fscode_NSPoint = 'y', fscode_NSRange = 'z', - fscode_CGRect = 'W', fscode_CGSize = 'X', fscode_CGPoint = 'Y'}; + fscode_CGRect = 'W', fscode_CGSize = 'X', fscode_CGPoint = 'Y', fscode_NSEdgeInsets = 'Z'}; char FSEncode(const char *foundationEncodeStyleStr); diff --git a/FScriptFramework/FSMiscTools.m b/FScriptFramework/FSMiscTools.m index 567c65f..9254bad 100644 --- a/FScriptFramework/FSMiscTools.m +++ b/FScriptFramework/FSMiscTools.m @@ -14,6 +14,8 @@ #import #import #import "FSCollectionInspector.h" +#import "FSDetailedObjectInspector.h" +#import "FSObjectBrowserViewObjectInfo.h" #import "FSGenericObjectInspector.h" #import "FSInterpreter.h" //#import "FScript.h" @@ -28,7 +30,7 @@ @class _NSZombie, NSFault, NSRTFD; -static ffi_type ffi_type_NSRange, ffi_type_NSPoint, ffi_type_NSRect, ffi_type_NSSize, ffi_type_CGAffineTransform; +static ffi_type ffi_type_NSRange, ffi_type_NSPoint, ffi_type_NSRect, ffi_type_NSSize, ffi_type_CGAffineTransform, ffi_type_NSEdgeInsets; void __attribute__ ((constructor)) initializeFFITypes(void) { @@ -85,6 +87,18 @@ void __attribute__ ((constructor)) initializeFFITypes(void) ffi_type_NSRect.elements[1] = &ffi_type_NSSize; ffi_type_NSRect.elements[2] = NULL; + + //////////////////////////// Define ffi_type_NSEdgeInsets + ffi_type_NSEdgeInsets.size = 0; + ffi_type_NSEdgeInsets.alignment = 0; + ffi_type_NSEdgeInsets.type = FFI_TYPE_STRUCT; + ffi_type_NSEdgeInsets.elements = malloc(5 * sizeof(ffi_type*)); + ffi_type_NSEdgeInsets.elements[0] = &ffi_type_double; + ffi_type_NSEdgeInsets.elements[1] = &ffi_type_double; + ffi_type_NSEdgeInsets.elements[2] = &ffi_type_double; + ffi_type_NSEdgeInsets.elements[3] = &ffi_type_double; + ffi_type_NSEdgeInsets.elements[4] = NULL; + //////////////////////////// Define ffi_type_CGAffineTransform ffi_type_CGAffineTransform.size = 0; ffi_type_CGAffineTransform.alignment = 0; @@ -218,7 +232,8 @@ BOOL containsString(NSString *s, NSString *t, NSUInteger mask) case fscode_NSRect : case fscode_CGRect : return &ffi_type_NSRect; case fscode_NSSize : - case fscode_CGSize : return &ffi_type_NSSize; + case fscode_CGSize : return &ffi_type_NSSize; + case fscode_NSEdgeInsets : return &ffi_type_NSEdgeInsets; case fscode_CGAffineTransform : return &ffi_type_CGAffineTransform; case 'B' : // No ffi_type defined yet for _Bool (Mac OS X 10.5.4), so we handle it ourselves if (sizeof(_Bool) == 4) return &ffi_type_uint32; @@ -230,15 +245,21 @@ BOOL containsString(NSString *s, NSString *t, NSUInteger mask) return NULL; } +// Return the main type in a type encoding. This is the type code from the Objective-C Runtime Programming guide, +// but with FScript-specific types for structures that have special FScript type representations. +// i.e., NSRange, NSPoint, NSSize, NSRect, CGPoint, CGSize, CGRect and CGAffineTransform char FSEncode(const char *foundationEncodeStyleStr) { // NSLog(@"FSEncode called with \"%s\"", foundationEncodeStyleStr); const char *ptr = foundationEncodeStyleStr; + // Skip protocol type qualifiers (const', 'in', 'inout', etc.) while (*ptr == 'r' || *ptr == 'n' || *ptr == 'N' || *ptr == 'o' || *ptr == 'O' || *ptr == 'R' || *ptr == 'V') ptr++; + // Found a struct type '{=...}'. If ' matches a struct with a type FScript has a special representation + // for, return a type-code specific to FScript. if (*ptr == '{') { // NSLog([NSString stringWithFormat:@"ptr = %s",ptr]); @@ -250,6 +271,7 @@ char FSEncode(const char *foundationEncodeStyleStr) else if (strcmp(ptr,@encode(NSPoint)) == 0 || strncmp(ptr,"{_NSPoint=" , 10) == 0) return fscode_NSPoint; else if (strcmp(ptr,@encode(NSSize)) == 0 || strncmp(ptr,"{_NSSize=" , 9) == 0) return fscode_NSSize; else if (strcmp(ptr,@encode(NSRect)) == 0 || strncmp(ptr,"{_NSRect=" , 9) == 0) return fscode_NSRect; + else if (strcmp(ptr,@encode(NSEdgeInsets)) == 0 || strncmp(ptr,"{_NSEdgeInsets=" , 15) == 0) return fscode_NSEdgeInsets; else if (strcmp(ptr,@encode(CGPoint)) == 0 || strncmp(ptr,"{CGPoint=" , 9) == 0) return fscode_CGPoint; else if (strcmp(ptr,@encode(CGSize)) == 0 || strncmp(ptr,"{CGSize=" , 8) == 0) return fscode_CGSize; else if (strcmp(ptr,@encode(CGRect)) == 0 || strncmp(ptr,"{CGRect=" , 8) == 0) return fscode_CGRect; @@ -286,6 +308,31 @@ BOOL FSIsIgnoredSelector(SEL selector) return (selector == @selector(retain) && selector == @selector(release)); } +@interface FSInspectorRepository : NSObject ++(void)addInspector:(id)inspector; ++(void)removeInspector:(id) inspector; +@end +@implementation FSInspectorRepository +static NSMutableSet *sInspectors = nil; ++(void)initialize +{ + if (self == FSInspectorRepository.class) { + sInspectors = [NSMutableSet new]; + } +} + ++(void)addInspector:(id)inspector +{ + [sInspectors addObject:inspector]; +} ++(void)removeInspector:(NSNotification*)notification +{ + id inspector = [notification.object delegate]; + [sInspectors removeObject:inspector]; +} +@end + + void inspect(id object, FSInterpreter *interpreter, id argument) { BOOL error = NO; @@ -296,23 +343,43 @@ void inspect(id object, FSInterpreter *interpreter, id argument) { @try // An exception may occur if the object is invalid (e.g. an invalid proxy) { - [object respondsToSelector:@selector(inspect)]; + [object respondsToSelector:@selector(inspect)]; } @catch (id exception) { error= YES; [FSGenericObjectInspector genericObjectInspectorWithObject:object]; } - + if (!error) - { + { if ([object respondsToSelector:@selector(inspectWithSystem:)]) [object inspectWithSystem:[interpreter objectForIdentifier:@"sys" found:NULL]]; else if ([object respondsToSelector:@selector(inspect)]) [object inspect]; - else [FSGenericObjectInspector genericObjectInspectorWithObject:object]; - } - } + else { + BOOL knownBaseClass = NO; + for (Class cls in [FSObjectBrowserViewObjectHelper baseClasses]){ + if ([object isKindOfClass:cls]) { + knownBaseClass = YES; + break; + } + } + if (knownBaseClass) { + FSDetailedObjectInspector *inspector = [FSDetailedObjectInspector detailedObjectInspectorWithObject:object + interpreter:interpreter]; + [NSNotificationCenter.defaultCenter addObserver:FSInspectorRepository.class + selector:@selector(removeInspector:) + name:NSWindowWillCloseNotification + object:inspector.window ]; + [FSInspectorRepository addInspector:inspector]; + } + else { + [FSGenericObjectInspector genericObjectInspectorWithObject:object]; + } + } + } + } } void inspectCollection(id collection, FSSystem *system, NSArray *blocks) // Factorize some code that would be duplicated in each collection class otherwise diff --git a/FScriptFramework/FSMsgContext.m b/FScriptFramework/FSMsgContext.m index 815896b..447a576 100644 --- a/FScriptFramework/FSMsgContext.m +++ b/FScriptFramework/FSMsgContext.m @@ -119,7 +119,7 @@ - (void) prepareForMessageWithReceiver:(id)receiver selector:(SEL)selector // Ma && returnType != 'c' && returnType != '*' && returnType != 's' && returnType != 'l' && returnType != 'q' && returnType != 'C' && returnType != 'I' && returnType != 'S' && returnType != 'Q' && returnType != 'f' && returnType != ':' && returnType != 'w' - && returnType != 'x' && returnType != 'y' && returnType != 'z' && returnType != 'W' + && returnType != 'x' && returnType != 'y' && returnType != 'z' && returnType != 'Z' && returnType != 'W' && returnType != 'X' && returnType != 'Y' && returnType != '^' && returnType != 'B' && returnType != '9'; @@ -162,7 +162,7 @@ -(NSInteger)unsuportedArgumentIndex && argumentTypes[i] != 'q' && argumentTypes[i] != 'C' && argumentTypes[i] != 'I' && argumentTypes[i] != 'S' && argumentTypes[i] != 'Q' && argumentTypes[i] != 'f' && argumentTypes[i] != ':' && argumentTypes[i] != 'w' && argumentTypes[i] != 'W' && argumentTypes[i] != 'x' && argumentTypes[i] != 'X' && argumentTypes[i] != 'y' - && argumentTypes[i] != 'Y' && argumentTypes[i] != 'z' && argumentTypes[i] != '^' && argumentTypes[i] != '9') + && argumentTypes[i] != 'Y' && argumentTypes[i] != 'z' && argumentTypes[i] != 'Z' && argumentTypes[i] != '^' && argumentTypes[i] != '9') { return i; } diff --git a/FScriptFramework/FSNSValue.h b/FScriptFramework/FSNSValue.h index b2f1af4..eb08eb3 100644 --- a/FScriptFramework/FSNSValue.h +++ b/FScriptFramework/FSNSValue.h @@ -41,5 +41,10 @@ - (CGFloat)height; - (CGFloat)width; ++ (NSEdgeInsets)edgeInsetsWithTop:(CGFloat)top left:(CGFloat)left bottom:(CGFloat)bottom right:(CGFloat)right; +-(CGFloat)top; +-(CGFloat)left; +-(CGFloat)bottom; +-(CGFloat)right; @end diff --git a/FScriptFramework/FSNSValue.m b/FScriptFramework/FSNSValue.m index c6fba58..5d5b2e2 100644 --- a/FScriptFramework/FSNSValue.m +++ b/FScriptFramework/FSNSValue.m @@ -15,6 +15,10 @@ + (NSRange)rangeWithLocation:(NSUInteger)location length:(NSUInteger)length { return NSMakeRange(location,length); } ++ (NSEdgeInsets)edgeInsetsWithTop:(CGFloat)top left:(CGFloat)left bottom:(CGFloat)bottom right:(CGFloat)right +{ + return NSEdgeInsetsMake(top, left, bottom, right); +} + (NSSize)sizeWithWidth:(CGFloat)width height:(CGFloat)height { @@ -234,4 +238,50 @@ - (CGFloat)y else return [self pointValue].y; } + +- (CGFloat)top +{ + if (strcmp([self objCType],@encode(NSEdgeInsets)) != 0) + { + if ([self isKindOfClass:[NSNumber class]]) + FSExecError(@"message \"top\" sent to a number"); + else + FSExecError(@"message \"top\" sent to an NSValue that does not contain an NSEdgeInsets"); + } + else return [self edgeInsetsValue].top; +} + +- (CGFloat)left +{ + if (strcmp([self objCType],@encode(NSEdgeInsets)) != 0) + { + if ([self isKindOfClass:[NSNumber class]]) + FSExecError(@"message \"left\" sent to a number"); + else + FSExecError(@"message \"left\" sent to an NSValue that does not contain an NSEdgeInsets"); + } + else return [self edgeInsetsValue].left; +} +- (CGFloat)bottom +{ + if (strcmp([self objCType],@encode(NSEdgeInsets)) != 0) + { + if ([self isKindOfClass:[NSNumber class]]) + FSExecError(@"message \"bottom\" sent to a number"); + else + FSExecError(@"message \"bottom\" sent to an NSValue that does not contain an NSEdgeInsets"); + } + else return [self edgeInsetsValue].bottom; +} +- (CGFloat)right +{ + if (strcmp([self objCType],@encode(NSEdgeInsets)) != 0) + { + if ([self isKindOfClass:[NSNumber class]]) + FSExecError(@"message \"right\" sent to a number"); + else + FSExecError(@"message \"right\" sent to an NSValue that does not contain an NSEdgeInsets"); + } + else return [self edgeInsetsValue].right; +} @end diff --git a/FScriptFramework/FSObjectBrowser.h b/FScriptFramework/FSObjectBrowser.h index 67d2771..0243a14 100644 --- a/FScriptFramework/FSObjectBrowser.h +++ b/FScriptFramework/FSObjectBrowser.h @@ -4,15 +4,17 @@ #import @class FSInterpreter; +@class FSObjectBrowserView; -@interface FSObjectBrowser : NSWindow -{ -} +@interface FSObjectBrowser : NSWindowController + (FSObjectBrowser *)objectBrowserWithRootObject:(id)object interpreter:(FSInterpreter *)interpreter; - (void) browseWorkspace; - (void)dealloc; - (FSObjectBrowser *)initWithRootObject:(id)object interpreter:(FSInterpreter *)interpreter; -- (BOOL)worksWhenModal; +@property (strong,nonatomic) IBOutlet id rootObject; +@property (strong,nonatomic) IBOutlet FSInterpreter* interpreter; +@property (weak,nonatomic) IBOutlet FSObjectBrowserView *objectBrowserView; +-(IBAction)floatWindow:(id)sender; @end diff --git a/FScriptFramework/FSObjectBrowser.m b/FScriptFramework/FSObjectBrowser.m index 27e21e9..e0a045c 100644 --- a/FScriptFramework/FSObjectBrowser.m +++ b/FScriptFramework/FSObjectBrowser.m @@ -5,30 +5,42 @@ #import "FSObjectBrowser.h" #import "FSObjectBrowserView.h" #import "FSObjectBrowserToolbar.h" +#import "FSObjectBrowserWindow.h" #import "FSObjectBrowserButtonsInspector.h" #import "FSMiscTools.h" static FSObjectBrowserButtonsInspector *buttonsInspector; static NSPoint topLeftPoint = {0,0}; // Used for cascading windows. +static NSMutableArray *sObjectBrowsers; + +@interface FSObjectBrowser () +@property (nonatomic) BOOL hasAwoken; +@end @implementation FSObjectBrowser ++(NSMutableArray*)objectBrowsers +{ + if (!sObjectBrowsers) { + sObjectBrowsers = [NSMutableArray new]; + } + return sObjectBrowsers; +} +(FSObjectBrowser *)objectBrowserWithRootObject:(id)object interpreter:(FSInterpreter *)interpreter { - return [[self alloc] initWithRootObject:object interpreter:interpreter]; // NO autorelease. The window will be released when closed. + FSObjectBrowser *newBrowser = [[self alloc] initWithRootObject:object interpreter:interpreter]; // NO autorelease. The window will be released when closed. + [[self objectBrowsers] addObject:newBrowser]; + return newBrowser; } -- (void) browseWorkspace { [[self contentView] browseWorkspace]; } +- (void) browseWorkspace { + [self.objectBrowserView browseWorkspace]; +} --(void) dealloc -{ - //NSLog(@"\n FSObjectBrowser dealloc\n"); - [super dealloc]; -} - (NSSearchField *)visibleSearchField { - NSArray *visibleItems = [[self toolbar] visibleItems]; + NSArray *visibleItems = [[self.window toolbar] visibleItems]; for (NSUInteger i = 0, count = [visibleItems count]; i < count; i++) { if ([[[visibleItems objectAtIndex:i] itemIdentifier] isEqualToString:@"Filter"]) @@ -41,68 +53,66 @@ - (NSSearchField *)visibleSearchField -(FSObjectBrowser *)initWithRootObject:(id)object interpreter:(FSInterpreter *)interpreter { - FSObjectBrowserView *bbv; - - [super initWithContentRect:NSMakeRect(100,100,830,400) styleMask:NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask /*| NSTexturedBackgroundWindowMask*/ backing:NSBackingStoreBuffered defer:NO]; + self = [super init]; + if (self) { + self.rootObject = object; + self.interpreter = interpreter; + } - [self setMinSize:NSMakeSize(130,130)]; // FSObjectBrowserView has weird behavior if the window becomes too tiny + return self; +} + +-(void)awakeFromNib +{ + if (!self.hasAwoken) { + self.hasAwoken = YES; + // jg added from here + if ([self.objectBrowserView respondsToSelector:@selector(setupToolbarWithWindow:)]) { + if ([self.objectBrowserView doSetupToolbar]) + [self.objectBrowserView setupToolbarWithWindow:self.window]; // defined in FSObjectBrowserToolBar.m + } + // jg added to here + NSSearchField *searchField = [self visibleSearchField]; + if (searchField) [self.window setInitialFirstResponder:searchField]; - bbv = [[FSObjectBrowserView alloc] initWithFrame:[[self contentView] bounds]]; - [bbv setRootObject:object]; - [bbv setInterpreter:interpreter]; - [bbv setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable]; - [self setContentView:bbv]; - // jg added from here - if ([bbv respondsToSelector:@selector(setupToolbarWithWindow:)]) { - if ([bbv doSetupToolbar]) - [bbv setupToolbarWithWindow:self]; // defined in FSObjectBrowserToolBar.m + [self.window setAcceptsMouseMovedEvents:YES]; + [(FSObjectBrowserWindow*)self.window setVisibleSearchField:searchField]; + self.objectBrowserView.rootObject = self.rootObject; + self.objectBrowserView.interpreter = self.interpreter; + topLeftPoint = [self.window cascadeTopLeftFromPoint:topLeftPoint]; } - // jg added to here - [bbv release]; - - NSSearchField *searchField = [self visibleSearchField]; - if (searchField) [self setInitialFirstResponder:searchField]; - //[self makeFirstResponder:bbv]; // If I don't do that, the mouse moved events are not sent to the bbv. - - [self setContentBorderThickness:FSObjectBrowserBottomBarHeight+1 forEdge:NSMinYEdge]; // Adding 1 here to FSObjectBrowserBottomBarHeight produces a prettier visual effect +} - [self setAcceptsMouseMovedEvents:YES]; - [self setTitle:@"F-Script Object Browser"]; - topLeftPoint = [self cascadeTopLeftFromPoint:topLeftPoint]; - //[self makeKeyAndOrderFront:nil]; - return self; +-(void)windowWillClose:(NSNotification *)notification +{ + self.window.delegate = nil; + [[FSObjectBrowser objectBrowsers] removeObject:self]; } -- (void)sendEvent:(NSEvent *)theEvent +-(void)makeKeyAndOrderFront:(id)sender { - // Goal: route most key events directly to the searchfield - - if ([theEvent type] == NSKeyDown) - { - unichar character = [[theEvent characters] characterAtIndex:0]; - if (character != NSLeftArrowFunctionKey && character != NSRightArrowFunctionKey && character != NSUpArrowFunctionKey && character != NSDownArrowFunctionKey) - { - NSSearchField *searchField = [self visibleSearchField]; - if (searchField && [searchField currentEditor] == nil) // If the searchfield is not already active then we make it become the first responder - [self makeFirstResponder:searchField]; - } - } - [super sendEvent:theEvent]; + [self.window makeKeyAndOrderFront:sender]; +} + +-(NSString *)windowNibName +{ + return @"FSObjectBrowser"; } -- (void)runToolbarCustomizationPalette:(id)sender +-(NSString *)windowNibPath { - if (!buttonsInspector) buttonsInspector = [[FSObjectBrowserButtonsInspector alloc] init]; - [super runToolbarCustomizationPalette:sender]; - [buttonsInspector activate]; + return [[[NSBundle bundleForClass:FSObjectBrowser.class] URLForResource:@"FSObjectBrowser" withExtension:@"nib"] path ]; } -- (BOOL)worksWhenModal +-(void)floatWindow:(id)sender { - // Since F-Script is often used as a debugging tool, we want it to - // continue working even when some other window is being run modally - return YES; + if (self.window.level == NSNormalWindowLevel) { + self.window.level = NSFloatingWindowLevel; + } + else { + self.window.level = NSNormalWindowLevel; + } } @end diff --git a/FScriptFramework/FSObjectBrowser.xib b/FScriptFramework/FSObjectBrowser.xib new file mode 100644 index 0000000..08417f5 --- /dev/null +++ b/FScriptFramework/FSObjectBrowser.xib @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/FScriptFramework/FSObjectBrowserButtonsInspector.xib b/FScriptFramework/FSObjectBrowserButtonsInspector.xib new file mode 100644 index 0000000..ce7895c --- /dev/null +++ b/FScriptFramework/FSObjectBrowserButtonsInspector.xib @@ -0,0 +1,1495 @@ + + + + 1050 + 14A379a + 941 + 1343.13 + 755.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 941 + + + YES + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + FSObjectBrowserButtonsInspector + + + FirstResponder + + + NSApplication + + + 7 + 2 + {{765, 373}, {247, 332}} + 1886912512 + Custom Buttons + NSWindow + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {213, 107} + + + 256 + + YES + + + 256 + {{20, 290}, {112, 22}} + + 1 + YES + + -1804599231 + 4195328 + + + .HelveticaNeueDeskInterface-Regular + 13 + 1040 + + + 1 + YES + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + textColor + + 3 + MAA + + + + NO + 1 + + + + 256 + {{147, 282}, {86, 32}} + + 1 + YES + + 67108864 + 137887744 + Block... + + + 1 + -2038284288 + 1 + + Helvetica + 13 + 16 + + + + + + 200 + 25 + + NO + + + + 256 + {{20, 260}, {112, 22}} + + 2 + YES + + -1804599231 + 4195328 + + + + 2 + YES + + + + NO + 1 + + + + 256 + {{147, 252}, {86, 32}} + + 2 + YES + + 67108864 + 137887744 + Block... + + + 2 + -2038284288 + 1 + + + + + + 200 + 25 + + NO + + + + 256 + {{20, 230}, {112, 22}} + + 3 + YES + + -1804599231 + 4195328 + + + + 3 + YES + + + + NO + 1 + + + + 256 + {{147, 222}, {86, 32}} + + 3 + YES + + 67108864 + 137887744 + Block... + + + 3 + -2038284288 + 1 + + + + + + 200 + 25 + + NO + + + + 256 + {{20, 200}, {112, 22}} + + 4 + YES + + -1804599231 + 4195328 + + + + 4 + YES + + + + NO + 1 + + + + 256 + {{147, 192}, {86, 32}} + + 4 + YES + + 67108864 + 137887744 + Block... + + + 4 + -2038284288 + 1 + + + + + + 200 + 25 + + NO + + + + 256 + {{20, 170}, {112, 22}} + + 5 + YES + + -1804599231 + 4195328 + + + + 5 + YES + + + + NO + 1 + + + + 256 + {{147, 162}, {86, 32}} + + 5 + YES + + 67108864 + 137887744 + Block... + + + 5 + -2038284288 + 1 + + + + + + 200 + 25 + + NO + + + + 256 + {{20, 140}, {112, 22}} + + 6 + YES + + -1804599231 + 4195328 + + + + 6 + YES + + + + NO + 1 + + + + 256 + {{147, 132}, {86, 32}} + + 6 + YES + + 67108864 + 137887744 + Block... + + + 6 + -2038284288 + 1 + + + + + + 200 + 25 + + NO + + + + 256 + {{20, 110}, {112, 22}} + + 7 + YES + + -1804599231 + 4195328 + + + + 7 + YES + + + + NO + 1 + + + + 256 + {{147, 102}, {86, 32}} + + 7 + YES + + 67108864 + 137887744 + Block... + + + 7 + -2038284288 + 1 + + + + + + 200 + 25 + + NO + + + + 256 + {{20, 80}, {112, 22}} + + 8 + YES + + -1804599231 + 4195328 + + + + 8 + YES + + + + NO + 1 + + + + 256 + {{147, 72}, {86, 32}} + + 8 + YES + + 67108864 + 137887744 + Block... + + + 8 + -2038284288 + 1 + + + + + + 200 + 25 + + NO + + + + 256 + {{20, 50}, {112, 22}} + + 9 + YES + + -1804599231 + 4195328 + + + + 9 + YES + + + + NO + 1 + + + + 256 + {{147, 42}, {86, 32}} + + 9 + YES + + 67108864 + 137887744 + Block... + + + 9 + -2038284288 + 1 + + + + + + 200 + 25 + + NO + + + + 256 + {{20, 20}, {112, 22}} + + 10 + YES + + -1804599231 + 4195328 + + + + 10 + YES + + + + NO + 1 + + + + 256 + {{147, 12}, {86, 32}} + + 10 + YES + + 67108864 + 137887744 + Block... + + + 10 + -2038284288 + 1 + + + + + + 200 + 25 + + NO + + + {{1, 9}, {247, 332}} + + {{0, 0}, {1024, 746}} + {213, 129} + {1.7976931348623157e+308, 1.7976931348623157e+308} + YES + + + + + YES + + + initialFirstResponder + + + + 29 + + + + t1 + + + + 39 + + + + t2 + + + + 40 + + + + t3 + + + + 41 + + + + t4 + + + + 42 + + + + t6 + + + + 44 + + + + t7 + + + + 45 + + + + t8 + + + + 46 + + + + t9 + + + + 47 + + + + t10 + + + + 48 + + + + window + + + + 49 + + + + b1 + + + + 50 + + + + b2 + + + + 51 + + + + b3 + + + + 52 + + + + b4 + + + + 53 + + + + b5 + + + + 54 + + + + b6 + + + + 55 + + + + b7 + + + + 56 + + + + b8 + + + + 57 + + + + b9 + + + + 58 + + + + b10 + + + + 59 + + + + t5 + + + + 60 + + + + nextKeyView + + + + 62 + + + + nextKeyView + + + + 63 + + + + nextKeyView + + + + 64 + + + + nextKeyView + + + + 65 + + + + nextKeyView + + + + 66 + + + + nextKeyView + + + + 67 + + + + nextKeyView + + + + 69 + + + + nextKeyView + + + + 70 + + + + delegate + + + + 72 + + + + nextKeyView + + + + 99 + + + + nextKeyView + + + + 100 + + + + + YES + + 0 + + YES + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 5 + + + YES + + + + Window + + + 6 + + + YES + + + + + + + + + + + + + + + + + + + + + + + + + 7 + + + YES + + + + + + 9 + + + YES + + + + + + 11 + + + YES + + + + + + 12 + + + YES + + + + + + 13 + + + YES + + + + + + 14 + + + YES + + + + + + 15 + + + YES + + + + + + 16 + + + YES + + + + + + 17 + + + YES + + + + + + 18 + + + YES + + + + + + 19 + + + YES + + + + + + 20 + + + YES + + + + + + 21 + + + YES + + + + + + 22 + + + YES + + + + + + 23 + + + YES + + + + + + 24 + + + YES + + + + + + 25 + + + YES + + + + + + 26 + + + YES + + + + + + 27 + + + YES + + + + + + 28 + + + YES + + + + + + 102 + + + + + 103 + + + + + 104 + + + + + 105 + + + + + 106 + + + + + 107 + + + + + 108 + + + + + 109 + + + + + 110 + + + + + 111 + + + + + 112 + + + + + 113 + + + + + 114 + + + + + 115 + + + + + 116 + + + + + 117 + + + + + 118 + + + + + 119 + + + + + 120 + + + + + 121 + + + + + + + YES + + YES + -3.IBPluginDependency + -3.ImportedFromIB2 + 11.IBPluginDependency + 11.ImportedFromIB2 + 12.IBPluginDependency + 12.ImportedFromIB2 + 13.IBPluginDependency + 13.ImportedFromIB2 + 14.IBPluginDependency + 14.ImportedFromIB2 + 15.IBPluginDependency + 15.ImportedFromIB2 + 16.IBPluginDependency + 16.ImportedFromIB2 + 17.IBPluginDependency + 17.ImportedFromIB2 + 18.IBPluginDependency + 18.ImportedFromIB2 + 19.IBPluginDependency + 19.ImportedFromIB2 + 20.IBPluginDependency + 20.ImportedFromIB2 + 21.IBPluginDependency + 21.ImportedFromIB2 + 22.IBPluginDependency + 22.ImportedFromIB2 + 23.IBPluginDependency + 23.ImportedFromIB2 + 24.IBPluginDependency + 24.ImportedFromIB2 + 25.IBPluginDependency + 25.ImportedFromIB2 + 26.IBPluginDependency + 26.ImportedFromIB2 + 27.IBPluginDependency + 27.ImportedFromIB2 + 28.IBPluginDependency + 28.ImportedFromIB2 + 5.IBPluginDependency + 5.ImportedFromIB2 + 5.windowTemplate.hasMinSize + 5.windowTemplate.minSize + 6.IBPluginDependency + 6.ImportedFromIB2 + 7.IBPluginDependency + 7.ImportedFromIB2 + 9.IBPluginDependency + 9.ImportedFromIB2 + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + {213, 107} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + YES + + + YES + + + + + YES + + + YES + + + + 121 + + + + YES + + FSObjectBrowserButtonsInspector + NSObject + + YES + + YES + b1 + b10 + b2 + b3 + b4 + b5 + b6 + b7 + b8 + b9 + t1 + t10 + t2 + t3 + t4 + t5 + t6 + t7 + t8 + t9 + window + + + YES + NSButton + NSButton + NSButton + NSButton + NSButton + NSButton + NSButton + NSButton + NSButton + NSButton + NSTextField + NSTextField + NSTextField + NSTextField + NSTextField + NSTextField + NSTextField + NSTextField + NSTextField + NSTextField + NSWindow + + + + YES + + YES + b1 + b10 + b2 + b3 + b4 + b5 + b6 + b7 + b8 + b9 + t1 + t10 + t2 + t3 + t4 + t5 + t6 + t7 + t8 + t9 + window + + + YES + + b1 + NSButton + + + b10 + NSButton + + + b2 + NSButton + + + b3 + NSButton + + + b4 + NSButton + + + b5 + NSButton + + + b6 + NSButton + + + b7 + NSButton + + + b8 + NSButton + + + b9 + NSButton + + + t1 + NSTextField + + + t10 + NSTextField + + + t2 + NSTextField + + + t3 + NSTextField + + + t4 + NSTextField + + + t5 + NSTextField + + + t6 + NSTextField + + + t7 + NSTextField + + + t8 + NSTextField + + + t9 + NSTextField + + + window + NSWindow + + + + + IBUserSource + + + + + FirstResponder + + IBUserSource + + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + + 3 + + diff --git a/FScriptFramework/FSObjectBrowserMatrix.h b/FScriptFramework/FSObjectBrowserMatrix.h index 86b980c..b73fc8e 100644 --- a/FScriptFramework/FSObjectBrowserMatrix.h +++ b/FScriptFramework/FSObjectBrowserMatrix.h @@ -3,10 +3,8 @@ #import +@class FSObjectInspectorViewModelItem; @interface FSObjectBrowserMatrix : NSMatrix -{ - -} - +@property (strong,nonatomic) FSObjectInspectorViewModelItem *rootViewModelItem; @end diff --git a/FScriptFramework/FSObjectBrowserMatrix.m b/FScriptFramework/FSObjectBrowserMatrix.m index e09e94c..c048294 100644 --- a/FScriptFramework/FSObjectBrowserMatrix.m +++ b/FScriptFramework/FSObjectBrowserMatrix.m @@ -7,109 +7,9 @@ @implementation FSObjectBrowserMatrix -/*- (id)initWithFrame:(NSRect)frameRect mode:(int)aMode cellClass:(Class)classId numberOfRows:(int)numRows numberOfColumns:(int)numColumns +-(void)encodeWithCoder:(NSCoder *)aCoder { - NSLog(@"initWithFrameblabla:"); - [super initWithFrame:frameRect mode:NSRadioModeMatrix cellClass:classId numberOfRows:numRows numberOfColumns:numColumns]; - [self setMode:NSRadioModeMatrix]; - return self; - -} - -- (id)initWithFrame:(NSRect)frameRect -{ - NSLog(@"initWithFrame:"); - [super initWithFrame:frameRect]; - [self setMode:NSRadioModeMatrix]; - return self; -} */ - -/*- (id)initWithFrame:(NSRect)frameRect mode:(int)aMode prototype:(NSCell *)aCell numberOfRows:(int)numRows numberOfColumns:(int)numColumns -{ - NSLog(@"initWithFrameblabla2:"); - [super initWithFrame:frameRect mode:NSListModeMatrix prototype:aCell numberOfRows:numRows numberOfColumns:numColumns]; - [self setMode:NSListModeMatrix]; - return self; - -} - -- (void)mouseMoved:(NSEvent *)theEvent -{ - NSLog(@"moved"); -} - -- (void)mouseDragged:(NSEvent *)theEvent -{ - NSSize dragOffset = NSMakeSize(0.0, 0.0); - NSPasteboard *pboard; - - NSLog(@"dragged"); - - pboard = [NSPasteboard pasteboardWithName:NSDragPboard]; - [pboard declareTypes:[NSArray arrayWithObject:NSTIFFPboardType] owner:self]; - [pboard setData:[[[NSBundle mainBundle] loadImageNamed:@"build.tiff"] TIFFRepresentation] forType:NSTIFFPboardType]; - - [self dragImage:[[NSBundle mainBundle] loadImageNamed:@"build.tiff"] at:[NSEvent mouseLocation] offset:dragOffset event:theEvent pasteboard:pboard source:self slideBack:YES]; - - [super mouseDragged:(NSEvent *)theEvent]; -} - -- (void)setMode:(NSMatrixMode)aMode -{ - [super setMode:NSListModeMatrix]; -} - -- (NSMatrixMode)mode -{ - return NSListModeMatrix; -} - -- (void)mouseDown:(NSEvent *)theEvent -{ - //NSSize dragOffset = NSMakeSize(0.0, 0.0); - //NSPasteboard *pboard; - - NSLog(@"mouseDown:"); - NSLog(@"mode=%d", [self mode]); - - //pboard = [NSPasteboard pasteboardWithName:NSDragPboard]; - //[pboard declareTypes:[NSArray arrayWithObject:NSTIFFPboardType] owner:self]; - //[pboard setData:[[[NSBundle mainBundle] loadImageNamed:@"build.tiff"] TIFFRepresentation] forType:NSTIFFPboardType]; - - //[self dragImage:[[NSBundle mainBundle] loadImageNamed:@"build.tiff"] at:[NSEvent mouseLocation] offset:dragOffset event:theEvent pasteboard:pboard source:self slideBack:YES]; - - [super mouseDown:(NSEvent *)theEvent]; -} - -- (NSDragOperation)draggingSourceOperationMaskForLocal:(BOOL)isLocal -{ - if (isLocal) return NSDragOperationEvery; - else return NSDragOperationCopy; -}*/ - -+ (id)allocWithZone:(NSZone *)zone -{ - id r = [super allocWithZone:zone]; - //NSLog([NSString stringWithFormat:@"FSObjectBrowserMatrix %p allocWithZone:", r]); - return r; -} - -- (id)retain -{ - //NSLog([NSString stringWithFormat:@"FSObjectBrowserMatrix %p retain", self]); - return [super retain]; -} - -- (oneway void)release -{ - //NSLog([NSString stringWithFormat:@"FSObjectBrowserMatrix %p release", self]); - [super release]; -} - -- (void) dealloc -{ - //NSLog([NSString stringWithFormat:@"FSObjectBrowserMatrix %p dealloc", self]); - [super dealloc]; + [super encodeWithCoder:aCoder]; } @end diff --git a/FScriptFramework/FSObjectBrowserSearchField.m b/FScriptFramework/FSObjectBrowserSearchField.m index 710d5b7..88a41fc 100644 --- a/FScriptFramework/FSObjectBrowserSearchField.m +++ b/FScriptFramework/FSObjectBrowserSearchField.m @@ -79,4 +79,5 @@ - (void)changeUnderscoreFilterPreference:(id)sender // action [[NSApplication sharedApplication] sendAction:[self action] to:[self target] from:self]; } + @end diff --git a/FScriptFramework/FSObjectBrowserView.h b/FScriptFramework/FSObjectBrowserView.h index 8771893..ae0a8a4 100644 --- a/FScriptFramework/FSObjectBrowserView.h +++ b/FScriptFramework/FSObjectBrowserView.h @@ -6,50 +6,54 @@ @class FSInterpreter; @class FSObjectBrowserBottomBarTextDisplay; +@class FSObjectInspectorViewModelItem; -NSInteger FSCompareClassNamesForAlphabeticalOrder(NSString *className1, NSString *className2, void *context); +NSInteger FSCompareClassNamesForAlphabeticalOrder(NSString* className1, NSString* className2, void* context); const int FSObjectBrowserBottomBarHeight; -@interface FSObjectBrowserView : NSView -{ - id rootObject; - FSInterpreter *interpreter; - NSBrowser *browser; - FSObjectBrowserBottomBarTextDisplay *bottomBarTextDisplay; - id selectedView; - NSString *filterString; - NSMutableSet *matrixes; - enum {FSBrowsingWorkspace, FSBrowsingClasses, FSBrowsingObject, FSBrowsingNothing} browsingMode; +@interface FSObjectBrowserView : NSView { + id rootObject; + FSInterpreter* interpreter; + NSBrowser* browser; + FSObjectBrowserBottomBarTextDisplay* bottomBarTextDisplay; + id selectedView; + NSString* filterString; + NSMutableSet* matrixes; + enum { FSBrowsingWorkspace, + FSBrowsingClasses, + FSBrowsingObject, + FSBrowsingNothing } browsingMode; } -+ (NSArray *)customButtons; ++ (NSArray*)customButtons; + (void)saveCustomButtonsSettings; -- (void)addDictionary:(NSDictionary *)d withLabel:(NSString *)label toMatrix:(NSMatrix *)matrix classLabel:(NSString *)classLabel selectedClassLabel:(NSString *)selectedClassLabel selectedLabel:(NSString *)selectedLabel selectedObject:(id)selectedObject; -- (void)addBindingForObject:(id)object withName:(NSString *)name toMatrix:(NSMatrix *)matrix classLabel:(NSString *)classLabel selectedClassLabel:(NSString *)selectedClassLabel selectedLabel:(NSString *)selectedLabel selectedObject:(id)selectedObject; -- (void)addBlankRowToMatrix:(NSMatrix *)matrix; -- (void)addClassLabel:(NSString *)label toMatrix:(NSMatrix *)matrix; -- (void)addClassLabel:(NSString *)label toMatrix:(NSMatrix *)matrix color:(NSColor *)color; -- (void)addClassesWithNames:(NSArray *)classNames withLabel:(NSString *)label toMatrix:(NSMatrix *)matrix classLabel:(NSString *)classLabel selectedClassLabel:(NSString *)selectedClassLabel selectedLabel:(NSString *)selectedLabel selectedObject:(id)selectedObject; -- (void)addLabel:(NSString *)label toMatrix:(NSMatrix *)matrix; -- (void)addLabel:(NSString *)label toMatrix:(NSMatrix *)matrix indentationLevel:(NSUInteger)indentationLevel; -- (void)addLabelAlone:(NSString *)label toMatrix:(NSMatrix *)matrix; -- (void)addObject:(id)object toMatrix:(NSMatrix *)matrix label:(NSString *)label classLabel:(NSString *)classLabel; -- (void)addObject:(id)object toMatrix:(NSMatrix *)matrix label:(NSString *)label classLabel:(NSString *)classLabel indentationLevel:(NSUInteger)indentationLevel; -- (void)addObject:(id)object toMatrix:(NSMatrix *)matrix label:(NSString *)label classLabel:(NSString *)classLabel indentationLevel:(NSUInteger)indentationLevel leaf:(BOOL)leaf; -- (void)addObject:(id)object withLabel:(NSString *)label toMatrix:(NSMatrix *)matrix classLabel:(NSString *)classLabel selectedClassLabel:(NSString *)selectedClassLabel selectedLabel:(NSString *)selectedLabel selectedObject:(id)selectedObject; -- (void)addObject:(id)object withLabel:(NSString *)label toMatrix:(NSMatrix *)matrix leaf:(BOOL)leaf classLabel:(NSString *)classLabel selectedClassLabel:(NSString *)selectedClassLabel selectedLabel:(NSString *)selectedLabel selectedObject:(id)selectedObject indentationLevel:(NSUInteger)indentationLevel; -- (void)addObjects:(NSArray *)objects withLabel:(NSString *)label toMatrix:(NSMatrix *)matrix classLabel:(NSString *)classLabel selectedClassLabel:(NSString *)selectedClassLabel selectedLabel:(NSString *)selectedLabel selectedObject:(id)selectedObject; -- (void)addPropertyLabel:(NSString *)label toMatrix:(NSMatrix *)matrix; +- (void)addDictionary:(NSDictionary*)d withLabel:(NSString*)label toMatrix:(NSMatrix*)matrix classLabel:(NSString*)classLabel selectedClassLabel:(NSString*)selectedClassLabel selectedLabel:(NSString*)selectedLabel selectedObject:(id)selectedObject; +- (void)addBindingForObject:(id)object withName:(NSString*)name toMatrix:(NSMatrix*)matrix classLabel:(NSString*)classLabel selectedClassLabel:(NSString*)selectedClassLabel selectedLabel:(NSString*)selectedLabel selectedObject:(id)selectedObject; +- (void)addBlankRowToMatrix:(NSMatrix*)matrix; +- (void)addClassLabel:(NSString*)label toMatrix:(NSMatrix*)matrix; +- (void)addClassLabel:(NSString*)label toMatrix:(NSMatrix*)matrix color:(NSColor*)color; +- (void)addClassesWithNames:(NSArray*)classNames withLabel:(NSString*)label toMatrix:(NSMatrix*)matrix classLabel:(NSString*)classLabel selectedClassLabel:(NSString*)selectedClassLabel selectedLabel:(NSString*)selectedLabel selectedObject:(id)selectedObject; +- (void)addLabel:(NSString*)label toMatrix:(NSMatrix*)matrix; +- (void)addLabel:(NSString*)label toMatrix:(NSMatrix*)matrix indentationLevel:(NSUInteger)indentationLevel; +- (void)addLabelAlone:(NSString*)label toMatrix:(NSMatrix*)matrix; +- (void)addObject:(id)object toMatrix:(NSMatrix*)matrix label:(NSString*)label classLabel:(NSString*)classLabel; +- (void)addObject:(id)object toMatrix:(NSMatrix*)matrix label:(NSString*)label classLabel:(NSString*)classLabel indentationLevel:(NSUInteger)indentationLevel; +- (void)addObject:(id)object toMatrix:(NSMatrix*)matrix label:(NSString*)label classLabel:(NSString*)classLabel indentationLevel:(NSUInteger)indentationLevel leaf:(BOOL)leaf; +- (void)addObject:(id)object withLabel:(NSString*)label toMatrix:(NSMatrix*)matrix classLabel:(NSString*)classLabel selectedClassLabel:(NSString*)selectedClassLabel selectedLabel:(NSString*)selectedLabel selectedObject:(id)selectedObject; +- (void)addObject:(id)object withLabel:(NSString*)label toMatrix:(NSMatrix*)matrix leaf:(BOOL)leaf classLabel:(NSString*)classLabel selectedClassLabel:(NSString*)selectedClassLabel selectedLabel:(NSString*)selectedLabel selectedObject:(id)selectedObject indentationLevel:(NSUInteger)indentationLevel; +- (void)addObjects:(NSArray*)objects withLabel:(NSString*)label toMatrix:(NSMatrix*)matrix classLabel:(NSString*)classLabel selectedClassLabel:(NSString*)selectedClassLabel selectedLabel:(NSString*)selectedLabel selectedObject:(id)selectedObject; +- (void)addPropertyLabel:(NSString*)label toMatrix:(NSMatrix*)matrix; - (IBAction)browseAction:(id)sender; -- (void) browseNothing; -- (void) browseWorkspace; -- (void) fillMatrix:(NSMatrix *)matrix withMethodsForObject:(id)object; -- (void) filterAction:(id)sender; -- (BOOL) hasEmptyFilterString; -- (id) initWithFrame:(NSRect)frameRect; -- (id) selectedObject; -- (void) setInterpreter:(FSInterpreter *)theInterpreter; -- (void) setRootObject:(id)theRootObject; +- (void)browseNothing; +- (void)browseWorkspace; +- (void)fillMatrix:(NSMatrix*)matrix withMethodsForObject:(id)object; +- (void)filterAction:(id)sender; +- (BOOL)hasEmptyFilterString; +- (id)initWithFrame:(NSRect)frameRect; +- (id)selectedObject; +@property (retain,nonatomic) IBOutlet FSInterpreter *interpreter; +@property (retain,nonatomic) IBOutlet id rootObject; + @end diff --git a/FScriptFramework/FSObjectBrowserView.m b/FScriptFramework/FSObjectBrowserView.m index 81c77bd..dba9153 100644 --- a/FScriptFramework/FSObjectBrowserView.m +++ b/FScriptFramework/FSObjectBrowserView.m @@ -11,7 +11,7 @@ #import "FSNSObject.h" #import "FSArray.h" #import "FSObjectBrowserCell.h" -#import "FSMiscTools.h" +#import "FSMiscTools.h" #import "BlockStackElem.h" #import "BlockPrivate.h" #import "BlockInspector.h" @@ -43,2028 +43,1749 @@ @interface ArgumentsWindow : NSWindow @end @implementation ArgumentsWindow -- (BOOL)canBecomeKeyWindow { - return YES; -} +- (BOOL)canBecomeKeyWindow { return YES; } @end const int FSObjectBrowserBottomBarHeight = 22; static Class NSManagedObjectClass; -/* -static int compareClassesForAlphabeticalOrder(id class1, id class2, void *context) -{ - NSString *class1String = printString(class1); - NSString *class2String = printString(class2); - - if ([class1String hasPrefix:@"%"] && ![class2String hasPrefix:@"%"]) - return NSOrderedDescending; - else if ([class2String hasPrefix:@"%"] && ![class1String hasPrefix:@"%"]) - return NSOrderedAscending; - else - return [class1String compare:class2String]; -} -*/ - -static FSObjectBrowserCell *addRowToMatrix(NSMatrix *matrix) -{ - // Since we reuse cells when filtering (because we use renewRows:columns:), we must - // ensure that they are correctly set-up when reused. This is the job of this function. - - FSObjectBrowserCell *cell; - - // For an unknown reason, the following does not correctly maintain the selection: - // *********** - // int numberOfRows = [matrix numberOfRows]; - // [matrix renewRows:numberOfRows+1 columns:1]; - // cell = [matrix cellAtRow:numberOfRows column:0]; - // *********** - // We do the folowing instead: - // *********** - [matrix addRow]; - cell = [matrix cellAtRow:[matrix numberOfRows]-1 column:0]; - // *********** - - [cell setLeaf:NO]; - [cell setEnabled:YES]; - [cell setObjectValue:nil]; - [cell setObjectBrowserCellType:FSOBUNKNOWN]; - [cell setClassLabel:nil]; - [cell setLabel:nil]; - [cell setRepresentedObject:nil]; - return cell; -} - - -NSInteger FSCompareClassNamesForAlphabeticalOrder(NSString *className1, NSString *className2, void *context) -{ - if ([className1 hasPrefix:@"%"] && ![className2 hasPrefix:@"%"]) - return NSOrderedDescending; - else if ([className2 hasPrefix:@"%"] && ![className1 hasPrefix:@"%"]) - return NSOrderedAscending; - else - return [className1 caseInsensitiveCompare:className2]; -} - - -static NSInteger FSCompareMethodsNamesForAlphabeticalOrder(NSString *m1, NSString *m2, void *context) -{ - if ([m1 hasPrefix:@"_"] && ![m2 hasPrefix:@"_"]) - return NSOrderedDescending; - else if ([m2 hasPrefix:@"_"] && ![m1 hasPrefix:@"_"]) - return NSOrderedAscending; - else - return [m1 caseInsensitiveCompare:m2]; -} - -static NSString *printStringForObjectBrowser(id object) -{ - NSString *entityName; - NSString *result = nil; - - @try - { - if (NSManagedObjectClass && [object isKindOfClass:NSManagedObjectClass] && (entityName = [[object entity] name]) != nil) - { - result = [@"Managed object: " stringByAppendingString:entityName]; - } - } - @catch (id exception) - { - result = [NSString stringWithFormat:@"*** Non printable object. The following exception was raised when " - @"trying to get a textual representation of the object: %@" - ,FSErrorMessageFromException(exception)]; - } - - if (!result) - { - result = printStringLimited(object, 1000); - if ([result length] > 510) - result = [[result substringWithRange:NSMakeRange(0,500)] stringByAppendingString:@" ..."]; - } - - return result; -} - - -static NSString *humanReadableFScriptTypeDescriptionFromEncodedObjCType(const char *ptr) -{ - while (*ptr == 'r' || *ptr == 'n' || *ptr == 'N' || *ptr == 'o' || *ptr == 'O' || *ptr == 'R' || *ptr == 'V') - ptr++; - - if (strcmp(ptr,@encode(id)) == 0) return @""; - else if (strcmp(ptr,@encode(char)) == 0) return @""; - else if (strcmp(ptr,@encode(int)) == 0) return @"int"; - else if (strcmp(ptr,@encode(short)) == 0) return @"short"; - else if (strcmp(ptr,@encode(long)) == 0) return @"long"; - else if (strcmp(ptr,@encode(long long)) == 0) return @"long long"; - else if (strcmp(ptr,@encode(unsigned char)) == 0) return @"unsigned char"; - else if (strcmp(ptr,@encode(unsigned short)) == 0) return @"unsigned short"; - else if (strcmp(ptr,@encode(unsigned int)) == 0) return @"unsigned int"; - else if (strcmp(ptr,@encode(unsigned long)) == 0) return @"unsigned long"; - else if (strcmp(ptr,@encode(unsigned long long)) == 0) return @"unsigned long long"; - else if (strcmp(ptr,@encode(float)) == 0) return @"float"; - else if (strcmp(ptr,@encode(double)) == 0) return @"double"; - else if (strcmp(ptr,@encode(char *)) == 0) return @"pointer"; - else if (strcmp(ptr,@encode(SEL)) == 0) return @"SEL"; - else if (strcmp(ptr,@encode(Class)) == 0) return @"Class"; - else if (strcmp(ptr,@encode(NSRange)) == 0) return @"NSRange"; - else if (strcmp(ptr,@encode(NSPoint)) == 0) return @"NSPoint"; - else if (strcmp(ptr,@encode(NSSize)) == 0) return @"NSSize"; - else if (strcmp(ptr,@encode(NSRect)) == 0) return @"NSRect"; - else if (strcmp(ptr,@encode(CGPoint)) == 0) return @"CGPoint"; - else if (strcmp(ptr,@encode(CGSize)) == 0) return @"CGSize"; - else if (strcmp(ptr,@encode(CGRect)) == 0) return @"CGRect"; - else if (strcmp(ptr,@encode(CGAffineTransform)) == 0) return @"CGAffineTransform"; - else if (strcmp(ptr,@encode(_Bool)) == 0) return @"boolean"; - else if (*ptr == '{') - { - NSMutableString *structName = [NSMutableString string]; - ptr++; - while (isalnum(*ptr) || *ptr == '_') - { - [structName appendString:[[[NSString alloc] initWithBytes:ptr length:1 encoding:NSASCIIStringEncoding] autorelease]]; - ptr++; - } - if (*ptr == '=' && ![structName isEqualToString:@""]) - return [@"struct " stringByAppendingString:structName]; - else - return @""; - } - else if (*ptr == '^') - { - NSString *pointed = humanReadableFScriptTypeDescriptionFromEncodedObjCType(++ptr); - if ([pointed isEqualToString:@""]) - return @"pointer"; - else - return [@"pointer to " stringByAppendingString:pointed]; - } - else return @""; -} - -static NSString *FScriptObjectTemplateForEncodedObjCType(const char *ptr) -{ - while (*ptr == 'r' || *ptr == 'n' || *ptr == 'N' || *ptr == 'o' || *ptr == 'O' || *ptr == 'R' || *ptr == 'V') - ptr++; - -/* if (strcmp(ptr,@encode(id)) == 0) return @""; - else if (strcmp(ptr,@encode(char)) == 0) return @""; - else if (strcmp(ptr,@encode(int)) == 0) return @""; - else if (strcmp(ptr,@encode(short)) == 0) return @""; - else if (strcmp(ptr,@encode(long)) == 0) return @""; - else if (strcmp(ptr,@encode(long long)) == 0) return @""; - else if (strcmp(ptr,@encode(unsigned char)) == 0) return @""; - else if (strcmp(ptr,@encode(unsigned short)) == 0) return @""; - else if (strcmp(ptr,@encode(unsigned int)) == 0) return @""; - else if (strcmp(ptr,@encode(unsigned long)) == 0) return @""; - else if (strcmp(ptr,@encode(unsigned long long)) == 0) return @""; - else if (strcmp(ptr,@encode(float)) == 0) return @""; - else if (strcmp(ptr,@encode(double)) == 0) return @""; - else if (strcmp(ptr,@encode(char *)) == 0) return @""; -#warning 64BIT: Inspect use of @encode - else*/ if (strcmp(ptr,@encode(SEL)) == 0) return @"#selector"; - //else if (strcmp(ptr,@encode(Class)) == 0) return @""; - //else if (*ptr == '^') return @""; - else if (strcmp(ptr,@encode(NSRange)) == 0) return @"NSValue rangeWithLocation:0 length:0"; - else if (strcmp(ptr,@encode(NSPoint)) == 0) return @"0<>0"; - else if (strcmp(ptr,@encode(NSSize)) == 0) return @"NSValue sizeWithWidth:0 height:0"; - else if (strcmp(ptr,@encode(NSRect)) == 0) return @"0<>0 extent:0<>0"; - else if (strcmp(ptr,@encode(CGPoint)) == 0) return @"0<>0"; - else if (strcmp(ptr,@encode(CGSize)) == 0) return @"NSValue sizeWithWidth:0 height:0"; - else if (strcmp(ptr,@encode(CGRect)) == 0) return @"0<>0 extent:0<>0"; - //else if (strcmp(ptr,@encode(_Bool)) == 0) return @""; - else return @""; -} - -static NSMutableArray *customButtons = nil; - -@interface FSObjectBrowserView() // Methods declaration to let the compiler know - -- (void) fillMatrixForClassesBrowsing:(NSMatrix*)matrix; -- (void) fillMatrixForWorkspaceBrowsing:(NSMatrix*)matrix; -// - (void) fillMatrix:(NSMatrix *)matrix withMethodsAndPropertiesForObject:(id)object; -- (void) fillMatrix:(NSMatrix *)matrix withMethodsForObject:(id)object; -//- (void) fillMatrix:(NSMatrix *)matrix withPropertiesForObject:(id)object; -- (void) filter; -- (void) inspectAction:(id)sender; -- (id) selectedObject; -- (void) selectMethodNamed:(NSString *)methodName; -- (void) selfAction:(id)sender; -- (void) sendMessage:(SEL)selector withArguments:(FSArray *)arguments; -- (BOOL) sendMessageTo:(id)receiver selectorString:(NSString *)selectorStr arguments:(FSArray *)arguments putResultInMatrix:(NSMatrix *)matrix; -- (void) setFilterString:(NSString *)theFilterString; -- (void) setTitleOfLastColumn:(NSString *)title; -- (id) validSelectedObject; +static FSObjectBrowserCell* addRowToMatrix(NSMatrix* matrix); +NSInteger FSCompareClassNamesForAlphabeticalOrder(NSString* className1, NSString* className2, void* context); +static NSInteger FSCompareMethodsNamesForAlphabeticalOrder(NSString* m1, NSString* m2, void* context); +static NSString* printStringForObjectBrowser(id object); +static NSString* humanReadableFScriptTypeDescriptionFromEncodedObjCType(const char* ptr); +static NSString* FScriptObjectTemplateForEncodedObjCType(const char* ptr); -@end + +static NSMutableArray* customButtons = nil; + +/* + * + * + *================================================================================================*/ +#pragma mark - FSObjectBrowserView Implementation +/*================================================================================================== + */ @implementation FSObjectBrowserView +@synthesize interpreter; +@synthesize rootObject; + ++ (NSArray*)customButtons +{ + return customButtons; +} -+ (NSArray *)customButtons ++ (void)initialize { - return customButtons; + static BOOL tooLate = NO; + if (!tooLate) { + int i; + NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; + NSMutableDictionary* registrationDict = [NSMutableDictionary dictionary]; + + [registrationDict setObject:[NSNumber numberWithDouble:[[NSFont userFixedPitchFontOfSize:-1] pointSize]] forKey:@"FScriptFontSize"]; + [defaults registerDefaults:registrationDict]; + + NSManagedObjectClass = NSClassFromString(@"NSManagedObject"); + + customButtons = [[NSMutableArray alloc] initWithCapacity:10]; + + for (i = 1; i < 11; i++) { + FSObjectBrowserToolbarButton* button = [[FSObjectBrowserToolbarButton alloc] initWithFrame:NSMakeRect(0, 0, 80, 20)]; + NSString* buttonName = [defaults stringForKey:[NSString stringWithFormat:@"BigBrowserToolbarButtonCustom%dName", i]]; + NSData* blockData = [defaults objectForKey:[NSString stringWithFormat:@"BigBrowserToolbarButtonCustom%dBlock", i]]; + FSBlock* block = nil; + + if (blockData) { + @try { + block = [[NSKeyedUnarchiver unarchiveObjectWithData:blockData] retain]; + } + @catch (id exception) + { + NSLog(@"Problem while loading a block for an F-Script object browser custom button: %@", FSErrorMessageFromException(exception)); + block = nil; // We will fall back to the default block template + } + } + + if (!buttonName) + buttonName = [NSString stringWithFormat:@"Custom%d", i]; + + if (!block) { + NSString* blockSource; + + if (i == 1) { + buttonName = @"Example1"; + blockSource = @"[:selectedObject|\n\n\"This block is an example illustrating the use of custom buttons in the object browser. This block prompts the user to save the selected object, and then returns a custom string.\"\n\nselectedObject save.\n'hello, I''m the result of the Example1 block !'\n]"; + } + else if (i == 2) { + buttonName = @"Example2"; + blockSource = @"#isEqual:"; + } + else if (i == 3) { + buttonName = @"Example3"; + blockSource = @"[\n\"This block is an example illustrating the use of custom buttons in the object browser. This block will simply open a standard about box.\"\n\nNSApplication sharedApplication orderFrontStandardAboutPanel:nil\n]"; + } + else + blockSource = @"[:selectedObject| selectedObject \"Define your custom block here.\"]"; + + block = [blockSource asBlock]; + } + + [button setIdentifier:[NSString stringWithFormat:@"Custom%d", i]]; + [button setName:buttonName]; + [button setBlock:block]; + [button setAction:@selector(applyBlockAction:)]; + [customButtons addObject:button]; + } + + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(saveCustomButtonsSettings:) name:NSApplicationWillTerminateNotification object:nil]; + } } -+ (void) initialize ++ (void)saveCustomButtonsSettings { - static BOOL tooLate = NO; - if ( !tooLate ) - { - int i; - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - NSMutableDictionary *registrationDict = [NSMutableDictionary dictionary]; + int i; + NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; + + for (i = 0; i < 10; i++) { + [defaults setObject:[[customButtons objectAtIndex:i] name] forKey:[NSString stringWithFormat:@"BigBrowserToolbarButtonCustom%dName", i + 1]]; + [defaults setObject:[NSKeyedArchiver archivedDataWithRootObject:[[customButtons objectAtIndex:i] block]] forKey:[NSString stringWithFormat:@"BigBrowserToolbarButtonCustom%dBlock", i + 1]]; + } + [defaults synchronize]; +} + ++ (void)saveCustomButtonsSettings:(NSNotification*)aNotification +{ + [self saveCustomButtonsSettings]; +} + +-(void)_setup +{ + CGFloat baseWidth = NSWidth([self bounds]); + CGFloat baseHeight = NSHeight([self bounds]); + CGFloat fontSize; - [registrationDict setObject:[NSNumber numberWithDouble:[[NSFont userFixedPitchFontOfSize:-1] pointSize]] forKey:@"FScriptFontSize"]; - [defaults registerDefaults:registrationDict]; + fontSize = systemFontSize(); - NSManagedObjectClass = NSClassFromString(@"NSManagedObject"); + browser = [[NSBrowser alloc] initWithFrame:NSMakeRect(0, FSObjectBrowserBottomBarHeight, baseWidth, baseHeight - FSObjectBrowserBottomBarHeight)]; + [browser setMatrixClass:FSObjectBrowserMatrix.class]; - customButtons = [[NSMutableArray alloc] initWithCapacity:10]; - - for (i = 1; i < 11; i++) - { - FSObjectBrowserToolbarButton *button = [[FSObjectBrowserToolbarButton alloc] initWithFrame:NSMakeRect(0,0,80,20)]; - NSString *buttonName = [defaults stringForKey:[NSString stringWithFormat:@"BigBrowserToolbarButtonCustom%dName",i]]; - NSData *blockData = [defaults objectForKey:[NSString stringWithFormat:@"BigBrowserToolbarButtonCustom%dBlock",i]]; - FSBlock *block = nil; - - if (blockData) - { - @try - { - block = [[NSKeyedUnarchiver unarchiveObjectWithData:blockData] retain]; + [browser setCellClass:[FSObjectBrowserCell class]]; + [browser setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable]; + [browser setHasHorizontalScroller:YES]; + [browser setMinColumnWidth:145 + (fontSize * 6)]; + [browser setTakesTitleFromPreviousColumn:NO]; + [browser setTitled:NO]; + [browser setTarget:self]; + [browser setDoubleAction:@selector(doubleClickAction:)]; + [[browser cellPrototype] setFont:[NSFont systemFontOfSize:fontSize]]; + [browser setDelegate:self]; + [browser setFocusRingType:NSFocusRingTypeNone]; + [browser setAutohidesScroller:YES]; + [browser setAllowsTypeSelect:NO]; + + if ([browser respondsToSelector:@selector(setColumnResizingType:)]) + [browser setColumnResizingType:2]; + + if ([browser respondsToSelector:@selector(setColumnsAutosaveName:)]) + [browser setColumnsAutosaveName:@"Object browser columns autosave configuration"]; + + bottomBarTextDisplay = [[FSObjectBrowserBottomBarTextDisplay alloc] initWithFrame:NSMakeRect(0, 0, baseWidth, FSObjectBrowserBottomBarHeight)]; + + [self addSubview:browser]; + [self addSubview:bottomBarTextDisplay]; + + browsingMode = FSBrowsingWorkspace; + + filterString = @""; + + matrixes = [[NSMutableSet alloc] init]; +} + +- (id)initWithFrame:(NSRect)frameRect +{ + self = [super initWithFrame:frameRect]; + if (self) { + [self _setup]; } - @catch (id exception) - { - NSLog(@"Problem while loading a block for an F-Script object browser custom button: %@", FSErrorMessageFromException(exception)); - block = nil; // We will fall back to the default block template + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)coder +{ + self = [super initWithCoder:coder]; + if (self) { + [self _setup]; } - } - - if (!buttonName) buttonName = [NSString stringWithFormat:@"Custom%d", i]; - - if (!block) - { - NSString *blockSource; - - if (i == 1) - { - buttonName = @"Example1"; - blockSource = @"[:selectedObject|\n\n\"This block is an example illustrating the use of custom buttons in the object browser. This block prompts the user to save the selected object, and then returns a custom string.\"\n\nselectedObject save.\n'hello, I''m the result of the Example1 block !'\n]"; + return self; +} + + + +- (void)addBindingForObject:(id)object withName:(NSString*)name toMatrix:(NSMatrix*)matrix classLabel:(NSString*)classLabel selectedClassLabel:(NSString*)selectedClassLabel selectedLabel:(NSString*)selectedLabel selectedObject:(id)selectedObject +{ + NSDictionary* infoForBinding = [object infoForBinding:name]; + if (infoForBinding) { + NSString* objectBoundLabel = @"Object bound"; + NSString* keyPathBoundLabel = @"Key path bound"; + NSString* valueClassLabel = @"Value class"; + NSString* valueLabel = @"Value"; + NSString* optionsLabel = @"Options"; + + id objectBound = [infoForBinding objectForKey:NSObservedObjectKey]; + NSString* keyPathBound = [infoForBinding objectForKey:NSObservedKeyPathKey]; + Class valueClass = [object respondsToSelector:@selector(valueClassForBinding:)] ? [object valueClassForBinding:name] : nil; + id value = [objectBound valueForKeyPath:keyPathBound]; + NSDictionary* options = [infoForBinding objectForKey:NSOptionsKey]; + + NSString* objectBoundString = printString(objectBound); + NSString* keyPathBoundString = keyPathBound; + NSString* valueClassString = printString(valueClass); + NSString* valueString = printString(value); + NSString* optionsString = printString(options); + + BOOL shouldDisplayBinding = [filterString isEqualToString:@""] + || containsString(name, filterString, NSCaseInsensitiveSearch) + || containsString(objectBoundLabel, filterString, NSCaseInsensitiveSearch) + || containsString(objectBoundString, filterString, NSCaseInsensitiveSearch) + || containsString(keyPathBoundLabel, filterString, NSCaseInsensitiveSearch) + || containsString(keyPathBoundString, filterString, NSCaseInsensitiveSearch) + || containsString(valueLabel, filterString, NSCaseInsensitiveSearch) + || containsString(valueString, filterString, NSCaseInsensitiveSearch) + || (valueClass != nil && containsString(valueClassLabel, filterString, NSCaseInsensitiveSearch)) + || (valueClass != nil && containsString(valueClassString, filterString, NSCaseInsensitiveSearch)) + || containsString(optionsLabel, filterString, NSCaseInsensitiveSearch) + || containsString(optionsString, filterString, NSCaseInsensitiveSearch) + || (selectedClassLabel == classLabel && ((selectedObject == objectBound && selectedLabel == objectBoundLabel) + || (selectedObject == keyPathBound && selectedLabel == keyPathBoundLabel) + || (selectedObject == value && selectedLabel == valueLabel) + || (valueClass != nil && selectedObject == valueClass && selectedLabel == valueClassLabel) + || (selectedObject == options && selectedLabel == optionsLabel))); + + if (shouldDisplayBinding) { + [self addLabel:[NSString stringWithFormat:@"Binding: %@", name] toMatrix:matrix]; + [self addObject:objectBound withLabel:objectBoundLabel toMatrix:matrix leaf:NO classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject indentationLevel:1]; + [self addObject:keyPathBound withLabel:keyPathBoundLabel toMatrix:matrix leaf:NO classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject indentationLevel:1]; + if (valueClass != nil) + [self addObject:valueClass withLabel:valueClassLabel toMatrix:matrix leaf:NO classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject indentationLevel:1]; + [self addObject:value withLabel:valueLabel toMatrix:matrix leaf:NO classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject indentationLevel:1]; + [self addObject:options withLabel:optionsLabel toMatrix:matrix leaf:NO classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject indentationLevel:1]; + [self addBlankRowToMatrix:matrix]; + } } - else if (i == 2) - { - buttonName = @"Example2"; - blockSource = @"#isEqual:"; +} + +- (void)addDictionary:(NSDictionary*)d withLabel:(NSString*)label toMatrix:(NSMatrix*)matrix classLabel:(NSString*)classLabel selectedClassLabel:(NSString*)selectedClassLabel selectedLabel:(NSString*)selectedLabel selectedObject:(id)selectedObject +{ + if (d) { + NSEnumerator* enumerator = [d keyEnumerator]; + id key, value; + NSString* objectString; + NSUInteger count = [d count]; + FSObjectBrowserCell* cell; + + if (count != 0) { + if ([self hasEmptyFilterString] || containsString(label, filterString, NSCaseInsensitiveSearch)) { + [self addLabel:label toMatrix:matrix]; + + while ((key = [enumerator nextObject])) { + cell = addRowToMatrix(matrix); + + value = [d objectForKey:key]; + [cell setRepresentedObject:[FSAssociation associationWithKey:key value:value]]; + objectString = [NSString stringWithFormat:@" %@ -> %@", printStringLimited(key, 50), printStringLimited(value, 1000)]; + if ([objectString length] > 510) + objectString = [[objectString substringWithRange:NSMakeRange(0, 500)] stringByAppendingString:@" ..."]; + [cell setStringValue:objectString]; + [cell setObjectBrowserCellType:FSOBOBJECT]; + [cell setLabel:printString(key)]; + [cell setClassLabel:@""]; + if (value == selectedObject && [printString(key) isEqualToString:selectedLabel]) + [matrix selectCellAtRow:[matrix numberOfRows] - 1 column:0]; + } + } + else { + while ((key = [enumerator nextObject]) && !containsString(printString(key), filterString, NSCaseInsensitiveSearch) && !containsString(printString([d objectForKey:key]), filterString, NSCaseInsensitiveSearch) && !([d objectForKey:key] == selectedObject && [printString(key) isEqualToString:selectedLabel])) + ; + + if (key) { + [self addLabel:label toMatrix:matrix]; + while (key) { + value = [d objectForKey:key]; + BOOL addingSelectedObject = (value == selectedObject && [printString(key) isEqualToString:selectedLabel]); + if (containsString(printString(value), filterString, NSCaseInsensitiveSearch) || containsString(printString(key), filterString, NSCaseInsensitiveSearch) || addingSelectedObject) { + cell = addRowToMatrix(matrix); + + [cell setRepresentedObject:[FSAssociation associationWithKey:key value:value]]; + objectString = [NSString stringWithFormat:@" %@ -> %@", printStringLimited(key, 50), printStringLimited(value, 1000)]; + if ([objectString length] > 510) + objectString = [[objectString substringWithRange:NSMakeRange(0, 500)] stringByAppendingString:@" ..."]; + [cell setStringValue:objectString]; + [cell setObjectBrowserCellType:FSOBOBJECT]; + [cell setLabel:printString(key)]; + [cell setClassLabel:@""]; + if (addingSelectedObject) + [matrix selectCellAtRow:[matrix numberOfRows] - 1 column:0]; + } + key = [enumerator nextObject]; + } + } + } + } } - else if (i == 3) - { - buttonName = @"Example3"; - blockSource = @"[\n\"This block is an example illustrating the use of custom buttons in the object browser. This block will simply open a standard about box.\"\n\nNSApplication sharedApplication orderFrontStandardAboutPanel:nil\n]"; +} + +- (void)applyBlockAction:(id)sender +{ + FSBlock* block = [sender block]; + + @try { + [block compilIfNeeded]; } - else blockSource = @"[:selectedObject| selectedObject \"Define your custom block here.\"]"; - - block = [blockSource asBlock]; - } - - [button setIdentifier:[NSString stringWithFormat:@"Custom%d", i]]; - [button setName:buttonName]; - [button setBlock:block]; - [button setAction:@selector(applyBlockAction:)]; - [customButtons addObject:button]; - } - - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(saveCustomButtonsSettings:) name:NSApplicationWillTerminateNotification object:nil]; - } -} - -+ (void)saveCustomButtonsSettings -{ - int i; - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - - for (i = 0; i < 10; i++) - { - [defaults setObject:[[customButtons objectAtIndex:i] name] forKey:[NSString stringWithFormat:@"BigBrowserToolbarButtonCustom%dName",i+1]]; - [defaults setObject:[NSKeyedArchiver archivedDataWithRootObject:[[customButtons objectAtIndex:i] block]] forKey:[NSString stringWithFormat:@"BigBrowserToolbarButtonCustom%dBlock",i+1]]; - } - [defaults synchronize]; -} - -+ (void)saveCustomButtonsSettings:(NSNotification *)aNotification -{ - [self saveCustomButtonsSettings]; -} - -- (void)addBindingForObject:(id)object withName:(NSString *)name toMatrix:(NSMatrix *)matrix classLabel:(NSString *)classLabel selectedClassLabel:(NSString *)selectedClassLabel selectedLabel:(NSString *)selectedLabel selectedObject:(id)selectedObject -{ - NSDictionary *infoForBinding = [object infoForBinding:name]; - if (infoForBinding) - { - NSString *objectBoundLabel = @"Object bound"; - NSString *keyPathBoundLabel = @"Key path bound"; - NSString *valueClassLabel = @"Value class"; - NSString *valueLabel = @"Value"; - NSString *optionsLabel = @"Options"; - - id objectBound = [infoForBinding objectForKey:NSObservedObjectKey]; - NSString *keyPathBound = [infoForBinding objectForKey:NSObservedKeyPathKey]; - Class valueClass = [object respondsToSelector:@selector(valueClassForBinding:)] ? [object valueClassForBinding:name] : nil; - id value = [objectBound valueForKeyPath:keyPathBound]; - NSDictionary *options = [infoForBinding objectForKey:NSOptionsKey]; - - NSString *objectBoundString = printString(objectBound); - NSString *keyPathBoundString = keyPathBound; - NSString *valueClassString = printString(valueClass); - NSString *valueString = printString(value); - NSString *optionsString = printString(options); - - BOOL shouldDisplayBinding = [filterString isEqualToString:@""] - || containsString(name , filterString, NSCaseInsensitiveSearch) - || containsString(objectBoundLabel , filterString, NSCaseInsensitiveSearch) - || containsString(objectBoundString , filterString, NSCaseInsensitiveSearch) - || containsString(keyPathBoundLabel , filterString, NSCaseInsensitiveSearch) - || containsString(keyPathBoundString, filterString, NSCaseInsensitiveSearch) - || containsString(valueLabel , filterString, NSCaseInsensitiveSearch) - || containsString(valueString , filterString, NSCaseInsensitiveSearch) - || (valueClass != nil && containsString(valueClassLabel , filterString, NSCaseInsensitiveSearch)) - || (valueClass != nil && containsString(valueClassString , filterString, NSCaseInsensitiveSearch)) - || containsString(optionsLabel , filterString, NSCaseInsensitiveSearch) - || containsString(optionsString , filterString, NSCaseInsensitiveSearch) - || (selectedClassLabel == classLabel && ( (selectedObject == objectBound && selectedLabel == objectBoundLabel) - || (selectedObject == keyPathBound && selectedLabel == keyPathBoundLabel) - || (selectedObject == value && selectedLabel == valueLabel) - || (valueClass != nil && selectedObject == valueClass && selectedLabel == valueClassLabel) - || (selectedObject == options && selectedLabel == optionsLabel))); - - if (shouldDisplayBinding) - { - [self addLabel:[NSString stringWithFormat:@"Binding: %@",name] toMatrix:matrix]; - [self addObject:objectBound withLabel:objectBoundLabel toMatrix:matrix leaf:NO classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject indentationLevel:1]; - [self addObject:keyPathBound withLabel:keyPathBoundLabel toMatrix:matrix leaf:NO classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject indentationLevel:1]; - if (valueClass != nil) [self addObject:valueClass withLabel:valueClassLabel toMatrix:matrix leaf:NO classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject indentationLevel:1]; - [self addObject:value withLabel:valueLabel toMatrix:matrix leaf:NO classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject indentationLevel:1]; - [self addObject:options withLabel:optionsLabel toMatrix:matrix leaf:NO classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject indentationLevel:1]; - [self addBlankRowToMatrix:matrix]; - } - } -} - -- (void)addDictionary:(NSDictionary *)d withLabel:(NSString *)label toMatrix:(NSMatrix *)matrix classLabel:(NSString *)classLabel selectedClassLabel:(NSString *)selectedClassLabel selectedLabel:(NSString *)selectedLabel selectedObject:(id)selectedObject -{ - if (d) - { - NSEnumerator *enumerator = [d keyEnumerator]; - id key,value; - NSString *objectString; - NSUInteger count = [d count]; - FSObjectBrowserCell *cell; - - if (count != 0) - { - if ([self hasEmptyFilterString] || containsString(label, filterString, NSCaseInsensitiveSearch)) - { - [self addLabel:label toMatrix:matrix]; - - while ((key = [enumerator nextObject])) + @catch (id exception) { - //[matrix addRow]; - //cell = [matrix cellAtRow:[matrix numberOfRows]-1 column:0]; - cell = addRowToMatrix(matrix); - - value = [d objectForKey:key]; - [cell setRepresentedObject:[FSAssociation associationWithKey:key value:value]]; - objectString = [NSString stringWithFormat:@" %@ -> %@",printStringLimited(key,50),printStringLimited(value,1000)]; - if ([objectString length] > 510) - objectString = [[objectString substringWithRange:NSMakeRange(0,500)] stringByAppendingString:@" ..."]; - [cell setStringValue:objectString]; - [cell setObjectBrowserCellType:FSOBOBJECT]; - [cell setLabel:printString(key)]; - [cell setClassLabel:@""]; - if (value == selectedObject && [printString(key) isEqualToString:selectedLabel]) - [matrix selectCellAtRow:[matrix numberOfRows]-1 column:0]; + NSRunAlertPanel(@"Syntax Error", FSErrorMessageFromException(exception), @"OK", nil, nil, nil); + FSInspectBlocksInCallStackForException(exception); + return; } - } - else - { - while ((key = [enumerator nextObject]) && !containsString(printString(key), filterString, NSCaseInsensitiveSearch) && !containsString(printString([d objectForKey:key]), filterString, NSCaseInsensitiveSearch) && !([d objectForKey:key] == selectedObject && [printString(key) isEqualToString:selectedLabel])); - if (key) - { - [self addLabel:label toMatrix:matrix]; - while (key) - { - value = [d objectForKey:key]; - BOOL addingSelectedObject = (value == selectedObject && [printString(key) isEqualToString:selectedLabel]); - if (containsString(printString(value), filterString, NSCaseInsensitiveSearch) || containsString(printString(key), filterString, NSCaseInsensitiveSearch) || addingSelectedObject) - { - //[matrix addRow]; - //cell = [matrix cellAtRow:[matrix numberOfRows]-1 column:0]; - cell = addRowToMatrix(matrix); - - [cell setRepresentedObject:[FSAssociation associationWithKey:key value:value]]; - objectString = [NSString stringWithFormat:@" %@ -> %@",printStringLimited(key,50),printStringLimited(value,1000)]; - if ([objectString length] > 510) - objectString = [[objectString substringWithRange:NSMakeRange(0,500)] stringByAppendingString:@" ..."]; - [cell setStringValue:objectString]; - [cell setObjectBrowserCellType:FSOBOBJECT]; - [cell setLabel:printString(key)]; - [cell setClassLabel:@""]; - if (addingSelectedObject) - [matrix selectCellAtRow:[matrix numberOfRows]-1 column:0]; - } - key = [enumerator nextObject]; - } + if ([block isCompact]) { + [self sendMessage:[block selector] withArguments:nil]; } - } - } - } -} - -- (void) applyBlockAction:(id)sender -{ - FSBlock *block = [sender block]; - - @try - { - [block compilIfNeeded]; - } - @catch (id exception) - { - NSRunAlertPanel(@"Syntax Error", FSErrorMessageFromException(exception), @"OK", nil, nil,nil); - FSInspectBlocksInCallStackForException(exception); - return; - } - - if ([block isCompact]) - { - [self sendMessage:[block selector] withArguments:nil]; - } - else - { - FSObjectBrowserButtonCtxBlock *contextualizedBlock; - SEL messageToArgumentSelector; - - contextualizedBlock = [interpreter objectBrowserButtonCtxBlockFromString:[block printString]]; - [contextualizedBlock setMaster:block]; - - if ([contextualizedBlock argumentCount] == 0) - { - FSInterpreterResult *interpreterResult = [contextualizedBlock executeWithArguments:[NSArray array]]; - - if (![interpreterResult isOK]) - { - NSRunAlertPanel(@"Error", [interpreterResult errorMessage], @"OK", nil, nil,nil); - [interpreterResult inspectBlocksInCallStack]; - return; - } - } - else if ((messageToArgumentSelector = [contextualizedBlock messageToArgumentSelector]) != (SEL)0 && messageToArgumentSelector != @selector(alloc) && messageToArgumentSelector != @selector(allocWithZone:)) - { - NSString *methodName = [FSCompiler stringFromSelector:messageToArgumentSelector]; - id selectedObject; - FSInterpreterResult *interpreterResult; - - if ((selectedObject = [self validSelectedObject]) == nil) - { - NSBeep(); - return; - } - - [browser setDelegate:nil]; - [self selectMethodNamed:methodName]; - [browser setDelegate:self]; - - interpreterResult = [contextualizedBlock executeWithArguments:[NSArray arrayWithObject:selectedObject]]; - - if ([interpreterResult isOK]) - [self fillMatrix:[browser matrixInColumn:[browser lastColumn]] withObject:[interpreterResult result]]; - else - { - NSRunAlertPanel(@"Error", [interpreterResult errorMessage], @"OK", nil, nil,nil); - [interpreterResult inspectBlocksInCallStack]; - return; - } - } - else - [self sendMessage:@selector(applyBlock:) withArguments:[FSArray arrayWithObject:contextualizedBlock]]; - } - [browser scrollColumnToVisible:[browser lastColumn]]; - [browser scrollColumnsLeftBy:1]; // Workaround for the call above to scrollColumnToVisible: not working as expected. -} - -- (void)addBlankRowToMatrix:(NSMatrix *)matrix -{ - NSBrowserCell *cell; - //[matrix addRow]; - //cell = [matrix cellAtRow:[matrix numberOfRows]-1 column:0]; - cell = addRowToMatrix(matrix); - - [cell setLeaf:YES]; - [cell setEnabled:NO]; -} - -- (void)addClassWithName:(NSString *)className toMatrix:(NSMatrix *)matrix label:(NSString *)label classLabel:(NSString *)classLabel indentationLevel:(NSUInteger)indentationLevel -{ - FSObjectBrowserCell *cell = addRowToMatrix(matrix); - NSMutableString *cellString = [NSMutableString string]; - - [cell setLabel:label]; - [cell setClassLabel:classLabel]; - - for (NSUInteger i = 0; i < indentationLevel; i++) [cellString appendString:@" "]; - - [cellString appendString:className]; - [cell setStringValue:cellString]; - [cell setObjectBrowserCellType:FSOBCLASS]; -} - -// Not tested -/* -- (void)addClassWithName:(NSString *)className withLabel:(NSString *)label toMatrix:(NSMatrix *)matrix classLabel:(NSString *)classLabel selectedClassLabel:(NSString *)selectedClassLabel selectedLabel:(NSString *)selectedLabel selectedObject:(id)selectedObject -{ - BOOL hasEmptyFilterString = [filterString isEqualToString:@""]; - BOOL addingSelectedObject = (selectedObject != nil && [selectedObject class] == selectedObject && [NSStringFromClass(selectedObject) isEqualToString:className] && [label isEqualToString:selectedLabel] && [classLabel isEqualToString:selectedClassLabel]); - - if (hasEmptyFilterString || containsString(label, filterString, NSCaseInsensitiveSearch) || containsString(printString(object), filterString, NSCaseInsensitiveSearch) || addingSelectedObject) - { - [self addLabel:label toMatrix:matrix]; - [self addClassWithName:className toMatrix:matrix label:label classLabel:classLabel indentationLevel:1]; - if (addingSelectedObject) - [matrix selectCellAtRow:[matrix numberOfRows]-1 column:0]; - } -} -*/ - -- (void)addClassesWithNames:(NSArray *)classNames withLabel:(NSString *)label toMatrix:(NSMatrix *)matrix classLabel:(NSString *)classLabel selectedClassLabel:(NSString *)selectedClassLabel selectedLabel:(NSString *)selectedLabel selectedObject:(id)selectedObject -{ - if (classNames) - { - NSUInteger i; - NSUInteger count = [classNames count]; - - if (count != 0) - { - if ([self hasEmptyFilterString] || containsString(label, filterString, NSCaseInsensitiveSearch)) - { - [self addLabel:label toMatrix:matrix]; - for (i = 0; i < count; i++) - { - NSString *className = [classNames objectAtIndex:i]; - [self addClassWithName:className toMatrix:matrix label:label classLabel:classLabel indentationLevel:1]; - - if (selectedObject != nil && [selectedObject class] == selectedObject && [NSStringFromClass(selectedObject) isEqualToString:className] && [label isEqualToString:selectedLabel] && [classLabel isEqualToString:selectedClassLabel]) - [matrix selectCellAtRow:[matrix numberOfRows]-1 column:0]; + else { + FSObjectBrowserButtonCtxBlock* contextualizedBlock; + SEL messageToArgumentSelector; + + contextualizedBlock = [interpreter objectBrowserButtonCtxBlockFromString:[block printString]]; + [contextualizedBlock setMaster:block]; + + if ([contextualizedBlock argumentCount] == 0) { + FSInterpreterResult* interpreterResult = [contextualizedBlock executeWithArguments:[NSArray array]]; + + if (![interpreterResult isOK]) { + NSRunAlertPanel(@"Error", [interpreterResult errorMessage], @"OK", nil, nil, nil); + [interpreterResult inspectBlocksInCallStack]; + return; + } + } + else if ((messageToArgumentSelector = [contextualizedBlock messageToArgumentSelector]) != (SEL)0 && messageToArgumentSelector != @selector(alloc) && messageToArgumentSelector != @selector(allocWithZone:)) { + NSString* methodName = [FSCompiler stringFromSelector:messageToArgumentSelector]; + id selectedObject; + FSInterpreterResult* interpreterResult; + + if ((selectedObject = [self validSelectedObject]) == nil) { + NSBeep(); + return; + } + + [browser setDelegate:nil]; + [self selectMethodNamed:methodName]; + [browser setDelegate:self]; + + interpreterResult = [contextualizedBlock executeWithArguments:[NSArray arrayWithObject:selectedObject]]; + + if ([interpreterResult isOK]) + [self fillMatrix:[browser matrixInColumn:[browser lastColumn]] column:browser.lastColumn withObject:[interpreterResult result]]; + else { + NSRunAlertPanel(@"Error", [interpreterResult errorMessage], @"OK", nil, nil, nil); + [interpreterResult inspectBlocksInCallStack]; + return; + } + } + else + [self sendMessage:@selector(applyBlock:) withArguments:[FSArray arrayWithObject:contextualizedBlock]]; } - } - else - { - i = 0; - while (i < count && !containsString([classNames objectAtIndex:i], filterString, NSCaseInsensitiveSearch) && !(selectedObject != nil && [selectedObject class] == selectedObject && [NSStringFromClass(selectedObject) isEqualToString:[classNames objectAtIndex:i]] && [label isEqualToString:selectedLabel] && [classLabel isEqualToString:selectedClassLabel])) - i++; - if (i < count) - { - [self addLabel:label toMatrix:matrix]; - for (; i < count; i++) - { - BOOL addingSelectedObject = (selectedObject != nil && [selectedObject class] == selectedObject && [NSStringFromClass(selectedObject) isEqualToString:[classNames objectAtIndex:i]] && [label isEqualToString:selectedLabel] && [classLabel isEqualToString:selectedClassLabel]); - if (containsString([classNames objectAtIndex:i], filterString, NSCaseInsensitiveSearch) || addingSelectedObject) - { - [self addClassWithName:[classNames objectAtIndex:i] toMatrix:matrix label:label classLabel:classLabel indentationLevel:1]; - if (addingSelectedObject) - [matrix selectCellAtRow:[matrix numberOfRows]-1 column:0]; - } - } + [browser scrollColumnToVisible:[browser lastColumn]]; + [browser scrollColumnsLeftBy:1]; // Workaround for the call above to scrollColumnToVisible: not working as expected. +} + +- (void)addBlankRowToMatrix:(NSMatrix*)matrix +{ + NSBrowserCell* cell; + //[matrix addRow]; + //cell = [matrix cellAtRow:[matrix numberOfRows]-1 column:0]; + cell = addRowToMatrix(matrix); + + [cell setLeaf:YES]; + [cell setEnabled:NO]; +} + +- (void)addClassWithName:(NSString*)className toMatrix:(NSMatrix*)matrix label:(NSString*)label classLabel:(NSString*)classLabel indentationLevel:(NSUInteger)indentationLevel +{ + FSObjectBrowserCell* cell = addRowToMatrix(matrix); + NSMutableString* cellString = [NSMutableString string]; + + [cell setLabel:label]; + [cell setClassLabel:classLabel]; + + for (NSUInteger i = 0; i < indentationLevel; i++) + [cellString appendString:@" "]; + + [cellString appendString:className]; + [cell setStringValue:cellString]; + [cell setObjectBrowserCellType:FSOBCLASS]; +} + + +- (void)addClassesWithNames:(NSArray*)classNames withLabel:(NSString*)label toMatrix:(NSMatrix*)matrix classLabel:(NSString*)classLabel selectedClassLabel:(NSString*)selectedClassLabel selectedLabel:(NSString*)selectedLabel selectedObject:(id)selectedObject +{ + if (classNames) { + NSUInteger i; + NSUInteger count = [classNames count]; + + if (count != 0) { + if ([self hasEmptyFilterString] || containsString(label, filterString, NSCaseInsensitiveSearch)) { + [self addLabel:label toMatrix:matrix]; + for (i = 0; i < count; i++) { + NSString* className = [classNames objectAtIndex:i]; + [self addClassWithName:className toMatrix:matrix label:label classLabel:classLabel indentationLevel:1]; + + if (selectedObject != nil && [selectedObject class] == selectedObject && [NSStringFromClass(selectedObject) isEqualToString:className] && [label isEqualToString:selectedLabel] && [classLabel isEqualToString:selectedClassLabel]) + [matrix selectCellAtRow:[matrix numberOfRows] - 1 column:0]; + } + } + else { + i = 0; + while (i < count && !containsString([classNames objectAtIndex:i], filterString, NSCaseInsensitiveSearch) && !(selectedObject != nil && [selectedObject class] == selectedObject && [NSStringFromClass(selectedObject) isEqualToString:[classNames objectAtIndex:i]] && [label isEqualToString:selectedLabel] && [classLabel isEqualToString:selectedClassLabel])) + i++; + if (i < count) { + [self addLabel:label toMatrix:matrix]; + for (; i < count; i++) { + BOOL addingSelectedObject = (selectedObject != nil && [selectedObject class] == selectedObject && [NSStringFromClass(selectedObject) isEqualToString:[classNames objectAtIndex:i]] && [label isEqualToString:selectedLabel] && [classLabel isEqualToString:selectedClassLabel]); + if (containsString([classNames objectAtIndex:i], filterString, NSCaseInsensitiveSearch) || addingSelectedObject) { + [self addClassWithName:[classNames objectAtIndex:i] toMatrix:matrix label:label classLabel:classLabel indentationLevel:1]; + if (addingSelectedObject) + [matrix selectCellAtRow:[matrix numberOfRows] - 1 column:0]; + } + } + } + } + } } - } - } - } } -- (void)addClassLabel:(NSString *)label toMatrix:(NSMatrix *)matrix color:(NSColor *)color +- (void)addClassLabel:(NSString*)label toMatrix:(NSMatrix*)matrix color:(NSColor*)color { - NSBrowserCell *cell; - NSDictionary *txtDict = [NSDictionary dictionaryWithObjectsAndKeys:[NSColor whiteColor], NSForegroundColorAttributeName, color, NSBackgroundColorAttributeName, nil]; - NSMutableAttributedString *attrStr = [[[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@" %@ ", label] attributes:txtDict] autorelease]; + NSBrowserCell* cell; + NSDictionary* txtDict = [NSDictionary dictionaryWithObjectsAndKeys:[NSColor whiteColor], NSForegroundColorAttributeName, color, NSBackgroundColorAttributeName, nil]; + NSMutableAttributedString* attrStr = [[[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@" %@ ", label] attributes:txtDict] autorelease]; - [self addBlankRowToMatrix:matrix]; + [self addBlankRowToMatrix:matrix]; + cell = addRowToMatrix(matrix); - //[matrix addRow]; - //cell = [matrix cellAtRow:[matrix numberOfRows]-1 column:0]; - cell = addRowToMatrix(matrix); - - [cell setLeaf:YES]; - [cell setEnabled:NO]; - [attrStr setAlignment:NSCenterTextAlignment range:NSMakeRange(0,[attrStr length])]; - [cell setAttributedStringValue:attrStr]; + [cell setLeaf:YES]; + [cell setEnabled:NO]; + [attrStr setAlignment:NSCenterTextAlignment range:NSMakeRange(0, [attrStr length])]; + [cell setAttributedStringValue:attrStr]; } -- (void)addClassLabel:(NSString *)label toMatrix:(NSMatrix *)matrix +- (void)addClassLabel:(NSString*)label toMatrix:(NSMatrix*)matrix { - [self addClassLabel:label toMatrix:matrix color:[NSColor colorWithCalibratedRed:0.1 green:0.65 blue:0.12 alpha:1]]; + [self addClassLabel:label toMatrix:matrix color:[NSColor colorWithCalibratedRed:0.1 green:0.65 blue:0.12 alpha:1]]; } -- (void)addLabel:(NSString *)label toMatrix:(NSMatrix *)matrix indentationLevel:(NSUInteger)indentationLevel +- (void)addLabel:(NSString*)label toMatrix:(NSMatrix*)matrix indentationLevel:(NSUInteger)indentationLevel { - NSBrowserCell *cell; - NSMutableString *cellString = [NSMutableString string]; + NSBrowserCell* cell; + NSMutableString* cellString = [NSMutableString string]; + + cell = addRowToMatrix(matrix); + [cell setLeaf:YES]; + [cell setEnabled:NO]; + for (NSUInteger i = 0; i < indentationLevel; i++) + [cellString appendString:@" "]; + [cellString appendString:label]; + [cell setStringValue:cellString]; +} - //[matrix addRow]; - //cell = [matrix cellAtRow:[matrix numberOfRows]-1 column:0]; - cell = addRowToMatrix(matrix); - - [cell setLeaf:YES]; - [cell setEnabled:NO]; - for (NSUInteger i = 0; i < indentationLevel; i++) [cellString appendString:@" "]; - [cellString appendString:label]; - [cell setStringValue:cellString]; +- (void)addLabel:(NSString*)label toMatrix:(NSMatrix*)matrix +{ + [self addLabel:label toMatrix:matrix indentationLevel:0]; } -- (void)addLabel:(NSString *)label toMatrix:(NSMatrix *)matrix +- (void)addLabelAlone:(NSString*)label toMatrix:(NSMatrix*)matrix { - [self addLabel:label toMatrix:matrix indentationLevel:0]; + if ([self hasEmptyFilterString] || containsString(label, filterString, NSCaseInsensitiveSearch)) { + [self addLabel:label toMatrix:matrix]; + } } -- (void)addLabelAlone:(NSString *)label toMatrix:(NSMatrix *)matrix + +- (void)addObject:(id)object + toMatrix:(NSMatrix*)matrix + label:(NSString*)label + classLabel:(NSString*)classLabel + indentationLevel:(NSUInteger)indentationLevel + leaf:(BOOL)leaf { - if ( [self hasEmptyFilterString] || containsString(label, filterString, NSCaseInsensitiveSearch) ) - { - [self addLabel:label toMatrix:matrix]; - } + FSObjectBrowserCell* cell; + NSString* objectString = printStringForObjectBrowser(object); + + cell = addRowToMatrix(matrix); + + if ([object isKindOfClass:[FSObjectBrowserNamedObjectWrapper class]]) + [cell setRepresentedObject:[object object]]; + else + [cell setRepresentedObject:object]; + + [cell setLabel:label]; + [cell setClassLabel:classLabel]; + if (object == nil || leaf) { + [cell setLeaf:YES]; + } + + NSMutableString* cellString = [NSMutableString string]; + for (NSUInteger i = 0; i < indentationLevel; i++) + [cellString appendString:@" "]; + [cellString appendString:objectString]; + + if ([object isKindOfClass:[FSNewlyAllocatedObjectHolder class]]) { + NSColor* txtColor = [NSColor purpleColor]; + NSDictionary* txtDict = [NSDictionary dictionaryWithObjectsAndKeys:txtColor, NSForegroundColorAttributeName, nil]; + NSAttributedString* attrStr = [[[NSMutableAttributedString alloc] initWithString:cellString attributes:txtDict] autorelease]; + [cell setAttributedStringValue:attrStr]; + } + else { + [cell setStringValue:cellString]; + } + [cell setObjectBrowserCellType:FSOBOBJECT]; } -- (void)addObject:(id)object toMatrix:(NSMatrix *)matrix label:(NSString *)label classLabel:(NSString *)classLabel indentationLevel:(NSUInteger)indentationLevel leaf:(BOOL)leaf + +- (void)addObject:(id)object + toMatrix:(NSMatrix*)matrix + label:(NSString*)label + classLabel:(NSString*)classLabel + indentationLevel:(NSUInteger)indentationLevel { - FSObjectBrowserCell *cell; - NSString *objectString = printStringForObjectBrowser(object); + [self addObject:object toMatrix:matrix label:label classLabel:classLabel indentationLevel:indentationLevel leaf:NO]; +} - //[matrix addRow]; - //cell = [matrix cellAtRow:[matrix numberOfRows]-1 column:0]; - cell = addRowToMatrix(matrix); - - if ([object isKindOfClass:[FSObjectBrowserNamedObjectWrapper class]]) [cell setRepresentedObject:[object object]]; - else [cell setRepresentedObject:object]; - - [cell setLabel:label]; - [cell setClassLabel:classLabel]; - if (object == nil || leaf) - { - [cell setLeaf:YES]; - } - - NSMutableString *cellString = [NSMutableString string]; - for (NSUInteger i = 0; i < indentationLevel; i++) [cellString appendString:@" "]; - [cellString appendString:objectString]; - if ([object isKindOfClass:[FSNewlyAllocatedObjectHolder class]]) - { - NSColor *txtColor = [NSColor purpleColor]; - NSDictionary *txtDict = [NSDictionary dictionaryWithObjectsAndKeys:txtColor, NSForegroundColorAttributeName, nil]; - NSAttributedString *attrStr = [[[NSMutableAttributedString alloc] initWithString:cellString attributes:txtDict] autorelease]; - [cell setAttributedStringValue:attrStr]; - } - else - { - [cell setStringValue:cellString]; - } - [cell setObjectBrowserCellType:FSOBOBJECT]; +- (void)addObject:(id)object + toMatrix:(NSMatrix*)matrix + label:(NSString*)label + classLabel:(NSString*)classLabel +{ + [self addObject:object toMatrix:matrix label:label classLabel:classLabel indentationLevel:1]; } -- (void)addObject:(id)object toMatrix:(NSMatrix *)matrix label:(NSString *)label classLabel:(NSString *)classLabel indentationLevel:(NSUInteger)indentationLevel + +- (void)addObject:(id)object + withLabel:(NSString*)label + toMatrix:(NSMatrix*)matrix + leaf:(BOOL)leaf + classLabel:(NSString*)classLabel + selectedClassLabel:(NSString*)selectedClassLabel + selectedLabel:(NSString*)selectedLabel + selectedObject:(id)selectedObject + indentationLevel:(NSUInteger)indentationLevel { - [self addObject:object toMatrix:matrix label:label classLabel:classLabel indentationLevel:indentationLevel leaf:NO]; + BOOL addingSelectedObject = (object == selectedObject && [label isEqualToString:selectedLabel] && [classLabel isEqualToString:selectedClassLabel]); + + // Note the use of printStringLimited below. We limit our matching test to the first 10000 elements for performance reasons. + if ([self hasEmptyFilterString] || containsString(label, filterString, NSCaseInsensitiveSearch) || containsString(printString(object), filterString, NSCaseInsensitiveSearch) || addingSelectedObject) { + [self addLabel:label toMatrix:matrix indentationLevel:indentationLevel]; + [self addObject:object toMatrix:matrix label:label classLabel:classLabel indentationLevel:indentationLevel + 1 leaf:leaf]; + if (addingSelectedObject) + [matrix selectCellAtRow:[matrix numberOfRows] - 1 column:0]; + } } -- (void)addObject:(id)object toMatrix:(NSMatrix *)matrix label:(NSString *)label classLabel:(NSString *)classLabel + +- (void)addObject:(id)object + withLabel:(NSString*)label + toMatrix:(NSMatrix*)matrix + classLabel:(NSString*)classLabel + selectedClassLabel:(NSString*)selectedClassLabel + selectedLabel:(NSString*)selectedLabel + selectedObject:(id)selectedObject { - [self addObject:object toMatrix:matrix label:label classLabel:classLabel indentationLevel:1]; + [self addObject:object withLabel:label toMatrix:matrix leaf:NO classLabel:(NSString*)classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject indentationLevel:0]; } -- (void)addObject:(id)object withLabel:(NSString *)label toMatrix:(NSMatrix *)matrix leaf:(BOOL)leaf classLabel:(NSString *)classLabel selectedClassLabel:(NSString *)selectedClassLabel selectedLabel:(NSString *)selectedLabel selectedObject:(id)selectedObject indentationLevel:(NSUInteger)indentationLevel -{ - BOOL addingSelectedObject = (object == selectedObject && [label isEqualToString:selectedLabel] && [classLabel isEqualToString:selectedClassLabel]); - // Note the use of printStringLimited below. We limit our matching test to the first 10000 elements for performance reasons. - // if ([self hasEmptyFilterString] || containsString(label, filterString, NSCaseInsensitiveSearch) || containsString(printStringLimited(object, 10000), filterString, NSCaseInsensitiveSearch) || addingSelectedObject) - - if ([self hasEmptyFilterString] || containsString(label, filterString, NSCaseInsensitiveSearch) || containsString(printString(object), filterString, NSCaseInsensitiveSearch) || addingSelectedObject) - { - [self addLabel:label toMatrix:matrix indentationLevel:indentationLevel]; - [self addObject:object toMatrix:matrix label:label classLabel:classLabel indentationLevel:indentationLevel+1 leaf:leaf]; - if (addingSelectedObject) - [matrix selectCellAtRow:[matrix numberOfRows]-1 column:0]; - } +- (void)addObjects:(NSArray*)objects + withLabel:(NSString*)label + toMatrix:(NSMatrix*)matrix + classLabel:(NSString*)classLabel + selectedClassLabel:(NSString*)selectedClassLabel + selectedLabel:(NSString*)selectedLabel + selectedObject:(id)selectedObject +{ + if (objects) { + NSUInteger i; + NSUInteger count = [objects count]; + + if (count != 0) { + if ([self hasEmptyFilterString] || containsString(label, filterString, NSCaseInsensitiveSearch)) { + [self addLabel:label toMatrix:matrix]; + for (i = 0; i < count; i++) { + id object = [objects objectAtIndex:i]; + [self addObject:object toMatrix:matrix label:label classLabel:classLabel]; + if (object == selectedObject && [label isEqualToString:selectedLabel] && [classLabel isEqualToString:selectedClassLabel]) + [matrix selectCellAtRow:[matrix numberOfRows] - 1 column:0]; + } + } + else { + i = 0; + while (i < count && !containsString(printString([objects objectAtIndex:i]), filterString, NSCaseInsensitiveSearch) && !([objects objectAtIndex:i] == selectedObject && [label isEqualToString:selectedLabel] && [classLabel isEqualToString:selectedClassLabel])) + i++; + if (i < count) { + [self addLabel:label toMatrix:matrix]; + for (; i < count; i++) { + BOOL addingSelectedObject = ([objects objectAtIndex:i] == selectedObject && [label isEqualToString:selectedLabel] && [classLabel isEqualToString:selectedClassLabel]); + if (containsString(printString([objects objectAtIndex:i]), filterString, NSCaseInsensitiveSearch) || addingSelectedObject) { + [self addObject:[objects objectAtIndex:i] toMatrix:matrix label:label classLabel:classLabel]; + if (addingSelectedObject) + [matrix selectCellAtRow:[matrix numberOfRows] - 1 column:0]; + } + } + } + } + } + } } -- (void)addObject:(id)object withLabel:(NSString *)label toMatrix:(NSMatrix *)matrix classLabel:(NSString *)classLabel selectedClassLabel:(NSString *)selectedClassLabel selectedLabel:(NSString *)selectedLabel selectedObject:(id)selectedObject +- (void)addPropertyLabel:(NSString*)label toMatrix:(NSMatrix*)matrix { - [self addObject:object withLabel:label toMatrix:matrix leaf:NO classLabel:(NSString *)classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject indentationLevel:0]; + NSBrowserCell* cell; + NSDictionary* txtDict = [NSDictionary dictionaryWithObjectsAndKeys:[NSColor whiteColor], NSForegroundColorAttributeName, [NSColor redColor], NSBackgroundColorAttributeName, nil]; + NSMutableAttributedString* attrStr = [[[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@" %@ ", label] attributes:txtDict] autorelease]; + + [self addBlankRowToMatrix:matrix]; + cell = addRowToMatrix(matrix); + + [cell setLeaf:YES]; + [cell setEnabled:NO]; + [attrStr setAlignment:NSCenterTextAlignment range:NSMakeRange(0, [attrStr length])]; + [cell setAttributedStringValue:attrStr]; +} + +- (IBAction)browseAction:(id)sender +{ + [interpreter browse:[self selectedObject]]; } -- (void)addObjects:(NSArray *)objects withLabel:(NSString *)label toMatrix:(NSMatrix *)matrix classLabel:(NSString *)classLabel selectedClassLabel:(NSString *)selectedClassLabel selectedLabel:(NSString *)selectedLabel selectedObject:(id)selectedObject +- (void)browser:(NSBrowser*)sender createRowsForColumn:(NSInteger)column inMatrix:(NSMatrix*)matrix // We are our own delegate { - if (objects) - { - NSUInteger i; - NSUInteger count = [objects count]; - - if (count != 0) - { - if ([self hasEmptyFilterString] || containsString(label, filterString, NSCaseInsensitiveSearch)) - { - [self addLabel:label toMatrix:matrix]; - for (i = 0; i < count; i++) - { - id object = [objects objectAtIndex:i]; - [self addObject:object toMatrix:matrix label:label classLabel:classLabel]; - if (object == selectedObject && [label isEqualToString:selectedLabel] && [classLabel isEqualToString:selectedClassLabel]) - [matrix selectCellAtRow:[matrix numberOfRows]-1 column:0]; + [matrixes addObject:matrix]; + + if (column == 0) { + switch (browsingMode) { + case FSBrowsingWorkspace: + [self fillMatrixForWorkspaceBrowsing:matrix]; + break; + case FSBrowsingClasses: + [self fillMatrixForClassesBrowsing:matrix]; + break; + case FSBrowsingObject: + [self fillMatrix:matrix column:column withObject:rootObject]; + break; + case FSBrowsingNothing: + break; + } } - } - else - { - i = 0; - while (i < count && !containsString(printString([objects objectAtIndex:i]), filterString, NSCaseInsensitiveSearch) && !([objects objectAtIndex:i] == selectedObject && [label isEqualToString:selectedLabel] && [classLabel isEqualToString:selectedClassLabel])) - i++; - if (i < count) - { - [self addLabel:label toMatrix:matrix]; - for (; i < count; i++) - { - BOOL addingSelectedObject = ([objects objectAtIndex:i] == selectedObject && [label isEqualToString:selectedLabel] && [classLabel isEqualToString:selectedClassLabel]); - if (containsString(printString([objects objectAtIndex:i]), filterString, NSCaseInsensitiveSearch) || addingSelectedObject) - { - [self addObject:[objects objectAtIndex:i] toMatrix:matrix label:label classLabel:classLabel]; - if (addingSelectedObject) - [matrix selectCellAtRow:[matrix numberOfRows]-1 column:0]; - } - } + else if ([[browser selectedCell] objectBrowserCellType] == FSOBOBJECT || [[browser selectedCell] objectBrowserCellType] == FSOBCLASS) { + [self fillMatrix:matrix column:column withObject:[[browser selectedCell] representedObject]]; } - } - } - } -} - -- (void)addPropertyLabel:(NSString *)label toMatrix:(NSMatrix *)matrix -{ - NSBrowserCell *cell; - NSDictionary *txtDict = [NSDictionary dictionaryWithObjectsAndKeys:[NSColor whiteColor], NSForegroundColorAttributeName, [NSColor redColor], NSBackgroundColorAttributeName, nil]; - NSMutableAttributedString *attrStr = [[[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@" %@ ", label] attributes:txtDict] autorelease]; - - [self addBlankRowToMatrix:matrix]; - //[matrix addRow]; - //cell = [matrix cellAtRow:[matrix numberOfRows]-1 column:0]; - cell = addRowToMatrix(matrix); - - [cell setLeaf:YES]; - [cell setEnabled:NO]; - [attrStr setAlignment:NSCenterTextAlignment range:NSMakeRange(0,[attrStr length])]; - [cell setAttributedStringValue:attrStr]; -} - -- (IBAction)browseAction:(id)sender -{ - [interpreter browse:[self selectedObject]]; -} - -- (void)browser:(NSBrowser *)sender createRowsForColumn:(NSInteger)column inMatrix:(NSMatrix *)matrix // We are our own delegate -{ - [matrixes addObject:matrix]; - - if (column == 0) - { - switch (browsingMode) - { - case FSBrowsingWorkspace: [self fillMatrixForWorkspaceBrowsing:matrix]; break; - case FSBrowsingClasses: [self fillMatrixForClassesBrowsing:matrix]; break; - case FSBrowsingObject: [self fillMatrix:matrix withObject:rootObject]; break; - case FSBrowsingNothing: break; - } - } - else if ( [[browser selectedCell] objectBrowserCellType] == FSOBOBJECT || [[browser selectedCell] objectBrowserCellType] == FSOBCLASS) - { - [self fillMatrix:matrix withObject:[[browser selectedCell] representedObject]]; - // if ([browser selectedRowInColumn:[browser selectedColumn]] != 0 && (column != 1 || browsingMode == FSBrowsingObject)) [self performSelector:@selector(selfAction:) withObject:nil afterDelay:0]; - } - /*else if ([[browser selectedCell] objectBrowserCellType] == PROPERTY) - { - id selectedObject = [self selectedObject]; - [self sendMessageTo:selectedObject selectorString:@"valueForKey:" arguments:[NSArray arrayWithObject:[[browser selectedCell] stringValue]] putResultInMatrix:matrix]; - }*/ - else - { - NSString *selectedString = [[browser selectedCell] stringValue]; - - SEL selector = [FSCompiler selectorFromString:selectedString]; - NSArray *selectorComponents = [NSStringFromSelector(selector) componentsSeparatedByString:@":"]; - NSInteger nbarg = [selectorComponents count]-1; - id selectedObject = [self selectedObject]; - FSMsgContext *msgContext = [[[FSMsgContext alloc] init] autorelease]; - NSInteger unsupportedArgumentIndex; - - if ([selectedObject isKindOfClass:[FSNewlyAllocatedObjectHolder class]]) selectedObject = [selectedObject object]; - - [msgContext prepareForMessageWithReceiver:selectedObject selector:[FSCompiler selectorFromString:selectedString]]; - unsupportedArgumentIndex = [msgContext unsuportedArgumentIndex]; - - if (unsupportedArgumentIndex != -1) - { - NSString *errorString = [NSString stringWithFormat:@"Can't invoke method: the type expected for argument %ld is not supported by F-Script.", (long)unsupportedArgumentIndex+1]; - NSRunAlertPanel(@"Sorry", errorString, @"OK", nil, nil,nil); - return; - } - else if ([msgContext unsuportedReturnType]) - { - NSString *errorString = [NSString stringWithFormat:@"Can't invoke method: return type not supported by F-Script."]; - NSRunAlertPanel(@"Sorry", errorString, @"OK", nil, nil,nil); - return; - } - else if (nbarg == 0) - { - // NSBrowserCell *cell; - [self sendMessageTo:selectedObject selectorString:selectedString arguments:[NSArray array] putResultInMatrix:matrix]; - - /*if (cell = [matrix cellAtRow:0 column:0]) - { - [self performSelector:@selector(setTitleOfLastColumn:) withObject:printString([[cell representedObject] classOrMetaclass]) afterDelay:0]; - // We do this because at the time tis method is called, the new column is not yet created. - // Hence the need to delay the setTitle. - } */ - } - else - { - NSInteger i; - NSInteger baseWidth = 530; - NSInteger baseHeight = nbarg*(userFixedPitchFontSize()+17)+75; - NSButton *sendButton; - NSButton *cancelButton; - NSForm *f; - NSWindow *argumentsWindow; - NSMethodSignature *signature = [selectedObject methodSignatureForSelector:selector]; - - argumentsWindow = [[ArgumentsWindow alloc] initWithContentRect:NSMakeRect(100,100,baseWidth,baseHeight) styleMask:NSResizableWindowMask backing:NSBackingStoreBuffered defer:NO]; - [argumentsWindow setMinSize:NSMakeSize(240,baseHeight+22)]; - [argumentsWindow setMaxSize:NSMakeSize(1400,baseHeight+22)]; - - f = [[[NSForm alloc] initWithFrame:NSMakeRect(20,60,baseWidth-40,baseHeight-80)] autorelease]; - [f setAutoresizingMask:NSViewWidthSizable]; - [f setInterlineSpacing:8]; - [[argumentsWindow contentView] addSubview:f]; // The form must be the first subview - // (this is used by method sendMessageAction:) - [argumentsWindow setInitialFirstResponder:f]; - - sendButton = [[[NSButton alloc] initWithFrame:NSMakeRect(baseWidth/2,13,125,30)] autorelease]; - [sendButton setBezelStyle:1]; - [sendButton setTitle:@"Send Message"]; - [sendButton setAction:@selector(sendMessageAction:)]; - [sendButton setTarget:self]; - [sendButton setKeyEquivalent:@"\r"]; - [[argumentsWindow contentView] addSubview:sendButton]; - - cancelButton = [[[NSButton alloc] initWithFrame:NSMakeRect(baseWidth/2-95,13,95,30)] autorelease]; - [cancelButton setBezelStyle:1]; - [cancelButton setTitle:@"Cancel"]; - [cancelButton setAction:@selector(cancelArgumentsSheetAction:)]; - [cancelButton setTarget:self]; - [cancelButton setKeyEquivalent:@"\e"]; - [[argumentsWindow contentView] addSubview:cancelButton]; - - if (nbarg == 1 && [[selectorComponents objectAtIndex:0] hasPrefix:@"operator_"]) - { - const char *type = [signature getArgumentTypeAtIndex:2]; - NSString *typeDescription = humanReadableFScriptTypeDescriptionFromEncodedObjCType(type); - NSString *template = FScriptObjectTemplateForEncodedObjCType(type); - - if ([typeDescription length] > 0) typeDescription = [[@"(" stringByAppendingString:typeDescription] stringByAppendingString:@")"]; - - [f addEntry:[[selectedString stringByAppendingString:@" "] stringByAppendingString:typeDescription]]; - [[f cellAtIndex:0] setStringValue:template]; - } - else - for (i = 0; i < nbarg; i++) - { - const char *type = [signature getArgumentTypeAtIndex:i+2]; - NSString *typeDescription = humanReadableFScriptTypeDescriptionFromEncodedObjCType(type); - NSString *template = FScriptObjectTemplateForEncodedObjCType(type); - - if ([typeDescription length] > 0) typeDescription = [[@"(" stringByAppendingString:typeDescription] stringByAppendingString:@")"]; - - [f addEntry:[[[selectorComponents objectAtIndex:i] stringByAppendingString:@":"] stringByAppendingString:typeDescription]]; - [[f cellAtIndex:i] setStringValue:template]; + else { + NSString* selectedString = [[browser selectedCell] stringValue]; + + SEL selector = [FSCompiler selectorFromString:selectedString]; + NSArray* selectorComponents = [NSStringFromSelector(selector) componentsSeparatedByString:@":"]; + NSInteger nbarg = [selectorComponents count] - 1; + id selectedObject = [self selectedObject]; + FSMsgContext* msgContext = [[[FSMsgContext alloc] init] autorelease]; + NSInteger unsupportedArgumentIndex; + + if ([selectedObject isKindOfClass:[FSNewlyAllocatedObjectHolder class]]) + selectedObject = [selectedObject object]; + + [msgContext prepareForMessageWithReceiver:selectedObject selector:[FSCompiler selectorFromString:selectedString]]; + unsupportedArgumentIndex = [msgContext unsuportedArgumentIndex]; + + if (unsupportedArgumentIndex != -1) { + NSString* errorString = [NSString stringWithFormat:@"Can't invoke method: the type expected for argument %ld is not supported by F-Script.", (long)unsupportedArgumentIndex + 1]; + NSRunAlertPanel(@"Sorry", errorString, @"OK", nil, nil, nil); + return; + } + else if ([msgContext unsuportedReturnType]) { + NSString* errorString = [NSString stringWithFormat:@"Can't invoke method: return type not supported by F-Script."]; + NSRunAlertPanel(@"Sorry", errorString, @"OK", nil, nil, nil); + return; + } + else if (nbarg == 0) { + [self sendMessageTo:selectedObject selectorString:selectedString arguments:(FSArray*)[NSArray array] column:column putResultInMatrix:matrix]; + } + else { + + + #pragma mark ► Send Message with Arguments from Form + //-------------------------------------------------------------------------------- + + // Create a form to fill in the arguments of a message, with action 'sendMessageAction:' + NSInteger i; + NSInteger baseWidth = 530; + NSInteger baseHeight = nbarg * (userFixedPitchFontSize() + 17) + 75; + NSButton* sendButton; + NSButton* cancelButton; + NSForm* f; + NSWindow* argumentsWindow; + NSMethodSignature* signature = [selectedObject methodSignatureForSelector:selector]; + + argumentsWindow = [[ArgumentsWindow alloc] initWithContentRect:NSMakeRect(100, 100, baseWidth, baseHeight) styleMask:NSResizableWindowMask backing:NSBackingStoreBuffered defer:NO]; + [argumentsWindow setMinSize:NSMakeSize(240, baseHeight + 22)]; + [argumentsWindow setMaxSize:NSMakeSize(1400, baseHeight + 22)]; + + f = [[[NSForm alloc] initWithFrame:NSMakeRect(20, 60, baseWidth - 40, baseHeight - 80)] autorelease]; + [f setAutoresizingMask:NSViewWidthSizable]; + [f setInterlineSpacing:8]; + [[argumentsWindow contentView] addSubview:f]; // The form must be the first subview + // (this is used by method sendMessageAction:) + [argumentsWindow setInitialFirstResponder:f]; + + sendButton = [[[NSButton alloc] initWithFrame:NSMakeRect(baseWidth / 2, 13, 125, 30)] autorelease]; + [sendButton setBezelStyle:1]; + [sendButton setTitle:@"Send Message"]; + [sendButton setAction:@selector(sendMessageAction:)]; + [sendButton setTarget:self]; + [sendButton setKeyEquivalent:@"\r"]; + [[argumentsWindow contentView] addSubview:sendButton]; + + cancelButton = [[[NSButton alloc] initWithFrame:NSMakeRect(baseWidth / 2 - 95, 13, 95, 30)] autorelease]; + [cancelButton setBezelStyle:1]; + [cancelButton setTitle:@"Cancel"]; + [cancelButton setAction:@selector(cancelArgumentsSheetAction:)]; + [cancelButton setTarget:self]; + [cancelButton setKeyEquivalent:@"\e"]; + [[argumentsWindow contentView] addSubview:cancelButton]; + + if (nbarg == 1 && [[selectorComponents objectAtIndex:0] hasPrefix:@"operator_"]) { + const char* type = [signature getArgumentTypeAtIndex:2]; + NSString* typeDescription = humanReadableFScriptTypeDescriptionFromEncodedObjCType(type); + NSString* template = FScriptObjectTemplateForEncodedObjCType(type); + + if ([typeDescription length] > 0) + typeDescription = [[@"(" stringByAppendingString:typeDescription] stringByAppendingString:@")"]; + + [f addEntry:[[selectedString stringByAppendingString:@" "] stringByAppendingString:typeDescription]]; + [[f cellAtIndex:0] setStringValue:template]; + } + else + for (i = 0; i < nbarg; i++) { + const char* type = [signature getArgumentTypeAtIndex:i + 2]; + NSString* typeDescription = humanReadableFScriptTypeDescriptionFromEncodedObjCType(type); + NSString* template = FScriptObjectTemplateForEncodedObjCType(type); + + if ([typeDescription length] > 0) + typeDescription = [[@"(" stringByAppendingString:typeDescription] stringByAppendingString:@")"]; + + [f addEntry:[[[selectorComponents objectAtIndex:i] stringByAppendingString:@":"] stringByAppendingString:typeDescription]]; + [[f cellAtIndex:i] setStringValue:template]; + } + + [f setTextFont:[NSFont userFixedPitchFontOfSize:userFixedPitchFontSize()]]; + [f setTitleFont:[NSFont systemFontOfSize:systemFontSize()]]; + + [f setAutosizesCells:YES]; + [f setTarget:sendButton]; + [f setAction:@selector(performClick:)]; + [f selectTextAtIndex:0]; + + [NSApp beginSheet:argumentsWindow modalForWindow:[self window] modalDelegate:self didEndSelector:NULL contextInfo:NULL]; + } } - - [f setTextFont:[NSFont userFixedPitchFontOfSize:userFixedPitchFontSize()]]; - [f setTitleFont:[NSFont systemFontOfSize:systemFontSize()]]; - - [f setAutosizesCells:YES]; - [f setTarget:sendButton]; - [f setAction:@selector(performClick:)]; - [f selectTextAtIndex:0]; - - [NSApp beginSheet:argumentsWindow modalForWindow:[self window] modalDelegate:self didEndSelector:NULL contextInfo:NULL]; - } - } - [browser tile]; + [browser tile]; } -- (void) browseNothing +- (void)browseNothing { - browsingMode = FSBrowsingNothing; - [rootObject release]; - rootObject = nil; - [browser loadColumnZero]; + browsingMode = FSBrowsingNothing; + [rootObject release]; + rootObject = nil; + [browser loadColumnZero]; } -- (void) browseWorkspace +- (void)browseWorkspace { - browsingMode = FSBrowsingWorkspace; - [rootObject release]; - rootObject = nil; - [browser loadColumnZero]; + browsingMode = FSBrowsingWorkspace; + [rootObject release]; + rootObject = nil; + [browser loadColumnZero]; } -- (void) cancelArgumentsSheetAction:(id)sender +- (void)cancelArgumentsSheetAction:(id)sender { - [NSApp endSheet:[sender window]]; - [[sender window] close]; - [[browser matrixInColumn:[browser lastColumn]-1] deselectAllCells]; + [NSApp endSheet:[sender window]]; + [[sender window] close]; + [[browser matrixInColumn:[browser lastColumn] - 1] deselectAllCells]; } -- (void) cancelNameSheetAction:(id)sender +- (void)cancelNameSheetAction:(id)sender { - [NSApp endSheet:[sender window]]; - [[sender window] close]; + [NSApp endSheet:[sender window]]; + [[sender window] close]; } -- (void) classesAction:(id)sender +- (void)classesAction:(id)sender { - browsingMode = FSBrowsingClasses; - [rootObject release]; - rootObject = nil; - [browser loadColumnZero]; + browsingMode = FSBrowsingClasses; + [rootObject release]; + rootObject = nil; + [browser loadColumnZero]; } -- (void) dealloc +- (void)dealloc { - // NSLog(@"FSObjectBrowserView dealloc"); - - [matrixes release]; - [rootObject release]; - [interpreter release]; - [browser release]; - [bottomBarTextDisplay release]; - [filterString release]; - [super dealloc]; + // NSLog(@"FSObjectBrowserView dealloc"); + + [matrixes release]; + [rootObject release]; + [interpreter release]; + [browser release]; + [bottomBarTextDisplay release]; + [filterString release]; + [super dealloc]; } -- (void) doubleClickAction:(id)sender +- (void)doubleClickAction:(id)sender { - enum FSObjectBrowserCellType cellType = [[browser selectedCell] objectBrowserCellType]; - if (cellType == FSOBOBJECT || cellType == FSOBCLASS) [self inspectAction:sender]; + enum FSObjectBrowserCellType cellType = [[browser selectedCell] objectBrowserCellType]; + if (cellType == FSOBOBJECT || cellType == FSOBCLASS) + [self inspectAction:sender]; } - (void)fillMatrixForClassesBrowsing:(NSMatrix*)matrix { - FSArray *classNames = allClassNames(); - NSUInteger count = [classNames count]; - FSObjectBrowserCell *cell; - FSObjectBrowserCell *selectedCell = [[[matrix selectedCell] retain] autorelease]; // retain and autorelease in order to avoid premature deallocation as a side effect of the removing of rows - NSString *selectedObjectName = [selectedCell objectBrowserCellType] == FSOBCLASS ? [selectedCell stringValue] : nil ; - - [classNames sortUsingFunction:FSCompareClassNamesForAlphabeticalOrder context:NULL]; - - // for (int i = [matrix numberOfRows]-1; i >= 0; i--) [matrix removeRow:i]; // Remove all rows. As a side effect, this will supress the selection. - [matrix renewRows:0 columns:1]; - - for (NSInteger i = 0; i < count; i++) - { - NSString *className = [classNames objectAtIndex:i]; - if ([self hasEmptyFilterString] || containsString(className, filterString, NSCaseInsensitiveSearch) || (selectedObjectName != nil && [className isEqualToString:selectedObjectName])) - { - cell = addRowToMatrix(matrix); - - [cell setStringValue:className]; - [cell setObjectBrowserCellType:FSOBCLASS]; - if (selectedObjectName != nil && [className isEqualToString:selectedObjectName]) - [matrix selectCellAtRow:[matrix numberOfRows]-1 column:0]; - } - } - [matrix sizeToCells]; // The NSMatrix doc advise to do that after calling addRow - [matrix scrollCellToVisibleAtRow:[matrix selectedRow] column:0]; - [matrix setNeedsDisplay]; // The NSMatrix doc advise to do that after calling addRow -} - -- (void)fillMatrixForWorkspaceBrowsing:(NSMatrix*)matrix -{ - NSArray *identifiers = [interpreter identifiers]; - NSUInteger count = [identifiers count]; - FSObjectBrowserCell *cell; - NSString *cellString; - id object; - FSObjectBrowserCell *selectedCell = [[[matrix selectedCell] retain] autorelease]; // retain and autorelease in order to avoid premature deallocation as a side effect of the removing of rows - NSString *selectedLabel = [[[selectedCell label] copy] autorelease]; // copy and autorelease in order to avoid prmature invalidation as a side effect of the removing of rows - id selectedObject = [selectedCell representedObject]; - - //for (int i = [matrix numberOfRows]-1; i >= 0; i--) [matrix removeRow:i]; // Remove all rows. As a side effect, this will supress the selection. - [matrix renewRows:0 columns:1]; - - for (NSInteger i = 0; i < count; i++) - { - NSString *identifier = [identifiers objectAtIndex:i]; - object = [interpreter objectForIdentifier:identifier found:NULL]; - NSString *objectPrintString = printStringForObjectBrowser(object); - if ([self hasEmptyFilterString] || containsString(identifier, filterString, NSCaseInsensitiveSearch) || containsString(objectPrintString, filterString, NSCaseInsensitiveSearch) || (object == selectedObject && [identifier isEqualToString:selectedLabel])) - { - //[matrix addRow]; - //cell = [matrix cellAtRow:[matrix numberOfRows]-1 column:0]; - cell = addRowToMatrix(matrix); - - [cell setRepresentedObject:object]; - if (object == nil) [cell setLeaf:YES]; - cellString = [NSString stringWithFormat:@"%@ = %@",identifier,objectPrintString]; - [cell setStringValue:cellString]; - [cell setObjectBrowserCellType:FSOBOBJECT]; - [cell setLabel:identifier]; - if (object == selectedObject && [identifier isEqualToString:selectedLabel]) - [matrix selectCellAtRow:[matrix numberOfRows]-1 column:0]; - } - } - - [matrix sizeToCells]; // The NSMatrix doc advise to do that after calling addRow - [matrix scrollCellToVisibleAtRow:[matrix selectedRow] column:0]; - [matrix setNeedsDisplay]; // The NSMatrix doc advise to do that after calling addRow -} - -- (void)fillMatrix:(NSMatrix *)matrix withMethod:(NSString *)method -{ - //[matrix addRow]; - //FSObjectBrowserCell *cell = [matrix cellAtRow:[matrix numberOfRows]-1 column:0]; - FSObjectBrowserCell *cell = addRowToMatrix(matrix); - - [cell setStringValue:method]; - [cell setObjectBrowserCellType:FSOBMETHOD]; -} - -/*- (void) fillMatrix:(NSMatrix *)matrix withMethodsAndPropertiesForObject:(id)object -{ - BOOL isHolder = NO; - - @try - { - if ([object isKindOfClass:[NewlyAllocatedObjectHolder class]]) isHolder = YES; - } - @catch (id exception) - { - // An exception may happend if the object is invalid (i.e. an invalid proxy) - NSBeep(); - return; - } - - if (isHolder) - { - object = [object object]; - [self fillMatrix:matrix withMethodsForObject:object]; - } - else - { - [self fillMatrix:matrix withPropertiesForObject:object]; - [self fillMatrix:matrix withMethodsForObject:object]; - } -} */ - -- (void)fillMatrix:(NSMatrix *)matrix withMethodsForObject:(id)object -{ - id cls; - BOOL doNotShowSelectorsStartingWithUnderscore = [[NSUserDefaults standardUserDefaults] boolForKey:@"FScriptDoNotShowSelectorsStartingWithUnderscore"]; - BOOL doNotShowSelectorsStartingWithAccessibility = [[NSUserDefaults standardUserDefaults] boolForKey:@"FScriptDoNotShowSelectorsStartingWithAccessibility"]; - BOOL isHolder = NO; - - @try - { - if ([object isKindOfClass:[FSNewlyAllocatedObjectHolder class]]) isHolder = YES; - } - @catch (id exception) - { - // An exception may happend if the object is invalid (i.e. an invalid proxy) - NSBeep(); - return; - } - - if (isHolder) object = [object object]; - - if (isKindOfClassNSProxy(object) && object != [object class]) // the second condition is used because NSProxy is instance of itself and thus the isKindOfClassNSProxy() function returns YES even for the classes in the NSProxy hierarchy - { - // We try to get the class of the real object - NSString *realObjectClassName = nil; - - @try - { - realObjectClassName = [object className]; - // HACK: className is a method implemented by NSObject, but not by NSProxy. - // Thus, this method should be forwarded to the real object. - // We do this inside an exception handler because the call to className may raise - // (for instance, if the real object is not in the NSObject hierarchy and does not responds to className, - // or if there is a communication problem during the distributed object call) - - cls = NSClassFromString(realObjectClassName); - } - @catch (id exception) - { - cls = nil; - } - - if (cls == nil) - { - if (realObjectClassName) NSBeginInformationalAlertSheet(@"Method list not available", @"OK", nil, nil, [self window], nil, NULL, NULL, NULL, @"Sorry, the method list for this object is not available. The class of the object (i.e. %@) is not loaded in the current application.", realObjectClassName); - else NSBeginInformationalAlertSheet(@"Method list not available", @"OK", nil, nil, [self window], nil, NULL, NULL, NULL, @"Sorry, the method list for this object is not available."); - } - } - else cls = [object classOrMetaclass]; - - while (cls) - { - NSInteger i,nb; - FSObjectBrowserCell *cell; - NSMutableArray *selectorStrings = [NSMutableArray arrayWithCapacity:400]; - NSDictionary *txtDict = [NSDictionary dictionaryWithObjectsAndKeys:[NSColor whiteColor], NSForegroundColorAttributeName, [NSColor blueColor], NSBackgroundColorAttributeName, nil]; - NSMutableAttributedString *attrStr = [[[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@" %@ Methods ", [cls printString]] attributes:txtDict] autorelease]; - [attrStr setAlignment:NSCenterTextAlignment range:NSMakeRange(0,[attrStr length])]; - - //[matrix addRow]; - //cell = [matrix cellAtRow:[matrix numberOfRows]-1 column:0]; - cell = addRowToMatrix(matrix); - - [cell setLeaf:YES]; - [cell setEnabled:NO]; - [cell setAttributedStringValue:attrStr]; - //[matrix setToolTip:[cls printString] forCell:cell]; - - /*if ([filterString isEqualToString:@""]) - while ( mlist = class_nextMethodList( cls, &iterator ) ) - { - for (i = 0; i < mlist->method_count; i++) + FSArray* classNames = allClassNames(); + NSUInteger count = [classNames count]; + FSObjectBrowserCell* cell; + FSObjectBrowserCell* selectedCell = [[[matrix selectedCell] retain] autorelease]; // retain and autorelease in order to avoid premature deallocation as a side effect of the removing of rows + NSString* selectedObjectName = [selectedCell objectBrowserCellType] == FSOBCLASS ? [selectedCell stringValue] : nil; + + [classNames sortUsingFunction:FSCompareClassNamesForAlphabeticalOrder context:NULL]; + + [matrix renewRows:0 columns:1]; + + for (NSInteger i = 0; i < count; i++) { + NSString* className = [classNames objectAtIndex:i]; + if ([self hasEmptyFilterString] || containsString(className, filterString, NSCaseInsensitiveSearch) || (selectedObjectName != nil && [className isEqualToString:selectedObjectName])) { + cell = addRowToMatrix(matrix); + + [cell setStringValue:className]; + [cell setObjectBrowserCellType:FSOBCLASS]; + if (selectedObjectName != nil && [className isEqualToString:selectedObjectName]) + [matrix selectCellAtRow:[matrix numberOfRows] - 1 column:0]; + } + } + [matrix sizeToCells]; // The NSMatrix doc advise to do that after calling addRow + [matrix scrollCellToVisibleAtRow:[matrix selectedRow] column:0]; + [matrix setNeedsDisplay]; // The NSMatrix doc advise to do that after calling addRow +} + +- (void)fillMatrixForWorkspaceBrowsing:(NSMatrix*)matrix +{ + NSArray* identifiers = [interpreter identifiers]; + NSUInteger count = [identifiers count]; + FSObjectBrowserCell* cell; + NSString* cellString; + id object; + FSObjectBrowserCell* selectedCell = [[[matrix selectedCell] retain] autorelease]; // retain and autorelease in order to avoid premature deallocation as a side effect of the removing of rows + NSString* selectedLabel = [[[selectedCell label] copy] autorelease]; // copy and autorelease in order to avoid prmature invalidation as a side effect of the removing of rows + id selectedObject = [selectedCell representedObject]; + + [matrix renewRows:0 columns:1]; + + for (NSInteger i = 0; i < count; i++) { + NSString* identifier = [identifiers objectAtIndex:i]; + object = [interpreter objectForIdentifier:identifier found:NULL]; + NSString* objectPrintString = printStringForObjectBrowser(object); + if ([self hasEmptyFilterString] || containsString(identifier, filterString, NSCaseInsensitiveSearch) || containsString(objectPrintString, filterString, NSCaseInsensitiveSearch) || (object == selectedObject && [identifier isEqualToString:selectedLabel])) { + //[matrix addRow]; + //cell = [matrix cellAtRow:[matrix numberOfRows]-1 column:0]; + cell = addRowToMatrix(matrix); + + [cell setRepresentedObject:object]; + if (object == nil) + [cell setLeaf:YES]; + cellString = [NSString stringWithFormat:@"%@ = %@", identifier, objectPrintString]; + [cell setStringValue:cellString]; + [cell setObjectBrowserCellType:FSOBOBJECT]; + [cell setLabel:identifier]; + if (object == selectedObject && [identifier isEqualToString:selectedLabel]) + [matrix selectCellAtRow:[matrix numberOfRows] - 1 column:0]; + } + } + + [matrix sizeToCells]; // The NSMatrix doc advise to do that after calling addRow + [matrix scrollCellToVisibleAtRow:[matrix selectedRow] column:0]; + [matrix setNeedsDisplay]; // The NSMatrix doc advise to do that after calling addRow +} + +- (void)fillMatrix:(NSMatrix*)matrix withMethod:(NSString*)method +{ + //[matrix addRow]; + FSObjectBrowserCell* cell = addRowToMatrix(matrix); + + [cell setStringValue:method]; + [cell setObjectBrowserCellType:FSOBMETHOD]; +} + + +- (void)fillMatrix:(NSMatrix*)matrix withMethodsForObject:(id)object +{ + id cls; + BOOL doNotShowSelectorsStartingWithUnderscore = [[NSUserDefaults standardUserDefaults] boolForKey:@"FScriptDoNotShowSelectorsStartingWithUnderscore"]; + BOOL doNotShowSelectorsStartingWithAccessibility = [[NSUserDefaults standardUserDefaults] boolForKey:@"FScriptDoNotShowSelectorsStartingWithAccessibility"]; + BOOL isHolder = NO; + + @try { + if ([object isKindOfClass:[FSNewlyAllocatedObjectHolder class]]) + isHolder = YES; + } + @catch (id exception) { - [selectorStrings addObject:[FSCompiler stringFromSelector:mlist->method_list[i].method_name]]; + // An exception may happend if the object is invalid (i.e. an invalid proxy) + NSBeep(); + return; } - } - else*/ - + + if (isHolder) + object = [object object]; + + if (isKindOfClassNSProxy(object) && object != [object class]) // the second condition is used because NSProxy is instance of itself and thus the isKindOfClassNSProxy() function returns YES even for the classes in the NSProxy hierarchy + { + // We try to get the class of the real object + NSString* realObjectClassName = nil; + + @try { + realObjectClassName = [object className]; + // HACK: className is a method implemented by NSObject, but not by NSProxy. + // Thus, this method should be forwarded to the real object. + // We do this inside an exception handler because the call to className may raise + // (for instance, if the real object is not in the NSObject hierarchy and does not responds to className, + // or if there is a communication problem during the distributed object call) + + cls = NSClassFromString(realObjectClassName); + } + @catch (id exception) + { + cls = nil; + } + + if (cls == nil) { + if (realObjectClassName) + NSBeginInformationalAlertSheet(@"Method list not available", @"OK", nil, nil, [self window], nil, NULL, NULL, NULL, @"Sorry, the method list for this object is not available. The class of the object (i.e. %@) is not loaded in the current application.", realObjectClassName); + else + NSBeginInformationalAlertSheet(@"Method list not available", @"OK", nil, nil, [self window], nil, NULL, NULL, NULL, @"Sorry, the method list for this object is not available."); + } + } + else + cls = [object classOrMetaclass]; + + while (cls) { + NSInteger i, nb; + FSObjectBrowserCell* cell; + NSMutableArray* selectorStrings = [NSMutableArray arrayWithCapacity:400]; + NSDictionary* txtDict = [NSDictionary dictionaryWithObjectsAndKeys:[NSColor whiteColor], NSForegroundColorAttributeName, [NSColor blueColor], NSBackgroundColorAttributeName, nil]; + NSMutableAttributedString* attrStr = [[[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@" %@ Methods ", [cls printString]] attributes:txtDict] autorelease]; + [attrStr setAlignment:NSCenterTextAlignment range:NSMakeRange(0, [attrStr length])]; + + cell = addRowToMatrix(matrix); + + [cell setLeaf:YES]; + [cell setEnabled:NO]; + [cell setAttributedStringValue:attrStr]; + #ifdef __LP64__ - unsigned methodCount; - Method *methods = class_copyMethodList(cls, &methodCount); - - for (i = 0; i < methodCount; i++) - { - NSString *methodName = [FSCompiler stringFromSelector:method_getName(methods[i])]; - if ( ([self hasEmptyFilterString] || containsString(methodName, filterString, NSCaseInsensitiveSearch)) - && (!doNotShowSelectorsStartingWithUnderscore || ![methodName hasPrefix:@"_"]) - && (!doNotShowSelectorsStartingWithAccessibility || ![methodName hasPrefix:@"accessibility"]) - && (![methodName isEqualToString:@""]) - && (![methodName hasPrefix:@"__F-ScriptGeneratedStub"]) - ) - [selectorStrings addObject:methodName]; - } - free(methods); + unsigned methodCount; + Method* methods = class_copyMethodList(cls, &methodCount); + + for (i = 0; i < methodCount; i++) { + NSString* methodName = [FSCompiler stringFromSelector:method_getName(methods[i])]; + if (([self hasEmptyFilterString] || containsString(methodName, filterString, NSCaseInsensitiveSearch)) + && (!doNotShowSelectorsStartingWithUnderscore || ![methodName hasPrefix:@"_"]) + && (!doNotShowSelectorsStartingWithAccessibility || ![methodName hasPrefix:@"accessibility"]) + && (![methodName isEqualToString:@""]) + && (![methodName hasPrefix:@"__F-ScriptGeneratedStub"])) + [selectorStrings addObject:methodName]; + } + free(methods); #else - struct objc_method_list *mlist; - void *iterator = 0; - - while ( (mlist = class_nextMethodList( cls, &iterator )) ) - { - for (i = 0; i < mlist->method_count; i++) - { - NSString *methodName = [FSCompiler stringFromSelector:mlist->method_list[i].method_name]; - if ( ([self hasEmptyFilterString] || containsString(methodName, filterString, NSCaseInsensitiveSearch)) - && (!doNotShowSelectorsStartingWithUnderscore || ![methodName hasPrefix:@"_"]) - && (!doNotShowSelectorsStartingWithAccessibility || ![methodName hasPrefix:@"accessibility"]) - && (![methodName isEqualToString:@""]) - && (![methodName hasPrefix:@"__F-ScriptGeneratedStub"]) - ) - [selectorStrings addObject:methodName]; - } - } -#endif - - [selectorStrings sortUsingFunction:FSCompareMethodsNamesForAlphabeticalOrder context:NULL]; - - for (i = 0, nb = [selectorStrings count]; i < nb; i++) [self fillMatrix:matrix withMethod:[selectorStrings objectAtIndex:i]]; - - if (cls == [cls superclass]) // The NSProxy class return itself when asked for its superclass. - // This would result in an infinite loop. This test work around this. - cls = nil; - else - cls = [cls superclass]; // TODO : test if it works ok now (see comment below) - // cls = ((struct {struct objc_class *isa; struct objc_class *super_class;}*)cls)->super_class; - // This direct access technique is used instead of the -superclass method because this method is broken in the NSProxy hierarchy (does not return the "real" superclass) (Mac OS X 10.1.2). - - if (cls) [self addBlankRowToMatrix:matrix]; - } -} - -/*- (void)fillMatrix:(NSMatrix *)matrix withProperty:(NSString *)property -{ - //[matrix addRow]; - //FSObjectBrowserCell *cell = [matrix cellAtRow:[matrix numberOfRows]-1 column:0]; - FSObjectBrowserCell *cell = addRowToMatrix(matrix); - - [cell setObjectBrowserCellType:BBOBJECT]; - [cell setStringValue:property]; -}*/ - -/*- (void)fillMatrix:(NSMatrix *)matrix withProperties:(NSArray *)properties label:(NSString *)label -{ - if ([properties count] == 0) return; - - NSUInteger propertiesCount = [properties count]; - NSMutableArray *filteredProperties = [NSMutableArray arrayWithCapacity:propertiesCount]; - BOOL hasEmptyFilterString = [filterString isEqualToString:@""]; - - for (NSUInteger i = 0; i < propertiesCount; i++) - { - NSString *property = [properties objectAtIndex:i]; - if (hasEmptyFilterString || containsString(property, filterString, NSCaseInsensitiveSearch)) - [filteredProperties addObject:property]; - } - - [filteredProperties sortUsingSelector:@selector(compare:)]; - - NSDictionary *txtDict = [NSDictionary dictionaryWithObjectsAndKeys:[NSColor whiteColor], NSForegroundColorAttributeName, [NSColor redColor], NSBackgroundColorAttributeName, nil]; - NSMutableAttributedString *attrStr = [[[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@" %@ ", label] attributes:txtDict] autorelease]; - [attrStr setAlignment:NSCenterTextAlignment range:NSMakeRange(0,[attrStr length])]; - //[matrix addRow]; - //FSObjectBrowserCell *cell = [matrix cellAtRow:[matrix numberOfRows]-1 column:0]; - FSObjectBrowserCell *cell = addRowToMatrix(matrix); - - [cell setLeaf:YES]; - [cell setEnabled:NO]; - [cell setAttributedStringValue:attrStr]; - - for (NSUInteger i = 0, count = [filteredProperties count]; i < count; i++) - [self fillMatrix:matrix withProperty:[filteredProperties objectAtIndex:i]]; - - [self addBlankRowToMatrix:matrix]; -} */ - -/*- (void)fillMatrix:(NSMatrix *)matrix withPropertiesForObject:(id)object -{ - //NSArray *attributeKeys = [object attributeKeys]; - - if (!NSManagedObjectClass || ![object isKindOfClass:NSManagedObjectClass]) return; - - NSArray *attributeKeys = [[[object entity] attributesByName] allKeys]; - [self fillMatrix:(NSMatrix *)matrix withProperties:attributeKeys label:@"Attributes"]; - - NSArray *relationshipKeys = [[[object entity] relationshipsByName] allKeys]; - [self fillMatrix:(NSMatrix *)matrix withProperties:relationshipKeys label:@"Relationships"]; -} */ + struct objc_method_list* mlist; + void* iterator = 0; + + while ((mlist = class_nextMethodList(cls, &iterator))) { + for (i = 0; i < mlist->method_count; i++) { + NSString* methodName = [FSCompiler stringFromSelector:mlist->method_list[i].method_name]; + if (([self hasEmptyFilterString] || containsString(methodName, filterString, NSCaseInsensitiveSearch)) + && (!doNotShowSelectorsStartingWithUnderscore || ![methodName hasPrefix:@"_"]) + && (!doNotShowSelectorsStartingWithAccessibility || ![methodName hasPrefix:@"accessibility"]) + && (![methodName isEqualToString:@""]) + && (![methodName hasPrefix:@"__F-ScriptGeneratedStub"])) + [selectorStrings addObject:methodName]; + } + } +#endif + + [selectorStrings sortUsingFunction:FSCompareMethodsNamesForAlphabeticalOrder context:NULL]; + + for (i = 0, nb = [selectorStrings count]; i < nb; i++) + [self fillMatrix:matrix withMethod:[selectorStrings objectAtIndex:i]]; + + if (cls == [cls superclass]) // The NSProxy class return itself when asked for its superclass. + // This would result in an infinite loop. This test work around this. + cls = nil; + else + cls = [cls superclass]; // TODO : test if it works ok now (see comment below) + // This direct access technique is used instead of the -superclass method because this method is broken in the NSProxy hierarchy (does not return the "real" superclass) (Mac OS X 10.1.2). + if (cls) + [self addBlankRowToMatrix:matrix]; + } +} + - (void)filter { - NSInteger i,j,columnCount,rowCount; - Class NSAttributedStringClass = [NSAttributedString class]; - - if (browsingMode == FSBrowsingWorkspace) [self fillMatrixForWorkspaceBrowsing:[browser matrixInColumn:0]]; - else if (browsingMode == FSBrowsingClasses) [self fillMatrixForClassesBrowsing:[browser matrixInColumn:0]]; - - i = 0; // In order to avoid a warning "may be used unintialized" - switch (browsingMode) - { - case FSBrowsingWorkspace: - case FSBrowsingClasses: i = 1; break; - case FSBrowsingNothing: - case FSBrowsingObject: i = 0; break; - } - - for (columnCount = [browser lastColumn]+1; i < columnCount; i++) - { - NSMatrix *matrix = [browser matrixInColumn:i]; - NSInteger selectedRow = [matrix selectedRow]; - enum FSObjectBrowserCellType cellType = FSOBMETHOD; // init in order to avoid a compiler warning "may be used uninitialized" - NSString *classLabelForSelectedRow = nil; // init to nil to avoid a compiler warning - NSString *selectedMethod = nil; // init to nil to avoid a compiler warning - - if (selectedRow != -1 && (cellType = [[matrix cellAtRow:selectedRow column:0] objectBrowserCellType]) == FSOBMETHOD) - { - selectedMethod = [[matrix cellAtRow:selectedRow column:0] stringValue]; - for (j = selectedRow-1; ![[[matrix cellAtRow:j column:0] objectValue] isKindOfClass:NSAttributedStringClass] ; j--); - classLabelForSelectedRow = [[matrix cellAtRow:j column:0] stringValue]; - } - - if ([matrix numberOfRows] > 0) [self fillMatrix:matrix withObject:[[matrix cellAtRow:0 column:0] representedObject]]; - - if (selectedRow != -1 && cellType == FSOBMETHOD) - { - for (j = 0, rowCount = [matrix numberOfRows]; j < rowCount; j++) - { - NSCell *cell = [matrix cellAtRow:j column:0]; - if ([[cell objectValue] isKindOfClass:NSAttributedStringClass] && [[cell stringValue] isEqualToString:classLabelForSelectedRow]) - { - j++; - break; - } - } - while (1) - { - if (j == rowCount) - { - //[matrix addRow]; - //[[matrix cellAtRow:j column:0] setStringValue:selectedMethod]; - //[[matrix cellAtRow:j column:0] setObjectBrowserCellType:cellType]; - //[matrix selectCellAtRow:j column:0]; - FSObjectBrowserCell *cell = addRowToMatrix(matrix); - [cell setStringValue:selectedMethod]; - [cell setObjectBrowserCellType:cellType]; - - [matrix selectCellAtRow:j column:0]; - //[matrix scrollCellToVisibleAtRow:j column:0]; - break; + NSInteger i, j, columnCount, rowCount; + Class NSAttributedStringClass = [NSAttributedString class]; + + if (browsingMode == FSBrowsingWorkspace) + [self fillMatrixForWorkspaceBrowsing:[browser matrixInColumn:0]]; + else if (browsingMode == FSBrowsingClasses) + [self fillMatrixForClassesBrowsing:[browser matrixInColumn:0]]; + + i = 0; // In order to avoid a warning "may be used unintialized" + switch (browsingMode) { + case FSBrowsingWorkspace: + case FSBrowsingClasses: + i = 1; + break; + case FSBrowsingNothing: + case FSBrowsingObject: + i = 0; + break; } - else - { - FSObjectBrowserCell *cell = [matrix cellAtRow:j column:0]; - NSString *stringValue = [cell stringValue]; - id objectValue = [cell objectValue]; - NSComparisonResult order = FSCompareMethodsNamesForAlphabeticalOrder(stringValue, selectedMethod, nil); - - if (order == NSOrderedSame && ![objectValue isKindOfClass:NSAttributedStringClass]) - { - [matrix selectCellAtRow:j column:0]; - //[matrix scrollCellToVisibleAtRow:j column:0]; - break; - } - else if (order == NSOrderedDescending) - { - [matrix insertRow:j]; - [[matrix cellAtRow:j column:0] setStringValue:selectedMethod]; - [[matrix cellAtRow:j column:0] setObjectBrowserCellType:cellType]; - [matrix selectCellAtRow:j column:0]; - //[matrix scrollCellToVisibleAtRow:j column:0]; - break; - } - else if ([objectValue isKindOfClass:NSAttributedStringClass]) - { - // Insert at j-1 to preserve the empty line before the line with the class name. - [matrix insertRow:j-1]; - [[matrix cellAtRow:j-1 column:0] setStringValue:selectedMethod]; - [[matrix cellAtRow:j-1 column:0] setObjectBrowserCellType:cellType]; - [matrix selectCellAtRow:j-1 column:0]; - //[matrix scrollCellToVisibleAtRow:j-1 column:0]; - break; - } - } - j++; - } - } - } - [browser tile]; -} + + for (columnCount = [browser lastColumn] + 1; i < columnCount; i++) { + NSMatrix* matrix = [browser matrixInColumn:i]; + NSInteger selectedRow = [matrix selectedRow]; + enum FSObjectBrowserCellType cellType = FSOBMETHOD; // init in order to avoid a compiler warning "may be used uninitialized" + NSString* classLabelForSelectedRow = nil; // init to nil to avoid a compiler warning + NSString* selectedMethod = nil; // init to nil to avoid a compiler warning + + if (selectedRow != -1 && (cellType = [[matrix cellAtRow:selectedRow column:0] objectBrowserCellType]) == FSOBMETHOD) { + selectedMethod = [[matrix cellAtRow:selectedRow column:0] stringValue]; + for (j = selectedRow - 1; ![[[matrix cellAtRow:j column:0] objectValue] isKindOfClass:NSAttributedStringClass]; j--) + ; + classLabelForSelectedRow = [[matrix cellAtRow:j column:0] stringValue]; + } + + if ([matrix numberOfRows] > 0) + [self fillMatrix:matrix column:i withObject:[[matrix cellAtRow:0 column:0] representedObject]]; + + if (selectedRow != -1 && cellType == FSOBMETHOD) { + for (j = 0, rowCount = [matrix numberOfRows]; j < rowCount; j++) { + NSCell* cell = [matrix cellAtRow:j column:0]; + if ([[cell objectValue] isKindOfClass:NSAttributedStringClass] && [[cell stringValue] isEqualToString:classLabelForSelectedRow]) { + j++; + break; + } + } + while (1) { + if (j == rowCount) { + FSObjectBrowserCell* cell = addRowToMatrix(matrix); + [cell setStringValue:selectedMethod]; + [cell setObjectBrowserCellType:cellType]; + + [matrix selectCellAtRow:j column:0]; + break; + } + else { + FSObjectBrowserCell* cell = [matrix cellAtRow:j column:0]; + NSString* stringValue = [cell stringValue]; + id objectValue = [cell objectValue]; + NSComparisonResult order = FSCompareMethodsNamesForAlphabeticalOrder(stringValue, selectedMethod, nil); + + if (order == NSOrderedSame && ![objectValue isKindOfClass:NSAttributedStringClass]) { + [matrix selectCellAtRow:j column:0]; + break; + } + else if (order == NSOrderedDescending) { + [matrix insertRow:j]; + [[matrix cellAtRow:j column:0] setStringValue:selectedMethod]; + [[matrix cellAtRow:j column:0] setObjectBrowserCellType:cellType]; + [matrix selectCellAtRow:j column:0]; + break; + } + else if ([objectValue isKindOfClass:NSAttributedStringClass]) { + // Insert at j-1 to preserve the empty line before the line with the class name. + [matrix insertRow:j - 1]; + [[matrix cellAtRow:j - 1 column:0] setStringValue:selectedMethod]; + [[matrix cellAtRow:j - 1 column:0] setObjectBrowserCellType:cellType]; + [matrix selectCellAtRow:j - 1 column:0]; + break; + } + } + j++; + } + } + } + [browser tile]; +} - (void)filterAction:(id)sender -{ - [self setFilterString:[sender stringValue]]; - [self filter]; +{ + [self setFilterString:[sender stringValue]]; + [self filter]; } -- (BOOL) hasEmptyFilterString +- (BOOL)hasEmptyFilterString { - return [filterString isEqualToString:@""]; + return [filterString isEqualToString:@""]; } -- (id)initWithFrame:(NSRect)frameRect +- (void)inspectAction:(id)sender { - self = [super initWithFrame:frameRect]; - if (self) - { - CGFloat baseWidth = NSWidth([self bounds]); - CGFloat baseHeight = NSHeight([self bounds]); - CGFloat fontSize; - - fontSize = systemFontSize(); - - browser = [[NSBrowser alloc] initWithFrame:NSMakeRect(0, FSObjectBrowserBottomBarHeight, baseWidth, baseHeight-FSObjectBrowserBottomBarHeight)]; - //[browser setMatrixClass:[FSObjectBrowserMatrix class]]; - [browser setCellClass:[FSObjectBrowserCell class]]; - [browser setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable]; - [browser setHasHorizontalScroller:YES]; - [browser setMinColumnWidth:145+(fontSize*6)]; - [browser setTakesTitleFromPreviousColumn:NO]; - [browser setTitled:NO]; - [browser setTarget:self]; - [browser setDoubleAction:@selector(doubleClickAction:)]; - [[browser cellPrototype] setFont:[NSFont systemFontOfSize:fontSize]]; - [browser setDelegate:self]; - [browser setFocusRingType:NSFocusRingTypeNone]; - [browser setAutohidesScroller:YES]; - //[browser setAcceptsArrowKeys:NO]; - - if ([browser respondsToSelector:@selector(setColumnResizingType:)]) [browser setColumnResizingType:2]; - - if ([browser respondsToSelector:@selector(setColumnsAutosaveName:)]) [browser setColumnsAutosaveName:@"Object browser columns autosave configuration"]; - - bottomBarTextDisplay = [[FSObjectBrowserBottomBarTextDisplay alloc] initWithFrame:NSMakeRect(0, 0, baseWidth, FSObjectBrowserBottomBarHeight)]; + inspect([self selectedObject], interpreter, nil); +} - [self addSubview:browser]; - [self addSubview:bottomBarTextDisplay]; +- (void)menuWillSendAction:(NSNotification*)notification; +{ + NSMenuItem* item = [[notification userInfo] objectForKey:@"MenuItem"]; + selectedView = [item retain]; +} - browsingMode = FSBrowsingWorkspace; - - filterString = @""; - - matrixes = [[NSMutableSet alloc] init]; - } - return self; -} +@class FSObjectBrowser; -- (void) inspectAction:(id)sender +- (void)mouseMoved:(NSEvent*)theEvent { - inspect([self selectedObject], interpreter, nil); + NSInteger row, column; + NSPoint baseMouseLocation = [[self window] convertScreenToBase:[NSEvent mouseLocation]]; + NSView* view = [self hitTest:[[self superview] convertPoint:baseMouseLocation fromView:nil]]; + + if ([view isKindOfClass:[NSMatrix class]] && [(NSMatrix*)view getRow:&row column:&column forPoint:[view convertPoint:baseMouseLocation fromView:nil]]) { + [bottomBarTextDisplay setString:[[(NSMatrix*)view cellAtRow:row column:column] stringValue]]; + } + else + [bottomBarTextDisplay setTitle:@""]; + + [super mouseMoved:theEvent]; } -- (void)menuWillSendAction:(NSNotification *)notification; +- (void)nameObjectAction:(id)sender { - NSMenuItem *item = [[notification userInfo] objectForKey: @"MenuItem"]; - selectedView = [item retain]; + CGFloat fontSize = systemFontSize(); + CGFloat baseWidth = 230; + CGFloat baseHeight = 15 + fontSize + 9 + 60; + NSWindow* nameSheet; + NSTextField* field; + NSButton* nameButton; + NSButton* cancelButton; + + if ([self selectedObject] == nil) { + NSBeep(); + return; + } + + nameSheet = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, baseWidth, baseHeight) styleMask:NSTitledWindowMask | NSClosableWindowMask backing:NSBackingStoreBuffered defer:NO]; + [nameSheet setMinSize:NSMakeSize(130, 80)]; + + field = [[[NSTextField alloc] initWithFrame:NSMakeRect(20, baseHeight - (15 + fontSize + 9), baseWidth - 40, fontSize + 10)] autorelease]; + [field setFont:[NSFont systemFontOfSize:fontSize]]; + [field setTarget:self]; + [field setAction:@selector(okNameSheetAction:)]; + [field setFormatter:[[[FSIdentifierFormatter alloc] init] autorelease]]; + + [[nameSheet contentView] addSubview:field]; + + nameButton = [[[NSButton alloc] initWithFrame:NSMakeRect(baseWidth / 2, 13, 95, 30)] autorelease]; + [nameButton setBezelStyle:1]; + [nameButton setTitle:@"Name"]; + [nameButton setAction:@selector(performClick:)]; // Will make field to send its action message + [nameButton setTarget:field]; + [nameButton setKeyEquivalent:@"\r"]; + [[nameSheet contentView] addSubview:nameButton]; + + cancelButton = [[[NSButton alloc] initWithFrame:NSMakeRect(baseWidth / 2 - 95, 13, 95, 30)] autorelease]; + [cancelButton setBezelStyle:1]; + [cancelButton setTitle:@"Cancel"]; + [cancelButton setAction:@selector(cancelNameSheetAction:)]; + [cancelButton setTarget:self]; + [cancelButton setKeyEquivalent:@"\e"]; + [[nameSheet contentView] addSubview:cancelButton]; + + [NSApp beginSheet:nameSheet modalForWindow:[self window] modalDelegate:self didEndSelector:NULL contextInfo:NULL]; + [field selectText:nil]; } -@class FSObjectBrowser; +- (void)okNameSheetAction:(id)sender +{ + if ([[sender stringValue] length] == 0) { + [NSApp endSheet:[sender window]]; + [[sender window] close]; + } + else if ([[sender stringValue] isEqualToString:@"sys"]) { + // don't close the sheet + NSRunAlertPanel(@"Invalid name", @"Sorry, the name \"sys\" is reserved. Please, choose an other name.", @"OK", nil, nil, nil); + [[sender window] makeFirstResponder:sender]; + } + else if ([FSCompiler isValidIdentifier:[sender stringValue]]) { + [interpreter setObject:[self selectedObject] forIdentifier:[sender stringValue]]; + [NSApp endSheet:[sender window]]; + [[sender window] close]; + } + else { + // don't close the sheet + NSRunAlertPanel(@"Malformed Name", @"Sorry, an F-Script identifier must start with an alphabetic, non-accentuated, character or with an underscore (i.e. \"_\") and must only contains non-accentuated alphanumeric characters and underscores. Please, enter a well-formed name.", @"OK", nil, nil, nil); + [[sender window] makeFirstResponder:sender]; + } +} -- (void)mouseMoved:(NSEvent *)theEvent -{ - NSInteger row, column; - NSPoint baseMouseLocation = [[self window] convertScreenToBase:[NSEvent mouseLocation]]; - NSView *view = [self hitTest:[[self superview] convertPoint:baseMouseLocation fromView:nil]]; - - if ([view isKindOfClass:[NSMatrix class]] && [(NSMatrix *)view getRow:&row column:&column forPoint:[view convertPoint:baseMouseLocation fromView:nil]]) - { - [bottomBarTextDisplay setString:[[(NSMatrix *)view cellAtRow:row column:column] stringValue]]; - } - else [bottomBarTextDisplay setTitle:@""]; - - [super mouseMoved:theEvent]; -} - -- (void) nameObjectAction:(id)sender -{ - CGFloat fontSize = systemFontSize(); - CGFloat baseWidth = 230; - CGFloat baseHeight = 15+fontSize+9+60; - NSWindow *nameSheet; - NSTextField *field; - NSButton *nameButton; - NSButton *cancelButton; - - if ([self selectedObject] == nil) - { - NSBeep(); - return; - } - - nameSheet = [[NSWindow alloc] initWithContentRect:NSMakeRect(0,0,baseWidth,baseHeight) styleMask:NSTitledWindowMask|NSClosableWindowMask backing:NSBackingStoreBuffered defer:NO]; - [nameSheet setMinSize:NSMakeSize(130,80)]; - - field = [[[NSTextField alloc] initWithFrame:NSMakeRect(20,baseHeight-(15+fontSize+9),baseWidth-40,fontSize+10)] autorelease]; - [field setFont:[NSFont systemFontOfSize:fontSize]]; - [field setTarget:self]; - [field setAction:@selector(okNameSheetAction:)]; - [field setFormatter:[[[FSIdentifierFormatter alloc] init] autorelease]]; - - [[nameSheet contentView] addSubview:field]; - - nameButton = [[[NSButton alloc] initWithFrame:NSMakeRect(baseWidth/2,13,95,30)] autorelease]; - [nameButton setBezelStyle:1]; - [nameButton setTitle:@"Name"]; - [nameButton setAction:@selector(performClick:)]; // Will make field to send its action message - [nameButton setTarget:field]; - [nameButton setKeyEquivalent:@"\r"]; - [[nameSheet contentView] addSubview:nameButton]; - - cancelButton = [[[NSButton alloc] initWithFrame:NSMakeRect(baseWidth/2-95,13,95,30)] autorelease]; - [cancelButton setBezelStyle:1]; - [cancelButton setTitle:@"Cancel"]; - [cancelButton setAction:@selector(cancelNameSheetAction:)]; - [cancelButton setTarget:self]; - [cancelButton setKeyEquivalent:@"\e"]; - [[nameSheet contentView] addSubview:cancelButton]; - - [NSApp beginSheet:nameSheet modalForWindow:[self window] modalDelegate:self didEndSelector:NULL contextInfo:NULL]; - [field selectText:nil]; -} - --(void)okNameSheetAction:(id)sender -{ - if ([[sender stringValue] length] == 0) - { - [NSApp endSheet:[sender window]]; - [[sender window] close]; - } - else if ([[sender stringValue] isEqualToString:@"sys"]) - { - // don't close the sheet - NSRunAlertPanel(@"Invalid name", @"Sorry, the name \"sys\" is reserved. Please, choose an other name.", @"OK", nil, nil,nil); - [[sender window] makeFirstResponder:sender]; - } - else if ([FSCompiler isValidIdentifier:[sender stringValue]]) - { - [interpreter setObject:[self selectedObject] forIdentifier:[sender stringValue]]; - [NSApp endSheet:[sender window]]; - [[sender window] close]; - } - else - { - // don't close the sheet - NSRunAlertPanel(@"Malformed Name", @"Sorry, an F-Script identifier must start with an alphabetic, non-accentuated, character or with an underscore (i.e. \"_\") and must only contains non-accentuated alphanumeric characters and underscores. Please, enter a well-formed name.", @"OK", nil, nil,nil); - [[sender window] makeFirstResponder:sender]; - } -} - --(id) selectedObject -{ - FSObjectBrowserCell *selectedCell = [browser selectedCell]; - enum FSObjectBrowserCellType selectedCellType = [selectedCell objectBrowserCellType]; - - if (selectedCellType == FSOBOBJECT || selectedCellType == FSOBCLASS) - return [selectedCell representedObject]; - else - { - if ([browser lastColumn] == 0) - { - switch (browsingMode) - { - case FSBrowsingWorkspace: return nil; - case FSBrowsingClasses: return nil; - case FSBrowsingNothing: return nil; - case FSBrowsingObject: break; - } - } - return [[browser loadedCellAtRow:0 column:[browser lastColumn]] representedObject]; - } -} - -- (void) selectMethodNamed:(NSString *)methodName -{ - NSInteger methodColumn = [browser lastColumn]; - NSInteger i = 0; - NSArray *methodCells = [[browser matrixInColumn:methodColumn] cells]; - NSInteger count = [methodCells count]; - - if (count == 0 && [methodName isEqualToString:@"applyBlock:"]) // may happend if the selected object is a proxy to an object in an app not linked against the F-Script framework. - { - NSMatrix *matrix = [browser matrixInColumn:methodColumn]; - - //[matrix addRow]; - //[[matrix cellAtRow:0 column:0] setStringValue:@"applyBlock:"]; - //[[matrix cellAtRow:0 column:0] setEnabled:NO]; - FSObjectBrowserCell *cell = addRowToMatrix(matrix); - [cell setStringValue:@"applyBlock:"]; - [cell setEnabled:NO]; - - count = 1; - methodCells = [[browser matrixInColumn:methodColumn] cells]; - } - - while (i < count && !([[[methodCells objectAtIndex:i] stringValue] isEqualToString:methodName] && [[methodCells objectAtIndex:i] objectBrowserCellType] == FSOBMETHOD)) i++; - - if (i < count) - [browser selectRow:i inColumn:methodColumn]; - else - { - NSString *oldFilterString = filterString; - BOOL oldDoNotShowSelectorsStartingWithUnderscore = [[NSUserDefaults standardUserDefaults] boolForKey:@"FScriptDoNotShowSelectorsStartingWithUnderscore"]; - BOOL oldDoNotShowSelectorsStartingWithAccessibility = [[NSUserDefaults standardUserDefaults] boolForKey:@"FScriptDoNotShowSelectorsStartingWithAccessibility"]; - - if (![oldFilterString isEqualToString:@""] || oldDoNotShowSelectorsStartingWithUnderscore == YES || oldDoNotShowSelectorsStartingWithAccessibility == YES) // Note that the method we are looking for might not exist. In this case, this test is important in order to avoid a infinite recursion. - { - filterString = @""; - [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"FScriptDoNotShowSelectorsStartingWithUnderscore"]; - [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"FScriptDoNotShowSelectorsStartingWithAccessibility"]; - - [self filter]; - [self selectMethodNamed:methodName]; - - filterString = oldFilterString; - [[NSUserDefaults standardUserDefaults] setBool:oldDoNotShowSelectorsStartingWithUnderscore forKey:@"FScriptDoNotShowSelectorsStartingWithUnderscore"]; - [[NSUserDefaults standardUserDefaults] setBool:oldDoNotShowSelectorsStartingWithAccessibility forKey:@"FScriptDoNotShowSelectorsStartingWithAccessibility"]; - - [self filter]; - } - } +- (id)selectedObject +{ + FSObjectBrowserCell* selectedCell = [browser selectedCell]; + enum FSObjectBrowserCellType selectedCellType = [selectedCell objectBrowserCellType]; + + if (selectedCellType == FSOBOBJECT || selectedCellType == FSOBCLASS) + return [selectedCell representedObject]; + else { + if ([browser lastColumn] == 0) { + switch (browsingMode) { + case FSBrowsingWorkspace: + return nil; + case FSBrowsingClasses: + return nil; + case FSBrowsingNothing: + return nil; + case FSBrowsingObject: + break; + } + } + return [[browser loadedCellAtRow:0 column:[browser lastColumn]] representedObject]; + } } +- (void)selectMethodNamed:(NSString*)methodName +{ + NSInteger methodColumn = [browser lastColumn]; + NSInteger i = 0; + NSArray* methodCells = [[browser matrixInColumn:methodColumn] cells]; + NSInteger count = [methodCells count]; -/* -- (void)mouseMoved:(NSEvent *)theEvent -{ - NSInteger row, column; - NSPoint baseMouseLocation = [[self window] convertScreenToBase:[NSEvent mouseLocation]]; - NSView *view = [self hitTest:[[self superview] convertPoint:baseMouseLocation fromView:nil]]; - - if ([view isKindOfClass:[NSMatrix class]] && [(NSMatrix *)view getRow:&row column:&column forPoint:[view convertPoint:baseMouseLocation fromView:nil]]) - { - [statusBar setStringValue:[[(NSMatrix *)view cellAtRow:row column:column] stringValue]]; - } - else [statusBar setStringValue:@""]; - - [super mouseMoved:theEvent]; -} -*/ - -- (void) selectView:(id)dummy -{ - NSEvent *event; - id view; - NSCursor *cursor = [NSCursor crosshairCursor]; - NSDate *distantFuture = [NSDate distantFuture]; - - NSRect infoRect = NSMakeRect(0, 0, 290, 100); - NSTextView *infoView = [[[NSTextView alloc] initWithFrame:NSZeroRect] autorelease]; - [infoView setEditable:NO]; - [infoView setSelectable:NO]; - [infoView setDrawsBackground:NO]; - [infoView setTextColor:[NSColor whiteColor]]; - [infoView setFont:[NSFont controlContentFontOfSize:10]]; - [infoView setTextContainerInset:NSMakeSize(4, 4)]; - //[infoView setAutoresizingMask:NSViewHeightSizable|NSViewMinYMargin]; - [infoView setVerticallyResizable:NO]; - - NSMutableParagraphStyle *paragraphStyle = [[[NSParagraphStyle defaultParagraphStyle] mutableCopy] autorelease]; - [paragraphStyle setLineBreakMode:NSLineBreakByTruncatingTail]; - [infoView setDefaultParagraphStyle:paragraphStyle]; - - NSPanel *infoWindow = [[[NSPanel alloc] initWithContentRect:infoRect styleMask:NSHUDWindowMask /*| NSTitledWindowMask*/ | NSUtilityWindowMask backing:NSBackingStoreBuffered defer:NO] autorelease]; - [infoWindow setLevel:NSFloatingWindowLevel]; - [infoWindow setContentView:infoView]; - - // NSWindow *focusWindow = [[[NSWindow alloc] initWithContentRect:NSZeroRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO] autorelease]; - - NSWindow *focusWindow = [[NSWindow alloc] initWithContentRect:NSZeroRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO] ; - - [focusWindow setBackgroundColor:[NSColor selectedTextBackgroundColor]]; - [focusWindow setAlphaValue:0.7]; - [focusWindow setIgnoresMouseEvents:YES]; - - [cursor push]; - - selectedView = nil; - - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(menuWillSendAction:) name:NSMenuWillSendActionNotification object:nil]; - - do - { - [cursor push]; - event = [NSApp nextEventMatchingMask:~0 untilDate:distantFuture inMode:NSEventTrackingRunLoopMode dequeue:YES]; - [cursor pop]; - if ([event type] == NSMouseMoved) - { - NSInteger windowCount; - NSInteger *windows; - - view = nil; - - NSCountWindows(&windowCount); - windows = malloc(windowCount*sizeof(NSInteger)); - NSWindowList(windowCount, windows); - - for (unsigned i = 0; i < windowCount; i++) - { - NSWindow *window = [NSApp windowWithWindowNumber:windows[i]]; - if (window && window != focusWindow && window != infoWindow) + if (count == 0 && [methodName isEqualToString:@"applyBlock:"]) // may happend if the selected object is a proxy to an object in an app not linked against the F-Script framework. { - view = [[[window contentView] superview] hitTest:[window convertScreenToBase:[NSEvent mouseLocation]]]; - if (view) break; + NSMatrix* matrix = [browser matrixInColumn:methodColumn]; + + FSObjectBrowserCell* cell = addRowToMatrix(matrix); + [cell setStringValue:@"applyBlock:"]; + [cell setEnabled:NO]; + + count = 1; + methodCells = [[browser matrixInColumn:methodColumn] cells]; } - } - - free(windows); - - if (view) - { - NSRect rectInWindowCoordinates = [view convertRect:[view visibleRect] toView:nil];; - NSRect rectInScreenCoordinates; - NSSize size = NSMakeSize(220,21); - rectInScreenCoordinates.size = rectInWindowCoordinates.size; - rectInScreenCoordinates.origin = [[view window] convertBaseToScreen:rectInWindowCoordinates.origin]; - - if ([focusWindow parentWindow] != [view window]) - { - [[focusWindow parentWindow] removeChildWindow:focusWindow]; - [[view window] addChildWindow:focusWindow ordered:NSWindowAbove]; + + while (i < count && !([[[methodCells objectAtIndex:i] stringValue] isEqualToString:methodName] && [[methodCells objectAtIndex:i] objectBrowserCellType] == FSOBMETHOD)) + i++; + + if (i < count) + [browser selectRow:i inColumn:methodColumn]; + else { + NSString* oldFilterString = filterString; + BOOL oldDoNotShowSelectorsStartingWithUnderscore = [[NSUserDefaults standardUserDefaults] boolForKey:@"FScriptDoNotShowSelectorsStartingWithUnderscore"]; + BOOL oldDoNotShowSelectorsStartingWithAccessibility = [[NSUserDefaults standardUserDefaults] boolForKey:@"FScriptDoNotShowSelectorsStartingWithAccessibility"]; + + if (![oldFilterString isEqualToString:@""] || oldDoNotShowSelectorsStartingWithUnderscore == YES || oldDoNotShowSelectorsStartingWithAccessibility == YES) // Note that the method we are looking for might not exist. In this case, this test is important in order to avoid a infinite recursion. + { + filterString = @""; + [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"FScriptDoNotShowSelectorsStartingWithUnderscore"]; + [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"FScriptDoNotShowSelectorsStartingWithAccessibility"]; + + [self filter]; + [self selectMethodNamed:methodName]; + + filterString = oldFilterString; + [[NSUserDefaults standardUserDefaults] setBool:oldDoNotShowSelectorsStartingWithUnderscore forKey:@"FScriptDoNotShowSelectorsStartingWithUnderscore"]; + [[NSUserDefaults standardUserDefaults] setBool:oldDoNotShowSelectorsStartingWithAccessibility forKey:@"FScriptDoNotShowSelectorsStartingWithAccessibility"]; + + [self filter]; + } } - [focusWindow setFrame:rectInScreenCoordinates display:YES]; - - /* NSMutableString *infoString = [NSMutableString string]; - - [infoString appendFormat:@"Bounds:\t%@\n", printString([NSValue valueWithRect:[view bounds]])]; - [infoString appendFormat:@"Frame:\t%@\n", printString([NSValue valueWithRect:[view frame]])]; - [infoString appendFormat:@"Superview:\t%@\n", [[view superview] class]]; - [infoString appendString:@"Subviews:\n"]; - for (NSView *subview in [view subviews]) [infoString appendFormat:@"\t\t%@\n", [subview class]]; - - [infoView setString:infoString]; - - size = [[infoView textStorage] size]; - size.width += 15; - size.height += 10; - */ - - NSPoint origin = NSMakePoint([NSEvent mouseLocation].x+12, [NSEvent mouseLocation].y-size.height-9); - [infoWindow setFrame:NSMakeRect(origin.x, origin.y, size.width, size.height) display:YES animate:NO]; - //[infoWindow setTitle:[NSString stringWithFormat:@"%@: %p", [view class], view]]; - [infoView setString:[NSString stringWithFormat:@"%@: %p", [view class], view]]; - - [infoWindow orderFront:nil]; - } - else - { +} + + +- (void)selectView:(id)dummy +{ + NSEvent* event; + id view; + NSCursor* cursor = [NSCursor crosshairCursor]; + NSDate* distantFuture = [NSDate distantFuture]; + + NSRect infoRect = NSMakeRect(0, 0, 290, 100); + NSTextView* infoView = [[[NSTextView alloc] initWithFrame:NSZeroRect] autorelease]; + [infoView setEditable:NO]; + [infoView setSelectable:NO]; + [infoView setDrawsBackground:NO]; + [infoView setTextColor:[NSColor whiteColor]]; + [infoView setFont:[NSFont controlContentFontOfSize:10]]; + [infoView setTextContainerInset:NSMakeSize(4, 4)]; + //[infoView setAutoresizingMask:NSViewHeightSizable|NSViewMinYMargin]; + [infoView setVerticallyResizable:NO]; + + NSMutableParagraphStyle* paragraphStyle = [[[NSParagraphStyle defaultParagraphStyle] mutableCopy] autorelease]; + [paragraphStyle setLineBreakMode:NSLineBreakByTruncatingTail]; + [infoView setDefaultParagraphStyle:paragraphStyle]; + + NSPanel* infoWindow = [[[NSPanel alloc] initWithContentRect:infoRect styleMask:NSHUDWindowMask /*| NSTitledWindowMask*/ | NSUtilityWindowMask backing:NSBackingStoreBuffered defer:NO] autorelease]; + [infoWindow setLevel:NSFloatingWindowLevel]; + [infoWindow setContentView:infoView]; + + NSWindow* focusWindow = [[NSWindow alloc] initWithContentRect:NSZeroRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO]; + + [focusWindow setBackgroundColor:[NSColor selectedTextBackgroundColor]]; + [focusWindow setAlphaValue:0.7]; + [focusWindow setIgnoresMouseEvents:YES]; + + [cursor push]; + + selectedView = nil; + + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(menuWillSendAction:) name:NSMenuWillSendActionNotification object:nil]; + + do { + [cursor push]; + event = [NSApp nextEventMatchingMask:~0 untilDate:distantFuture inMode:NSEventTrackingRunLoopMode dequeue:YES]; + [cursor pop]; + if ([event type] == NSMouseMoved) { + NSInteger windowCount; + NSInteger* windows; + + view = nil; + + NSCountWindows(&windowCount); + windows = malloc(windowCount * sizeof(NSInteger)); + NSWindowList(windowCount, windows); + + for (unsigned i = 0; i < windowCount; i++) { + NSWindow* window = [NSApp windowWithWindowNumber:windows[i]]; + if (window && window != focusWindow && window != infoWindow) { + view = [[[window contentView] superview] hitTest:[window convertScreenToBase:[NSEvent mouseLocation]]]; + if (view) + break; + } + } + + free(windows); + + if (view) { + NSRect rectInWindowCoordinates = [view convertRect:[view visibleRect] toView:nil]; + ; + NSRect rectInScreenCoordinates; + NSSize size = NSMakeSize(220, 21); + rectInScreenCoordinates.size = rectInWindowCoordinates.size; + rectInScreenCoordinates.origin = [[view window] convertBaseToScreen:rectInWindowCoordinates.origin]; + + if ([focusWindow parentWindow] != [view window]) { + [[focusWindow parentWindow] removeChildWindow:focusWindow]; + [[view window] addChildWindow:focusWindow ordered:NSWindowAbove]; + } + [focusWindow setFrame:rectInScreenCoordinates display:YES]; + + NSPoint origin = NSMakePoint([NSEvent mouseLocation].x + 12, [NSEvent mouseLocation].y - size.height - 9); + [infoWindow setFrame:NSMakeRect(origin.x, origin.y, size.width, size.height) display:YES animate:NO]; + [infoView setString:[NSString stringWithFormat:@"%@: %p", [view class], view]]; + + [infoWindow orderFront:nil]; + } + else { + [[focusWindow parentWindow] removeChildWindow:focusWindow]; + [focusWindow orderOut:nil]; + [infoWindow orderOut:nil]; + } + } + + } while ([event type] != NSLeftMouseDown && selectedView == nil && !([event type] == NSKeyDown && [[event characters] characterAtIndex:0] == ESCAPE)); + + [[NSNotificationCenter defaultCenter] removeObserver:self name:NSMenuWillSendActionNotification object:nil]; + [cursor pop]; [[focusWindow parentWindow] removeChildWindow:focusWindow]; - [focusWindow orderOut:nil]; - [infoWindow orderOut:nil]; - //[self browseNothing]; - } - } - - } - while ( [event type] != NSLeftMouseDown && selectedView == nil && !([event type] == NSKeyDown && [[event characters] characterAtIndex:0] == ESCAPE) ); - - [[NSNotificationCenter defaultCenter] removeObserver:self name:NSMenuWillSendActionNotification object:nil]; - [cursor pop]; - [[focusWindow parentWindow] removeChildWindow:focusWindow]; - [focusWindow close]; - [infoWindow close]; - - if ( !([event type] == NSKeyDown && [[event characters] characterAtIndex:0] == ESCAPE) ) - { - if (selectedView == nil) - view = [[[[event window] contentView] superview] hitTest:[event locationInWindow]]; - else - view = selectedView; - - [self setRootObject:view]; - [selectedView release]; - [[self window] performSelector:@selector(makeKeyAndOrderFront:) withObject:nil afterDelay:0]; - [NSApp activateIgnoringOtherApps:YES]; - } -} - -- (void) selectViewAction:(id)sender -{ - [self performSelector:@selector(selectView:) withObject:nil afterDelay:0]; -} - -- (void) selfAction:(id)sender -{ - [self sendMessage:@selector(self) withArguments:nil]; -} - -- (void) sendMessage:(SEL)selector withArguments:(FSArray *)arguments // You can pass nil for "arguments" -{ - // Simulate the user invoking a method on the selected object through the browser. - - NSString *methodName = [FSCompiler stringFromSelector:selector]; - id selectedObject; - - if ((selectedObject = [self validSelectedObject]) == nil) - { - NSBeep(); - return; - } - - if (![selectedObject respondsToSelector:selector] && selector != @selector(applyBlock:)/* Account for a proxy to an object in an app not linked against the F-Script framework */) - { - NSBeginInformationalAlertSheet(@"Inavlid message", @"OK", nil, nil, [self window], nil, NULL, NULL, NULL, @"The selected object doesn't responds to \"%@\".", methodName); - return; - } - - if (arguments && [arguments count] > 0) [browser setDelegate:nil]; - - [self selectMethodNamed:methodName]; - - if (arguments && [arguments count] > 0) - { - [browser setDelegate:self]; - [self sendMessageTo:selectedObject selectorString:methodName arguments:arguments putResultInMatrix:[browser matrixInColumn:[browser lastColumn]]]; - } - - [browser scrollColumnToVisible:[browser lastColumn]]; - [browser scrollColumnsLeftBy:1]; // Workaround for the call above to scrollColumnToVisible: not working as expected. - //[browser tile]; + [focusWindow close]; + [infoWindow close]; + + if (!([event type] == NSKeyDown && [[event characters] characterAtIndex:0] == ESCAPE)) { + // If Alt is held down, select the exact view shown in the floating window + if ((event.modifierFlags & NSAlternateKeyMask) && view != nil) { + selectedView = view; + } + if (selectedView == nil) + view = [[[[event window] contentView] superview] hitTest:[event locationInWindow]]; + else + view = selectedView; + + [self setRootObject:view]; + [selectedView release]; + [[self window] performSelector:@selector(makeKeyAndOrderFront:) withObject:nil afterDelay:0]; + [NSApp activateIgnoringOtherApps:YES]; + } +} + +- (void)selectViewAction:(id)sender +{ + [self performSelector:@selector(selectView:) withObject:nil afterDelay:0]; +} + +- (void)selfAction:(id)sender +{ + [self sendMessage:@selector(self) withArguments:nil]; +} + +- (void)sendMessage:(SEL)selector withArguments:(FSArray*)arguments // You can pass nil for "arguments" +{ + // Simulate the user invoking a method on the selected object through the browser. + + NSString* methodName = [FSCompiler stringFromSelector:selector]; + id selectedObject; + + if ((selectedObject = [self validSelectedObject]) == nil) { + NSBeep(); + return; + } + + if (![selectedObject respondsToSelector:selector] && selector != @selector(applyBlock:) /* Account for a proxy to an object in an app not linked against the F-Script framework */) { + NSBeginInformationalAlertSheet(@"Inavlid message", @"OK", nil, nil, [self window], nil, NULL, NULL, NULL, @"The selected object doesn't responds to \"%@\".", methodName); + return; + } + + if (arguments && [arguments count] > 0) + [browser setDelegate:nil]; + + [self selectMethodNamed:methodName]; + + if (arguments && [arguments count] > 0) { + [browser setDelegate:self]; + [self sendMessageTo:selectedObject selectorString:methodName arguments:arguments column:browser.lastColumn putResultInMatrix:[browser matrixInColumn:[browser lastColumn]]]; + } + + [browser scrollColumnToVisible:[browser lastColumn]]; + [browser scrollColumnsLeftBy:1]; // Workaround for the call above to scrollColumnToVisible: not working as expected. + //[browser tile]; } +// Called from the 'send message' form +// Gets the arguments entered into the form, and then calls sendMessageTo:selectorString:arguments:column:putResultsInMatrix: - (void)sendMessageAction:(id)sender { - NSString *selectedString = [[browser selectedCell] stringValue]; - id selectedObject = [[browser loadedCellAtRow:0 column:[browser selectedColumn]] representedObject]; - NSForm *f = [[[[sender window] contentView] subviews] objectAtIndex:0]; - NSInteger nbarg = [f numberOfRows]; - FSArray *arguments = [FSArray arrayWithCapacity:nbarg]; // FSArray instead of NSMutableArray in order to support nil - NSInteger i; - - for (i = 0; i < nbarg; i++) - { - NSFormCell *cell = [f cellAtIndex:i]; - NSString *argumentString = [cell stringValue]; - FSInterpreterResult *result = [interpreter execute:argumentString]; - - if ([result isOK]) - [arguments addObject:[result result]]; - else - { - NSString *errorArgumentString = [NSString stringWithFormat:@"Argument %ld %@", (long)(i+1), [result errorMessage]]; - - [result inspectBlocksInCallStack]; - [f selectTextAtIndex:i]; - NSRunAlertPanel(@"ERROR", errorArgumentString, @"OK", nil, nil,nil); - - // An alternative for displaying the error message in a more Smalltalk-like way. Not yet functionnal. - /* - NSMutableString *errorArgumentString = [NSMutableString stringWithString:argumentString]; - NSBeep(); - [errorArgumentString insertString:[result errorMessage] atIndex:[result errorRange].location]; - [cell setStringValue:errorArgumentString]; - [cell selectWithFrame:NSMakeRect(0,0,[cell cellSize].width,[cell cellSize].height) inView:[cell controlView] editor:[f currentEditor] delegate:self start:[result errorRange].location length:[result errorRange].length]; */ - - break; - } - } - - if (i == nbarg) // There were no error evaluating the arguments - { - BOOL success; - NSMatrix *matrix = [browser matrixInColumn:[browser lastColumn]]; - //NSBrowserCell *cell; - - //[[sender window] orderOut:nil]; - //[NSApp endSheet:[sender window]]; - //[[sender window] close]; - - success = [self sendMessageTo:selectedObject selectorString:selectedString arguments:arguments putResultInMatrix:matrix]; - /*if (cell = [matrix cellAtRow:0 column:0]) - { - [browser setTitle:printString([[cell representedObject] classOrMetaclass]) ofColumn:[browser lastColumn]]; - }*/ - - //[[sender window] orderOut:nil]; - if (success) - { - [NSApp endSheet:[sender window]]; - [[sender window] close]; - [browser tile]; - } - } -} - -- (BOOL) sendMessageTo:(id)receiver selectorString:(NSString *)selectorStr arguments:(FSArray *)arguments putResultInMatrix:(NSMatrix *)matrix -{ - NSInteger nbarg = [arguments count]; - id args[nbarg+2]; - SEL selector = [FSCompiler selectorFromString:selectorStr]; - NSInteger i; - id result = nil; // To avoid a warning "might be used uninitialized" - - if ([receiver isKindOfClass:[FSNewlyAllocatedObjectHolder class]]) receiver = [receiver object]; - args[0] = receiver; - args[1] = (id)selector; - for (i = 0; i < nbarg; i++) args[i+2] = [arguments objectAtIndex:i]; - - @try - { - result = sendMsgNoPattern(receiver, selector, nbarg+2, args, [FSMsgContext msgContext], nil); - } - @catch (id exception) - { - FSInspectBlocksInCallStackForException(exception); - NSRunAlertPanel(@"Error", FSErrorMessageFromException(exception), @"OK", nil, nil,nil); - return NO; - } - - if (selector == @selector(alloc) || selector == @selector(allocWithZone:)) - result = [FSNewlyAllocatedObjectHolder newlyAllocatedObjectHolderWithObject:result]; - - if (FSEncode([[receiver methodSignatureForSelector:selector] methodReturnType]) != 'v') - [self fillMatrix:matrix withObject:result]; - - return YES; -} - --(void)setInterpreter:(FSInterpreter *)theInterpreter -{ - [theInterpreter retain]; - [interpreter release]; - interpreter = theInterpreter; -} - --(void)setFilterString:(NSString *)theFilterString -{ - [theFilterString retain]; - [filterString release]; - filterString = theFilterString; -} - --(void)setRootObject:(id)theRootObject -{ - [theRootObject retain]; - [rootObject release]; - rootObject = theRootObject; - browsingMode = FSBrowsingObject; - [browser loadColumnZero]; - //[browser displayColumn:0]; // may be unnecessary -} - -- (void)setTitleOfLastColumn:(NSString *)title -{ - [browser setTitle:title ofColumn:[browser lastColumn]]; + NSString* selectedString = [[browser selectedCell] stringValue]; + id selectedObject = [[browser loadedCellAtRow:0 column:[browser selectedColumn]] representedObject]; + NSForm* f = [[[[sender window] contentView] subviews] objectAtIndex:0]; + NSInteger nbarg = [f numberOfRows]; + FSArray* arguments = [FSArray arrayWithCapacity:nbarg]; // FSArray instead of NSMutableArray in order to support nil + NSInteger i; + + for (i = 0; i < nbarg; i++) { + NSFormCell* cell = [f cellAtIndex:i]; + NSString* argumentString = [cell stringValue]; + FSInterpreterResult* result = [interpreter execute:argumentString]; + + if ([result isOK]) + [arguments addObject:[result result]]; + else { + NSString* errorArgumentString = [NSString stringWithFormat:@"Argument %ld %@", (long)(i + 1), [result errorMessage]]; + + [result inspectBlocksInCallStack]; + [f selectTextAtIndex:i]; + NSRunAlertPanel(@"ERROR", errorArgumentString, @"OK", nil, nil, nil); + break; + } + } + + if (i == nbarg) // There were no error evaluating the arguments + { + BOOL success; + NSMatrix* matrix = [browser matrixInColumn:[browser lastColumn]]; + success = [self sendMessageTo:selectedObject selectorString:selectedString arguments:arguments column:browser.lastColumn putResultInMatrix:matrix]; + if (success) { + [NSApp endSheet:[sender window]]; + [[sender window] close]; + [browser tile]; + } + } +} + +- (BOOL)sendMessageTo:(id)receiver selectorString:(NSString*)selectorStr arguments:(FSArray*)arguments column:(NSUInteger)column putResultInMatrix:(NSMatrix*)matrix +{ + NSInteger nbarg = [arguments count]; + id args[nbarg + 2]; + SEL selector = [FSCompiler selectorFromString:selectorStr]; + NSInteger i; + id result = nil; // To avoid a warning "might be used uninitialized" + + if ([receiver isKindOfClass:[FSNewlyAllocatedObjectHolder class]]) + receiver = [receiver object]; + args[0] = receiver; + args[1] = (id)selector; + for (i = 0; i < nbarg; i++) + args[i + 2] = [arguments objectAtIndex:i]; + + @try { + result = sendMsgNoPattern(receiver, selector, nbarg + 2, args, [FSMsgContext msgContext], nil); + } + @catch (id exception) + { + FSInspectBlocksInCallStackForException(exception); + NSRunAlertPanel(@"Error", FSErrorMessageFromException(exception), @"OK", nil, nil, nil); + return NO; + } + + if (selector == @selector(alloc) || selector == @selector(allocWithZone:)) + result = [FSNewlyAllocatedObjectHolder newlyAllocatedObjectHolderWithObject:result]; + + if (FSEncode([[receiver methodSignatureForSelector:selector] methodReturnType]) != 'v') + [self fillMatrix:matrix column:column withObject:result]; + + return YES; +} + +- (void)setInterpreter:(FSInterpreter*)theInterpreter +{ + [theInterpreter retain]; + [interpreter release]; + interpreter = theInterpreter; +} + +- (void)setFilterString:(NSString*)theFilterString +{ + [theFilterString retain]; + [filterString release]; + filterString = theFilterString; +} + +- (void)setRootObject:(id)theRootObject +{ + [theRootObject retain]; + [rootObject release]; + rootObject = theRootObject; + browsingMode = FSBrowsingObject; + [browser loadColumnZero]; + //[browser displayColumn:0]; // may be unnecessary +} + +- (void)setTitleOfLastColumn:(NSString*)title +{ + [browser setTitle:title ofColumn:[browser lastColumn]]; } - (void)updateAction:(id)sender { - [self filter]; - /* int i, nb; - - for (i = 0, nb = [browser lastColumn]+1; i < nb; i +=2) - { - NSMatrix *matrix = [browser matrixInColumn:i]; - int selectedRow = [matrix selectedRow]; - id object = [[matrix cellAtRow:0 column:0] representedObject]; - - if ((i == 0 && (browsingMode == FSBrowsingWorkspace || browsingMode == FSBrowsingClasses)) || (selectedRow != 0 && ([object isKindOfClass:[NSArray class]] || [object isKindOfClass:[NSDictionary class]] || [object isKindOfClass:[NSSet class]])) ) - { - int j = 0; - int numberOfRows; - id selectedElement = [[matrix cellAtRow:selectedRow column:0] representedObject]; - - [selectedElement retain]; // (1) To ensure selectedElement will not be deallocated as a side effect of the following fillMatrix:withObject: message - - if (browsingMode == FSBrowsingWorkspace && i == 0) - [self fillMatrixForWorkspaceBrowsing:matrix]; // As a side effect, this will supress the selection - else if (browsingMode == FSBrowsingClasses && i == 0) - [self fillMatrixForClassesBrowsing:matrix]; // As a side effect, this will supress the selection - else - [self fillMatrix:matrix withObject:object]; // As a side effect, this will supress the selection - - //if (i == nb-2) [browser setLastColumn:i]; - - // Since the collection may have been modified, we search for - // the element of the collection that was selected (if still in the collection) - // in order to re-install the selection - numberOfRows = [matrix numberOfRows]; - while (1) - { - if (selectedRow+j >= numberOfRows && selectedRow-j < 0) break; - else if (selectedRow+j < numberOfRows && [[matrix cellAtRow:selectedRow+j column:0] representedObject] == selectedElement) + [self filter]; +} + +- (id)validSelectedObject +{ + id selectedObject = [self selectedObject]; + + // We test wether the selectedObject object is valid (an invalid proxy will raise when sent -respondsToSelector:) + @try { + [selectedObject respondsToSelector:@selector(class)]; + } + @catch (id exception) { - [matrix selectCellAtRow:selectedRow+j column:0]; - break; + return nil; + } + + return selectedObject; +} + +- (void)workspaceAction:(id)sender +{ + [self browseWorkspace]; +} + +@end + +static FSObjectBrowserCell* addRowToMatrix(NSMatrix* matrix) +{ + // Since we reuse cells when filtering (because we use renewRows:columns:), we must + // ensure that they are correctly set-up when reused. This is the job of this function. + + FSObjectBrowserCell* cell; + + // For an unknown reason, the following does not correctly maintain the selection: + // *********** + // int numberOfRows = [matrix numberOfRows]; + // [matrix renewRows:numberOfRows+1 columns:1]; + // cell = [matrix cellAtRow:numberOfRows column:0]; + // *********** + // We do the folowing instead: + // *********** + [matrix addRow]; + cell = [matrix cellAtRow:[matrix numberOfRows] - 1 column:0]; + // *********** + + [cell setLeaf:NO]; + [cell setEnabled:YES]; + [cell setObjectValue:nil]; + [cell setObjectBrowserCellType:FSOBUNKNOWN]; + [cell setClassLabel:nil]; + [cell setLabel:nil]; + [cell setRepresentedObject:nil]; + return cell; +} + + +NSInteger FSCompareClassNamesForAlphabeticalOrder(NSString* className1, NSString* className2, void* context) +{ + if ([className1 hasPrefix:@"%"] && ![className2 hasPrefix:@"%"]) + return NSOrderedDescending; + else if ([className2 hasPrefix:@"%"] && ![className1 hasPrefix:@"%"]) + return NSOrderedAscending; + else + return [className1 caseInsensitiveCompare:className2]; +} + + +static NSInteger FSCompareMethodsNamesForAlphabeticalOrder(NSString* m1, NSString* m2, void* context) +{ + if ([m1 hasPrefix:@"_"] && ![m2 hasPrefix:@"_"]) + return NSOrderedDescending; + else if ([m2 hasPrefix:@"_"] && ![m1 hasPrefix:@"_"]) + return NSOrderedAscending; + else + return [m1 caseInsensitiveCompare:m2]; +} + +static NSString* printStringForObjectBrowser(id object) +{ + NSString* entityName; + NSString* result = nil; + + @try { + if (NSManagedObjectClass && [object isKindOfClass:NSManagedObjectClass] && (entityName = [[object entity] name]) != nil) { + result = [@"Managed object: " stringByAppendingString:entityName]; + } } - else if (selectedRow-j >= 0 && [[matrix cellAtRow:selectedRow-j column:0] representedObject] == selectedElement) + @catch (id exception) { - [matrix selectCellAtRow:selectedRow-j column:0]; - break; + result = [NSString stringWithFormat:@"*** Non printable object. The following exception was raised when " + @"trying to get a textual representation of the object: %@", + FSErrorMessageFromException(exception)]; + } + + if (!result) { + result = printStringLimited(object, 1000); + if ([result length] > 510) + result = [[result substringWithRange:NSMakeRange(0, 500)] stringByAppendingString:@" ..."]; + } + + return result; +} + + +static NSString* humanReadableFScriptTypeDescriptionFromEncodedObjCType(const char* ptr) +{ + while (*ptr == 'r' || *ptr == 'n' || *ptr == 'N' || *ptr == 'o' || *ptr == 'O' || *ptr == 'R' || *ptr == 'V') + ptr++; + + if (strcmp(ptr, @encode(id)) == 0) + return @""; + else if (strcmp(ptr, @encode(char)) == 0) + return @""; + else if (strcmp(ptr, @encode(int)) == 0) + return @"int"; + else if (strcmp(ptr, @encode(short)) == 0) + return @"short"; + else if (strcmp(ptr, @encode(long)) == 0) + return @"long"; + else if (strcmp(ptr, @encode(long long)) == 0) + return @"long long"; + else if (strcmp(ptr, @encode(unsigned char)) == 0) + return @"unsigned char"; + else if (strcmp(ptr, @encode(unsigned short)) == 0) + return @"unsigned short"; + else if (strcmp(ptr, @encode(unsigned int)) == 0) + return @"unsigned int"; + else if (strcmp(ptr, @encode(unsigned long)) == 0) + return @"unsigned long"; + else if (strcmp(ptr, @encode(unsigned long long)) == 0) + return @"unsigned long long"; + else if (strcmp(ptr, @encode(float)) == 0) + return @"float"; + else if (strcmp(ptr, @encode(double)) == 0) + return @"double"; + else if (strcmp(ptr, @encode(char*)) == 0) + return @"pointer"; + else if (strcmp(ptr, @encode(SEL)) == 0) + return @"SEL"; + else if (strcmp(ptr, @encode(Class)) == 0) + return @"Class"; + else if (strcmp(ptr, @encode(NSRange)) == 0) + return @"NSRange"; + else if (strcmp(ptr, @encode(NSPoint)) == 0) + return @"NSPoint"; + else if (strcmp(ptr, @encode(NSSize)) == 0) + return @"NSSize"; + else if (strcmp(ptr, @encode(NSRect)) == 0) + return @"NSRect"; + else if (strcmp(ptr, @encode(CGPoint)) == 0) + return @"CGPoint"; + else if (strcmp(ptr, @encode(CGSize)) == 0) + return @"CGSize"; + else if (strcmp(ptr, @encode(CGRect)) == 0) + return @"CGRect"; + else if (strcmp(ptr, @encode(CGAffineTransform)) == 0) + return @"CGAffineTransform"; + else if (strcmp(ptr, @encode(_Bool)) == 0) + return @"boolean"; + else if (*ptr == '{') { + NSMutableString* structName = [NSMutableString string]; + ptr++; + while (isalnum(*ptr) || *ptr == '_') { + [structName appendString:[[[NSString alloc] initWithBytes:ptr length:1 encoding:NSASCIIStringEncoding] autorelease]]; + ptr++; + } + if (*ptr == '=' && ![structName isEqualToString:@""]) + return [@"struct " stringByAppendingString:structName]; + else + return @""; + } + else if (*ptr == '^') { + NSString* pointed = humanReadableFScriptTypeDescriptionFromEncodedObjCType(++ptr); + if ([pointed isEqualToString:@""]) + return @"pointer"; + else + return [@"pointer to " stringByAppendingString:pointed]; } else - j++; - } - [selectedElement release]; // We can now match the retain in (1) - - // If no object is selected in the current matrix, then we "disable" the next matrix - // (which contains a method list), because we won't be able call a method from this matrix. - if ([matrix selectedRow] == -1 && i+1 <= [browser lastColumn]) - [[browser matrixInColumn:i+1] setEnabled:NO]; - } - else - { - [self fillMatrix:matrix withObject:object]; // As a side effect, this will supress the selection - if (selectedRow == 0) - [matrix selectCellAtRow:selectedRow column:0]; // I reinstall the selection - else - if (i+1 <= [browser lastColumn]) - [[browser matrixInColumn:i+1] setEnabled:NO]; - } - } - [[self window] display]; // To display the changes. Is there an other way ? */ -} - -- (id) validSelectedObject -{ - id selectedObject = [self selectedObject]; - - // We test wether the selectedObject object is valid (an invalid proxy will raise when sent -respondsToSelector:) - @try - { - [selectedObject respondsToSelector:@selector(class)]; - } - @catch (id exception) - { - return nil; - } - - return selectedObject; -} - -- (void) workspaceAction:(id)sender -{ - [self browseWorkspace]; -} - -//- (BOOL) isOpaque{return YES;} -@end + return @""; +} + +static NSString* FScriptObjectTemplateForEncodedObjCType(const char* ptr) +{ + while (*ptr == 'r' || *ptr == 'n' || *ptr == 'N' || *ptr == 'o' || *ptr == 'O' || *ptr == 'R' || *ptr == 'V') + ptr++; + if (strcmp(ptr, @encode(SEL)) == 0) + return @"#selector"; + else if (strcmp(ptr, @encode(NSRange)) == 0) + return @"NSValue rangeWithLocation:0 length:0"; + else if (strcmp(ptr, @encode(NSPoint)) == 0) + return @"0<>0"; + else if (strcmp(ptr, @encode(NSSize)) == 0) + return @"NSValue sizeWithWidth:0 height:0"; + else if (strcmp(ptr, @encode(NSRect)) == 0) + return @"0<>0 extent:0<>0"; + else if (strcmp(ptr, @encode(NSEdgeInsets)) == 0) + return @"NSValue edgeInsetsWithTop:0 left:0 bottom:0 right:0"; + else if (strcmp(ptr, @encode(CGPoint)) == 0) + return @"0<>0"; + else if (strcmp(ptr, @encode(CGSize)) == 0) + return @"NSValue sizeWithWidth:0 height:0"; + else if (strcmp(ptr, @encode(CGRect)) == 0) + return @"0<>0 extent:0<>0"; + //else if (strcmp(ptr,@encode(_Bool)) == 0) return @""; + else + return @""; +} diff --git a/FScriptFramework/FSObjectBrowserViewObjectInfo.h b/FScriptFramework/FSObjectBrowserViewObjectInfo.h index 8e99ad1..39879d3 100644 --- a/FScriptFramework/FSObjectBrowserViewObjectInfo.h +++ b/FScriptFramework/FSObjectBrowserViewObjectInfo.h @@ -6,6 +6,14 @@ @interface FSObjectBrowserView (FSObjectBrowserViewObjectInfo) -- (void)fillMatrix:(NSMatrix *)m withObject:(id)object; +- (void)fillMatrix:(NSMatrix*)m column:(NSUInteger)col withObject:(id)object; @end + +@interface FSObjectBrowserViewObjectHelper : NSObject +@property (nonatomic, retain) FSObjectInspectorViewModelItem* rootViewModelItem; ++ (NSArray*)baseClasses; +-(void)introspectPropertiesOfObject:(id)object; +-(void)populateModelWithObject:(id)object; + +@end diff --git a/FScriptFramework/FSObjectBrowserViewObjectInfo.m b/FScriptFramework/FSObjectBrowserViewObjectInfo.m index 868867d..e0ab6ad 100644 --- a/FScriptFramework/FSObjectBrowserViewObjectInfo.m +++ b/FScriptFramework/FSObjectBrowserViewObjectInfo.m @@ -2,16 +2,19 @@ // This software is open source. See the license. #import "FSObjectBrowserViewObjectInfo.h" +#import "FSObjectEnumInfo.h" #import "FSObjectBrowserCell.h" +#import "FSObjectBrowserMatrix.h" #import "FSNamedNumber.h" #import "FSNumber.h" -#import "FSMiscTools.h" +#import "FSMiscTools.h" #import "FSBoolean.h" #import "FSBlock.h" #import "BlockRep.h" #import "FSGenericPointer.h" #import "FSGenericPointerPrivate.h" #import "FSObjectBrowserNamedObjectWrapper.h" +#import "FSObjectInspectorViewModelItem.h" #import "FSNSString.h" #import #import "FSGenericPointerPrivate.h" @@ -35,4330 +38,3351 @@ #import "FSCNDictionary.h" #import "FSAssociation.h" -@interface FSObjectBrowserViewObjectHelper : NSObject -{ - FSObjectBrowserCell *selectedCell; - NSString *selectedClassLabel; - NSString *selectedLabel; - id selectedObject; - NSString *classLabel; - NSMatrix *m; - FSObjectBrowserView *view; - NSMutableArray *baseClasses; -} - -@property (nonatomic, retain) NSMutableArray *baseClasses; - -- (id)initWithObjectBrowserView:(FSObjectBrowserView *)view; -- (void)fillMatrix:(NSMatrix *)m withObject:(id)object; - -- (void)addFSGenericPointer:(id)object; -- (void)addFSObjectPointer:(id)object; -- (void)addNSAffineTransform:(id)object; -- (void)addNSAlert:(id)object; -- (void)addNSAnimation:(id)object; -- (void)addNSAnimationContext:(id)object; -- (void)addNSAttributedString:(id)object; -- (void)addNSBezierPath:(id)object; -- (void)addNSCell:(id)object; -- (void)addNSCollectionViewItem:(id)object; -- (void)addNSComparisonPredicate:(id)object; -- (void)addNSCompoundPredicate:(id)object; -- (void)addNSController:(id)object; -- (void)addNSCursor:(id)object; -- (void)addNSDockTile:(id)object; -- (void)addNSDocument:(id)object; -- (void)addNSDocumentController:(id)object; -- (void)addNSEntityDescription:(id)object; -- (void)addNSEvent:(id)object; -- (void)addNSExpression:(id)object; -- (void)addNSFetchRequest:(id)object; -- (void)addNSFileWrapper:(id)object; -- (void)addNSFont:(id)object; -- (void)addNSFontDescriptor:(id)object; -- (void)addNSFontManager:(id)object; -- (void)addNSGlyphInfo:(id)object; -- (void)addNSGlyphGenerator:(id)object; -- (void)addNSGradient:(id)object; -- (void)addNSGraphicsContext:(id)object; -- (void)addNSImage:(id)object; -- (void)addNSImageRep:(id)object; -- (void)addNSLayoutManager:(id)object; -- (void)addNSManagedObjectContext:(id)object; -- (void)addNSManagedObjectID:(id)object; -- (void)addNSManagedObjectModel:(id)object; -- (void)addNSMenu:(id)object; -- (void)addNSMenuItem:(id)object; -- (void)addNSOpenGLContext:(id)object; -- (void)addNSOpenGLPixelBuffer:(id)object; -- (void)addNSOpenGLPixelFormat:(id)object; -- (void)addNSPageLayout:(id)object; -- (void)addNSParagraphStyle:(id)object; -- (void)addNSPersistentStoreCoordinator:(id)object; -- (void)addNSPredicateEditorRowTemplate:(id)object; -- (void)addNSPropertyDescription:(id)object; -- (void)addNSResponder:(id)object; -- (void)addNSRulerMarker:(id)object; -- (void)addNSScreen:(id)object; -- (void)addNSShadow:(id)object; -- (void)addNSStatusBar:(id)object; -- (void)addNSStatusItem:(id)object; -- (void)addNSTabViewItem:(id)object; -- (void)addNSTableColumn:(id)object; -- (void)addNSTextAttachment:(id)object; -- (void)addNSTextBlock:(id)object; -- (void)addNSTextContainer:(id)object; -- (void)addNSTextList:(id)object; -- (void)addNSTextTab:(id)object; -- (void)addNSToolbar:(id)object; -- (void)addNSToolbarItem:(id)object; -- (void)addNSTrackingArea:(id)object; -- (void)addNSUndoManager:(id)object; -- (void)addNSATSTypesetter:(id)object; - -- (void)processNSView:(id)object; -- (void)processNSControl:(id)object; -- (void)processNSWindow:(id)object; -@end - -static id objectFromAnimationBlockingMode(NSAnimationBlockingMode animationBlockingMode) -{ - switch (animationBlockingMode) - { - case NSAnimationBlocking: return [FSNamedNumber namedNumberWithDouble:animationBlockingMode name:@"NSAnimationBlocking"]; - case NSAnimationNonblocking: return [FSNamedNumber namedNumberWithDouble:animationBlockingMode name:@"NSAnimationNonblocking"]; - case NSAnimationNonblockingThreaded: return [FSNamedNumber namedNumberWithDouble:animationBlockingMode name:@"NSAnimationNonblockingThreaded"]; - default: return [FSNumber numberWithDouble:animationBlockingMode]; - } -} - -static id objectFromAnimationCurve(NSAnimationCurve animationCurve) -{ - switch (animationCurve) - { - case NSAnimationEaseInOut: return [FSNamedNumber namedNumberWithDouble:animationCurve name:@"NSAnimationEaseInOut"]; - case NSAnimationEaseIn: return [FSNamedNumber namedNumberWithDouble:animationCurve name:@"NSAnimationEaseIn"]; - case NSAnimationEaseOut: return [FSNamedNumber namedNumberWithDouble:animationCurve name:@"NSAnimationEaseOut"]; - case NSAnimationLinear: return [FSNamedNumber namedNumberWithDouble:animationCurve name:@"NSAnimationLinear"]; - default: return [FSNumber numberWithDouble:animationCurve]; - } -} - -static id objectFromAlertStyle(NSAlertStyle alertStyle) -{ - switch (alertStyle) - { - case NSWarningAlertStyle: return [FSNamedNumber namedNumberWithDouble:alertStyle name:@"NSWarningAlertStyle"]; - case NSInformationalAlertStyle: return [FSNamedNumber namedNumberWithDouble:alertStyle name:@"NSInformationalAlertStyle"]; - case NSCriticalAlertStyle: return [FSNamedNumber namedNumberWithDouble:alertStyle name:@"NSCriticalAlertStyle"]; - default: return [FSNumber numberWithDouble:alertStyle]; - } -} - -static id objectFromAutoresizingMask(NSUInteger mask) -{ - if (mask & ~(NSViewMinXMargin | NSViewWidthSizable | NSViewMaxXMargin | NSViewMinYMargin | NSViewHeightSizable | NSViewMaxYMargin)) return [FSNumber numberWithDouble:mask]; - else if (mask == 0) return [FSNamedNumber namedNumberWithDouble:NSRegularControlSize name:@"NSViewNotSizable"]; - else - { - NSMutableString *str = [NSMutableString string]; - - if (mask & NSViewMinXMargin) [str appendString:@"NSViewMinXMargin"]; - if (mask & NSViewWidthSizable) [str appendString:[str length] == 0 ? @"NSViewWidthSizable" : @" + NSViewWidthSizable"]; - if (mask & NSViewMaxXMargin) [str appendString:[str length] == 0 ? @"NSViewMaxXMargin" : @" + NSViewMaxXMargin"]; - if (mask & NSViewMinYMargin) [str appendString:[str length] == 0 ? @"NSViewMinYMargin" : @" + NSViewMinYMargin"]; - if (mask & NSViewHeightSizable) [str appendString:[str length] == 0 ? @"NSViewHeightSizable" : @" + NSViewHeightSizable"]; - if (mask & NSViewMaxYMargin) [str appendString:[str length] == 0 ? @"NSViewMaxYMargin" : @" + NSViewMaxYMargin"]; - - return [FSNamedNumber namedNumberWithDouble:mask name:str]; - } -} +#import "metamacrosorig.h" -static id objectFromAttributeType(NSAttributeType attributeType) +NSString* +labelFromPropertyName(NSString* propertyName) { - switch (attributeType) - { - case NSUndefinedAttributeType: return [FSNamedNumber namedNumberWithDouble:attributeType name:@"NSUndefinedAttributeType"]; - case NSInteger16AttributeType: return [FSNamedNumber namedNumberWithDouble:attributeType name:@"NSInteger16AttributeType"]; - case NSInteger32AttributeType: return [FSNamedNumber namedNumberWithDouble:attributeType name:@"NSInteger32AttributeType"]; - case NSInteger64AttributeType: return [FSNamedNumber namedNumberWithDouble:attributeType name:@"NSInteger64AttributeType"]; - case NSDecimalAttributeType: return [FSNamedNumber namedNumberWithDouble:attributeType name:@"NSDecimalAttributeType"]; - case NSDoubleAttributeType: return [FSNamedNumber namedNumberWithDouble:attributeType name:@"NSDoubleAttributeType"]; - case NSFloatAttributeType: return [FSNamedNumber namedNumberWithDouble:attributeType name:@"NSFloatAttributeType"]; - case NSStringAttributeType: return [FSNamedNumber namedNumberWithDouble:attributeType name:@"NSStringAttributeType"]; - case NSBooleanAttributeType: return [FSNamedNumber namedNumberWithDouble:attributeType name:@"NSBooleanAttributeType"]; - case NSDateAttributeType: return [FSNamedNumber namedNumberWithDouble:attributeType name:@"NSDateAttributeType"]; - case NSBinaryDataAttributeType: return [FSNamedNumber namedNumberWithDouble:attributeType name:@"NSBinaryDataAttributeType"]; - case NSTransformableAttributeType: return [FSNamedNumber namedNumberWithDouble:attributeType name:@"NSTransformableAttributeType"]; - default: return [FSNumber numberWithDouble:attributeType]; - } + NSMutableString* formLabel = [ NSMutableString string ]; + NSScanner* scanner = [ NSScanner scannerWithString: propertyName ]; + + BOOL first = YES; + NSString* item = nil; + NSString* upperCase = @""; + + while ( ![ scanner isAtEnd ] && [ scanner scanUpToCharactersFromSet: [ NSCharacterSet uppercaseLetterCharacterSet ] intoString: &item ] ) { + if ( !first ) { + [ formLabel appendFormat: @" %@%@", upperCase, item ]; + } + else { + [ formLabel appendFormat: @"%@%@", [ [item substringToIndex:1] uppercaseString ], (item.length>1?[ item substringFromIndex:1]:@"") ]; + first = NO; + } + + [ scanner scanCharactersFromSet: [ NSCharacterSet uppercaseLetterCharacterSet ] intoString: &upperCase ]; + } + + if ( ![ scanner isAtEnd ] ) { + [ formLabel appendFormat: @" %@", [ [ scanner string ] substringFromIndex: [ scanner scanLocation ] ] ]; + } + + return formLabel; } -static id objectFromBackgroundStyle(NSBackgroundStyle backgroundStyle) -{ - switch (backgroundStyle) - { - case NSBackgroundStyleLight: return [FSNamedNumber namedNumberWithDouble:backgroundStyle name:@"NSBackgroundStyleLight"]; - case NSBackgroundStyleDark: return [FSNamedNumber namedNumberWithDouble:backgroundStyle name:@"NSBackgroundStyleDark"]; - case NSBackgroundStyleRaised: return [FSNamedNumber namedNumberWithDouble:backgroundStyle name:@"NSBackgroundStyleRaised"]; - case NSBackgroundStyleLowered: return [FSNamedNumber namedNumberWithDouble:backgroundStyle name:@"NSBackgroundStyleLowered"]; - default: return [FSNumber numberWithDouble:backgroundStyle]; - } -} -static id objectFromBackingStoreType(NSBackingStoreType backingStoreType) -{ - switch (backingStoreType) - { - case NSBackingStoreBuffered: return [FSNamedNumber namedNumberWithDouble:backingStoreType name:@"NSBackingStoreBuffered"]; - case NSBackingStoreRetained: return [FSNamedNumber namedNumberWithDouble:backingStoreType name:@"NSBackingStoreRetained"]; - case NSBackingStoreNonretained: return [FSNamedNumber namedNumberWithDouble:backingStoreType name:@"NSBackingStoreNonretained"]; - default: return [FSNumber numberWithDouble:backingStoreType]; - } -} +@interface FSObjectBrowserViewObjectHelper () -static id objectFromBorderType(NSBorderType borderType) -{ - switch (borderType) - { - case NSNoBorder: return [FSNamedNumber namedNumberWithDouble:borderType name:@"NSNoBorder"]; - case NSLineBorder: return [FSNamedNumber namedNumberWithDouble:borderType name:@"NSLineBorder"]; - case NSBezelBorder: return [FSNamedNumber namedNumberWithDouble:borderType name:@"NSBezelBorder"]; - case NSGrooveBorder: return [FSNamedNumber namedNumberWithDouble:borderType name:@"NSGrooveBorder"]; - default: return [FSNumber numberWithDouble:borderType]; - } -} +@property (nonatomic, assign) FSObjectInspectorViewModelItem* currentViewModelItem; -static id objectFromBezelStyle(NSBezelStyle bezelStyle) -{ - switch (bezelStyle) - { - case NSRoundedBezelStyle: return [FSNamedNumber namedNumberWithDouble:bezelStyle name:@"NSRoundedBezelStyle"]; - case NSRegularSquareBezelStyle: return [FSNamedNumber namedNumberWithDouble:bezelStyle name:@"NSRegularSquareBezelStyle"]; - case NSThickSquareBezelStyle: return [FSNamedNumber namedNumberWithDouble:bezelStyle name:@"NSThickSquareBezelStyle"]; - case NSThickerSquareBezelStyle: return [FSNamedNumber namedNumberWithDouble:bezelStyle name:@"NSThickerSquareBezelStyle"]; - case NSDisclosureBezelStyle: return [FSNamedNumber namedNumberWithDouble:bezelStyle name:@"NSDisclosureBezelStyle"]; - case NSShadowlessSquareBezelStyle: return [FSNamedNumber namedNumberWithDouble:bezelStyle name:@"NSShadowlessSquareBezelStyle"]; - case NSCircularBezelStyle: return [FSNamedNumber namedNumberWithDouble:bezelStyle name:@"NSCircularBezelStyle"]; - case NSTexturedSquareBezelStyle: return [FSNamedNumber namedNumberWithDouble:bezelStyle name:@"NSTexturedSquareBezelStyle"]; - case NSHelpButtonBezelStyle: return [FSNamedNumber namedNumberWithDouble:bezelStyle name:@"NSHelpButtonBezelStyle"]; - case NSSmallSquareBezelStyle: return [FSNamedNumber namedNumberWithDouble:bezelStyle name:@"NSSmallSquareBezelStyle"]; - case NSTexturedRoundedBezelStyle: return [FSNamedNumber namedNumberWithDouble:bezelStyle name:@"NSTexturedRoundedBezelStyle"]; - default: return [FSNumber numberWithDouble:bezelStyle]; - } -} +- (id)initWithObjectBrowserView:(FSObjectBrowserView*)view; +- (void)fillMatrix:(NSMatrix*)m withObject:(id)object; +@end -static id objectFromBitmapFormat(NSBitmapFormat mask) -{ - if (mask == 0 || (mask & ~(NSAlphaFirstBitmapFormat | NSAlphaNonpremultipliedBitmapFormat | NSFloatingPointSamplesBitmapFormat))) return [FSNumber numberWithDouble:mask]; - else - { - NSMutableString *str = [NSMutableString string]; - - if (mask & NSAlphaFirstBitmapFormat) [str appendString:@"NSAlphaFirstBitmapFormat"]; - if (mask & NSAlphaNonpremultipliedBitmapFormat) [str appendString:[str length] == 0 ? @"NSAlphaNonpremultipliedBitmapFormat" : @" + NSAlphaNonpremultipliedBitmapFormat"]; - if (mask & NSFloatingPointSamplesBitmapFormat) [str appendString:[str length] == 0 ? @"NSFloatingPointSamplesBitmapFormat" : @" + NSFloatingPointSamplesBitmapFormat"]; - return [FSNamedNumber namedNumberWithDouble:mask name:str]; - } -} -static id objectFromBoxType(NSBoxType boxType) -{ - switch (boxType) - { - case NSBoxPrimary: return [FSNamedNumber namedNumberWithDouble:boxType name:@"NSBoxPrimary"]; - case NSBoxSecondary: return [FSNamedNumber namedNumberWithDouble:boxType name:@"NSBoxSecondary"]; - case NSBoxSeparator: return [FSNamedNumber namedNumberWithDouble:boxType name:@"NSBoxSeparator"]; - case NSBoxOldStyle: return [FSNamedNumber namedNumberWithDouble:boxType name:@"NSBoxOldStyle"]; - case NSBoxCustom: return [FSNamedNumber namedNumberWithDouble:boxType name:@"NSBoxCustom"]; - default: return [FSNumber numberWithDouble:boxType]; - } -} - -static id objectFromButtonMask(NSUInteger mask) -{ - if (mask == 0 || (mask & ~(NSPenTipMask | NSPenLowerSideMask | NSPenUpperSideMask))) return [FSNumber numberWithDouble:mask]; - else - { - NSMutableString *str = [NSMutableString string]; - - if (mask & NSPenTipMask) [str appendString:@"NSPenTipMask"]; - if (mask & NSPenLowerSideMask) [str appendString:[str length] == 0 ? @"NSPenLowerSideMask" : @" + NSPenLowerSideMask"]; - if (mask & NSPenUpperSideMask) [str appendString:[str length] == 0 ? @"NSPenUpperSideMask" : @" + NSPenUpperSideMask"]; - return [FSNamedNumber namedNumberWithDouble:mask name:str]; - } -} +@implementation FSObjectBrowserView (FSObjectBrowserViewObjectInfo) -static id objectFromBrowserColumnResizingType(NSBrowserColumnResizingType browserColumnResizingType) -{ - switch (browserColumnResizingType) - { - case NSBrowserNoColumnResizing: return [FSNamedNumber namedNumberWithDouble:browserColumnResizingType name:@"NSBrowserNoColumnResizing"]; - case NSBrowserAutoColumnResizing: return [FSNamedNumber namedNumberWithDouble:browserColumnResizingType name:@"NSBrowserAutoColumnResizing"]; - case NSBrowserUserColumnResizing: return [FSNamedNumber namedNumberWithDouble:browserColumnResizingType name:@"NSBrowserUserColumnResizing"]; - default: return [FSNumber numberWithDouble:browserColumnResizingType]; - } -} -/*static id objectFromButtonType(NSButtonType buttonType) +- (void)fillMatrix:(NSMatrix*)m column:(NSUInteger)col withObject:(id)object { - switch (buttonType) - { - case NSMomentaryLight: return [NamedNumber namedNumberWithDouble:buttonType name:@"NSMomentaryLight"]; - case NSMomentaryPushButton: return [NamedNumber namedNumberWithDouble:buttonType name:@"NSMomentaryPushButton"]; - case NSMomentaryChangeButton: return [NamedNumber namedNumberWithDouble:buttonType name:@"NSMomentaryChangeButton"]; - case NSPushOnPushOffButton: return [NamedNumber namedNumberWithDouble:buttonType name:@"NSPushOnPushOffButton"]; - case NSOnOffButton: return [NamedNumber namedNumberWithDouble:buttonType name:@"NSOnOffButton"]; - case NSToggleButton: return [NamedNumber namedNumberWithDouble:buttonType name:@"NSToggleButton"]; - case NSSwitchButton: return [NamedNumber namedNumberWithDouble:buttonType name:@"NSSwitchButton"]; - case NSRadioButton: return [NamedNumber namedNumberWithDouble:buttonType name:@"NSRadioButton"]; - default: return [Number numberWithDouble:buttonType]; - } -}*/ - -static id objectFromCellImagePosition(NSInteger cellImagePosition) -{ - switch (cellImagePosition) - { - case NSNoImage: return [FSNamedNumber namedNumberWithDouble:cellImagePosition name:@"NSNoImage"]; - case NSImageOnly: return [FSNamedNumber namedNumberWithDouble:cellImagePosition name:@"NSImageOnly"]; - case NSImageLeft: return [FSNamedNumber namedNumberWithDouble:cellImagePosition name:@"NSImageLeft"]; - case NSImageRight: return [FSNamedNumber namedNumberWithDouble:cellImagePosition name:@"NSImageRight"]; - case NSImageBelow: return [FSNamedNumber namedNumberWithDouble:cellImagePosition name:@"NSImageBelow"]; - case NSImageAbove: return [FSNamedNumber namedNumberWithDouble:cellImagePosition name:@"NSImageAbove"]; - case NSImageOverlaps: return [FSNamedNumber namedNumberWithDouble:cellImagePosition name:@"NSImageOverlaps"]; - default: return [FSNumber numberWithDouble:cellImagePosition]; - } -} + FSObjectBrowserViewObjectHelper* objectHelper = [[FSObjectBrowserViewObjectHelper alloc] initWithObjectBrowserView:self]; + [objectHelper fillMatrix:m withObject:object]; -static id objectFromCellMask(NSUInteger mask) -{ - if (mask & ~(NSContentsCellMask | NSPushInCellMask | NSPushInCellMask | NSChangeGrayCellMask | NSChangeBackgroundCellMask)) return [FSNumber numberWithDouble:mask]; - else if (mask == 0) return [FSNamedNumber namedNumberWithDouble:mask name:@"NSNoCellMask"]; - else - { - NSMutableString *str = [NSMutableString string]; - if (mask & NSContentsCellMask) [str appendString:@"NSContentsCellMask"]; - if (mask & NSPushInCellMask) [str appendString:[str length] == 0 ? @"NSPushInCellMask" : @" + NSPushInCellMask"]; - if (mask & NSChangeGrayCellMask) [str appendString:[str length] == 0 ? @"NSChangeGrayCellMask" : @" + NSChangeGrayCellMask"]; - if (mask & NSChangeBackgroundCellMask) [str appendString:[str length] == 0 ? @"NSChangeBackgroundCellMask" : @" + NSChangeBackgroundCellMask"]; - return [FSNamedNumber namedNumberWithDouble:mask name:str]; - } -} + [self addBlankRowToMatrix:m]; + [self fillMatrix:m withMethodsForObject:object]; -static id objectFromCellStateValue(NSCellStateValue cellStateValue) -{ - switch (cellStateValue) - { - case NSMixedState: return [FSNamedNumber namedNumberWithDouble:cellStateValue name:@"NSMixedState"]; - case NSOffState: return [FSNamedNumber namedNumberWithDouble:cellStateValue name:@"NSOffState"]; - case NSOnState: return [FSNamedNumber namedNumberWithDouble:cellStateValue name:@"NSOnState"]; - default: return [FSNumber numberWithDouble:cellStateValue]; - } -} + [m sizeToCells]; + //[m scrollCellToVisibleAtRow:[matrix selectedRow] column:0]; + [m setNeedsDisplay]; -static id objectFromCellType(NSCellType cellType) -{ - switch (cellType) - { - case NSNullCellType: return [FSNamedNumber namedNumberWithDouble:cellType name:@"NSNullCellType"]; - case NSTextCellType: return [FSNamedNumber namedNumberWithDouble:cellType name:@"NSTextCellType"]; - case NSImageCellType: return [FSNamedNumber namedNumberWithDouble:cellType name:@"NSImageCellType"]; - default: return [FSNumber numberWithDouble:cellType]; - } + [objectHelper release]; } -static id objectFromCharacterCollection(NSCharacterCollection characterCollection) -{ - switch (characterCollection) - { - case NSIdentityMappingCharacterCollection: return [FSNamedNumber namedNumberWithDouble:characterCollection name:@"NSIdentityMappingCharacterCollection"]; - case NSAdobeCNS1CharacterCollection: return [FSNamedNumber namedNumberWithDouble:characterCollection name:@"NSAdobeCNS1CharacterCollection"]; - case NSAdobeGB1CharacterCollection: return [FSNamedNumber namedNumberWithDouble:characterCollection name:@"NSAdobeGB1CharacterCollection"]; - case NSAdobeJapan1CharacterCollection: return [FSNamedNumber namedNumberWithDouble:characterCollection name:@"NSAdobeJapan1CharacterCollection"]; - case NSAdobeJapan2CharacterCollection: return [FSNamedNumber namedNumberWithDouble:characterCollection name:@"NSAdobeJapan2CharacterCollection"]; - case NSAdobeKorea1CharacterCollection: return [FSNamedNumber namedNumberWithDouble:characterCollection name:@"NSAdobeKorea1CharacterCollection"]; - default: return [FSNumber numberWithDouble:characterCollection]; - } -} +@end -static id objectFromColorPanelMode(NSInteger colorPanelMode) -{ - switch (colorPanelMode) - { - case NSGrayModeColorPanel: return [FSNamedNumber namedNumberWithDouble:colorPanelMode name:@"NSGrayModeColorPanel"]; - case NSRGBModeColorPanel: return [FSNamedNumber namedNumberWithDouble:colorPanelMode name:@"NSRGBModeColorPanel"]; - case NSCMYKModeColorPanel: return [FSNamedNumber namedNumberWithDouble:colorPanelMode name:@"NSCMYKModeColorPanel"]; - case NSHSBModeColorPanel: return [FSNamedNumber namedNumberWithDouble:colorPanelMode name:@"NSHSBModeColorPanel"]; - case NSCustomPaletteModeColorPanel: return [FSNamedNumber namedNumberWithDouble:colorPanelMode name:@"NSCustomPaletteModeColorPanel"]; - case NSColorListModeColorPanel: return [FSNamedNumber namedNumberWithDouble:colorPanelMode name:@"NSColorListModeColorPanel"]; - case NSWheelModeColorPanel: return [FSNamedNumber namedNumberWithDouble:colorPanelMode name:@"NSWheelModeColorPanel"]; - case NSCrayonModeColorPanel: return [FSNamedNumber namedNumberWithDouble:colorPanelMode name:@"NSCrayonModeColorPanel"]; - default: return [FSNumber numberWithDouble:colorPanelMode]; - } -} -static id objectFromColorRenderingIntent(NSColorRenderingIntent colorRenderingIntent) -{ - switch (colorRenderingIntent) - { - case NSColorRenderingIntentDefault: return [FSNamedNumber namedNumberWithDouble:colorRenderingIntent name:@"NSColorRenderingIntentDefault"]; - case NSColorRenderingIntentAbsoluteColorimetric: return [FSNamedNumber namedNumberWithDouble:colorRenderingIntent name:@"NSColorRenderingIntentAbsoluteColorimetric"]; - case NSColorRenderingIntentRelativeColorimetric: return [FSNamedNumber namedNumberWithDouble:colorRenderingIntent name:@"NSColorRenderingIntentRelativeColorimetric"]; - case NSColorRenderingIntentPerceptual: return [FSNamedNumber namedNumberWithDouble:colorRenderingIntent name:@"NSColorRenderingIntentPerceptual"]; - case NSColorRenderingIntentSaturation: return [FSNamedNumber namedNumberWithDouble:colorRenderingIntent name:@"NSColorRenderingIntentSaturation"]; - default: return [FSNumber numberWithDouble:colorRenderingIntent]; - } +@implementation FSObjectBrowserViewObjectHelper { + FSObjectBrowserCell* selectedCell; + NSString* selectedClassLabel; + NSString* selectedLabel; + id selectedObject; + NSString* classLabel; + NSMatrix* m; + FSObjectBrowserView* view; } -static id objectFromComparisonPredicateOptions(NSUInteger mask) +- (id)init { - if (mask == 0 || (mask & ~(NSCaseInsensitivePredicateOption | NSDiacriticInsensitivePredicateOption))) return [FSNumber numberWithDouble:mask]; - else - { - NSMutableString *str = [NSMutableString string]; - if (mask & NSCaseInsensitivePredicateOption) [str appendString:@"NSCaseInsensitivePredicateOption"]; - if (mask & NSDiacriticInsensitivePredicateOption) [str appendString:[str length] == 0 ? @"NSDiacriticInsensitivePredicateOption" : @" + NSDiacriticInsensitivePredicateOption"]; - return [FSNamedNumber namedNumberWithDouble:mask name:str]; - } + return [self initWithObjectBrowserView:nil]; } -static id objectFromComparisonPredicateModifier(NSComparisonPredicateModifier comparisonPredicateModifier) +- (id)initWithObjectBrowserView:(FSObjectBrowserView*)theView { - switch (comparisonPredicateModifier) - { - case NSDirectPredicateModifier: return [FSNamedNumber namedNumberWithDouble:comparisonPredicateModifier name:@"NSDirectPredicateModifier"]; - case NSAllPredicateModifier: return [FSNamedNumber namedNumberWithDouble:comparisonPredicateModifier name:@"NSAllPredicateModifier"]; - case NSAnyPredicateModifier: return [FSNamedNumber namedNumberWithDouble:comparisonPredicateModifier name:@"NSAnyPredicateModifier"]; - default: return [FSNumber numberWithDouble:comparisonPredicateModifier]; - } -} + self = [super init]; + if (self) { -static id objectFromCompositingOperation(NSCompositingOperation compositingOperation) -{ - switch (compositingOperation) - { - case NSCompositeClear: return [FSNamedNumber namedNumberWithDouble:compositingOperation name:@"NSCompositeClear"]; - case NSCompositeCopy: return [FSNamedNumber namedNumberWithDouble:compositingOperation name:@"NSCompositeCopy"]; - case NSCompositeSourceOver: return [FSNamedNumber namedNumberWithDouble:compositingOperation name:@"NSCompositeSourceOver"]; - case NSCompositeSourceIn: return [FSNamedNumber namedNumberWithDouble:compositingOperation name:@"NSCompositeSourceIn"]; - case NSCompositeSourceOut: return [FSNamedNumber namedNumberWithDouble:compositingOperation name:@"NSCompositeSourceOut"]; - case NSCompositeSourceAtop: return [FSNamedNumber namedNumberWithDouble:compositingOperation name:@"NSCompositeSourceAtop"]; - case NSCompositeDestinationOver: return [FSNamedNumber namedNumberWithDouble:compositingOperation name:@"NSCompositeDestinationOver"]; - case NSCompositeDestinationIn: return [FSNamedNumber namedNumberWithDouble:compositingOperation name:@"NSCompositeDestinationIn"]; - case NSCompositeDestinationOut: return [FSNamedNumber namedNumberWithDouble:compositingOperation name:@"NSCompositeDestinationOut"]; - case NSCompositeDestinationAtop: return [FSNamedNumber namedNumberWithDouble:compositingOperation name:@"NSCompositeDestinationAtop"]; - case NSCompositeXOR: return [FSNamedNumber namedNumberWithDouble:compositingOperation name:@"NSCompositeXOR"]; - case NSCompositePlusDarker: return [FSNamedNumber namedNumberWithDouble:compositingOperation name:@"NSCompositePlusDarker"]; - case NSCompositeHighlight: return [FSNamedNumber namedNumberWithDouble:compositingOperation name:@"NSCompositeHighlight"]; - case NSCompositePlusLighter: return [FSNamedNumber namedNumberWithDouble:compositingOperation name:@"NSCompositePlusLighter"]; - default: return [FSNumber numberWithDouble:compositingOperation]; - } -} + view = [[theView retain] autorelease]; + } -static id objectFromCompoundPredicateType(NSCompoundPredicateType compoundPredicateType) -{ - switch (compoundPredicateType) - { - case NSNotPredicateType: return [FSNamedNumber namedNumberWithDouble:compoundPredicateType name:@"NSNotPredicateType"]; - case NSAndPredicateType: return [FSNamedNumber namedNumberWithDouble:compoundPredicateType name:@"NSAndPredicateType"]; - case NSOrPredicateType: return [FSNamedNumber namedNumberWithDouble:compoundPredicateType name:@"NSOrPredicateType"]; - default: return [FSNumber numberWithDouble:compoundPredicateType]; - } + return self; } -static id objectFromControlSize(NSControlSize controlSize) +- (void)dealloc { - switch (controlSize) - { - case NSRegularControlSize: return [FSNamedNumber namedNumberWithDouble:controlSize name:@"NSRegularControlSize"]; - case NSSmallControlSize: return [FSNamedNumber namedNumberWithDouble:controlSize name:@"NSSmallControlSize"]; - case NSMiniControlSize: return [FSNamedNumber namedNumberWithDouble:controlSize name:@"NSMiniControlSize"]; - default: return [FSNumber numberWithDouble:controlSize]; - } + [_rootViewModelItem release]; + [super dealloc]; +} +- (void)addClassLabel:(NSString*)cLabel toMatrix:(NSMatrix*)matrix +{ + [view addClassLabel:cLabel toMatrix:matrix]; + FSObjectInspectorViewModelItem* item = [[FSObjectInspectorViewModelItem new] autorelease]; + item.valueType = FS_ITEM_HEADER; + item.name = cLabel; + [self.rootViewModelItem.mutableChildNodes addObject:item]; + self.currentViewModelItem = item; +} + +- (void)addObject:(id)object valueType:(FSInspectorVMValueType)valueType getter:(FSGetterBlock)getter setter:(FSSetterBlock)setter withLabel:(NSString*)label enumBiDict:(NSMutableDictionary*)enumBiDict mask:(NSUInteger)mask valueClass:(Class)valueClass notNil:(BOOL)notNil +{ + @try { + if (!notNil || object) { + if (view) { + [view addObject:object withLabel:label toMatrix:m classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; + } + } + if (self.rootViewModelItem && valueType != FS_ITEM_OBJECT || valueClass) { + FSObjectInspectorViewModelItem* item = [[FSObjectInspectorViewModelItem new] autorelease]; + item.name = label; + item.valueType = valueType; + item.value = object; + item.enumBiDict = enumBiDict; + item.getter = getter; + item.setter = setter; + item.optsMask = mask; + item.valueClass = valueClass ?: [object class]; + [self.currentViewModelItem.mutableChildNodes addObject:item]; + } + } + @catch (id exception) + { + NSLog(@"%@", exception); + } } - -static id objectFromControlTint(NSControlTint controlTint) +- (void)addObject:(id)object valueType:(FSInspectorVMValueType)valueType getter:(FSGetterBlock)getter setter:(FSSetterBlock)setter withLabel:(NSString*)label notNil:(BOOL)notNil { - switch (controlTint) - { - case NSDefaultControlTint: return [FSNamedNumber namedNumberWithDouble:controlTint name:@"NSDefaultControlTint"]; - case NSBlueControlTint: return [FSNamedNumber namedNumberWithDouble:controlTint name:@"NSBlueControlTint"]; - case NSGraphiteControlTint: return [FSNamedNumber namedNumberWithDouble:controlTint name:@"NSGraphiteControlTint"]; - case NSClearControlTint: return [FSNamedNumber namedNumberWithDouble:controlTint name:@"NSClearControlTint"]; - default: return [FSNumber numberWithDouble:controlTint]; - } + [self addObject:object valueType:valueType getter:getter setter:setter withLabel:label enumBiDict:nil mask:0 valueClass:nil notNil:notNil]; } - -static id objectFromDatePickerElementFlags(NSUInteger mask) +- (void)addObject:(id)object valueType:(FSInspectorVMValueType)valueType withLabel:(NSString*)label notNil:(BOOL)notNil { - if (mask == 0 || (mask & ~(NSHourMinuteDatePickerElementFlag | NSHourMinuteSecondDatePickerElementFlag | NSTimeZoneDatePickerElementFlag | NSYearMonthDatePickerElementFlag | NSYearMonthDayDatePickerElementFlag | NSEraDatePickerElementFlag))) return [FSNumber numberWithDouble:mask]; - else - { - NSMutableString *str = [NSMutableString string]; - - if (mask & NSEraDatePickerElementFlag) [str appendString:@"NSEraDatePickerElementFlag"]; - - if (mask & NSYearMonthDayDatePickerElementFlag) [str appendString:[str length] == 0 ? @"NSYearMonthDayDatePickerElementFlag" : @" + NSYearMonthDayDatePickerElementFlag"]; - else if (mask & NSYearMonthDatePickerElementFlag) [str appendString:[str length] == 0 ? @"NSYearMonthDatePickerElementFlag" : @" + NSYearMonthDatePickerElementFlag"]; - - if (mask & NSTimeZoneDatePickerElementFlag) [str appendString:[str length] == 0 ? @"NSTimeZoneDatePickerElementFlag" : @" + NSTimeZoneDatePickerElementFlag"]; - - if (mask & NSHourMinuteSecondDatePickerElementFlag) [str appendString:[str length] == 0 ? @"NSHourMinuteSecondDatePickerElementFlag" : @" + NSHourMinuteSecondDatePickerElementFlag"]; - else if (mask & NSHourMinuteDatePickerElementFlag) [str appendString:[str length] == 0 ? @"NSHourMinuteDatePickerElementFlag" : @" + NSHourMinuteDatePickerElementFlag"]; - - return [FSNamedNumber namedNumberWithDouble:mask name:str]; - } + [self addObject:object valueType:valueType getter:nil setter:nil withLabel:label enumBiDict:nil mask:0 valueClass:(Class)nil notNil:notNil]; } - -static id objectFromDatePickerMode(NSDatePickerMode datePickerMode) +- (void)addObject:(id)object valueType:(FSInspectorVMValueType)valueType getter:(FSGetterBlock)getter setter:(FSSetterBlock)setter withLabel:(NSString*)label { - switch (datePickerMode) - { - case NSSingleDateMode: return [FSNamedNumber namedNumberWithDouble:datePickerMode name:@"NSSingleDateMode"]; - case NSRangeDateMode: return [FSNamedNumber namedNumberWithDouble:datePickerMode name:@"NSRangeDateMode"]; - default: return [FSNumber numberWithDouble:datePickerMode]; - } + [self addObject:object valueType:valueType getter:getter setter:setter withLabel:label enumBiDict:nil mask:0 valueClass:nil notNil:NO]; } -static id objectFromDatePickerStyle(NSDatePickerStyle datePickerStyle) +- (void)addGroup:(NSString*)groupName { - switch (datePickerStyle) - { - case NSTextFieldAndStepperDatePickerStyle: return [FSNamedNumber namedNumberWithDouble:datePickerStyle name:@"NSTextFieldAndStepperDatePickerStyle"]; - case NSClockAndCalendarDatePickerStyle: return [FSNamedNumber namedNumberWithDouble:datePickerStyle name:@"NSClockAndCalendarDatePickerStyle"]; - default: return [FSNumber numberWithDouble:datePickerStyle]; - } + FSObjectInspectorViewModelItem* item = [[FSObjectInspectorViewModelItem new] autorelease]; + item.name = groupName; + item.valueType = FS_ITEM_GROUP; + [self.currentViewModelItem.mutableChildNodes addObject:item]; + self.currentViewModelItem = item; } -static id objectFromDeleteRule(NSDeleteRule deleteRule) +- (void)endGroup { - switch (deleteRule) - { - case NSNoActionDeleteRule: return [FSNamedNumber namedNumberWithDouble:deleteRule name:@"NSNoActionDeleteRule"]; - case NSNullifyDeleteRule: return [FSNamedNumber namedNumberWithDouble:deleteRule name:@"NSNullifyDeleteRule"]; - case NSCascadeDeleteRule: return [FSNamedNumber namedNumberWithDouble:deleteRule name:@"NSCascadeDeleteRule"]; - case NSDenyDeleteRule: return [FSNamedNumber namedNumberWithDouble:deleteRule name:@"NSDenyDeleteRule"]; - default: return [FSNumber numberWithDouble:deleteRule]; - } + self.currentViewModelItem = (FSObjectInspectorViewModelItem*)self.currentViewModelItem.parentNode; } -static id objectFromDrawerState(NSDrawerState drawerState) -{ - switch (drawerState) - { - case NSDrawerClosedState: return [FSNamedNumber namedNumberWithDouble:drawerState name:@"NSDrawerClosedState"]; - case NSDrawerOpeningState: return [FSNamedNumber namedNumberWithDouble:drawerState name:@"NSDrawerOpeningState"]; - case NSDrawerOpenState: return [FSNamedNumber namedNumberWithDouble:drawerState name:@"NSDrawerOpenState"]; - case NSDrawerClosingState: return [FSNamedNumber namedNumberWithDouble:drawerState name:@"NSDrawerClosingState"]; - default: return [FSNumber numberWithDouble:drawerState]; - } -} +#define START_GROUP(GROUP) [self addGroup:(@ #GROUP)]; +#define END_GROUP(GROUP) [self endGroup]; -static id objectFromEventType(NSEventType eventType) -{ - switch (eventType) - { - case NSLeftMouseDown: return [FSNamedNumber namedNumberWithDouble:eventType name:@"NSLeftMouseDown"]; - case NSLeftMouseUp: return [FSNamedNumber namedNumberWithDouble:eventType name:@"NSLeftMouseUp"]; - case NSRightMouseDown: return [FSNamedNumber namedNumberWithDouble:eventType name:@"NSRightMouseDown"]; - case NSRightMouseUp: return [FSNamedNumber namedNumberWithDouble:eventType name:@"NSRightMouseUp"]; - case NSOtherMouseDown: return [FSNamedNumber namedNumberWithDouble:eventType name:@"NSOtherMouseDown"]; - case NSOtherMouseUp: return [FSNamedNumber namedNumberWithDouble:eventType name:@"NSOtherMouseUp"]; - case NSMouseMoved: return [FSNamedNumber namedNumberWithDouble:eventType name:@"NSMouseMoved"]; - case NSLeftMouseDragged: return [FSNamedNumber namedNumberWithDouble:eventType name:@"NSLeftMouseDragged"]; - case NSRightMouseDragged: return [FSNamedNumber namedNumberWithDouble:eventType name:@"NSRightMouseDragged"]; - case NSOtherMouseDragged: return [FSNamedNumber namedNumberWithDouble:eventType name:@"NSOtherMouseDragged"]; - case NSMouseEntered: return [FSNamedNumber namedNumberWithDouble:eventType name:@"NSMouseEntered"]; - case NSMouseExited: return [FSNamedNumber namedNumberWithDouble:eventType name:@"NSMouseExited"]; - case NSCursorUpdate: return [FSNamedNumber namedNumberWithDouble:eventType name:@"NSCursorUpdate"]; - case NSKeyDown: return [FSNamedNumber namedNumberWithDouble:eventType name:@"NSKeyDown"]; - case NSKeyUp: return [FSNamedNumber namedNumberWithDouble:eventType name:@"NSKeyUp"]; - case NSFlagsChanged: return [FSNamedNumber namedNumberWithDouble:eventType name:@"NSFlagsChanged"]; - case NSAppKitDefined: return [FSNamedNumber namedNumberWithDouble:eventType name:@"NSAppKitDefined"]; - case NSSystemDefined: return [FSNamedNumber namedNumberWithDouble:eventType name:@"NSSystemDefined"]; - case NSApplicationDefined: return [FSNamedNumber namedNumberWithDouble:eventType name:@"NSApplicationDefined"]; - case NSPeriodic: return [FSNamedNumber namedNumberWithDouble:eventType name:@"NSPeriodic"]; - case NSScrollWheel: return [FSNamedNumber namedNumberWithDouble:eventType name:@"NSScrollWheel"]; - case NSTabletPoint: return [FSNamedNumber namedNumberWithDouble:eventType name:@"NSTabletPoint"]; - case NSTabletProximity: return [FSNamedNumber namedNumberWithDouble:eventType name:@"NSTabletProximity"]; - default: return [FSNumber numberWithDouble:eventType]; - } -} +#define ADD_VALUE(OBJECT, VALUE_TYPE, PROPERTY, BIDICT, MASK, VALUE_CLASS, LABEL, NOT_NIL) \ + @try { \ + if (#PROPERTY[0] != '-') { \ + [self addObject:(OBJECT)valueType:VALUE_TYPE getter:^(id obj, FSObjectInspectorViewModelItem* item) { return [obj valueForKey:@ #PROPERTY]; } setter:^(id obj, id newVal, FSObjectInspectorViewModelItem* item) { [obj setValue:newVal forKey:@ #PROPERTY]; } withLabel:(LABEL)enumBiDict:BIDICT mask:MASK valueClass:VALUE_CLASS notNil:NOT_NIL]; \ + } \ + else { \ + [self addObject:(OBJECT)valueType:VALUE_TYPE getter:^(id obj, FSObjectInspectorViewModelItem* item) { return [obj valueForKey:@ #PROPERTY]; } setter:nil withLabel:(LABEL)enumBiDict:BIDICT mask:MASK valueClass:VALUE_CLASS notNil:NOT_NIL]; \ + } \ + } \ + @catch (id exception) { NSLog(@"%@", exception); } -static id objectFromEventSubtype(short eventSubtype) -{ - switch (eventSubtype) - { - case NSMouseEventSubtype: return [FSNamedNumber namedNumberWithDouble:eventSubtype name:@"NSMouseEventSubtype"]; - case NSTabletPointEventSubtype: return [FSNamedNumber namedNumberWithDouble:eventSubtype name:@"NSTabletPointEventSubtype"]; - case NSTabletProximityEventSubtype: return [FSNamedNumber namedNumberWithDouble:eventSubtype name:@"NSTabletProximityEventSubtype"]; - default: return [FSNumber numberWithDouble:eventSubtype]; - } -} - -static id objectFromExpressionType(NSExpressionType expressionType) -{ - switch (expressionType) - { - case NSConstantValueExpressionType: return [FSNamedNumber namedNumberWithDouble:expressionType name:@"NSConstantValueExpressionType"]; - case NSEvaluatedObjectExpressionType: return [FSNamedNumber namedNumberWithDouble:expressionType name:@"NSEvaluatedObjectExpressionType"]; - case NSVariableExpressionType: return [FSNamedNumber namedNumberWithDouble:expressionType name:@"NSVariableExpressionType"]; - case NSKeyPathExpressionType: return [FSNamedNumber namedNumberWithDouble:expressionType name:@"NSKeyPathExpressionType"]; - case NSFunctionExpressionType: return [FSNamedNumber namedNumberWithDouble:expressionType name:@"NSFunctionExpressionType"]; - case NSUnionSetExpressionType: return [FSNamedNumber namedNumberWithDouble:expressionType name:@"NSUnionSetExpressionType"]; - case NSIntersectSetExpressionType: return [FSNamedNumber namedNumberWithDouble:expressionType name:@"NSIntersectSetExpressionType"]; - case NSMinusSetExpressionType: return [FSNamedNumber namedNumberWithDouble:expressionType name:@"NSMinusSetExpressionType"]; - case NSSubqueryExpressionType: return [FSNamedNumber namedNumberWithDouble:expressionType name:@"NSSubqueryExpressionType"]; - case NSAggregateExpressionType: return [FSNamedNumber namedNumberWithDouble:expressionType name:@"NSAggregateExpressionType"]; - default: return [FSNumber numberWithDouble:expressionType]; - } -} +#define ADD_VALUE_GETSET(OBJECT, VALUE_TYPE, GETTER, SETTER, LABEL, NOT_NIL) \ + [self addObject:(OBJECT) valueType:VALUE_TYPE getter:^(id obj, FSObjectInspectorViewModelItem *item)GETTER setter:^(id obj, id val, FSObjectInspectorViewModelItem *item)SETTER withLabel:(LABEL) enumBiDict:nil mask:0 valueClass:nil notNil:NOT_NIL]; -static id objectFromFetchRequestResultType(NSFetchRequestResultType fetchRequestResultType) -{ - switch (fetchRequestResultType) - { - case NSManagedObjectResultType: return [FSNamedNumber namedNumberWithDouble:fetchRequestResultType name:@"NSManagedObjectResultType"]; - case NSManagedObjectIDResultType: return [FSNamedNumber namedNumberWithDouble:fetchRequestResultType name:@"NSManagedObjectIDResultType"]; - default: return [FSNumber numberWithDouble:fetchRequestResultType]; - } -} +#define ADD_ENUM(OBJECT, PROPERTY, ENUM) \ + ADD_VALUE(objectFrom##ENUM([OBJECT PROPERTY]), FS_ITEM_ENUM, PROPERTY, FSObjectEnumInfo.optionsFor##ENUM, 0, nil, labelFromPropertyName(@#PROPERTY), NO); -static id objectFromFocusRingType(NSFocusRingType focusRingType) -{ - switch (focusRingType) - { - case NSFocusRingTypeDefault: return [FSNamedNumber namedNumberWithDouble:focusRingType name:@"NSFocusRingTypeDefault"]; - case NSFocusRingTypeNone: return [FSNamedNumber namedNumberWithDouble:focusRingType name:@"NSFocusRingTypeNone"]; - case NSFocusRingTypeExterior: return [FSNamedNumber namedNumberWithDouble:focusRingType name:@"NSFocusRingTypeExterior"]; - default: return [FSNumber numberWithDouble:focusRingType]; - } -} +#define ADD_OPTIONS(OBJECT, PROPERTY, ENUM) \ + ADD_VALUE(objectFrom##ENUM([OBJECT PROPERTY]), FS_ITEM_OPTIONS, PROPERTY, FSObjectEnumInfo.optionsFor##ENUM, ENUM##Mask, nil, labelFromPropertyName(@#PROPERTY), NO); -static id objectFromFontRenderingMode(NSFontRenderingMode fontRenderingMode) -{ - switch (fontRenderingMode) - { - case NSFontDefaultRenderingMode: return [FSNamedNumber namedNumberWithDouble:fontRenderingMode name:@"NSFontDefaultRenderingMode"]; - case NSFontAntialiasedRenderingMode: return [FSNamedNumber namedNumberWithDouble:fontRenderingMode name:@"NSFontAntialiasedRenderingMode"]; - case NSFontIntegerAdvancementsRenderingMode: return [FSNamedNumber namedNumberWithDouble:fontRenderingMode name:@"NSFontIntegerAdvancementsRenderingMode"]; - case NSFontAntialiasedIntegerAdvancementsRenderingMode: return [FSNamedNumber namedNumberWithDouble:fontRenderingMode name:@"NSFontAntialiasedIntegerAdvancementsRenderingMode"]; - default: return [FSNumber numberWithDouble:fontRenderingMode]; - } -} +#define ADD_SIZE(OBJECT, PROPERTY) \ + ADD_VALUE([NSValue valueWithSize:[OBJECT PROPERTY]], FS_ITEM_SIZE, PROPERTY, nil, 0, nil, labelFromPropertyName(@#PROPERTY), NO) -static id objectFromGradientType(NSGradientType gradientType) -{ - switch (gradientType) - { - case NSGradientNone: return [FSNamedNumber namedNumberWithDouble:gradientType name:@"NSGradientNone"]; - case NSGradientConcaveWeak: return [FSNamedNumber namedNumberWithDouble:gradientType name:@"NSGradientConcaveWeak"]; - case NSGradientConcaveStrong: return [FSNamedNumber namedNumberWithDouble:gradientType name:@"NSGradientConcaveStrong"]; - case NSGradientConvexWeak: return [FSNamedNumber namedNumberWithDouble:gradientType name:@"NSGradientConvexWeak"]; - case NSGradientConvexStrong: return [FSNamedNumber namedNumberWithDouble:gradientType name:@"NSGradientConvexStrong"]; - default: return [FSNumber numberWithDouble:gradientType]; - } -} +#define ADD_RECT(OBJECT, PROPERTY) \ + ADD_VALUE([NSValue valueWithRect:(NSRect)[OBJECT PROPERTY]], FS_ITEM_RECT, PROPERTY, nil, 0, nil, labelFromPropertyName(@#PROPERTY), NO) -static id objectFromGridStyleMask(NSUInteger mask) -{ - if (mask & ~(NSTableViewSolidVerticalGridLineMask | NSTableViewSolidHorizontalGridLineMask)) return [FSNumber numberWithDouble:mask]; - else if (mask == 0) return [FSNamedNumber namedNumberWithDouble:mask name:@"NSTableViewGridNone"]; - else - { - NSMutableString *str = [NSMutableString string]; - if (mask & NSTableViewSolidVerticalGridLineMask) [str appendString:@"NSTableViewSolidVerticalGridLineMask"]; - if (mask & NSTableViewSolidHorizontalGridLineMask) [str appendString:[str length] == 0 ? @"NSTableViewSolidHorizontalGridLineMask" : @" + NSTableViewSolidHorizontalGridLineMask"]; - return [FSNamedNumber namedNumberWithDouble:mask name:str]; - } +#define ADD_EDGE_INSETS(OBJECT, PROPERTY) \ +{ \ + NSEdgeInsets _insets = [OBJECT PROPERTY]; \ + NSRect _rect = NSMakeRect(_insets.top, _insets.left, _insets.bottom, _insets.right); \ + ADD_VALUE([NSValue valueWithRect:_rect], FS_ITEM_RECT, PROPERTY, nil, 0, nil, labelFromPropertyName(@#PROPERTY), NO) \ } -static id objectFromImageAlignment(NSImageAlignment imageAlignment) -{ - switch (imageAlignment) - { - case NSImageAlignCenter: return [FSNamedNumber namedNumberWithDouble:imageAlignment name:@"NSImageAlignCenter"]; - case NSImageAlignTop: return [FSNamedNumber namedNumberWithDouble:imageAlignment name:@"NSImageAlignTop"]; - case NSImageAlignTopLeft: return [FSNamedNumber namedNumberWithDouble:imageAlignment name:@"NSImageAlignTopLeft"]; - case NSImageAlignTopRight: return [FSNamedNumber namedNumberWithDouble:imageAlignment name:@"NSImageAlignTopRight"]; - case NSImageAlignLeft: return [FSNamedNumber namedNumberWithDouble:imageAlignment name:@"NSImageAlignLeft"]; - case NSImageAlignBottom: return [FSNamedNumber namedNumberWithDouble:imageAlignment name:@"NSImageAlignBottom"]; - case NSImageAlignBottomLeft: return [FSNamedNumber namedNumberWithDouble:imageAlignment name:@"NSImageAlignBottomLeft"]; - case NSImageAlignBottomRight: return [FSNamedNumber namedNumberWithDouble:imageAlignment name:@"NSImageAlignBottomRight"]; - case NSImageAlignRight: return [FSNamedNumber namedNumberWithDouble:imageAlignment name:@"NSImageAlignRight"]; - default: return [FSNumber numberWithDouble:imageAlignment]; - } -} +#define ADD_POINT(OBJECT, PROPERTY) \ + ADD_VALUE([NSValue valueWithPoint:[OBJECT PROPERTY]], FS_ITEM_POINT, PROPERTY, nil, 0, nil, labelFromPropertyName(@#PROPERTY), NO) -static id objectFromImageCacheMode(NSImageCacheMode imageCacheMode) -{ - switch (imageCacheMode) - { - case NSImageCacheDefault: return [FSNamedNumber namedNumberWithDouble:imageCacheMode name:@"NSImageCacheDefault"]; - case NSImageCacheAlways: return [FSNamedNumber namedNumberWithDouble:imageCacheMode name:@"NSImageCacheAlways"]; - case NSImageCacheBySize: return [FSNamedNumber namedNumberWithDouble:imageCacheMode name:@"NSImageCacheBySize"]; - case NSImageCacheNever: return [FSNamedNumber namedNumberWithDouble:imageCacheMode name:@"NSImageCacheNever"]; - default: return [FSNumber numberWithDouble:imageCacheMode]; - } -} -static id objectFromImageFrameStyle(NSImageFrameStyle imageFrameStyle) -{ - switch (imageFrameStyle) - { - case NSImageFrameNone: return [FSNamedNumber namedNumberWithDouble:imageFrameStyle name:@"NSImageFrameNone"]; - case NSImageFramePhoto: return [FSNamedNumber namedNumberWithDouble:imageFrameStyle name:@"NSImageFramePhoto"]; - case NSImageFrameGrayBezel: return [FSNamedNumber namedNumberWithDouble:imageFrameStyle name:@"NSImageFrameGrayBezel"]; - case NSImageFrameGroove: return [FSNamedNumber namedNumberWithDouble:imageFrameStyle name:@"NSImageFrameGroove"]; - case NSImageFrameButton: return [FSNamedNumber namedNumberWithDouble:imageFrameStyle name:@"NSImageFrameButton"]; - default: return [FSNumber numberWithDouble:imageFrameStyle]; - } -} +#define ADD_RANGE(OBJECT, PROPERTY) \ + ADD_VALUE([NSValue valueWithRange:[OBJECT PROPERTY]], FS_ITEM_RANGE, PROPERTY, nil, 0, nil, labelFromPropertyName(@#PROPERTY), NO) -static id objectFromImageInterpolation(NSImageInterpolation imageInterpolation) -{ - switch (imageInterpolation) - { - case NSImageInterpolationDefault: return [FSNamedNumber namedNumberWithDouble:imageInterpolation name:@"NSImageInterpolationDefault"]; - case NSImageInterpolationNone: return [FSNamedNumber namedNumberWithDouble:imageInterpolation name:@"NSImageInterpolationNone"]; - case NSImageInterpolationLow: return [FSNamedNumber namedNumberWithDouble:imageInterpolation name:@"NSImageInterpolationLow"]; - case NSImageInterpolationHigh: return [FSNamedNumber namedNumberWithDouble:imageInterpolation name:@"NSImageInterpolationHigh"]; - default: return [FSNumber numberWithDouble:imageInterpolation]; - } -} +#define _ADD_OBJECT2(OBJECT, PROPERTY) \ + ADD_VALUE([OBJECT PROPERTY], FS_ITEM_OBJECT, PROPERTY, nil, 0, nil, labelFromPropertyName(@#PROPERTY), NO) +#define _ADD_OBJECT3(OBJECT, PROPERTY, VALUE_CLASS) \ + ADD_VALUE([OBJECT PROPERTY], FS_ITEM_OBJECT, PROPERTY, nil, 0, VALUE_CLASS, labelFromPropertyName(@#PROPERTY), NO) +#define _ADD_OBJECT4(OBJECT, PROPERTY, VALUE_CLASS, NOT_NIL) \ + ADD_VALUE([OBJECT PROPERTY], FS_ITEM_OBJECT, PROPERTY, nil, 0, VALUE_CLASS, labelFromPropertyName(@#PROPERTY), NOT_NIL) +#define ADD_OBJECT(...) \ + metamacro_if_eq(2, metamacro_argcount(__VA_ARGS__))(_ADD_OBJECT2(__VA_ARGS__))( \ + metamacro_if_eq(3, metamacro_argcount(__VA_ARGS__))(_ADD_OBJECT3(__VA_ARGS__)) ( \ + _ADD_OBJECT4(__VA_ARGS__) \ + )) -static id objectFromImageScaling(NSImageScaling imageScaling) -{ - switch (imageScaling) - { - case NSImageScaleProportionallyDown: return [FSNamedNumber namedNumberWithDouble:imageScaling name:@"NSImageScaleProportionallyDown"]; - case NSImageScaleAxesIndependently: return [FSNamedNumber namedNumberWithDouble:imageScaling name:@"NSImageScaleAxesIndependently"]; - case NSImageScaleNone: return [FSNamedNumber namedNumberWithDouble:imageScaling name:@"NSImageScaleNone"]; - case NSImageScaleProportionallyUpOrDown: return [FSNamedNumber namedNumberWithDouble:imageScaling name:@"NSImageScaleProportionallyUpOrDown"]; - default: return [FSNumber numberWithDouble:imageScaling]; - } -} -static id objectFromKeyModifierMask(NSUInteger mask) -{ - NSUInteger devideDependentMask = mask & (NSUInteger)32767; - NSUInteger devideIndependentMask = mask & ~(NSUInteger)32767; // The lower 16 bits of the modifier flags are reserved for device-dependent bits. - - if (devideIndependentMask & ~(NSAlphaShiftKeyMask | NSShiftKeyMask | NSControlKeyMask | NSAlternateKeyMask | NSCommandKeyMask | NSNumericPadKeyMask | NSHelpKeyMask | NSFunctionKeyMask)) - return [FSNumber numberWithDouble:mask]; - - NSMutableString *str = [NSMutableString string]; - - if (devideDependentMask != 0) [str appendString:[[NSNumber numberWithUnsignedLong:(unsigned long)devideDependentMask] description]]; - - if (devideIndependentMask & NSAlphaShiftKeyMask) [str appendString:[str length] == 0 ? @"NSAlphaShiftKeyMask" : @" + NSAlphaShiftKeyMask"]; - if (devideIndependentMask & NSShiftKeyMask) [str appendString:[str length] == 0 ? @"NSShiftKeyMask" : @" + NSShiftKeyMask"]; - if (devideIndependentMask & NSControlKeyMask) [str appendString:[str length] == 0 ? @"NSControlKeyMask" : @" + NSControlKeyMask"]; - if (devideIndependentMask & NSAlternateKeyMask) [str appendString:[str length] == 0 ? @"NSAlternateKeyMask" : @" + NSAlternateKeyMask"]; - if (devideIndependentMask & NSCommandKeyMask) [str appendString:[str length] == 0 ? @"NSCommandKeyMask" : @" + NSCommandKeyMask"]; - if (devideIndependentMask & NSNumericPadKeyMask) [str appendString:[str length] == 0 ? @"NSNumericPadKeyMask" : @" + NSNumericPadKeyMask"]; - if (devideIndependentMask & NSHelpKeyMask) [str appendString:[str length] == 0 ? @"NSHelpKeyMask" : @" + NSHelpKeyMask"]; - if (devideIndependentMask & NSFunctionKeyMask) [str appendString:[str length] == 0 ? @"NSFunctionKeyMask" : @" + NSFunctionKeyMask"]; - - return ([str length] == 0 ? [FSNumber numberWithDouble:mask] : [FSNamedNumber namedNumberWithDouble:mask name:str]); -} +#define ADD_OBJECT_NOT_NIL(OBJECT, PROPERTY) \ + ADD_VALUE([OBJECT PROPERTY], FS_ITEM_OBJECT, PROPERTY, nil, 0, nil, labelFromPropertyName(@#PROPERTY), YES) -static id objectFromLayoutOptions(NSUInteger mask) -{ - if (mask & ~(NSShowControlGlyphs | NSShowInvisibleGlyphs | NSWantsBidiLevels)) return [FSNumber numberWithDouble:mask]; - else - { - NSMutableString *str = [NSMutableString string]; - if (mask & NSShowControlGlyphs) [str appendString:@"NSShowControlGlyphs"]; - if (mask & NSShowInvisibleGlyphs) [str appendString:[str length] == 0 ? @"NSShowInvisibleGlyphs" : @" + NSShowInvisibleGlyphs"]; - if (mask & NSWantsBidiLevels) [str appendString:[str length] == 0 ? @"NSWantsBidiLevels" : @" + NSWantsBidiLevels"]; - - return ([str length] == 0 ? [FSNumber numberWithDouble:mask] : [FSNamedNumber namedNumberWithDouble:mask name:str]); - } -} +#define _ADD_OBJECT_RO2(OBJECT, LABEL) \ + [self addObject:(OBJECT) valueType:FS_ITEM_OBJECT getter:nil setter:nil withLabel:(LABEL) enumBiDict:nil mask:0 valueClass:nil notNil:NO]; +#define _ADD_OBJECT_RO3(OBJECT, LABEL, VALUE_CLASS) \ + [self addObject:(OBJECT) valueType:FS_ITEM_OBJECT getter:nil setter:nil withLabel:(LABEL) enumBiDict:nil mask:0 valueClass:VALUE_CLASS notNil:NO]; +#define _ADD_OBJECT_RO4(OBJECT, LABEL, VALUE_CLASS, NOT_NIL) \ + [self addObject:(OBJECT) valueType:FS_ITEM_OBJECT getter:nil setter:nil withLabel:(LABEL) enumBiDict:nil mask:0 valueClass:VALUE_CLASS notNil:NOT_NIL]; -static id objectFromLevelIndicatorStyle(NSLevelIndicatorStyle levelIndicatorStyle) -{ - switch (levelIndicatorStyle) - { - case NSRelevancyLevelIndicatorStyle: return [FSNamedNumber namedNumberWithDouble:levelIndicatorStyle name:@"NSRelevancyLevelIndicatorStyle"]; - case NSContinuousCapacityLevelIndicatorStyle: return [FSNamedNumber namedNumberWithDouble:levelIndicatorStyle name:@"NSContinuousCapacityLevelIndicatorStyle"]; - case NSDiscreteCapacityLevelIndicatorStyle: return [FSNamedNumber namedNumberWithDouble:levelIndicatorStyle name:@"NSDiscreteCapacityLevelIndicatorStyle"]; - case NSRatingLevelIndicatorStyle: return [FSNamedNumber namedNumberWithDouble:levelIndicatorStyle name:@"NSRatingLevelIndicatorStyle"]; - default: return [FSNumber numberWithDouble:levelIndicatorStyle]; - } -} +#define ADD_OBJECT_RO(...) \ + metamacro_if_eq(2, metamacro_argcount(__VA_ARGS__))(_ADD_OBJECT_RO2(__VA_ARGS__))( \ + metamacro_if_eq(3, metamacro_argcount(__VA_ARGS__))(_ADD_OBJECT_RO3(__VA_ARGS__)) ( \ + _ADD_OBJECT_RO4(__VA_ARGS__) \ + )) + +#define ADD_OBJECT_GETSET(OBJECT, GETTER, SETTER, VALUE_CLASS, LABEL, NOT_NIL) \ +{ \ + FSGetterBlock getBlock = ^id(id obj, FSObjectInspectorViewModelItem *item) GETTER; \ + FSSetterBlock setBlock = ^void(id obj, id val, FSObjectInspectorViewModelItem *item) SETTER; \ + [self addObject:getBlock(OBJECT,nil) valueType:FS_ITEM_OBJECT getter:getBlock setter:setBlock withLabel:(LABEL) enumBiDict:nil mask:0 valueClass:VALUE_CLASS notNil:NOT_NIL]; \ +} + +#define ADD_OBJECT_RO_NOT_NIL(OBJECT, LABEL) ADD_OBJECT_NOT_NIL(OBJECT, nil, nil, LABEL) \ + [self addObject:(OBJECT) valueType:FS_ITEM_OBJECT getter:nil setter:nil withLabel:(LABEL) enumBiDict:nil mask:0 valueClass:nil notNil:YES]; + + +#define ADD_COLOR(OBJECT, PROPERTY) \ + ADD_VALUE([OBJECT PROPERTY], FS_ITEM_OBJECT, PROPERTY, nil, 0, NSColor.class, labelFromPropertyName(@#PROPERTY), NO) + +#define ADD_COLOR_NOT_NIL(OBJECT, PROPERTY) \ + ADD_VALUE([OBJECT PROPERTY], FS_ITEM_OBJECT, PROPERTY, nil, 0, NSColor.class, labelFromPropertyName(@#PROPERTY), YES) + +#define ADD_STRING(OBJECT, PROPERTY) \ + ADD_VALUE([OBJECT PROPERTY], FS_ITEM_OBJECT, PROPERTY, nil, 0, NSString.class, labelFromPropertyName(@#PROPERTY), NO) + +#define ADD_STRING_NOT_NIL(OBJECT, PROPERTY) \ + ADD_VALUE([OBJECT PROPERTY], FS_ITEM_OBJECT, PROPERTY, nil, 0, NSString.class, labelFromPropertyName(@#PROPERTY), YES) + +#define ADD_BOOL(OBJECT, PROPERTY) \ + ADD_VALUE([FSBoolean booleanWithBool:[OBJECT PROPERTY]], FS_ITEM_BOOL, PROPERTY, nil, 0, nil, labelFromPropertyName(@#PROPERTY), NO); + +#define ADD_NUMBER(OBJECT, PROPERTY) \ + ADD_VALUE([FSNumber numberWithDouble:[OBJECT PROPERTY]], FS_ITEM_NUMBER, PROPERTY, nil, 0, nil, labelFromPropertyName(@#PROPERTY), NO) + +#define ADD_NUMBER_GETSET(OBJECT, GETTER, SETTER, LABEL) \ +{ \ + double (^getBlock)(id,FSObjectInspectorViewModelItem*) = ^double(id obj, FSObjectInspectorViewModelItem *item) GETTER; \ + FSGetterBlock wrappedGetBlock = ^id(id obj, FSObjectInspectorViewModelItem *item) { \ + return [FSNumber numberWithDouble:getBlock(obj,item)]; \ + }; \ + void(^setBlock)(id,double,FSObjectInspectorViewModelItem*) = ^(id obj, double val, FSObjectInspectorViewModelItem *item) SETTER; \ + FSSetterBlock wrappedSetBlock = ^(id obj, id val, FSObjectInspectorViewModelItem *item) { \ + setBlock(obj, [val doubleValue], item); \ + }; \ + [self addObject:wrappedGetBlock(OBJECT,nil) valueType:FS_ITEM_NUMBER getter:wrappedGetBlock setter:wrappedSetBlock withLabel:(LABEL) enumBiDict:nil mask:0 valueClass:nil notNil:NO]; \ +} + +#define ADD_BOOL_GETSET(OBJECT, GETTER, SETTER, LABEL) \ +{ \ + BOOL (^getBlock)(id,FSObjectInspectorViewModelItem*) = ^BOOL(id obj, FSObjectInspectorViewModelItem *item) GETTER; \ + FSGetterBlock wrappedGetBlock = ^id(id obj, FSObjectInspectorViewModelItem *item) { \ + return [FSBoolean booleanWithBool:getBlock(obj,item)]; \ + }; \ + void(^setBlock)(id,BOOL,FSObjectInspectorViewModelItem*) = ^(id obj, BOOL val, FSObjectInspectorViewModelItem *item) SETTER; \ + FSSetterBlock wrappedSetBlock = ^(id obj, id val, FSObjectInspectorViewModelItem *item) { \ + setBlock(obj, [True isEqual:val], item); \ + }; \ + [self addObject:wrappedGetBlock(OBJECT,nil) valueType:FS_ITEM_BOOL getter:wrappedGetBlock setter:wrappedSetBlock withLabel:(LABEL) enumBiDict:nil mask:0 valueClass:nil notNil:NO]; \ +} +#define ADD_DICTIONARY(OBJECTS, LABEL) \ + @try { \ + NSDictionary *objs = [OBJECTS LABEL]; \ + if (objs.count <= 20) \ + [view addDictionary:objs withLabel:labelFromPropertyName(@#LABEL)toMatrix:m classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; \ + else \ + [self addObject:objs valueType:FS_ITEM_OBJECT withLabel:labelFromPropertyName(@#LABEL)notNil:NO]; \ + } \ + @catch (id exception) { NSLog(@"%@", exception); } + +#define ADD_OBJECTS(OBJECTS, LABEL) \ + @try { \ + NSArray *objs = [OBJECTS LABEL]; \ + if (objs.count <= 20) \ + [view addObjects:objs withLabel:labelFromPropertyName(@#LABEL) toMatrix:m classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; \ + else \ + [self addObject:(OBJECTS) valueType:FS_ITEM_OBJECT withLabel:labelFromPropertyName(@#LABEL) notNil:NO]; \ + } \ + @catch (id exception) { NSLog(@"%@", exception); } + +#define ADD_SEL(S, LABEL) \ + @try { \ + [view addObject:[FSBlock blockWithSelector:@selector(S)] withLabel:labelFromPropertyName(@#LABEL)toMatrix:m leaf:YES classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject indentationLevel:0]; \ + } \ + @catch (id exception) { NSLog(@"%@", exception); } + +#define ADD_SEL_NOT_NULL(S, LABEL) \ + @try { \ + { \ + SEL selector = (S); \ + if (selector != (SEL)0) \ + [view addObject:[FSBlock blockWithSelector:selector] withLabel:(LABEL)toMatrix:m leaf:YES classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject indentationLevel:0]; \ + } \ + } \ + @catch (id exception) { NSLog(@"%@", exception); } + +#define ADD_POINTER(POINTER, LABEL) \ + @try { \ + if (POINTER == NULL) { \ + ADD_OBJECT_RO(nil, LABEL) \ + } \ + else { \ + [view addObject:[[[FSGenericPointer alloc] initWithCPointer:(POINTER)freeWhenDone:NO type:@encode(void)] autorelease] withLabel:(LABEL)toMatrix:m classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; \ + } \ + } \ + @catch (id exception) { NSLog(@"%@", exception); } + +#define ADD_CLASS_LABEL(LABEL) \ + { \ + [self addClassLabel:(LABEL)toMatrix:m]; \ + } -static id objectFromLineBreakMode(NSLineBreakMode lineBreakMode) -{ - switch (lineBreakMode) - { - case NSLineBreakByWordWrapping: return [FSNamedNumber namedNumberWithDouble:lineBreakMode name:@"NSLineBreakByWordWrapping"]; - case NSLineBreakByCharWrapping: return [FSNamedNumber namedNumberWithDouble:lineBreakMode name:@"NSLineBreakByCharWrapping"]; - case NSLineBreakByClipping: return [FSNamedNumber namedNumberWithDouble:lineBreakMode name:@"NSLineBreakByClipping"]; - case NSLineBreakByTruncatingHead: return [FSNamedNumber namedNumberWithDouble:lineBreakMode name:@"NSLineBreakByTruncatingHead"]; - case NSLineBreakByTruncatingTail: return [FSNamedNumber namedNumberWithDouble:lineBreakMode name:@"NSLineBreakByTruncatingTail"]; - case NSLineBreakByTruncatingMiddle: return [FSNamedNumber namedNumberWithDouble:lineBreakMode name:@"NSLineBreakByTruncatingMiddle"]; - default: return [FSNumber numberWithDouble:lineBreakMode]; - } -} -static id objectFromLineCapStyle(NSLineCapStyle lineCapStyle) -{ - switch (lineCapStyle) - { - case NSButtLineCapStyle: return [FSNamedNumber namedNumberWithDouble:lineCapStyle name:@"NSButtLineCapStyle"]; - case NSRoundLineCapStyle: return [FSNamedNumber namedNumberWithDouble:lineCapStyle name:@"NSRoundLineCapStyle"]; - case NSSquareLineCapStyle: return [FSNamedNumber namedNumberWithDouble:lineCapStyle name:@"NSSquareLineCapStyle"]; - default: return [FSNumber numberWithDouble:lineCapStyle]; - } -} +#define ADD_SIZE2(SIZE, PROPERTY, LABEL) \ + ADD_VALUE([NSValue valueWithSize:(SIZE)], FS_ITEM_SIZE, PROPERTY, nil, nil, 0, LABEL, NO) +#define ADD_RECT2(RECT,PROPERTY, LABEL) \ + ADD_VALUE([NSValue valueWithRect:(RECT)], FS_ITEM_RECT, PROPERTY, nil, nil, 0, LABEL, NO) +#define ADD_POINT2(POINT,PROPERTY, LABEL) \ + ADD_VALUE([NSValue valueWithPoint:(POINT)], FS_ITEM_POINT, PROPERTY, nil, nil, 0, LABEL, NO) +#define ADD_RANGE2(RANGE, PROPERTY,LABEL) \ + ADD_VALUE([NSValue valueWithRange:(RANGE)], FS_ITEM_RANGE, PROPERTY, nil, nil, 0, LABEL, NO) +#define ADD_OBJECT2(OBJECT, PROPERTY, LABEL) \ + ADD_VALUE((OBJECT), FS_ITEM_OBJECT, PROPERTY, nil, nil, 0, LABEL, NO) +#define ADD_COLOR2(OBJECT, PROPERTY, LABEL) \ + ADD_VALUE(OBJECT, FS_ITEM_OBJECT, PROPERTY, nil, 0, NSColor.class, LABEL, NO) +#define ADD_NUMBER2(NUMBER, PROPERTY, LABEL) \ + ADD_VALUE([FSNumber numberWithDouble:(NUMBER)], FS_ITEM_NUMBER, PROPERTY, nil, 0, nil, LABEL, NO); -static id objectFromLineJoinStyle(NSLineJoinStyle lineJoinStyle) +- (void)fillMatrix:(NSMatrix*)theMatrix withObject:(id)object { - switch (lineJoinStyle) - { - case NSMiterLineJoinStyle: return [FSNamedNumber namedNumberWithDouble:lineJoinStyle name:@"NSMiterLineJoinStyle"]; - case NSRoundLineJoinStyle: return [FSNamedNumber namedNumberWithDouble:lineJoinStyle name:@"NSRoundLineJoinStyle"]; - case NSBevelLineJoinStyle: return [FSNamedNumber namedNumberWithDouble:lineJoinStyle name:@"NSBevelLineJoinStyle"]; - default: return [FSNumber numberWithDouble:lineJoinStyle]; - } -} + [object retain]; // (1) To be sure object will not be deallocated as a side effect of the removing of rows -static id objectFromMatrixMode(NSMatrixMode matrixMode) -{ - switch (matrixMode) - { - case NSRadioModeMatrix: return [FSNamedNumber namedNumberWithDouble:matrixMode name:@"NSRadioModeMatrix"]; - case NSHighlightModeMatrix: return [FSNamedNumber namedNumberWithDouble:matrixMode name:@"NSHighlightModeMatrix"]; - case NSListModeMatrix: return [FSNamedNumber namedNumberWithDouble:matrixMode name:@"NSListModeMatrix"]; - case NSTrackModeMatrix : return [FSNamedNumber namedNumberWithDouble:matrixMode name:@"NSTrackModeMatrix"]; - default: return [FSNumber numberWithDouble:matrixMode]; - } -} + m = theMatrix; + selectedCell = [[[m selectedCell] retain] autorelease]; // retain and autorelease in order to avoid premature deallocation as a side effect of the removing of rows + selectedClassLabel = [[[selectedCell classLabel] copy] autorelease]; // copy and autorelease in order to avoid premature invalidation as a side effect of the removing of rows + selectedLabel = [[[selectedCell label] copy] autorelease]; // copy and autorelease in order to avoid premature invalidation as a side effect of the removing of rows + selectedObject = [selectedCell representedObject]; + classLabel = @""; -static id objectFromMergePolicy(id mergePolicy) -{ - NSString *name = nil; - - if (mergePolicy == NSErrorMergePolicy) name = @"NSErrorMergePolicy"; - else if (mergePolicy == NSMergeByPropertyStoreTrumpMergePolicy) name = @"NSMergeByPropertyStoreTrumpMergePolicy"; - else if (mergePolicy == NSMergeByPropertyObjectTrumpMergePolicy) name = @"NSMergeByPropertyObjectTrumpMergePolicy"; - else if (mergePolicy == NSOverwriteMergePolicy) name = @"NSOverwriteMergePolicy"; - else if (mergePolicy == NSRollbackMergePolicy) name = @"NSRollbackMergePolicy"; - - if (name) return [FSObjectBrowserNamedObjectWrapper namedObjectWrapperWithObject:mergePolicy name:name]; - else return mergePolicy; -} - -static id objectFromNestingMode(NSRuleEditorNestingMode ruleEditorNestingMode) -{ - switch (ruleEditorNestingMode) - { - case NSRuleEditorNestingModeSingle: return [FSNamedNumber namedNumberWithDouble:ruleEditorNestingMode name:@"NSRuleEditorNestingModeSingle"]; - case NSRuleEditorNestingModeList: return [FSNamedNumber namedNumberWithDouble:ruleEditorNestingMode name:@"NSRuleEditorNestingModeList"]; - case NSRuleEditorNestingModeCompound: return [FSNamedNumber namedNumberWithDouble:ruleEditorNestingMode name:@"NSRuleEditorNestingModeCompound"]; - case NSRuleEditorNestingModeSimple: return [FSNamedNumber namedNumberWithDouble:ruleEditorNestingMode name:@"NSRuleEditorNestingModeSimple"]; - default: return [FSNumber numberWithDouble:ruleEditorNestingMode]; - } -} + [m renewRows:0 columns:1]; -static id objectFromPathStyle(NSPathStyle pathStyle) -{ - switch (pathStyle) - { - case NSPathStyleStandard: return [FSNamedNumber namedNumberWithDouble:pathStyle name:@"NSPathStyleStandard"]; - case NSPathStyleNavigationBar: return [FSNamedNumber namedNumberWithDouble:pathStyle name:@"NSPathStyleNavigationBar"]; - case NSPathStylePopUp: return [FSNamedNumber namedNumberWithDouble:pathStyle name:@"NSPathStylePopUp"]; - default: return [FSNumber numberWithDouble:pathStyle]; - } -} + [view addObject:object toMatrix:m label:@"" classLabel:@"" indentationLevel:0 leaf:YES]; + [object release]; // It's now safe to match the retain in instruction (1) -static id objectFromPointingDeviceType(NSPointingDeviceType pointingDeviceType) -{ - switch (pointingDeviceType) - { - case NSUnknownPointingDevice: return [FSNamedNumber namedNumberWithDouble:pointingDeviceType name:@"NSUnknownPointingDevice"]; - case NSPenPointingDevice: return [FSNamedNumber namedNumberWithDouble:pointingDeviceType name:@"NSPenPointingDevice"]; - case NSCursorPointingDevice: return [FSNamedNumber namedNumberWithDouble:pointingDeviceType name:@"NSCursorPointingDevice"]; - case NSEraserPointingDevice: return [FSNamedNumber namedNumberWithDouble:pointingDeviceType name:@"NSEraserPointingDevice"]; - default: return [FSNumber numberWithDouble:pointingDeviceType]; - } -} + if (selectedObject == object && [selectedClassLabel isEqualToString:@""] && [selectedLabel isEqualToString:@""]) + [m selectCellAtRow:[m numberOfRows] - 1 column:0]; -static id objectFromPredicateOperatorType(NSPredicateOperatorType predicateOperatorType) -{ - switch (predicateOperatorType) - { - case NSLessThanPredicateOperatorType: return [FSNamedNumber namedNumberWithDouble:predicateOperatorType name:@"NSLessThanPredicateOperatorType"]; - case NSLessThanOrEqualToPredicateOperatorType: return [FSNamedNumber namedNumberWithDouble:predicateOperatorType name:@"NSLessThanOrEqualToPredicateOperatorType"]; - case NSGreaterThanPredicateOperatorType: return [FSNamedNumber namedNumberWithDouble:predicateOperatorType name:@"NSGreaterThanPredicateOperatorType"]; - case NSGreaterThanOrEqualToPredicateOperatorType: return [FSNamedNumber namedNumberWithDouble:predicateOperatorType name:@"NSGreaterThanOrEqualToPredicateOperatorType"]; - case NSEqualToPredicateOperatorType: return [FSNamedNumber namedNumberWithDouble:predicateOperatorType name:@"NSEqualToPredicateOperatorType"]; - case NSNotEqualToPredicateOperatorType: return [FSNamedNumber namedNumberWithDouble:predicateOperatorType name:@"NSNotEqualToPredicateOperatorType"]; - case NSMatchesPredicateOperatorType: return [FSNamedNumber namedNumberWithDouble:predicateOperatorType name:@"NSMatchesPredicateOperatorType"]; - case NSLikePredicateOperatorType : return [FSNamedNumber namedNumberWithDouble:predicateOperatorType name:@"NSLikePredicateOperatorType"]; - case NSBeginsWithPredicateOperatorType: return [FSNamedNumber namedNumberWithDouble:predicateOperatorType name:@"NSBeginsWithPredicateOperatorType"]; - case NSEndsWithPredicateOperatorType: return [FSNamedNumber namedNumberWithDouble:predicateOperatorType name:@"NSEndsWithPredicateOperatorType"]; - case NSInPredicateOperatorType: return [FSNamedNumber namedNumberWithDouble:predicateOperatorType name:@"NSInPredicateOperatorType"]; - case NSCustomSelectorPredicateOperatorType: return [FSNamedNumber namedNumberWithDouble:predicateOperatorType name:@"NSCustomSelectorPredicateOperatorType"]; - case NSContainsPredicateOperatorType: return [FSNamedNumber namedNumberWithDouble:predicateOperatorType name:@"NSContainsPredicateOperatorType"]; - case NSBetweenPredicateOperatorType: return [FSNamedNumber namedNumberWithDouble:predicateOperatorType name:@"NSBetweenPredicateOperatorType"]; - default: return [FSNumber numberWithDouble:predicateOperatorType]; - } -} - -static id objectFromProgressIndicatorStyle(NSProgressIndicatorStyle progressIndicatorStyle) -{ - switch (progressIndicatorStyle) - { - case NSProgressIndicatorBarStyle: return [FSNamedNumber namedNumberWithDouble:progressIndicatorStyle name:@"NSProgressIndicatorBarStyle"]; - case NSProgressIndicatorSpinningStyle: return [FSNamedNumber namedNumberWithDouble:progressIndicatorStyle name:@"NSProgressIndicatorSpinningStyle"]; - default: return [FSNumber numberWithDouble:progressIndicatorStyle]; - } -} - -static id objectFromPopUpArrowPosition(NSPopUpArrowPosition popUpArrowPosition) -{ - switch (popUpArrowPosition) - { - case NSPopUpNoArrow: return [FSNamedNumber namedNumberWithDouble:popUpArrowPosition name:@"NSPopUpNoArrow"]; - case NSPopUpArrowAtCenter: return [FSNamedNumber namedNumberWithDouble:popUpArrowPosition name:@"NSPopUpArrowAtCenter"]; - case NSPopUpArrowAtBottom: return [FSNamedNumber namedNumberWithDouble:popUpArrowPosition name:@"NSPopUpArrowAtBottom"]; - default: return [FSNumber numberWithDouble:popUpArrowPosition]; - } -} - -static id objectFromRectEdge(NSRectEdge rectEdge) -{ - switch (rectEdge) - { - case NSMinXEdge: return [FSNamedNumber namedNumberWithDouble:rectEdge name:@"NSMinXEdge"]; - case NSMinYEdge: return [FSNamedNumber namedNumberWithDouble:rectEdge name:@"NSMinYEdge"]; - case NSMaxXEdge: return [FSNamedNumber namedNumberWithDouble:rectEdge name:@"NSMaxXEdge"]; - case NSMaxYEdge: return [FSNamedNumber namedNumberWithDouble:rectEdge name:@"NSMaxYEdge"]; - default: return [FSNumber numberWithDouble:rectEdge]; - } -} - -static id objectFromRulerOrientation(NSRulerOrientation rulerOrientation) -{ - switch (rulerOrientation) - { - case NSHorizontalRuler: return [FSNamedNumber namedNumberWithDouble:rulerOrientation name:@"NSHorizontalRuler"]; - case NSVerticalRuler: return [FSNamedNumber namedNumberWithDouble:rulerOrientation name:@"NSVerticalRuler"]; - default: return [FSNumber numberWithDouble:rulerOrientation]; - } -} + if (object != nil && object == [object class]) // object is a class + { + NSMutableArray* classNames = [NSMutableArray array]; + NSUInteger count, i; + Class* classes = allClasses(&count); -static id objectFromScrollArrowPosition(NSScrollArrowPosition scrollArrowPosition) -{ - switch (scrollArrowPosition) - { - case NSScrollerArrowsDefaultSetting: return [FSNamedNumber namedNumberWithDouble:scrollArrowPosition name:@"NSScrollerArrowsDefaultSetting"]; - case NSScrollerArrowsNone: return [FSNamedNumber namedNumberWithDouble:scrollArrowPosition name:@"NSScrollerArrowsNone"]; - default: return [FSNumber numberWithDouble:scrollArrowPosition]; - } -} + @try { + for (i = 0; i < count; i++) { +#ifdef __LP64__ + if (class_getSuperclass(classes[i]) == object) + [classNames addObject:NSStringFromClass(classes[i])]; +#else + if (classes[i]->super_class == object) + [classNames addObject:NSStringFromClass(classes[i])]; +#endif + } + } + @finally + { + free(classes); + } + [classNames sortUsingFunction:FSCompareClassNamesForAlphabeticalOrder context:NULL]; -static id objectFromScrollerPart(NSScrollerPart scrollerPart) -{ - switch (scrollerPart) - { - case NSScrollerNoPart: return [FSNamedNumber namedNumberWithDouble:scrollerPart name:@"NSScrollerNoPart"]; - case NSScrollerDecrementPage: return [FSNamedNumber namedNumberWithDouble:scrollerPart name:@"NSScrollerDecrementPage"]; - case NSScrollerKnob: return [FSNamedNumber namedNumberWithDouble:scrollerPart name:@"NSScrollerKnob"]; - case NSScrollerIncrementPage: return [FSNamedNumber namedNumberWithDouble:scrollerPart name:@"NSScrollerIncrementPage"]; - case NSScrollerDecrementLine: return [FSNamedNumber namedNumberWithDouble:scrollerPart name:@"NSScrollerDecrementLine"]; - case NSScrollerIncrementLine: return [FSNamedNumber namedNumberWithDouble:scrollerPart name:@"NSScrollerIncrementLine"]; - case NSScrollerKnobSlot: return [FSNamedNumber namedNumberWithDouble:scrollerPart name:@"NSScrollerKnobSlot"]; - default: return [FSNumber numberWithDouble:scrollerPart]; - } -} + [view addBlankRowToMatrix:m]; -static id objectFromSegmentSwitchTracking(NSSegmentSwitchTracking segmentSwitchTracking) -{ - switch (segmentSwitchTracking) - { - case NSSegmentSwitchTrackingSelectOne: return [FSNamedNumber namedNumberWithDouble:segmentSwitchTracking name:@"NSSegmentSwitchTrackingSelectOne"]; - case NSSegmentSwitchTrackingSelectAny: return [FSNamedNumber namedNumberWithDouble:segmentSwitchTracking name:@"NSSegmentSwitchTrackingSelectAny"]; - case NSSegmentSwitchTrackingMomentary: return [FSNamedNumber namedNumberWithDouble:segmentSwitchTracking name:@"NSSegmentSwitchTrackingMomentary"]; - default: return [FSNumber numberWithDouble:segmentSwitchTracking]; - } -} +#ifdef __LP64__ + if (class_getSuperclass(object) == nil) + [view addLabelAlone:@"This class is a root class" toMatrix:m]; + else + [view addObject:class_getSuperclass((Class)object) withLabel:@"Superclass" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; +#else + if (((Class)object)->super_class == nil) + [view addLabelAlone:@"This class is a root class" toMatrix:m]; + else + [view addObject:((Class)object)->super_class withLabel:@"Superclass" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; +#endif -static id objectFromSelectionAffinity(NSSelectionAffinity selectionAffinity) -{ - switch (selectionAffinity) - { - case NSSelectionAffinityUpstream: return [FSNamedNumber namedNumberWithDouble:selectionAffinity name:@"NSSelectionAffinityUpstream"]; - case NSSelectionAffinityDownstream: return [FSNamedNumber namedNumberWithDouble:selectionAffinity name:@"NSSelectionAffinityDownstream"]; - default: return [FSNumber numberWithDouble:selectionAffinity]; - } -} + if ([classNames count] == 0) + [view addLabelAlone:@"No subclasses" toMatrix:m]; + [view addClassesWithNames:classNames withLabel:@"Direct subclasses" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; + } + else if ([object isKindOfClass:[NSManagedObject class]]) { + NSManagedObject* o = object; + classLabel = @"NSManagedObject Properties"; + NSArray* attributeKeys = [[[[o entity] attributesByName] allKeys] sortedArrayUsingSelector:@selector(compare:)]; + [view addPropertyLabel:@"Attributes" toMatrix:m]; + for (NSUInteger i = 0, count = [attributeKeys count]; i < count; i++) { + NSString* key = [attributeKeys objectAtIndex:i]; + ADD_OBJECT2([o valueForKey:key], key, key) + } + + NSArray* relationshipKeys = [[[[o entity] relationshipsByName] allKeys] sortedArrayUsingSelector:@selector(compare:)]; + [view addPropertyLabel:@"Relationships" toMatrix:m]; + for (NSUInteger i = 0, count = [relationshipKeys count]; i < count; i++) { + NSString* key = [relationshipKeys objectAtIndex:i]; + ADD_OBJECT2([o valueForKey:key], key, key) + } + + ADD_CLASS_LABEL(@"NSManagedObject Info"); + ADD_OBJECT(o, entity) + ADD_BOOL(o, isDeleted) + ADD_BOOL(o, isInserted) + ADD_BOOL(o, isUpdated) + ADD_OBJECT(o, managedObjectContext) + ADD_OBJECT(o, objectID) + } + else if (([object isKindOfClass:[NSArray class]] || [object isKindOfClass:[NSDictionary class]] || [object isKindOfClass:[NSSet class]]) + && [object count] < 500) // We display the elements only if there is less than a certain number of them + { + [view addBlankRowToMatrix:m]; + if ([object isKindOfClass:[NSArray class]]) { + NSArray* o = object; + if ([o count] == 0) + [view addLabelAlone:@"This array is empty" toMatrix:m]; + [view addObjects:o withLabel:@"Elements" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; + } + else if ([object isKindOfClass:[NSDictionary class]]) { + NSDictionary* o = object; + if ([o count] == 0) + [view addLabelAlone:@"This dictionary is empty" toMatrix:m]; + [view addDictionary:o withLabel:@"Entries" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; + } + else if ([object isKindOfClass:[NSSet class]]) { + NSSet* o = object; + if ([o count] == 0) + [view addLabelAlone:@"This set is empty" toMatrix:m]; + [view addObjects:[object allObjects] withLabel:@"Elements" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; + } + } + else if ([object isKindOfClass:[FSAssociation class]]) { + FSAssociation* o = object; + [view addBlankRowToMatrix:m]; + [view addObject:[o key] withLabel:@"Key" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; + [view addObject:[o value] withLabel:@"Value" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; + } + else if ([object isKindOfClass:[NSView class]]) { + NSView* o = object; + [view addBlankRowToMatrix:m]; -static id objectFromSelectionDirection(NSSelectionDirection selectionDirection) -{ - switch (selectionDirection) - { - case NSDirectSelection: return [FSNamedNumber namedNumberWithDouble:selectionDirection name:@"NSDirectSelection"]; - case NSSelectingNext: return [FSNamedNumber namedNumberWithDouble:selectionDirection name:@"NSSelectingNext"]; - case NSSelectingPrevious: return [FSNamedNumber namedNumberWithDouble:selectionDirection name:@"NSSelectingPrevious"]; - default: return [FSNumber numberWithDouble:selectionDirection]; - } -} + [view addObject:[o superview] withLabel:@"Superview" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; -static id objectFromSelectionGranularity(NSSelectionGranularity selectionGranularity) -{ - switch (selectionGranularity) - { - case NSSelectByCharacter: return [FSNamedNumber namedNumberWithDouble:selectionGranularity name:@"NSSelectByCharacter"]; - case NSSelectByWord: return [FSNamedNumber namedNumberWithDouble:selectionGranularity name:@"NSSelectByWord"]; - case NSSelectByParagraph: return [FSNamedNumber namedNumberWithDouble:selectionGranularity name:@"NSSelectByParagraph"]; - default: return [FSNumber numberWithDouble:selectionGranularity]; - } -} + if ([[o subviews] count] == 0) + [view addLabelAlone:@"No subviews" toMatrix:m]; + else + [view addObjects:[o subviews] withLabel:@"Subviews" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; + } + else if ([object isKindOfClass:[FSCNBase class]]) { + [view addBlankRowToMatrix:m]; + + if ([object isKindOfClass:[FSCNArray class]]) { + FSCNArray* o = object; + if (o->count == 0) + [view addLabelAlone:@"An empty array" toMatrix:m]; + else + [view addObjects:[NSArray arrayWithObjects:o->elements count:o->count] withLabel:@"Elements" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; + } + else if ([object isKindOfClass:[FSCNAssignment class]]) { + FSCNAssignment* o = object; + [view addObject:o->left withLabel:@"lvalue" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; + [view addObject:o->right withLabel:@"rvalue" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; + } + else if ([object isKindOfClass:[FSCNBlock class]]) { + FSCNBlock* o = object; + [view addObject:[o->blockRep ast] withLabel:@"Abstract syntax tree" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; + } + else if ([object isKindOfClass:[FSCNCascade class]]) { + FSCNCascade* o = object; + [view addObject:o->receiver withLabel:@"Receiver" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; + [view addObjects:[NSArray arrayWithObjects:o->messages count:o->messageCount] withLabel:@"Message sends" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; + } + else if ([object isKindOfClass:[FSCNCategory class]]) { + FSCNCategory* o = object; + [view addObject:o->className withLabel:@"Class name" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; + [view addObjects:o->methods withLabel:@"Methods" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; + } + else if ([object isKindOfClass:[FSCNClassDefinition class]]) { + FSCNClassDefinition* o = object; + [view addObject:o->className withLabel:@"Class name" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; + [view addObject:o->superclassName withLabel:@"Superclass name" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; + [view addObjects:o->civarNames withLabel:@"Class instance variables names" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; + [view addObjects:o->ivarNames withLabel:@"Instance variables names" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; + [view addObjects:o->methods withLabel:@"Methods" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; + } + else if ([object isKindOfClass:[FSCNDictionary class]]) { + FSCNDictionary* o = object; + if (o->count == 0) + [view addLabelAlone:@"An empty dictionary" toMatrix:m]; + else + [view addObjects:[NSArray arrayWithObjects:o->entries count:o->count] withLabel:@"Entries" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; + } + else if ([object isKindOfClass:[FSCNMethod class]]) { + FSCNMethod* o = object; + [view addObject:o->method->code withLabel:@"Abstract syntax tree" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; + } + else if ([object isKindOfClass:[FSCNMessage class]]) { + FSCNMessage* o = object; + [view addObject:o->receiver withLabel:@"Receiver" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; + + if ([object isKindOfClass:[FSCNBinaryMessage class]]) { + FSCNBinaryMessage* o = object; + [view addObject:o->argument withLabel:@"Argument" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; + } + else if ([object isKindOfClass:[FSCNKeywordMessage class]]) { + FSCNKeywordMessage* o = object; + [view addObjects:[NSArray arrayWithObjects:o->arguments count:o->argumentCount] withLabel:(o->argumentCount > 1 ? @"Arguments" : @"Argument")toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; + } + } + else if ([object isKindOfClass:[FSCNPrecomputedObject class]]) { + FSCNPrecomputedObject* o = object; + [view addObject:o->object withLabel:@"Precomputed object" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; + } + else if ([object isKindOfClass:[FSCNStatementList class]]) { + FSCNStatementList* o = object; + [view addObject:[NSNumber numberWithUnsignedInteger:o->statementCount] withLabel:@"Number of statements" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; + [view addObjects:[NSArray arrayWithObjects:o->statements count:o->statementCount] withLabel:@"Statements" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; + } + else if ([object isKindOfClass:[FSCNReturn class]]) { + FSCNReturn* o = object; + [view addObject:o->expression withLabel:@"Expression" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; + } + } -static id objectFromTableViewSelectionHighlightStyle(NSTableViewSelectionHighlightStyle tableViewSelectionHighlightStyle) -{ - switch (tableViewSelectionHighlightStyle) - { - case NSTableViewSelectionHighlightStyleRegular: return [FSNamedNumber namedNumberWithDouble:tableViewSelectionHighlightStyle name:@"NSTableViewSelectionHighlightStyleRegular"]; - case NSTableViewSelectionHighlightStyleSourceList: return [FSNamedNumber namedNumberWithDouble:tableViewSelectionHighlightStyle name:@"NSTableViewSelectionHighlightStyleSourceList"]; - default: return [FSNumber numberWithDouble:tableViewSelectionHighlightStyle]; - } -} + /////////////////// Objective-C 2.0 declared properties /////////////////// + if ([[NSUserDefaults standardUserDefaults] boolForKey:@"FScriptAutomaticallyIntrospectDeclaredProperties"]) { + [self introspectPropertiesOfObject:object]; + } -static id objectFromSliderType(NSSliderType sliderType) -{ - switch (sliderType) - { - case NSLinearSlider: return [FSNamedNumber namedNumberWithDouble:sliderType name:@"NSLinearSlider"]; - case NSCircularSlider: return [FSNamedNumber namedNumberWithDouble:sliderType name:@"NSCircularSlider"]; - default: return [FSNumber numberWithDouble:sliderType]; - } + /////////////////// Bindings /////////////////// + if ([object respondsToSelector:@selector(exposedBindings)] && [object respondsToSelector:@selector(infoForBinding:)]) { + NSUInteger i, count; + NSArray* exposedBindings = nil; + + // Several Cocoa objects have a buggy implementation of the exposedBindings method (e.g. NSTextView), + // which leads to an exception being thrown when the method is called on certain *class* objects. + // We work around these bugs here by preventing the buggy exception to interupt the current method. + // Note: I'm writing this in Mac OS X 10.4.6. + // Update for 10.5: the exposedBindings method now crash for certain class objects. I work around this + // bellow by not calling it at all on class objects. + @try { + if ([object class] != object) + exposedBindings = [object exposedBindings]; + } + @catch (id exeption) + { + } + + if (exposedBindings) { + for (i = 0, count = [exposedBindings count]; i < count; i++) + if ([object infoForBinding:[exposedBindings objectAtIndex:i]]) + break; + + if (i < count && count > 0) { + classLabel = @"Bindings"; + [view addClassLabel:classLabel toMatrix:m color:[NSColor colorWithCalibratedRed:0 green:0.7098 blue:1 alpha:1]]; + + for (i = 0, count = [exposedBindings count]; i < count; i++) { + [view addBindingForObject:object withName:[exposedBindings objectAtIndex:i] toMatrix:m classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; + } + + ADD_OBJECT_RO(exposedBindings, @"Exposed Bindings"); + } + } + } + [self populateModelWithObject:object]; } -static id objectFromStatusItemLength(CGFloat statusItemLength) +-(void)_resetRootNodeWithObject:(id)object { - if (statusItemLength == NSVariableStatusItemLength) return [FSNamedNumber namedNumberWithDouble:statusItemLength name:@"NSVariableStatusItemLength"]; - else if (statusItemLength == NSSquareStatusItemLength) return [FSNamedNumber namedNumberWithDouble:statusItemLength name:@"NSSquareStatusItemLength"]; - else return [FSNumber numberWithDouble:statusItemLength]; + self.rootViewModelItem = [FSObjectInspectorViewModelItem treeNodeWithRepresentedObject:object]; + self.currentViewModelItem = self.rootViewModelItem; + self.rootViewModelItem.value = object; } -static id objectFromStringEncoding(NSStringEncoding stringEncoding) +- (void)populateModelWithObject:(id)object { - switch (stringEncoding) - { - case NSASCIIStringEncoding: return [FSNamedNumber namedNumberWithDouble:stringEncoding name:@"NSASCIIStringEncoding"]; - case NSNEXTSTEPStringEncoding: return [FSNamedNumber namedNumberWithDouble:stringEncoding name:@"NSNEXTSTEPStringEncoding"]; - case NSJapaneseEUCStringEncoding: return [FSNamedNumber namedNumberWithDouble:stringEncoding name:@"NSJapaneseEUCStringEncoding"]; - case NSUTF8StringEncoding: return [FSNamedNumber namedNumberWithDouble:stringEncoding name:@"NSUTF8StringEncoding"]; - case NSISOLatin1StringEncoding: return [FSNamedNumber namedNumberWithDouble:stringEncoding name:@"NSISOLatin1StringEncoding"]; - case NSSymbolStringEncoding: return [FSNamedNumber namedNumberWithDouble:stringEncoding name:@"NSSymbolStringEncoding"]; - case NSNonLossyASCIIStringEncoding: return [FSNamedNumber namedNumberWithDouble:stringEncoding name:@"NSNonLossyASCIIStringEncoding"]; - case NSShiftJISStringEncoding: return [FSNamedNumber namedNumberWithDouble:stringEncoding name:@"NSShiftJISStringEncoding"]; - case NSISOLatin2StringEncoding: return [FSNamedNumber namedNumberWithDouble:stringEncoding name:@"NSISOLatin2StringEncoding"]; - case NSUnicodeStringEncoding: return [FSNamedNumber namedNumberWithDouble:stringEncoding name:@"NSUnicodeStringEncoding"]; - case NSWindowsCP1251StringEncoding: return [FSNamedNumber namedNumberWithDouble:stringEncoding name:@"NSWindowsCP1251StringEncoding"]; - case NSWindowsCP1252StringEncoding: return [FSNamedNumber namedNumberWithDouble:stringEncoding name:@"NSWindowsCP1252StringEncoding"]; - case NSWindowsCP1253StringEncoding: return [FSNamedNumber namedNumberWithDouble:stringEncoding name:@"NSWindowsCP1253StringEncoding"]; - case NSWindowsCP1254StringEncoding: return [FSNamedNumber namedNumberWithDouble:stringEncoding name:@"NSWindowsCP1254StringEncoding"]; - case NSWindowsCP1250StringEncoding: return [FSNamedNumber namedNumberWithDouble:stringEncoding name:@"NSWindowsCP1250StringEncoding"]; - case NSISO2022JPStringEncoding: return [FSNamedNumber namedNumberWithDouble:stringEncoding name:@"NSISO2022JPStringEncoding"]; - case NSMacOSRomanStringEncoding: return [FSNamedNumber namedNumberWithDouble:stringEncoding name:@"NSMacOSRomanStringEncoding"]; - default: return [FSNumber numberWithDouble:stringEncoding]; - } + [self _resetRootNodeWithObject:object]; + if (!view && [object isKindOfClass:NSView.class]) { + self.rootViewModelItem.valueClass = NSView.class; + [self populateModelWithAssociatedViews:object]; + } + // For each documented base class the object inherits from, populate the matrix with 'interesting' values + // declared as members of that base class + for (Class baseClass in FSObjectBrowserViewObjectHelper.baseClasses) { + if ([object isKindOfClass:baseClass]) { + NSString* method = [NSString stringWithFormat:@"add%@:", [baseClass className]]; + SEL selector = NSSelectorFromString(method); + + NSAssert([self respondsToSelector:selector], @"Missing base class method"); + + [self performSelector:selector withObject:object]; + break; + } + } } -static id objectFromTableColumnResizingMask(NSUInteger mask) +-(void)populateModelWithAssociatedViews:(id)object { - if (mask & ~(NSTableColumnAutoresizingMask | NSTableColumnUserResizingMask)) return [FSNumber numberWithDouble:mask]; - else if (mask == 0) return [FSNamedNumber namedNumberWithDouble:mask name:@"NSTableColumnNoResizing"]; - else - { - NSMutableString *str = [NSMutableString string]; - - if (mask & NSTableColumnNoResizing) [str appendString:@"NSTableColumnAutoresizingMask"]; - if (mask & NSTableColumnUserResizingMask) [str appendString:[str length] == 0 ? @"NSTableColumnUserResizingMask" : @" + NSTableColumnUserResizingMask"]; - return [FSNamedNumber namedNumberWithDouble:mask name:str]; - } -} + NSView* o = object; -static id objectFromTableViewColumnAutoresizingStyle(NSTableViewColumnAutoresizingStyle tableViewColumnAutoresizingStyle) -{ - switch (tableViewColumnAutoresizingStyle) - { - case NSTableViewNoColumnAutoresizing: return [FSNamedNumber namedNumberWithDouble:tableViewColumnAutoresizingStyle name:@"NSTableViewNoColumnAutoresizing"]; - case NSTableViewUniformColumnAutoresizingStyle: return [FSNamedNumber namedNumberWithDouble:tableViewColumnAutoresizingStyle name:@"NSTableViewUniformColumnAutoresizingStyle"]; - case NSTableViewSequentialColumnAutoresizingStyle: return [FSNamedNumber namedNumberWithDouble:tableViewColumnAutoresizingStyle name:@"NSTableViewSequentialColumnAutoresizingStyle"]; - case NSTableViewReverseSequentialColumnAutoresizingStyle: return [FSNamedNumber namedNumberWithDouble:tableViewColumnAutoresizingStyle name:@"NSTableViewReverseSequentialColumnAutoresizingStyle"]; - case NSTableViewLastColumnOnlyAutoresizingStyle: return [FSNamedNumber namedNumberWithDouble:tableViewColumnAutoresizingStyle name:@"NSTableViewLastColumnOnlyAutoresizingStyle"]; - case NSTableViewFirstColumnOnlyAutoresizingStyle: return [FSNamedNumber namedNumberWithDouble:tableViewColumnAutoresizingStyle name:@"NSTableViewFirstColumnOnlyAutoresizingStyle"]; - default: return [FSNumber numberWithDouble:tableViewColumnAutoresizingStyle]; - } + ADD_OBJECT(o, superview, NSView.class, YES); + + if (o.subviews.count) { + [self addGroup:@"Subviews"]; + NSUInteger idx = 0; + for (NSView *subview in o.subviews) { + ADD_OBJECT_RO(subview, ([NSString stringWithFormat:@"Subviews[%lu]",idx]), NSView.class) + ++idx; + } + [self endGroup]; + } } -static id objectFromTabState(NSTabState tabState) -{ - switch (tabState) - { - case NSBackgroundTab: return [FSNamedNumber namedNumberWithDouble:tabState name:@"NSBackgroundTab"]; - case NSPressedTab: return [FSNamedNumber namedNumberWithDouble:tabState name:@"NSPressedTab"]; - case NSSelectedTab: return [FSNamedNumber namedNumberWithDouble:tabState name:@"NSSelectedTab"]; - default: return [FSNumber numberWithDouble:tabState]; - } +-(void)introspectPropertiesOfObject:(id)object +{ + Class cls = [object classOrMetaclass]; + while (cls) { + unsigned int i, count; + objc_property_t* properties = class_copyPropertyList(cls, &count); + if (properties != NULL && !(cls == [NSView class])) // Second part of condition is a quick fix to avoid bloating display for the NSView class with a "one property" section (10.5.0) or spurious properties (10.6). TODO: revise this. + { + classLabel = [NSString stringWithFormat:@"%@ Properties", [cls printString]]; + [view addClassLabel:classLabel toMatrix:m color:[NSColor magentaColor]]; + + for (i = 0; i < count; i++) { + NSString* propertyName = [NSString stringWithUTF8String:property_getName(properties[i])]; + NSString* propertyEncoding = [NSString stringWithUTF8String:property_getAttributes(properties[i])]; + NSError* error = nil; + NSRegularExpression* customGetterRegexp = [NSRegularExpression regularExpressionWithPattern:@"(?:^G|,G)([^,]+)" options:0 error:&error]; + NSTextCheckingResult* customGetterMatch = [customGetterRegexp firstMatchInString:propertyEncoding options:0 range:NSMakeRange(0, propertyEncoding.length)]; + NSString* getter = propertyName; + if (customGetterMatch) { + getter = [propertyEncoding substringWithRange:[customGetterMatch rangeAtIndex:1]]; + } + + id propertyValue = nil; // initialized to nil in order to shut down a spurious warning + NSString* errorMessage = nil; + + @try { + propertyValue = [[[[@"[:object| object " stringByAppendingString:getter] stringByAppendingString:@"]"] asBlock] value:object]; + } + @catch (id exception) + { + errorMessage = [@"F-Script can't display the value of this property. " stringByAppendingString:FSErrorMessageFromException(exception)]; + [view addObject:errorMessage withLabel:propertyName toMatrix:m leaf:YES classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject indentationLevel:0]; + } + if (!errorMessage) + ADD_OBJECT_RO(propertyValue, propertyName) + } + free(properties); + } + if (cls == [cls superclass]) // Defensive programming against flawed class hierarchies with infinite loops. + cls = nil; + else + cls = [cls superclass]; + } + } -static id objectFromTabViewType(NSTabViewType tabViewType) -{ - switch (tabViewType) - { - case NSTopTabsBezelBorder: return [FSNamedNumber namedNumberWithDouble:tabViewType name:@"NSTopTabsBezelBorder"]; - case NSLeftTabsBezelBorder: return [FSNamedNumber namedNumberWithDouble:tabViewType name:@"NSLeftTabsBezelBorder"]; - case NSBottomTabsBezelBorder: return [FSNamedNumber namedNumberWithDouble:tabViewType name:@"NSBottomTabsBezelBorder"]; - case NSRightTabsBezelBorder: return [FSNamedNumber namedNumberWithDouble:tabViewType name:@"NSRightTabsBezelBorder"]; - case NSNoTabsBezelBorder: return [FSNamedNumber namedNumberWithDouble:tabViewType name:@"NSNoTabsBezelBorder"]; - case NSNoTabsLineBorder: return [FSNamedNumber namedNumberWithDouble:tabViewType name:@"NSNoTabsLineBorder"]; - case NSNoTabsNoBorder: return [FSNamedNumber namedNumberWithDouble:tabViewType name:@"NSNoTabsNoBorder"]; - default: return [FSNumber numberWithDouble:tabViewType]; - } ++ (NSArray*)baseClasses +{ + static NSArray *sBaseClasses = nil; + if (!sBaseClasses) { + sBaseClasses = [[NSArray alloc] initWithObjects: + [FSGenericPointer class], + [FSObjectPointer class], + [NSAffineTransform class], + [NSAlert class], + [NSAnimation class], + [NSAnimationContext class], + [NSAttributedString class], + [NSBezierPath class], + [NSCell class], + [NSCollectionViewItem class], + [NSComparisonPredicate class], + [NSCompoundPredicate class], + [NSController class], + [NSCursor class], + [NSDockTile class], + [NSDocument class], + [NSDocumentController class], + [NSEntityDescription class], + [NSEvent class], + [NSExpression class], + [NSFetchRequest class], + [NSFileWrapper class], + [NSFont class], + [NSFontDescriptor class], + [NSFontManager class], + [NSGlyphInfo class], + [NSGlyphGenerator class], + [NSGradient class], + [NSGraphicsContext class], + [NSImage class], + [NSImageRep class], + [NSLayoutManager class], + [NSManagedObjectContext class], + [NSManagedObjectID class], + [NSManagedObjectModel class], + [NSMenu class], + [NSMenuItem class], + [NSOpenGLContext class], + [NSOpenGLPixelBuffer class], + [NSOpenGLPixelFormat class], + [NSPageLayout class], + [NSParagraphStyle class], + [NSPersistentStoreCoordinator class], + [NSPredicateEditorRowTemplate class], + [NSPropertyDescription class], + [NSResponder class], + [NSRulerMarker class], + [NSScreen class], + [NSShadow class], + [NSStatusBar class], + [NSStatusItem class], + [NSTabViewItem class], + [NSTableColumn class], + [NSTextAttachment class], + [NSTextBlock class], + [NSTextContainer class], + [NSTextList class], + [NSTextTab class], + [NSToolbar class], + [NSToolbarItem class], + [NSTrackingArea class], + [NSUndoManager class], + [NSATSTypesetter class], + nil]; + } + return sBaseClasses; } - -static id objectFromTextAlignment(NSTextAlignment alignment) +- (void)addFSGenericPointer:(id)object { - switch (alignment) - { - case NSLeftTextAlignment: return [FSNamedNumber namedNumberWithDouble:alignment name:@"NSLeftTextAlignment"]; - case NSRightTextAlignment: return [FSNamedNumber namedNumberWithDouble:alignment name:@"NSRightTextAlignment"]; - case NSCenterTextAlignment: return [FSNamedNumber namedNumberWithDouble:alignment name:@"NSCenterTextAlignment"]; - case NSJustifiedTextAlignment: return [FSNamedNumber namedNumberWithDouble:alignment name:@"NSJustifiedTextAlignment"]; - case NSNaturalTextAlignment: return [FSNamedNumber namedNumberWithDouble:alignment name:@"NSNaturalTextAlignment"]; - default: return [FSNumber numberWithDouble:alignment]; - } -} + FSGenericPointer* o = object; + NSArray* memoryContent = [o memoryContent]; -static id objectFromTextBlockValueType(NSTextBlockValueType valueType) -{ - switch (valueType) - { - case NSTextBlockAbsoluteValueType: return [FSNamedNumber namedNumberWithDouble:valueType name:@"NSTextBlockAbsoluteValueType"]; - case NSTextBlockPercentageValueType: return [FSNamedNumber namedNumberWithDouble:valueType name:@"NSTextBlockPercentageValueType"]; - default: return [FSNumber numberWithDouble:valueType]; - } + if (memoryContent) { + ADD_CLASS_LABEL(@"FSGenericPointer Info"); + ADD_OBJECT_RO(memoryContent, @"Memory content") + ADD_OBJECT_NOT_NIL(o, memoryContentUTF8) + } } -static id objectFromTextBlockVerticalAlignment(NSTextBlockVerticalAlignment verticalAlignment) +- (void)addFSObjectPointer:(id)object { - switch (verticalAlignment) - { - case NSTextBlockTopAlignment: return [FSNamedNumber namedNumberWithDouble:verticalAlignment name:@"NSTextBlockAbsoluteValueType"]; - case NSTextBlockMiddleAlignment: return [FSNamedNumber namedNumberWithDouble:verticalAlignment name:@"NSTextBlockPercentageValueType"]; - case NSTextBlockBottomAlignment: return [FSNamedNumber namedNumberWithDouble:verticalAlignment name:@"NSTextBlockAbsoluteValueType"]; - case NSTextBlockBaselineAlignment: return [FSNamedNumber namedNumberWithDouble:verticalAlignment name:@"NSTextBlockPercentageValueType"]; - default: return [FSNumber numberWithDouble:verticalAlignment]; - } -} + FSObjectPointer* o = object; + NSArray* memoryContent = [o memoryContent]; -static id objectFromTextFieldBezelStyle(NSTextFieldBezelStyle textFielBezelStyle) -{ - switch (textFielBezelStyle) - { - case NSTextFieldSquareBezel: return [FSNamedNumber namedNumberWithDouble:textFielBezelStyle name:@"NSTextFieldSquareBezel"]; - case NSTextFieldRoundedBezel: return [FSNamedNumber namedNumberWithDouble:textFielBezelStyle name:@"NSTextFieldRoundedBezel"]; - default: return [FSNumber numberWithDouble:textFielBezelStyle]; - } + if (memoryContent) { + ADD_CLASS_LABEL(@"FSObjectPointer Info"); + ADD_OBJECT_RO(memoryContent, @"Memory content") + } } -static id objectFromTextListOptionsMask(NSUInteger mask) +- (void)addNSAffineTransform:(id)object { - if (mask == 0 || (mask & ~(NSTextListPrependEnclosingMarker))) return [FSNumber numberWithDouble:mask]; - else - { - NSMutableString *str = [NSMutableString string]; - - if (mask & NSTextListPrependEnclosingMarker) [str appendString:@"NSTextListPrependEnclosingMarker"]; - return [FSNamedNumber namedNumberWithDouble:mask name:str]; - } + NSAffineTransform* o = object; + ADD_CLASS_LABEL(@"NSAffineTransform Info"); + ADD_NUMBER_GETSET(o, {NSAffineTransform *o = obj; return o.transformStruct.m11; }, { ; }, @"m11") + ADD_NUMBER_GETSET(o, {NSAffineTransform *o = obj; return o.transformStruct.m12; }, { ;}, @"m12") + ADD_NUMBER_GETSET(o, {NSAffineTransform *o = obj; return o.transformStruct.m21; }, { ;}, @"m21") + ADD_NUMBER_GETSET(o, {NSAffineTransform *o = obj; return o.transformStruct.m22; }, { ;}, @"m22") + ADD_NUMBER_GETSET(o, {NSAffineTransform *o = obj; return o.transformStruct.tX; }, { ;}, @"tX") + ADD_NUMBER_GETSET(o, {NSAffineTransform *o = obj; return o.transformStruct.tY; }, { ;}, @"tY") } -static id objectFromTextStorageEditedMask(NSUInteger mask) +- (void)addNSAlert:(id)object { - if (mask == 0 || (mask & ~(NSTextStorageEditedAttributes | NSTextStorageEditedAttributes))) return [FSNumber numberWithDouble:mask]; - else - { - NSMutableString *str = [NSMutableString string]; - - if (mask & NSTextStorageEditedAttributes) [str appendString:@"NSTextStorageEditedAttributes"]; - if (mask & NSTextStorageEditedCharacters) [str appendString:[str length] == 0 ? @"NSTextStorageEditedCharacters" : @" + NSTextStorageEditedCharacters"]; - return [FSNamedNumber namedNumberWithDouble:mask name:str]; - } + NSAlert* o = object; + ADD_CLASS_LABEL(@"NSAlert Info"); + ADD_OBJECT(o, accessoryView) + ADD_ENUM(o, alertStyle, AlertStyle) + ADD_OBJECTS(o, buttons) + ADD_OBJECT(o, delegate, NSObject.class, YES) + ADD_OBJECT_NOT_NIL(o, helpAnchor) + ADD_OBJECT(o, icon) + ADD_STRING(o, informativeText) + ADD_STRING(o, messageText) + ADD_BOOL(o, showsHelp) + ADD_BOOL(o, showsSuppressionButton) + ADD_OBJECT(o, suppressionButton) + ADD_OBJECT(o, window) } -static id objectFromTextTableLayoutAlgorithm(NSTextTableLayoutAlgorithm layoutAlgorithm) +- (void)addNSAnimation:(id)object { - switch (layoutAlgorithm) - { - case NSTextTableAutomaticLayoutAlgorithm: return [FSNamedNumber namedNumberWithDouble:layoutAlgorithm name:@"NSTextTableAutomaticLayoutAlgorithm"]; - case NSTextTableFixedLayoutAlgorithm: return [FSNamedNumber namedNumberWithDouble:layoutAlgorithm name:@"NSTextTableFixedLayoutAlgorithm"]; - default: return [FSNumber numberWithDouble:layoutAlgorithm]; - } -} + if ([object isKindOfClass:[NSViewAnimation class]]) { + NSViewAnimation* o = object; -static id objectFromTextTabType(NSTextTabType textTabType) -{ - switch (textTabType) - { - case NSLeftTabStopType: return [FSNamedNumber namedNumberWithDouble:textTabType name:@"NSLeftTabStopType"]; - case NSRightTabStopType: return [FSNamedNumber namedNumberWithDouble:textTabType name:@"NSRightTabStopType"]; - case NSCenterTabStopType: return [FSNamedNumber namedNumberWithDouble:textTabType name:@"NSCenterTabStopType"]; - case NSDecimalTabStopType: return [FSNamedNumber namedNumberWithDouble:textTabType name:@"NSDecimalTabStopType"]; - default: return [FSNumber numberWithDouble:textTabType]; - } -} + if ([o viewAnimations] != nil) { + ADD_CLASS_LABEL(@"NSViewAnimation Info"); + ADD_OBJECTS(o, viewAnimations) + } + } -static id objectFromTickMarkPosition(NSTickMarkPosition tickMarkPosition, BOOL isVertical) -{ - switch (tickMarkPosition) - { - case NSTickMarkBelow: return [FSNamedNumber namedNumberWithDouble:tickMarkPosition name: isVertical ? @"NSTickMarkRight" : @"NSTickMarkBelow"]; - case NSTickMarkAbove: return [FSNamedNumber namedNumberWithDouble:tickMarkPosition name: isVertical ? @"NSTickMarkLeft" : @"NSTickMarkAbove"]; - //case NSTickMarkLeft: return [NamedNumber namedNumberWithDouble:tickMarkPosition name:@"NSTickMarkLeft"]; - //case NSTickMarkRight: return [NamedNumber namedNumberWithDouble:tickMarkPosition name:@"NSTickMarkRight"]; - default: return [FSNumber numberWithDouble:tickMarkPosition]; - } + NSAnimation* o = object; + ADD_CLASS_LABEL(@"NSAnimation Info"); + ADD_ENUM(o, animationBlockingMode, AnimationBlockingMode) + ADD_ENUM(o, animationCurve, AnimationCurve) + ADD_NUMBER(o, currentProgress) + ADD_NUMBER(o, currentValue) + ADD_OBJECT(o, delegate, NSObject.class, YES) + ADD_NUMBER(o, duration) + ADD_NUMBER(o, frameRate) + ADD_BOOL(o, isAnimating) + ADD_OBJECTS(o, progressMarks) + ADD_OBJECT(o, runLoopModesForAnimating) } -static id objectFromTIFFCompression(NSTIFFCompression compression) +- (void)addNSAnimationContext:(id)object { - switch (compression) - { - case NSTIFFCompressionNone: return [FSNamedNumber namedNumberWithDouble:compression name:@"NSTIFFCompressionNone"]; - case NSTIFFCompressionCCITTFAX3: return [FSNamedNumber namedNumberWithDouble:compression name:@"NSTIFFCompressionCCITTFAX3"]; - case NSTIFFCompressionCCITTFAX4: return [FSNamedNumber namedNumberWithDouble:compression name:@"NSTIFFCompressionCCITTFAX4"]; - case NSTIFFCompressionLZW: return [FSNamedNumber namedNumberWithDouble:compression name:@"NSTIFFCompressionLZW"]; - case NSTIFFCompressionJPEG: return [FSNamedNumber namedNumberWithDouble:compression name:@"NSTIFFCompressionJPEG"]; - case NSTIFFCompressionNEXT: return [FSNamedNumber namedNumberWithDouble:compression name:@"NSTIFFCompressionNEXT"]; - case NSTIFFCompressionPackBits: return [FSNamedNumber namedNumberWithDouble:compression name:@"NSTIFFCompressionPackBits"]; - case NSTIFFCompressionOldJPEG: return [FSNamedNumber namedNumberWithDouble:compression name:@"NSTIFFCompressionOldJPEG"]; - default: return [FSNumber numberWithDouble:compression]; - } + NSAnimationContext* o = object; + ADD_CLASS_LABEL(@"NSAnimationContext Info"); + ADD_NUMBER(o, duration) } -static id objectFromTitlePosition(NSTitlePosition titlePosition) +- (void)addNSAttributedString:(id)object { - switch (titlePosition) - { - case NSNoTitle: return [FSNamedNumber namedNumberWithDouble:titlePosition name:@"NSNoTitle"]; - case NSAboveTop: return [FSNamedNumber namedNumberWithDouble:titlePosition name:@"NSAboveTop"]; - case NSAtTop: return [FSNamedNumber namedNumberWithDouble:titlePosition name:@"NSAtTop"]; - case NSBelowTop: return [FSNamedNumber namedNumberWithDouble:titlePosition name:@"NSBelowTop"]; - case NSAboveBottom: return [FSNamedNumber namedNumberWithDouble:titlePosition name:@"NSAboveBottom"]; - case NSAtBottom: return [FSNamedNumber namedNumberWithDouble:titlePosition name:@"NSAtBottom"]; - case NSBelowBottom: return [FSNamedNumber namedNumberWithDouble:titlePosition name:@"NSBelowBottom"]; - default: return [FSNumber numberWithDouble:titlePosition]; - } + if ([object isKindOfClass:[NSMutableAttributedString class]]) { + if ([object isKindOfClass:[NSTextStorage class]]) { + NSTextStorage* o = object; + ADD_CLASS_LABEL(@"NSTextStorage Info"); + //ADD_OBJECT( [o attributeRuns] ,@"Attribute runs") + ADD_NUMBER(o, changeInLength) + ADD_OBJECT(o, delegate, NSObject.class, YES) + ADD_OPTIONS(o, editedMask, TextStorageEditedOptions) + ADD_RANGE(o, editedRange) + ADD_BOOL(o, fixesAttributesLazily) + ADD_OBJECT(o, font) + ADD_COLOR(o, foregroundColor) + ADD_OBJECTS(o, layoutManagers) + // Note: invoking "paragraphs" and retaining the result cause the result of "layoutManager" to become trash ! + } + } } -static id objectFromTokenStyle(NSTokenStyle tokenStyle) +- (void)addNSBezierPath:(id)object { - switch (tokenStyle) - { - case NSDefaultTokenStyle: return [FSNamedNumber namedNumberWithDouble:tokenStyle name:@"NSDefaultTokenStyle"]; - case NSPlainTextTokenStyle: return [FSNamedNumber namedNumberWithDouble:tokenStyle name:@"NSPlainTextTokenStyle"]; - case NSRoundedTokenStyle: return [FSNamedNumber namedNumberWithDouble:tokenStyle name:@"NSRoundedTokenStyle"]; - default: return [FSNumber numberWithDouble:tokenStyle]; - } + NSBezierPath* o = object; + ADD_CLASS_LABEL(@"NSBezierPath Info"); + ADD_RECT(o, bounds) + ADD_RECT(o, controlPointBounds) + if (![o isEmpty]) + ADD_POINT(o, currentPoint) + ADD_NUMBER(o, elementCount) + ADD_NUMBER(o, flatness) + ADD_BOOL(o, isEmpty) + ADD_ENUM(o, lineCapStyle, LineCapStyle) + ADD_ENUM(o, lineJoinStyle, LineJoinStyle) + ADD_NUMBER(o, lineWidth) + ADD_NUMBER(o, miterLimit) + ADD_ENUM(o, windingRule, WindingRule) } -static id objectFromToolbarDisplayMode(NSToolbarDisplayMode toolbarDisplayMode) +- (void)addNSCell:(id)object { - switch (toolbarDisplayMode) - { - case NSToolbarDisplayModeDefault: return [FSNamedNumber namedNumberWithDouble:toolbarDisplayMode name:@"NSToolbarDisplayModeDefault"]; - case NSToolbarDisplayModeIconAndLabel: return [FSNamedNumber namedNumberWithDouble:toolbarDisplayMode name:@"NSToolbarDisplayModeIconAndLabel"]; - case NSToolbarDisplayModeIconOnly: return [FSNamedNumber namedNumberWithDouble:toolbarDisplayMode name:@"NSToolbarDisplayModeIconOnly"]; - case NSToolbarDisplayModeLabelOnly: return [FSNamedNumber namedNumberWithDouble:toolbarDisplayMode name:@"NSToolbarDisplayModeLabelOnly"]; - default: return [FSNumber numberWithDouble:toolbarDisplayMode]; - } -} + if ([object isKindOfClass:[NSActionCell class]]) { + if ([object isKindOfClass:[NSButtonCell class]]) { + if ([object isKindOfClass:[NSMenuItemCell class]]) { + if ([object isKindOfClass:[NSPopUpButtonCell class]]) { + NSPopUpButtonCell* o = object; + ADD_CLASS_LABEL(@"NSPopUpButtonCell Info"); + ADD_BOOL(o, altersStateOfSelectedItem) + ADD_ENUM(o, arrowPosition, PopUpArrowPosition) + ADD_BOOL(o, autoenablesItems) + ADD_NUMBER(o, indexOfSelectedItem) + ADD_OBJECTS(o, itemArray) + ADD_NUMBER(o, numberOfItems) + ADD_OBJECT(o, objectValue) + ADD_ENUM(o, preferredEdge, RectEdge) + ADD_BOOL(o, pullsDown) + ADD_OBJECT(o, selectedItem) + ADD_BOOL(o, usesItemFromMenu) + } + + NSMenuItemCell* o = object; + ADD_CLASS_LABEL(@"NSMenuItemCell Info"); + if ([[o menuItem] image]) + ADD_NUMBER(o, imageWidth) + ADD_BOOL(o, isHighlighted) + if (![[[o menuItem] keyEquivalent] isEqualToString:@""]) + ADD_NUMBER(o, keyEquivalentWidth) + ADD_OBJECT(o, menuItem) + ADD_BOOL(o, needsDisplay) + ADD_BOOL(o, needsSizing) + ADD_NUMBER(o, stateImageWidth) + ADD_NUMBER(o, titleWidth) + } + + NSButtonCell* o = object; + ADD_CLASS_LABEL(@"NSButtonCell Info"); + ADD_OBJECT_NOT_NIL(o, alternateImage) + ADD_STRING(o, alternateTitle) + ADD_OBJECT(o, attributedAlternateTitle) + ADD_OBJECT(o, attributedTitle) + ADD_COLOR(o, backgroundColor) + ADD_ENUM(o, bezelStyle, BezelStyle) + ADD_ENUM(o, gradientType, GradientType) + ADD_OPTIONS(o, highlightsBy, CellStyleMask) + ADD_BOOL(o, imageDimsWhenDisabled) + ADD_ENUM(o, imagePosition, CellImagePosition) + ADD_ENUM(o, imageScaling, ImageScaling) + ADD_BOOL(o, isTransparent) + ADD_OBJECT_NOT_NIL(o, keyEquivalentFont) + ADD_OPTIONS( o, keyEquivalentModifierMask, EventModifierFlags) + ADD_BOOL(o, showsBorderOnlyWhileMouseInside) + ADD_OPTIONS(o, showsStateBy, CellStyleMask) + ADD_OBJECT_NOT_NIL(o, sound) + ADD_STRING(o, title) + } + else if ([object isKindOfClass:[NSDatePickerCell class]]) { + NSDatePickerCell* o = object; + ADD_CLASS_LABEL(@"NSDatePickerCell Info"); + ADD_COLOR(o, backgroundColor) + ADD_OBJECT(o, calendar) + ADD_OPTIONS(o, datePickerElements, DatePickerElementFlags) + ADD_ENUM(o, datePickerMode, DatePickerMode) + ADD_ENUM(o, datePickerStyle, DatePickerStyle) + ADD_OBJECT(o, dateValue) + ADD_OBJECT(o, delegate, NSObject.class, YES) + ADD_BOOL(o, drawsBackground) + ADD_OBJECT_NOT_NIL(o, locale) + ADD_OBJECT(o, maxDate) + ADD_OBJECT(o, minDate) + ADD_COLOR(o, textColor) + ADD_NUMBER(o, timeInterval) + ADD_OBJECT(o, timeZone) + } + else if ([object isKindOfClass:[NSFormCell class]]) { + NSFormCell* o = object; + ADD_CLASS_LABEL(@"NSFormCell Info"); + ADD_OBJECT(o, attributedTitle) + ADD_OBJECT_NOT_NIL(o, placeholderAttributedString) + ADD_STRING_NOT_NIL(o, placeholderString) + ADD_ENUM(o, titleAlignment, TextAlignment) + ADD_ENUM(o, titleBaseWritingDirection, WritingDirection) + ADD_OBJECT(o, titleFont) + ADD_NUMBER(o, titleWidth) + } + else if ([object isKindOfClass:[NSLevelIndicatorCell class]]) { + NSLevelIndicatorCell* o = object; + ADD_CLASS_LABEL(@"NSLevelIndicatorCell Info"); + ADD_NUMBER(o, criticalValue) + ADD_ENUM(o, levelIndicatorStyle, LevelIndicatorStyle) + ADD_NUMBER(o, maxValue) + ADD_NUMBER(o, minValue) + ADD_NUMBER(o, numberOfMajorTickMarks) + ADD_NUMBER(o, numberOfTickMarks) + ADD_OBJECT_RO(objectFromTickMarkPosition([o tickMarkPosition],NO), @"Tick mark position") + ADD_NUMBER(o, warningValue) + } + else if ([object isKindOfClass:[NSPathCell class]]) { + NSPathCell* o = object; + ADD_CLASS_LABEL(@"NSPathCell Info"); + ADD_OBJECTS(o, allowedTypes) + ADD_COLOR_NOT_NIL(o, backgroundColor) + ADD_OBJECT(o, delegate, NSObject.class) + ADD_SEL(o, doubleAction) + ADD_OBJECTS(o, pathComponentCells) + ADD_ENUM(o, pathStyle, PathStyle) + ADD_OBJECT_NOT_NIL(o, placeholderAttributedString) + ADD_STRING_NOT_NIL(o, placeholderString) + ADD_OBJECT_NOT_NIL(o, URL) + } + else if ([object isKindOfClass:[NSSegmentedCell class]]) { + NSSegmentedCell* o = object; + ADD_CLASS_LABEL(@"NSSegmentedCell Info"); + + ADD_NUMBER(o, segmentCount) + ADD_NUMBER(o, selectedSegment) + ADD_ENUM(o, trackingMode, SegmentSwitchTracking) + + [self processSegmentedItem:o]; + } + else if ([object isKindOfClass:[NSSliderCell class]]) { + NSSliderCell* o = object; + ADD_CLASS_LABEL(@"NSSliderCell Info"); + ADD_BOOL(o, allowsTickMarkValuesOnly) + ADD_NUMBER(o, altIncrementValue) +#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_10 + ADD_BOOL(o, isVertical) + ADD_NUMBER(o, knobThickness) +#endif + ADD_NUMBER(o, maxValue) + ADD_NUMBER(o, minValue) + ADD_NUMBER(o, numberOfTickMarks) + ADD_ENUM(o, sliderType, SliderType) + ADD_OBJECT_RO(objectFromTickMarkPosition([o tickMarkPosition], [(NSSliderCell*)o isVertical] == 1), @"Tick mark position") + ADD_RECT(o, trackRect) + } + else if ([object isKindOfClass:[NSStepperCell class]]) { + NSStepperCell* o = object; + ADD_CLASS_LABEL(@"NSStepperCell Info"); + ADD_BOOL(o, autorepeat) + ADD_NUMBER(o, increment) + ADD_NUMBER(o, maxValue) + ADD_NUMBER(o, minValue) + ADD_BOOL(o, valueWraps) + } + else if ([object isKindOfClass:[NSTextFieldCell class]]) { + if ([object isKindOfClass:[NSComboBoxCell class]]) { + NSComboBoxCell* o = object; + ADD_CLASS_LABEL(@"NSComboBoxCell Info"); + if ([o usesDataSource]) + ADD_OBJECT(o, dataSource) + ADD_BOOL(o, hasVerticalScroller) + ADD_NUMBER(o, indexOfSelectedItem) + ADD_SIZE(o, intercellSpacing) + ADD_BOOL(o, isButtonBordered) + ADD_NUMBER(o, itemHeight) + ADD_NUMBER(o, numberOfItems) + ADD_NUMBER(o, numberOfVisibleItems) + if (![o usesDataSource] && [o indexOfSelectedItem] != -1) + ADD_OBJECT(o, objectValueOfSelectedItem) + if (![o usesDataSource]) + ADD_OBJECTS(o, objectValues) + ADD_BOOL(o, usesDataSource) + } + else if ([object isKindOfClass:[NSPathComponentCell class]]) { + NSPathComponentCell* o = object; + ADD_CLASS_LABEL(@"NSPathComponentCell Info"); + ADD_OBJECT_NOT_NIL(o, image) + ADD_OBJECT_NOT_NIL(o, URL) + } + else if ([object isKindOfClass:[NSSearchFieldCell class]]) { + NSSearchFieldCell* o = object; + ADD_CLASS_LABEL(@"NSSearchFieldCell Info"); + ADD_OBJECT(o, cancelButtonCell) + ADD_NUMBER(o, maximumRecents) + ADD_OBJECTS(o, recentSearches) + ADD_OBJECT_NOT_NIL(o, recentsAutosaveName) + ADD_OBJECT(o, searchButtonCell) + ADD_OBJECT_NOT_NIL(o, searchMenuTemplate) + ADD_BOOL(o, sendsSearchStringImmediately) + ADD_BOOL(o, sendsWholeSearchString) + } + else if ([object isKindOfClass:[NSTokenFieldCell class]]) { + NSTokenField* o = object; + ADD_CLASS_LABEL(@"NSTokenField Info"); + ADD_NUMBER(o, completionDelay) + ADD_OBJECT(o, delegate, NSObject.class, YES) + ADD_OBJECT(o, tokenizingCharacterSet) + ADD_ENUM(o, tokenStyle, TokenStyle) + } + + NSTextFieldCell* o = object; + ADD_CLASS_LABEL(@"NSTextFieldCell Info"); + ADD_OBJECTS(o, allowedInputSourceLocales) + ADD_COLOR(o, backgroundColor) + ADD_ENUM(o, bezelStyle, TextFieldBezelStyle) + ADD_BOOL(o, drawsBackground) + ADD_OBJECT_NOT_NIL(o, placeholderAttributedString) + ADD_STRING_NOT_NIL(o, placeholderString) + ADD_COLOR(o, textColor) + } + } + else if ([object isKindOfClass:[NSBrowserCell class]]) { + NSBrowserCell* o = object; + ADD_CLASS_LABEL(@"NSBrowserCell Info"); + ADD_OBJECT_NOT_NIL(o, alternateImage) + ADD_BOOL(o, isLeaf) + ADD_BOOL(o, isLoaded) + } + else if ([object isKindOfClass:[NSImageCell class]]) { + NSImageCell* o = object; + ADD_CLASS_LABEL(@"NSImageCell Info"); + ADD_ENUM(o, imageAlignment, ImageAlignment) + ADD_ENUM(o, imageScaling, ImageScaling) + } + else if ([object isKindOfClass:[NSTextAttachmentCell class]]) { + NSTextAttachmentCell* o = object; + ADD_CLASS_LABEL(@"NSTextAttachmentCell Info"); + ADD_OBJECT(o, attachment) + ADD_POINT(o, cellBaselineOffset) + ADD_SIZE(o, cellSize) + ADD_BOOL(o, wantsToTrackMouse) + } -static id objectFromToolbarItemVisibilityPriority(NSInteger priority) -{ - switch (priority) - { - case NSToolbarItemVisibilityPriorityStandard: return [FSNamedNumber namedNumberWithDouble:priority name:@"NSToolbarItemVisibilityPriorityStandard"]; - case NSToolbarItemVisibilityPriorityLow: return [FSNamedNumber namedNumberWithDouble:priority name:@"NSToolbarItemVisibilityPriorityLow"]; - case NSToolbarItemVisibilityPriorityHigh: return [FSNamedNumber namedNumberWithDouble:priority name:@"NSToolbarItemVisibilityPriorityHigh"]; - case NSToolbarItemVisibilityPriorityUser: return [FSNamedNumber namedNumberWithDouble:priority name:@"NSToolbarItemVisibilityPriorityUser"]; - default: return [FSNumber numberWithDouble:priority]; - } + NSCell* o = object; + ADD_CLASS_LABEL(@"NSCell Info"); + ADD_BOOL(o, acceptsFirstResponder) + ADD_SEL_NOT_NULL([o action], @"Action") + ADD_ENUM(o, alignment, TextAlignment) + ADD_BOOL(o, allowsEditingTextAttributes) + ADD_BOOL(o, allowsMixedState) + ADD_BOOL(o, allowsUndo) + //ADD_OBJECT( [o attributedStringValue] ,@"Attributed string value") + ADD_ENUM(o, backgroundStyle, BackgroundStyle) + ADD_ENUM(o, baseWritingDirection, WritingDirection) + ADD_SIZE(o, cellSize) + ADD_ENUM(o, controlSize, ControlSize) + ADD_ENUM(o, controlTint, ControlTint) + ADD_OBJECT_NOT_NIL(o, controlView) + ADD_ENUM(o, focusRingType, FocusRingType) + ADD_OBJECT(o, font) + ADD_OBJECT_NOT_NIL(o, formatter) + ADD_OBJECT_NOT_NIL(o, image) + if ([(NSCell*)o type] == NSTextCellType) + ADD_BOOL(o, importsGraphics) + ADD_ENUM(o, interiorBackgroundStyle, BackgroundStyle) + ADD_BOOL(o, isBezeled) + ADD_BOOL(o, isBordered) + ADD_BOOL(o, isContinuous) + ADD_BOOL(o, isEditable) + ADD_BOOL(o, isEnabled) + ADD_BOOL(o, isHighlighted) + ADD_BOOL(o, isOpaque) + ADD_BOOL(o, isScrollable) + ADD_BOOL(o, isSelectable) + if ([[o keyEquivalent] length] != 0) + ADD_STRING(o, keyEquivalent) + ADD_ENUM(o, lineBreakMode, LineBreakMode) + ADD_OBJECT_NOT_NIL(o, menu) + if ([[o mnemonic] length] != 0) + ADD_STRING(o, mnemonic) + if ([o mnemonicLocation] != NSNotFound) + ADD_NUMBER(o, mnemonicLocation) + ADD_ENUM(o, nextState, CellStateValue) + //ADD_OBJECT( [o objectValue] ,@"Object value") + ADD_BOOL(o, refusesFirstResponder) + ADD_OBJECT_NOT_NIL(o, representedObject) + ADD_BOOL(o, sendsActionOnEndEditing) + ADD_BOOL(o, showsFirstResponder) + ADD_ENUM(o, state, CellStateValue) + ADD_NUMBER(o, tag) + ADD_OBJECT_NOT_NIL(o, target) + ADD_OPTIONS(o, type, CellType) + ADD_BOOL(o, wantsNotificationForMarkedText) + ADD_BOOL(o, wraps) } -static id objectFromToolbarSizeMode(NSToolbarSizeMode toolbarSizeMode) +- (void)addNSCollectionViewItem:(id)object { - switch (toolbarSizeMode) - { - case NSToolbarSizeModeDefault: return [FSNamedNumber namedNumberWithDouble:toolbarSizeMode name:@"NSToolbarSizeModeDefault"]; - case NSToolbarSizeModeRegular: return [FSNamedNumber namedNumberWithDouble:toolbarSizeMode name:@"NSToolbarSizeModeRegular"]; - case NSToolbarSizeModeSmall: return [FSNamedNumber namedNumberWithDouble:toolbarSizeMode name:@"NSToolbarSizeModeSmall"]; - default: return [FSNumber numberWithDouble:toolbarSizeMode]; - } + NSCollectionViewItem* o = object; + ADD_CLASS_LABEL(@"NSCollectionViewItem Info"); + ADD_OBJECT(o, collectionView) + ADD_BOOL(o, isSelected) + ADD_OBJECT(o, representedObject) + ADD_OBJECT_NOT_NIL(o, view) } -static id objectFromTrackingAreaOptions(NSTrackingAreaOptions mask) +- (void)addNSComparisonPredicate:(id)object { - if (mask & ~(NSTrackingMouseEnteredAndExited | NSTrackingMouseMoved | NSTrackingCursorUpdate | NSTrackingActiveWhenFirstResponder | - NSTrackingActiveInKeyWindow | NSTrackingActiveInActiveApp | NSTrackingActiveAlways | NSTrackingAssumeInside | - NSTrackingInVisibleRect | NSTrackingEnabledDuringMouseDrag)) return [FSNumber numberWithDouble:mask]; - else - { - NSMutableString *str = [NSMutableString string]; - if (mask & NSTrackingMouseEnteredAndExited) [str appendString:@"NSTrackingMouseEnteredAndExited"]; - if (mask & NSTrackingMouseMoved) [str appendString:[str length] == 0 ? @"NSTrackingMouseMoved" : @" + NSTrackingMouseMoved"]; - if (mask & NSTrackingCursorUpdate) [str appendString:[str length] == 0 ? @"NSTrackingCursorUpdate" : @" + NSTrackingCursorUpdate"]; - if (mask & NSTrackingActiveWhenFirstResponder) [str appendString:[str length] == 0 ? @"NSTrackingActiveWhenFirstResponder" : @" + NSTrackingActiveWhenFirstResponder"]; - if (mask & NSTrackingActiveInKeyWindow) [str appendString:[str length] == 0 ? @"NSTrackingActiveInKeyWindow" : @" + NSTrackingActiveInKeyWindow"]; - if (mask & NSTrackingActiveInActiveApp) [str appendString:[str length] == 0 ? @"NSTrackingActiveInActiveApp" : @" + NSTrackingActiveInActiveApp"]; - if (mask & NSTrackingActiveAlways) [str appendString:[str length] == 0 ? @"NSTrackingActiveAlways" : @" + NSTrackingActiveAlways"]; - if (mask & NSTrackingAssumeInside) [str appendString:[str length] == 0 ? @"NSTrackingAssumeInside" : @" + NSTrackingAssumeInside"]; - if (mask & NSTrackingInVisibleRect) [str appendString:[str length] == 0 ? @"NSTrackingInVisibleRect" : @" + NSTrackingInVisibleRect"]; - if (mask & NSTrackingEnabledDuringMouseDrag) [str appendString:[str length] == 0 ? @"NSTrackingEnabledDuringMouseDrag" : @" + NSTrackingEnabledDuringMouseDrag"]; - - return ([str length] == 0 ? [FSNumber numberWithDouble:mask] : [FSNamedNumber namedNumberWithDouble:mask name:str]); - } + NSComparisonPredicate* o = object; + ADD_CLASS_LABEL(@"NSComparisonPredicate Info"); + ADD_ENUM(o, comparisonPredicateModifier, ComparisonPredicateModifier) + ADD_SEL_NOT_NULL([o customSelector], @"Custom selector") + ADD_OBJECT(o, leftExpression) + ADD_ENUM(o, predicateOperatorType, PredicateOperatorType) + ADD_OBJECT(o, rightExpression) } -static id objectFromTypesetterBehavior(NSTypesetterBehavior typesetterBehavior) +- (void)addNSCompoundPredicate:(id)object { - switch (typesetterBehavior) - { - case NSTypesetterLatestBehavior: return [FSNamedNumber namedNumberWithDouble:typesetterBehavior name:@"NSTypesetterLatestBehavior"]; - case NSTypesetterOriginalBehavior: return [FSNamedNumber namedNumberWithDouble:typesetterBehavior name:@"NSTypesetterOriginalBehavior"]; - case NSTypesetterBehavior_10_2_WithCompatibility: return [FSNamedNumber namedNumberWithDouble:typesetterBehavior name:@"NSTypesetterBehavior_10_2_WithCompatibility"]; - case NSTypesetterBehavior_10_2: return [FSNamedNumber namedNumberWithDouble:typesetterBehavior name:@"NSTypesetterBehavior_10_2"]; - case NSTypesetterBehavior_10_3: return [FSNamedNumber namedNumberWithDouble:typesetterBehavior name:@"NSTypesetterBehavior_10_3"]; - case NSTypesetterBehavior_10_4: return [FSNamedNumber namedNumberWithDouble:typesetterBehavior name:@"NSTypesetterBehavior_10_4"]; - default: return [FSNumber numberWithDouble:typesetterBehavior]; - } + NSCompoundPredicate* o = object; + ADD_CLASS_LABEL(@"NSCompoundPredicate Info") + ADD_ENUM(o, compoundPredicateType, CompoundPredicateType) + ADD_OBJECTS(o, subpredicates) } -static id objectFromUsableScrollerParts(NSUsableScrollerParts usableScrollerParts) -{ - switch (usableScrollerParts) - { - case NSNoScrollerParts: return [FSNamedNumber namedNumberWithDouble:usableScrollerParts name:@"NSNoScrollerParts"]; - case NSOnlyScrollerArrows: return [FSNamedNumber namedNumberWithDouble:usableScrollerParts name:@"NSOnlyScrollerArrows"]; - case NSAllScrollerParts: return [FSNamedNumber namedNumberWithDouble:usableScrollerParts name:@"NSAllScrollerParts"]; - default: return [FSNumber numberWithDouble:usableScrollerParts]; - } -} - -static id objectFromWindingRule(NSWindingRule windingRule) +- (void)addNSController:(id)object { - switch (windingRule) - { - case NSNonZeroWindingRule: return [FSNamedNumber namedNumberWithDouble:windingRule name:@"NSNonZeroWindingRule"]; - case NSEvenOddWindingRule: return [FSNamedNumber namedNumberWithDouble:windingRule name:@"NSEvenOddWindingRule"]; - default: return [FSNumber numberWithDouble:windingRule]; - } -} + if ([object isKindOfClass:[NSObjectController class]]) { + if ([object isKindOfClass:[NSArrayController class]]) { + if ([object isKindOfClass:[NSDictionaryController class]]) { + NSDictionaryController* o = object; + ADD_CLASS_LABEL(@"NSDictionaryController Info"); + ADD_OBJECTS(o, excludedKeys) + ADD_OBJECTS(o, includedKeys) + ADD_OBJECT(o, initialKey) + ADD_OBJECT(o, initialValue) + ADD_DICTIONARY(o, localizedKeyDictionary) + ADD_OBJECT_NOT_NIL(o, localizedKeyTable) + } + + NSArrayController* o = object; + ADD_CLASS_LABEL(@"NSArrayController Info"); + ADD_BOOL(o, alwaysUsesMultipleValuesMarker) + ADD_BOOL(o, automaticallyRearrangesObjects) + ADD_OBJECTS(o, automaticRearrangementKeyPaths) + ADD_BOOL(o, avoidsEmptySelection) + ADD_BOOL(o, clearsFilterPredicateOnInsertion) + ADD_BOOL(o, canInsert) + ADD_BOOL(o, canSelectNext) + ADD_BOOL(o, canSelectPrevious) + ADD_OBJECT_NOT_NIL(o, filterPredicate) + ADD_BOOL(o, preservesSelection) + if ([o selectionIndex] != NSNotFound) + ADD_NUMBER(o, selectionIndex) + ADD_OBJECT(o, selectionIndexes) + ADD_BOOL(o, selectsInsertedObjects) + ADD_OBJECTS(o, sortDescriptors) + } + else if ([object isKindOfClass:[NSTreeController class]]) { + NSTreeController* o = object; + ADD_CLASS_LABEL(@"NSTreeController Info"); + ADD_BOOL(o, alwaysUsesMultipleValuesMarker) + ADD_BOOL(o, avoidsEmptySelection) + ADD_BOOL(o, canAddChild) + ADD_BOOL(o, canInsert) + ADD_BOOL(o, canInsertChild) + ADD_OBJECT(o, childrenKeyPath) + ADD_OBJECT(o, countKeyPath) + ADD_OBJECT(o, leafKeyPath) + ADD_BOOL(o, preservesSelection) + ADD_OBJECTS(o, selectedNodes) + ADD_OBJECTS(o, selectedObjects) + ADD_OBJECTS(o, selectionIndexPaths) + ADD_BOOL(o, selectsInsertedObjects) + ADD_OBJECTS(o, sortDescriptors) + } + + NSObjectController* o = object; + ADD_CLASS_LABEL(@"NSObjectController Info"); + ADD_BOOL(o, automaticallyPreparesContent) + ADD_BOOL(o, canAdd) + ADD_BOOL(o, canRemove) + ADD_OBJECT(o, content) + if ([o managedObjectContext] != nil) // Do not work when there is no managedObjectContext associated with the object + ADD_OBJECT_NOT_NIL(o, defaultFetchRequest) + ADD_OBJECT_NOT_NIL(o, entityName) + ADD_OBJECT_NOT_NIL(o, fetchPredicate) + ADD_BOOL(o, isEditable) + ADD_OBJECT_NOT_NIL(o, managedObjectContext) + ADD_OBJECT(o, objectClass) + ADD_OBJECTS(o, selectedObjects) + ADD_OBJECT(o, selection) + ADD_BOOL(o, usesLazyFetching) + } + else if ([object isKindOfClass:[NSUserDefaultsController class]]) { + NSUserDefaultsController* o = object; + ADD_CLASS_LABEL(@"NSUserDefaultsController Info"); + ADD_BOOL(o, appliesImmediately) + ADD_OBJECT(o, defaults) + ADD_BOOL(o, hasUnappliedChanges) + ADD_OBJECT(o, initialValues) + ADD_OBJECT(o, values) + } -static id objectFromWindowLevel(NSInteger windowLevel) -{ - if (windowLevel == NSNormalWindowLevel) return [FSNamedNumber namedNumberWithDouble:windowLevel name:@"NSNormalWindowLevel"]; - else if (windowLevel == NSFloatingWindowLevel) return [FSNamedNumber namedNumberWithDouble:windowLevel name:@"NSFloatingWindowLevel"]; - else if (windowLevel == NSSubmenuWindowLevel) return [FSNamedNumber namedNumberWithDouble:windowLevel name:@"NSSubmenuWindowLevel"]; - else if (windowLevel == NSTornOffMenuWindowLevel) return [FSNamedNumber namedNumberWithDouble:windowLevel name:@"NSTornOffMenuWindowLevel"]; - else if (windowLevel == NSModalPanelWindowLevel) return [FSNamedNumber namedNumberWithDouble:windowLevel name:@"NSModalPanelWindowLevel"]; - else if (windowLevel == NSMainMenuWindowLevel) return [FSNamedNumber namedNumberWithDouble:windowLevel name:@"NSMainMenuWindowLevel"]; - else if (windowLevel == NSStatusWindowLevel) return [FSNamedNumber namedNumberWithDouble:windowLevel name:@"NSStatusWindowLevel"]; - else if (windowLevel == NSPopUpMenuWindowLevel) return [FSNamedNumber namedNumberWithDouble:windowLevel name:@"NSPopUpMenuWindowLevel"]; - else if (windowLevel == NSScreenSaverWindowLevel) return [FSNamedNumber namedNumberWithDouble:windowLevel name:@"NSScreenSaverWindowLevel"]; - else return [FSNumber numberWithDouble:windowLevel]; + NSController* o = object; + ADD_CLASS_LABEL(@"NSController Info"); + ADD_BOOL(o, isEditing) } -static id objectFromWindowMask(NSUInteger mask) +- (void)addNSCursor:(id)object { - if (mask & ~(NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask | NSTexturedBackgroundWindowMask | NSUnifiedTitleAndToolbarWindowMask | NSUnscaledWindowMask)) return [FSNumber numberWithDouble:mask]; - else if (mask == 0) return [FSNamedNumber namedNumberWithDouble:mask name:@"NSBorderlessWindowMask"]; - else - { - NSMutableString *str = [NSMutableString string]; - - if (mask & NSTitledWindowMask) [str appendString:@"NSTitledWindowMask"]; - if (mask & NSClosableWindowMask) [str appendString:[str length] == 0 ? @"NSClosableWindowMask" : @" + NSClosableWindowMask"]; - if (mask & NSMiniaturizableWindowMask) [str appendString:[str length] == 0 ? @"NSMiniaturizableWindowMask" : @" + NSMiniaturizableWindowMask"]; - if (mask & NSResizableWindowMask) [str appendString:[str length] == 0 ? @"NSResizableWindowMask" : @" + NSResizableWindowMask"]; - if (mask & NSTexturedBackgroundWindowMask) [str appendString:[str length] == 0 ? @"NSTexturedBackgroundWindowMask" : @" + NSTexturedBackgroundWindowMask"]; - if (mask & NSUnifiedTitleAndToolbarWindowMask) [str appendString:[str length] == 0 ? @"NSUnifiedTitleAndToolbarWindowMask" : @" + NSUnifiedTitleAndToolbarWindowMask"]; - if (mask & NSUnscaledWindowMask) [str appendString:[str length] == 0 ? @"NSUnscaledWindowMask" : @" + NSUnscaledWindowMask"]; - - return [FSNamedNumber namedNumberWithDouble:mask name:str]; - } + NSCursor* o = object; + ADD_CLASS_LABEL(@"NSCursor Info"); + ADD_POINT(o, hotSpot) + ADD_OBJECT(o, image) + ADD_BOOL(o, isSetOnMouseEntered) + ADD_BOOL(o, isSetOnMouseExited) } -static id objectFromWindowBackingLocation(NSWindowBackingLocation windowBackingLocation) +- (void)addNSDockTile:(id)object { - switch (windowBackingLocation) - { - case NSWindowBackingLocationDefault: return [FSNamedNumber namedNumberWithDouble:windowBackingLocation name:@"NSBackingStoreBuffered"]; - case NSWindowBackingLocationVideoMemory: return [FSNamedNumber namedNumberWithDouble:windowBackingLocation name:@"NSBackingStoreRetained"]; - case NSWindowBackingLocationMainMemory: return [FSNamedNumber namedNumberWithDouble:windowBackingLocation name:@"NSBackingStoreNonretained"]; - default: return [FSNumber numberWithDouble:windowBackingLocation]; - } + NSDockTile* o = object; + ADD_CLASS_LABEL(@"NSDockTile Info"); + ADD_OBJECT(o, badgeLabel) + ADD_OBJECT(o, contentView) + ADD_OBJECT(o, owner) + ADD_BOOL(o, showsApplicationBadge) + ADD_SIZE(o, size) } -static id objectFromWindowCollectionBehavior(NSWindowCollectionBehavior windowCollectionBehavior) +- (void)addNSDocument:(id)object { - switch (windowCollectionBehavior) - { - case NSWindowCollectionBehaviorDefault: return [FSNamedNumber namedNumberWithDouble:windowCollectionBehavior name:@"NSWindowCollectionBehaviorDefault"]; - case NSWindowCollectionBehaviorCanJoinAllSpaces: return [FSNamedNumber namedNumberWithDouble:windowCollectionBehavior name:@"NSWindowCollectionBehaviorCanJoinAllSpaces"]; - case NSWindowCollectionBehaviorMoveToActiveSpace: return [FSNamedNumber namedNumberWithDouble:windowCollectionBehavior name:@"NSWindowCollectionBehaviorMoveToActiveSpace"]; - default: return [FSNumber numberWithDouble:windowCollectionBehavior]; - } + NSDocument* o = object; + ADD_CLASS_LABEL(@"NSDocument Info"); + ADD_OBJECT_NOT_NIL(o, autosavedContentsFileURL) + ADD_OBJECT(o, autosavingFileType) + ADD_OBJECT(o, displayName) + ADD_OBJECT(o, fileModificationDate) + ADD_BOOL(o, fileNameExtensionWasHiddenInLastRunSavePanel) + ADD_OBJECT(o, fileType) + ADD_OBJECT(o, fileTypeFromLastRunSavePanel) + ADD_OBJECT_NOT_NIL(o, fileURL) + ADD_BOOL(o, hasUnautosavedChanges) + ADD_BOOL(o, hasUndoManager) + ADD_BOOL(o, isDocumentEdited) + ADD_BOOL(o, keepBackupFile) + ADD_OBJECT(o, fileTypeFromLastRunSavePanel) + ADD_OBJECT(o, printInfo) + ADD_BOOL(o, shouldRunSavePanelWithAccessoryView) + ADD_OBJECTS(o, windowControllers) + ADD_OBJECT(o, windowForSheet) + ADD_OBJECT(o, windowNibName) } -static id objectFromWindowSharingType(NSWindowSharingType windowSharingType) +- (void)addNSDocumentController:(id)object { - switch (windowSharingType) - { - case NSWindowSharingNone: return [FSNamedNumber namedNumberWithDouble:windowSharingType name:@"NSWindowSharingNone"]; - case NSWindowSharingReadOnly: return [FSNamedNumber namedNumberWithDouble:windowSharingType name:@"NSWindowSharingReadOnly"]; - case NSWindowSharingReadWrite: return [FSNamedNumber namedNumberWithDouble:windowSharingType name:@"NSWindowSharingReadWrite"]; - default: return [FSNumber numberWithDouble:windowSharingType]; - } + NSDocumentController* o = object; + ADD_CLASS_LABEL(@"NSDocumentController Info"); + ADD_NUMBER(o, autosavingDelay) + ADD_OBJECT(o, currentDirectory) + ADD_OBJECT(o, currentDocument) + ADD_OBJECT(o, defaultType) + ADD_OBJECTS(o, documentClassNames) + ADD_OBJECTS(o, documents) + ADD_BOOL(o, hasEditedDocuments) + ADD_NUMBER(o, maximumRecentDocumentCount) + ADD_OBJECT(o, recentDocumentURLs) } -/*static id objectFromWindowOrderingMode(NSWindowOrderingMode orderingMode) -{ - switch (orderingMode) - { - case NSWindowAbove: return [NamedNumber namedNumberWithDouble:orderingMode name:@"NSWindowAbove"]; - case NSWindowBelow: return [NamedNumber namedNumberWithDouble:orderingMode name:@"NSWindowBelow"]; - case NSWindowOut: return [NamedNumber namedNumberWithDouble:orderingMode name:@"NSWindowOut"]; - default: return [Number numberWithDouble:orderingMode]; - } -}*/ - -static id objectFromWritingDirection(NSWritingDirection writingDirection) +- (void)addNSEntityDescription:(id)object { - switch (writingDirection) - { - case NSWritingDirectionNatural: return [FSNamedNumber namedNumberWithDouble:writingDirection name:@"NSWritingDirectionNatural"]; - case NSWritingDirectionLeftToRight: return [FSNamedNumber namedNumberWithDouble:writingDirection name:@"NSWritingDirectionLeftToRight"]; - case NSWritingDirectionRightToLeft: return [FSNamedNumber namedNumberWithDouble:writingDirection name:@"NSWritingDirectionRightToLeft"]; - default: return [FSNumber numberWithDouble:writingDirection]; - } + NSEntityDescription* o = object; + ADD_CLASS_LABEL(@"NSEntityDescription Info"); + ADD_DICTIONARY(o, attributesByName) + ADD_BOOL(o, isAbstract) + ADD_OBJECT(o, managedObjectClassName) + ADD_OBJECT(o, managedObjectModel) + ADD_OBJECT(o, name) + ADD_DICTIONARY(o, relationshipsByName) + if ([[o subentities] count] != 0) { + ADD_DICTIONARY(o, subentitiesByName) + } + ADD_OBJECT(o, superentity) + ADD_DICTIONARY(o, userInfo) } -@implementation FSObjectBrowserView (FSObjectBrowserViewObjectInfo) - - -- (void)fillMatrix:(NSMatrix *)m withObject:(id)object +- (void)addNSEvent:(id)object { - - FSObjectBrowserViewObjectHelper *objectHelper = [[FSObjectBrowserViewObjectHelper alloc] initWithObjectBrowserView:self]; - [objectHelper fillMatrix:m withObject:object]; - - [self addBlankRowToMatrix:m]; - [self fillMatrix:m withMethodsForObject:object]; - - [m sizeToCells]; - //[m scrollCellToVisibleAtRow:[matrix selectedRow] column:0]; - [m setNeedsDisplay]; - - [objectHelper release]; -} - -@end + NSEvent* o = object; + NSEventType type = [o type]; + ADD_CLASS_LABEL(@"NSEvent Info"); + if (type == NSTabletPoint || ((type == NSLeftMouseDown || type == NSLeftMouseUp || type == NSRightMouseDown || type == NSRightMouseUp || type == NSOtherMouseDown || type == NSOtherMouseUp || type == NSMouseMoved || type == NSLeftMouseDragged || type == NSRightMouseDragged || type == NSOtherMouseDragged || type == NSScrollWheel) && [object subtype] == NSTabletPointEventSubtype)) { + ADD_NUMBER(o, absoluteX) + ADD_NUMBER(o, absoluteY) + ADD_NUMBER(o, absoluteZ) + ADD_OPTIONS(o, buttonMask, EventButtonMask) + } + if (type == NSLeftMouseDown || type == NSLeftMouseUp || type == NSRightMouseDown || type == NSRightMouseUp || type == NSOtherMouseDown || type == NSOtherMouseUp) + ADD_NUMBER(o, buttonNumber) -@implementation FSObjectBrowserViewObjectHelper - -#define ADD_OBJECT(OBJECT,LABEL) @try { [view addObject:(OBJECT) withLabel:(LABEL) toMatrix:m classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; } @catch (id exception) { NSLog(@"%@",exception); } - -#define ADD_OBJECT_NOT_NIL(OBJECT,LABEL) @try { id object = (OBJECT); if (object) [view addObject:object withLabel:(LABEL) toMatrix:m classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; } @catch (id exception) { NSLog(@"%@",exception); } - -#define ADD_DICTIONARY(OBJECTS,LABEL) @try { if ([(OBJECTS) count] <= 20) [view addDictionary:(OBJECTS) withLabel:(LABEL) toMatrix:m classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; else [view addObject:(OBJECTS) withLabel:(LABEL) toMatrix:m classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; } @catch (id exception) { NSLog(@"%@",exception); } - -#define ADD_OBJECTS(OBJECTS,LABEL) @try { if ([(OBJECTS) count] <= 20) [view addObjects:(OBJECTS) withLabel:(LABEL) toMatrix:m classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; else [view addObject:(OBJECTS) withLabel:(LABEL) toMatrix:m classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; } @catch (id exception) { NSLog(@"%@",exception); } - -#define ADD_BOOL(B,LABEL) @try { [view addObject:[FSBoolean booleanWithBool:(B)] withLabel:(LABEL) toMatrix:m classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; } @catch (id exception) { NSLog(@"%@",exception); } - -#define ADD_NUMBER(NUMBER,LABEL) @try { [view addObject:[FSNumber numberWithDouble:(NUMBER)] withLabel:(LABEL) toMatrix:m classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; } @catch (id exception) { NSLog(@"%@",exception); } - -#define ADD_SEL(S,LABEL) @try { [view addObject:[FSBlock blockWithSelector:(S)] withLabel:(LABEL) toMatrix:m leaf:YES classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject indentationLevel:0]; } @catch (id exception) { NSLog(@"%@",exception); } - -#define ADD_SEL_NOT_NULL(S,LABEL) @try { {SEL selector = (S); if (selector != (SEL)0) [view addObject:[FSBlock blockWithSelector:selector] withLabel:(LABEL) toMatrix:m leaf:YES classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject indentationLevel:0]; } } @catch (id exception) { NSLog(@"%@",exception); } - -#define ADD_SIZE(SIZE,LABEL) @try { [view addObject:[NSValue valueWithSize:(SIZE)] withLabel:(LABEL) toMatrix:m classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; } @catch (id exception) { NSLog(@"%@",exception); } - -#define ADD_RECT(RECT,LABEL) @try { [view addObject:[NSValue valueWithRect:(RECT)] withLabel:(LABEL) toMatrix:m classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; } @catch (id exception) { NSLog(@"%@",exception); } - -#define ADD_POINT(POINT,LABEL) @try { [view addObject:[NSValue valueWithPoint:(POINT)] withLabel:(LABEL) toMatrix:m classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; } @catch (id exception) { NSLog(@"%@",exception); } - -#define ADD_POINTER(POINTER,LABEL) @try { if (POINTER == NULL) ADD_OBJECT(nil,LABEL) else [view addObject:[[[FSGenericPointer alloc] initWithCPointer:(POINTER) freeWhenDone:NO type:@encode(void)] autorelease] withLabel:(LABEL) toMatrix:m classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; } @catch (id exception) { NSLog(@"%@",exception); } - -#define ADD_RANGE(RANGE,LABEL) @try { [view addObject:[NSValue valueWithRange:(RANGE)] withLabel:(LABEL) toMatrix:m classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; } @catch (id exception) { NSLog(@"%@",exception); } - -#define ADD_CLASS_LABEL(LABEL) {classLabel = (LABEL); [view addClassLabel:classLabel toMatrix:m];} - -@synthesize baseClasses; - -- (id)init -{ - return [self initWithObjectBrowserView:nil]; -} - -- (id)initWithObjectBrowserView:(FSObjectBrowserView *)theView -{ - self = [super init]; - if (self) { - - if (!theView) { - return nil; - } - - view = [[theView retain] autorelease]; - } - - return self; -} + if (type == NSTabletProximity || ((type == NSLeftMouseDown || type == NSLeftMouseUp || type == NSRightMouseDown || type == NSRightMouseUp || type == NSOtherMouseDown || type == NSOtherMouseUp || type == NSMouseMoved || type == NSLeftMouseDragged || type == NSRightMouseDragged || type == NSOtherMouseDragged || type == NSScrollWheel) && [object subtype] == NSTabletProximityEventSubtype)) + ADD_NUMBER(o, capabilityMask) -- (void)dealloc -{ - [baseClasses release]; - [super dealloc]; -} + if (type == NSKeyDown || type == NSKeyUp) { + ADD_OBJECT(o, characters) + ADD_OBJECT(o, charactersIgnoringModifiers) + } + if (type == NSLeftMouseDown || type == NSLeftMouseUp || type == NSRightMouseDown || type == NSRightMouseUp || type == NSOtherMouseDown || type == NSOtherMouseUp) + ADD_NUMBER(o, clickCount) + if (type == NSAppKitDefined || type == NSSystemDefined || type == NSApplicationDefined) { + ADD_NUMBER(o, data1) + ADD_NUMBER(o, data2) + } + if (type == NSMouseMoved || type == NSLeftMouseDragged || type == NSRightMouseDragged || type == NSOtherMouseDragged || type == NSScrollWheel) { + ADD_NUMBER(o, deltaX) + ADD_NUMBER(o, deltaY) + ADD_NUMBER(o, deltaZ) + } -- (void)fillMatrix:(NSMatrix *)theMatrix withObject:(id)object -{ - - [object retain]; // (1) To be sure object will not be deallocated as a side effect of the removing of rows - - m = theMatrix; - selectedCell = [[[m selectedCell] retain] autorelease]; // retain and autorelease in order to avoid premature deallocation as a side effect of the removing of rows - selectedClassLabel = [[[selectedCell classLabel] copy] autorelease]; // copy and autorelease in order to avoid premature invalidation as a side effect of the removing of rows - selectedLabel = [[[selectedCell label] copy] autorelease]; // copy and autorelease in order to avoid premature invalidation as a side effect of the removing of rows - selectedObject = [selectedCell representedObject]; - classLabel = @""; - - //for (int j = [m numberOfRows]-1; j >= 0; j--) [m removeRow:j]; // Remove all rows. As a side effect, this will supress the selection. - [m renewRows:0 columns:1]; - - [view addObject:object toMatrix:m label:@"" classLabel:@"" indentationLevel:0 leaf:YES]; - [object release]; // It's now safe to match the retain in instruction (1) - - if (selectedObject == object && [selectedClassLabel isEqualToString:@""] && [selectedLabel isEqualToString:@""]) - [m selectCellAtRow:[m numberOfRows]-1 column:0]; - - if (object != nil && object == [object class]) // object is a class - { - NSMutableArray *classNames = [NSMutableArray array]; - NSUInteger count, i; - Class *classes = allClasses(&count); - - @try - { - for (i = 0; i < count; i++) - { -#ifdef __LP64__ - if (class_getSuperclass(classes[i]) == object) [classNames addObject:NSStringFromClass(classes[i])]; -#else - if (classes[i]->super_class == object) [classNames addObject:NSStringFromClass(classes[i])]; -#endif - } - } - @finally - { - free(classes); - } - [classNames sortUsingFunction:FSCompareClassNamesForAlphabeticalOrder context:NULL]; - - [view addBlankRowToMatrix:m]; - -#ifdef __LP64__ - if (class_getSuperclass(object) == nil) [view addLabelAlone:@"This class is a root class" toMatrix:m]; - else [view addObject:class_getSuperclass((Class)object) withLabel:@"Superclass" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; -#else - if (((Class)object)->super_class == nil) [view addLabelAlone:@"This class is a root class" toMatrix:m]; - else [view addObject:((Class)object)->super_class withLabel:@"Superclass" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; -#endif - - if ([classNames count] == 0) [view addLabelAlone:@"No subclasses" toMatrix:m]; - [view addClassesWithNames:classNames withLabel:@"Direct subclasses" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; - } - else if ([object isKindOfClass:[NSManagedObject class]]) - { - NSManagedObject *o = object; - classLabel = @"NSManagedObject Properties"; - NSArray *attributeKeys = [[[[o entity] attributesByName] allKeys] sortedArrayUsingSelector:@selector(compare:)]; - [view addPropertyLabel:@"Attributes" toMatrix:m]; - for (NSUInteger i = 0, count = [attributeKeys count]; i < count; i++) - { - NSString *key = [attributeKeys objectAtIndex:i]; - ADD_OBJECT([o valueForKey:key], key) - } - - NSArray *relationshipKeys = [[[[o entity] relationshipsByName] allKeys] sortedArrayUsingSelector:@selector(compare:)]; - [view addPropertyLabel:@"Relationships" toMatrix:m]; - for (NSUInteger i = 0, count = [relationshipKeys count]; i < count; i++) - { - NSString *key = [relationshipKeys objectAtIndex:i]; - ADD_OBJECT([o valueForKey:key], key) - } - - ADD_CLASS_LABEL(@"NSManagedObject Info"); - ADD_OBJECT( [o entity] ,@"Entity") - ADD_BOOL( [o isDeleted] ,@"Is deleted") - ADD_BOOL( [o isInserted] ,@"Is inserted") - ADD_BOOL( [o isUpdated] ,@"Is updated") - ADD_OBJECT( [o managedObjectContext] ,@"Managed object context") - ADD_OBJECT( [o objectID] ,@"Object ID") - } - else if (([object isKindOfClass:[NSArray class]] || [object isKindOfClass:[NSDictionary class]] || [object isKindOfClass:[NSSet class]]) - && [object count] < 500 ) // We display the elements only if there is less than a certain number of them - { - [view addBlankRowToMatrix:m]; - if ([object isKindOfClass:[NSArray class]]) - { - NSArray *o = object; - if ([o count] == 0) [view addLabelAlone:@"This array is empty" toMatrix:m]; - [view addObjects:o withLabel:@"Elements" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; - } - else if ([object isKindOfClass:[NSDictionary class]]) - { - NSDictionary *o = object; - if ([o count] == 0) [view addLabelAlone:@"This dictionary is empty" toMatrix:m]; - [view addDictionary:o withLabel:@"Entries" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; - } - else if ([object isKindOfClass:[NSSet class]]) - { - NSSet *o = object; - if ([o count] == 0) [view addLabelAlone:@"This set is empty" toMatrix:m]; - [view addObjects:[object allObjects] withLabel:@"Elements" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; - } - } - else if ([object isKindOfClass:[FSAssociation class]]) - { - FSAssociation *o = object; - [view addBlankRowToMatrix:m]; - [view addObject:[o key] withLabel:@"Key" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; - [view addObject:[o value] withLabel:@"Value" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; - } - else if ([object isKindOfClass:[NSView class]]) - { - NSView *o = object; - [view addBlankRowToMatrix:m]; - - [view addObject:[o superview] withLabel:@"Superview" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; - - if ([[o subviews] count] == 0) [view addLabelAlone:@"No subviews" toMatrix:m]; - else [view addObjects:[o subviews] withLabel:@"Subviews" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; - } - else if ([object isKindOfClass:[FSCNBase class]]) - { - [view addBlankRowToMatrix:m]; - - if ([object isKindOfClass:[FSCNArray class]]) - { - FSCNArray *o = object; - if (o->count == 0) [view addLabelAlone:@"An empty array" toMatrix:m]; - else [view addObjects:[NSArray arrayWithObjects:o->elements count:o->count] withLabel:@"Elements" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; - } - else if ([object isKindOfClass:[FSCNAssignment class]]) - { - FSCNAssignment *o = object; - [view addObject:o->left withLabel:@"lvalue" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; - [view addObject:o->right withLabel:@"rvalue" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; - } - else if ([object isKindOfClass:[FSCNBlock class]]) - { - FSCNBlock *o = object; - [view addObject:[o->blockRep ast] withLabel:@"Abstract syntax tree" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; - } - else if ([object isKindOfClass:[FSCNCascade class]]) - { - FSCNCascade *o = object; - [view addObject:o->receiver withLabel:@"Receiver" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; - [view addObjects:[NSArray arrayWithObjects:o->messages count:o->messageCount] withLabel:@"Message sends" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; - } - else if ([object isKindOfClass:[FSCNCategory class]]) - { - FSCNCategory *o = object; - [view addObject:o->className withLabel:@"Class name" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; - [view addObjects:o->methods withLabel:@"Methods" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; - } - else if ([object isKindOfClass:[FSCNClassDefinition class]]) - { - FSCNClassDefinition *o = object; - [view addObject:o->className withLabel:@"Class name" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; - [view addObject:o->superclassName withLabel:@"Superclass name" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; - [view addObjects:o->civarNames withLabel:@"Class instance variables names" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; - [view addObjects:o->ivarNames withLabel:@"Instance variables names" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; - [view addObjects:o->methods withLabel:@"Methods" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; - } - else if ([object isKindOfClass:[FSCNDictionary class]]) - { - FSCNDictionary *o = object; - if (o->count == 0) [view addLabelAlone:@"An empty dictionary" toMatrix:m]; - else [view addObjects:[NSArray arrayWithObjects:o->entries count:o->count] withLabel:@"Entries" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; - } - else if ([object isKindOfClass:[FSCNMethod class]]) - { - FSCNMethod *o = object; - [view addObject:o->method->code withLabel:@"Abstract syntax tree" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; - } - else if ([object isKindOfClass:[FSCNMessage class]]) - { - FSCNMessage *o = object; - [view addObject:o->receiver withLabel:@"Receiver" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; - - if ([object isKindOfClass:[FSCNBinaryMessage class]]) - { - FSCNBinaryMessage *o = object; - [view addObject:o->argument withLabel:@"Argument" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; - } - else if ([object isKindOfClass:[FSCNKeywordMessage class]]) - { - FSCNKeywordMessage *o = object; - [view addObjects:[NSArray arrayWithObjects:o->arguments count:o->argumentCount] withLabel:(o->argumentCount > 1 ? @"Arguments" : @"Argument") toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; - } - } - else if ([object isKindOfClass:[FSCNPrecomputedObject class]]) - { - FSCNPrecomputedObject *o = object; - [view addObject:o->object withLabel:@"Precomputed object" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; - } - else if ([object isKindOfClass:[FSCNStatementList class]]) - { - FSCNStatementList *o = object; - [view addObject:[NSNumber numberWithUnsignedInteger:o->statementCount] withLabel:@"Number of statements" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; - [view addObjects:[NSArray arrayWithObjects:o->statements count:o->statementCount] withLabel:@"Statements" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; - } - else if ([object isKindOfClass:[FSCNReturn class]]) - { - FSCNReturn *o = object; - [view addObject:o->expression withLabel:@"Expression" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; - } - - //FSCNBase *o = object; - //[self addObject:[NSNumber numberWithInteger:o->firstCharIndex] withLabel:@"Index of first character in source code" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; - //[self addObject:[NSNumber numberWithInteger:o->lastCharIndex] withLabel:@"Index of last character in source code" toMatrix:m classLabel:@"" selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; - } - - /////////////////// Objective-C 2.0 declared properties /////////////////// - if ([[NSUserDefaults standardUserDefaults] boolForKey:@"FScriptAutomaticallyIntrospectDeclaredProperties"]) - { - Class cls = [object classOrMetaclass]; - while (cls) - { - unsigned int i, count; - objc_property_t *properties = class_copyPropertyList(cls, &count); - if (properties != NULL && !(cls == [NSView class]) ) // Second part of condition is a quick fix to avoid bloating display for the NSView class with a "one property" section (10.5.0) or spurious properties (10.6). TODO: revise this. - { - classLabel = [NSString stringWithFormat:@"%@ Properties", [cls printString]]; - [view addClassLabel:classLabel toMatrix:m color:[NSColor magentaColor]]; - - for (i = 0; i < count; i++) - { - NSString *propertyName = [NSString stringWithUTF8String:property_getName(properties[i])]; - id propertyValue = nil; // initialized to nil in order to shut down a spurious warning - NSString *errorMessage = nil; - - @try - { - propertyValue = [[[[@"[:object| object " stringByAppendingString:propertyName] stringByAppendingString:@"]"] asBlock] value:object]; - } - @catch (id exception) - { - errorMessage = [@"F-Script can't display the value of this property. " stringByAppendingString:FSErrorMessageFromException(exception)]; - [view addObject:errorMessage withLabel:propertyName toMatrix:m leaf:YES classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject indentationLevel:0]; - } - if (!errorMessage) ADD_OBJECT(propertyValue, propertyName) - } - free(properties); - } - if (cls == [cls superclass]) // Defensive programming against flawed class hierarchies with infinite loops. - cls = nil; - else - cls = [cls superclass]; - } - } - - /////////////////// Bindings /////////////////// - if ([object respondsToSelector:@selector(exposedBindings)] && [object respondsToSelector:@selector(infoForBinding:)]) - { - NSUInteger i, count; - NSArray *exposedBindings = nil; - - // Several Cocoa objects have a buggy implementation of the exposedBindings method (e.g. NSTextView), - // which leads to an exception being thrown when the method is called on certain *class* objects. - // We work around these bugs here by preventing the buggy exception to interupt the current method. - // Note: I'm writing this in Mac OS X 10.4.6. - // Update for 10.5: the exposedBindings method now crash for certain class objects. I work around this - // bellow by not calling it at all on class objects. - @try - { - if ([object class] != object) - exposedBindings = [object exposedBindings]; - } - @catch (id exeption) - {} - - if (exposedBindings) - { - for (i = 0, count = [exposedBindings count]; i < count; i++) - if ([object infoForBinding:[exposedBindings objectAtIndex:i]]) - break; - - if (i < count && count > 0) - { - classLabel = @"Bindings"; - [view addClassLabel:classLabel toMatrix:m color:[NSColor colorWithCalibratedRed:0 green:0.7098 blue:1 alpha:1]]; - - for (i = 0, count = [exposedBindings count]; i < count; i++) - { - [view addBindingForObject:object withName:[exposedBindings objectAtIndex:i] toMatrix:m classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; - } - - ADD_OBJECT(exposedBindings, @"Exposed Bindings"); - } - } - } - - for (Class baseClass in self.baseClasses) { - if ([object isKindOfClass:baseClass]) { - NSString *method = [NSString stringWithFormat:@"add%@:", [baseClass className]]; - SEL selector = NSSelectorFromString(method); - - NSAssert([self respondsToSelector:selector], @"Missing base class method"); - - [self performSelector:selector withObject:object]; - - break; - } - } -} - -- (NSMutableArray *)baseClasses -{ - if (!baseClasses) { - baseClasses = [[NSMutableArray alloc] initWithObjects: - [FSGenericPointer class], - [FSObjectPointer class], - [NSAffineTransform class], - [NSAlert class], - [NSAnimation class], - [NSAnimationContext class], - [NSAttributedString class], - [NSBezierPath class], - [NSCell class], - [NSCollectionViewItem class], - [NSComparisonPredicate class], - [NSCompoundPredicate class], - [NSController class], - [NSCursor class], - [NSDockTile class], - [NSDocument class], - [NSDocumentController class], - [NSEntityDescription class], - [NSEvent class], - [NSExpression class], - [NSFetchRequest class], - [NSFileWrapper class], - [NSFont class], - [NSFontDescriptor class], - [NSFontManager class], - [NSGlyphInfo class], - [NSGlyphGenerator class], - [NSGradient class], - [NSGraphicsContext class], - [NSImage class], - [NSImageRep class], - [NSLayoutManager class], - [NSManagedObjectContext class], - [NSManagedObjectID class], - [NSManagedObjectModel class], - [NSMenu class], - [NSMenuItem class], - [NSOpenGLContext class], - [NSOpenGLPixelBuffer class], - [NSOpenGLPixelFormat class], - [NSPageLayout class], - [NSParagraphStyle class], - [NSPersistentStoreCoordinator class], - [NSPredicateEditorRowTemplate class], - [NSPropertyDescription class], - [NSResponder class], - [NSRulerMarker class], - [NSScreen class], - [NSShadow class], - [NSStatusBar class], - [NSStatusItem class], - [NSTabViewItem class], - [NSTableColumn class], - [NSTextAttachment class], - [NSTextBlock class], - [NSTextContainer class], - [NSTextList class], - [NSTextTab class], - [NSToolbar class], - [NSToolbarItem class], - [NSTrackingArea class], - [NSUndoManager class], - [NSATSTypesetter class], - nil]; - } - return baseClasses; -} -- (void)addFSGenericPointer:(id)object -{ - FSGenericPointer *o = object; - NSArray *memoryContent = [o memoryContent]; - - if (memoryContent) - { - ADD_CLASS_LABEL(@"FSGenericPointer Info"); - ADD_OBJECT( memoryContent ,@"Memory content") - ADD_OBJECT_NOT_NIL( [o memoryContentUTF8] ,@"Memory content as UTF8 string") - } -} - -- (void)addFSObjectPointer:(id)object -{ - FSObjectPointer *o = object; - NSArray *memoryContent = [o memoryContent]; - - if (memoryContent) - { - ADD_CLASS_LABEL(@"FSObjectPointer Info"); - ADD_OBJECT( memoryContent ,@"Memory content") - } -} - -- (void)addNSAffineTransform:(id)object -{ - NSAffineTransform *o = object; - NSAffineTransformStruct s = [o transformStruct]; - ADD_CLASS_LABEL(@"NSAffineTransform Info"); - ADD_NUMBER( s.m11 ,@"m11") - ADD_NUMBER( s.m12 ,@"m12") - ADD_NUMBER( s.m21 ,@"m21") - ADD_NUMBER( s.m22 ,@"m22") - ADD_NUMBER( s.tX ,@"tX") - ADD_NUMBER( s.tY ,@"tY") -} - -- (void)addNSAlert:(id)object -{ - NSAlert *o = object; - ADD_CLASS_LABEL(@"NSAlert Info"); - ADD_OBJECT( [o accessoryView] ,@"Accessory view") - ADD_OBJECT( objectFromAlertStyle([o alertStyle]) ,@"Alert style") - ADD_OBJECTS( [o buttons] ,@"Buttons") - ADD_OBJECT_NOT_NIL( [o delegate] ,@"Delegate") - ADD_OBJECT_NOT_NIL( [o helpAnchor] ,@"Help anchor") - ADD_OBJECT( [o icon] ,@"Icon") - ADD_OBJECT( [o informativeText] ,@"Informative text") - ADD_OBJECT( [o messageText] ,@"Message text") - ADD_BOOL( [o showsHelp] ,@"Shows help") - ADD_BOOL( [o showsSuppressionButton] ,@"Shows suppression button") - ADD_OBJECT( [o suppressionButton] ,@"Suppression button") - ADD_OBJECT( [o window] ,@"Window") -} - -- (void)addNSAnimation:(id)object -{ - if ([object isKindOfClass:[NSViewAnimation class]]) - { - NSViewAnimation *o = object; - - if ([o viewAnimations] != nil) - { - ADD_CLASS_LABEL(@"NSViewAnimation Info"); - ADD_OBJECTS( [o viewAnimations] ,@"View animations") - } - } - - NSAnimation *o = object; - ADD_CLASS_LABEL(@"NSAnimation Info"); - ADD_OBJECT(objectFromAnimationBlockingMode([o animationBlockingMode]),@"Animation blocking mode") - ADD_OBJECT(objectFromAnimationCurve([o animationCurve]) ,@"Animation curve") - ADD_NUMBER( [o currentProgress] ,@"Current progress") - ADD_NUMBER( [o currentValue] ,@"Current value") - ADD_OBJECT( [o delegate] ,@"Delegate") - ADD_NUMBER( [o duration] ,@"Duration (in seconds)") - ADD_NUMBER( [o frameRate] ,@"Frame rate") - ADD_BOOL( [o isAnimating] ,@"Is animating") - ADD_OBJECTS( [o progressMarks] ,@"Progress marks") - ADD_OBJECT( [o runLoopModesForAnimating] ,@"Run loop modes for animating") -} - -- (void)addNSAnimationContext:(id)object -{ - NSAnimationContext *o = object; - ADD_CLASS_LABEL(@"NSAnimationContext Info"); - ADD_NUMBER( [o duration] ,@"Duration (in seconds)") -} - -- (void)addNSAttributedString:(id)object -{ - if ([object isKindOfClass:[NSMutableAttributedString class]]) - { - if ([object isKindOfClass:[NSTextStorage class]]) - { - NSTextStorage *o = object; - ADD_CLASS_LABEL(@"NSTextStorage Info"); - //ADD_OBJECT( [o attributeRuns] ,@"Attribute runs") - ADD_NUMBER( [o changeInLength] ,@"Change in length") - ADD_OBJECT_NOT_NIL( [o delegate] ,@"Delegate") - ADD_OBJECT(objectFromTextStorageEditedMask([o editedMask]) ,@"Edited mask") - ADD_RANGE( [o editedRange] ,@"Edited range") - ADD_BOOL( [o fixesAttributesLazily] ,@"Fixes attributes lazily") - ADD_OBJECT( [o font] ,@"Font") - ADD_OBJECT( [o foregroundColor] ,@"Foreground color") - ADD_OBJECTS( [o layoutManagers] ,@"Layout managers") - //ADD_OBJECT( [o paragraphs] ,@"Paragraphs") // Note: invoking "paragraphs" and retaining the result cause the result of "layoutManager" to become trash ! - //ADD_OBJECT( [o words] ,@"Words") - } - //NSMutableAttributedString *o = object; - //[self addClassLabel:@"NSMutableAttributedString Info" toMatrix:m]; - } - - //NSAttributedString *o = object; - //[self addClassLabel:@"NSAttributedString Info" toMatrix:m]; -} - -- (void)addNSBezierPath:(id)object -{ - NSBezierPath *o = object; - ADD_CLASS_LABEL(@"NSBezierPath Info"); - ADD_RECT( [o bounds] ,@"Bounds") - ADD_RECT( [o controlPointBounds] ,@"Control point bounds") - if (![o isEmpty]) ADD_POINT([o currentPoint] ,@"Current point") - ADD_NUMBER( [o elementCount] ,@"Element count") - ADD_NUMBER( [o flatness] ,@"Flatness") - ADD_BOOL( [o isEmpty] ,@"Is empty") - ADD_OBJECT(objectFromLineCapStyle([o lineCapStyle]) ,@"Line cap style") - ADD_OBJECT(objectFromLineJoinStyle([o lineJoinStyle]) ,@"Line join style") - ADD_NUMBER( [o lineWidth] ,@"Line width") - ADD_NUMBER( [o miterLimit] ,@"Miter limit") - ADD_OBJECT(objectFromWindingRule([o windingRule]) ,@"Winding rule") -} - -- (void)addNSCell:(id)object -{ - if ([object isKindOfClass:[NSActionCell class]]) - { - if ([object isKindOfClass:[NSButtonCell class]]) - { - if ([object isKindOfClass:[NSMenuItemCell class]]) - { - if ([object isKindOfClass:[NSPopUpButtonCell class]]) - { - NSPopUpButtonCell *o = object; - ADD_CLASS_LABEL(@"NSPopUpButtonCell Info"); - ADD_BOOL( [o altersStateOfSelectedItem] ,@"Alters state of selected item") - ADD_OBJECT(objectFromPopUpArrowPosition([o arrowPosition]),@"Arrow position") - ADD_BOOL( [o autoenablesItems] ,@"Autoenables Items") - ADD_NUMBER( [o indexOfSelectedItem] ,@"Index of selected item") - ADD_OBJECTS( [o itemArray] ,@"Item array") - ADD_NUMBER( [o numberOfItems] ,@"Number of items") - ADD_OBJECT( [o objectValue] ,@"Object value") - ADD_OBJECT(objectFromRectEdge([o preferredEdge]) ,@"Preferred edge") - ADD_BOOL( [o pullsDown] ,@"Pulls down") - ADD_OBJECT( [o selectedItem] ,@"Selected item") - ADD_BOOL( [o usesItemFromMenu] ,@"Uses item from menu") + if (type == NSTabletPoint || type == NSTabletProximity || ((type == NSLeftMouseDown || type == NSLeftMouseUp || type == NSRightMouseDown || type == NSRightMouseUp || type == NSOtherMouseDown || type == NSOtherMouseUp || type == NSMouseMoved || type == NSLeftMouseDragged || type == NSRightMouseDragged || type == NSOtherMouseDragged || type == NSScrollWheel) && ([object subtype] == NSTabletProximityEventSubtype || [object subtype] == NSTabletPointEventSubtype))) + ADD_NUMBER(o, deviceID) + if (type == NSLeftMouseDown || type == NSLeftMouseUp || type == NSRightMouseDown || type == NSRightMouseUp || type == NSOtherMouseDown || type == NSOtherMouseUp || type == NSMouseMoved || type == NSLeftMouseDragged || type == NSRightMouseDragged || type == NSOtherMouseDragged || type == NSScrollWheel || type == NSMouseEntered || type == NSMouseExited || type == NSCursorUpdate) + ADD_NUMBER(o, eventNumber) + if (type == NSKeyDown) + ADD_BOOL(o, isARepeat) + if (type == NSTabletProximity || ((type == NSLeftMouseDown || type == NSLeftMouseUp || type == NSRightMouseDown || type == NSRightMouseUp || type == NSOtherMouseDown || type == NSOtherMouseUp || type == NSMouseMoved || type == NSLeftMouseDragged || type == NSRightMouseDragged || type == NSOtherMouseDragged || type == NSScrollWheel) && [object subtype] == NSTabletProximityEventSubtype)) + ADD_BOOL(o, isEnteringProximity) + if (type == NSKeyDown || type == NSKeyUp) + ADD_NUMBER(o, keyCode) + if (type == NSLeftMouseDown || type == NSLeftMouseUp || type == NSRightMouseDown || type == NSRightMouseUp || type == NSOtherMouseDown || type == NSOtherMouseUp || type == NSMouseMoved || type == NSLeftMouseDragged || type == NSRightMouseDragged || type == NSOtherMouseDragged || type == NSScrollWheel) + ADD_POINT(o, locationInWindow) + ADD_OPTIONS(o, modifierFlags, EventModifierFlags) + if (type == NSTabletProximity || ((type == NSLeftMouseDown || type == NSLeftMouseUp || type == NSRightMouseDown || type == NSRightMouseUp || type == NSOtherMouseDown || type == NSOtherMouseUp || type == NSMouseMoved || type == NSLeftMouseDragged || type == NSRightMouseDragged || type == NSOtherMouseDragged || type == NSScrollWheel) && [object subtype] == NSTabletProximityEventSubtype)) { + ADD_NUMBER(o, pointingDeviceID) + ADD_NUMBER(o, pointingDeviceSerialNumber) + ADD_ENUM(o, pointingDeviceType, PointingDeviceType) } - - NSMenuItemCell *o = object; - ADD_CLASS_LABEL(@"NSMenuItemCell Info"); - if ([[o menuItem] image]) - ADD_NUMBER( [o imageWidth] ,@"Image width") - ADD_BOOL( [o isHighlighted] ,@"Is highlighted") - if (![[[o menuItem] keyEquivalent] isEqualToString:@""]) - ADD_NUMBER( [o keyEquivalentWidth] ,@"Key equivalent width") - ADD_OBJECT( [o menuItem] ,@"Menu item") - ADD_BOOL( [o needsDisplay] ,@"Needs display") - ADD_BOOL( [o needsSizing] ,@"Needs sizing") - ADD_NUMBER( [o stateImageWidth] ,@"State image width") - ADD_NUMBER( [o titleWidth] ,@"Title width") - } - - NSButtonCell *o = object; - ADD_CLASS_LABEL(@"NSButtonCell Info"); - ADD_OBJECT_NOT_NIL( [o alternateImage] ,@"Alternate image") - ADD_OBJECT( [o alternateTitle] ,@"Alternate title") - ADD_OBJECT( [o attributedAlternateTitle] ,@"Attributed alternate title") - ADD_OBJECT( [o attributedTitle] ,@"Attributed title") - ADD_OBJECT( [o backgroundColor] ,@"Background color") - ADD_OBJECT(objectFromBezelStyle([o bezelStyle]) ,@"Bezel style") - ADD_OBJECT(objectFromGradientType([o gradientType]) ,@"Gradient type") - ADD_OBJECT(objectFromCellMask([o highlightsBy]) ,@"Highlights by") - ADD_BOOL( [o imageDimsWhenDisabled] ,@"Image dims when disabled") - ADD_OBJECT(objectFromCellImagePosition([o imagePosition]) ,@"Image position") - ADD_OBJECT(objectFromImageScaling([o imageScaling]) ,@"Image scaling") - ADD_BOOL( [o isTransparent] ,@"Is transparent") - ADD_OBJECT_NOT_NIL( [o keyEquivalentFont] ,@"Key equivalent font") - ADD_OBJECT(objectFromKeyModifierMask([o keyEquivalentModifierMask]) , @"Key equivalent modifier mask") - ADD_BOOL( [o showsBorderOnlyWhileMouseInside] ,@"Shows border only while mouse inside") - ADD_OBJECT(objectFromCellMask([o showsStateBy]) ,@"Shows state by") - ADD_OBJECT_NOT_NIL( [o sound] ,@"Sound") - ADD_OBJECT( [o title] ,@"Title") - } - else if ([object isKindOfClass:[NSDatePickerCell class]]) - { - NSDatePickerCell *o = object; - ADD_CLASS_LABEL(@"NSDatePickerCell Info"); - ADD_OBJECT( [o backgroundColor] ,@"Background color") - ADD_OBJECT( [o calendar] ,@"Calendar") - ADD_OBJECT(objectFromDatePickerElementFlags([o datePickerElements]),@"Date picker elements") - ADD_OBJECT(objectFromDatePickerMode([o datePickerMode]) ,@"Date picker mode") - ADD_OBJECT(objectFromDatePickerStyle([o datePickerStyle]) ,@"Date picker style") - ADD_OBJECT( [o dateValue] ,@"Date value") - ADD_OBJECT_NOT_NIL([o delegate] ,@"Delegate") - ADD_BOOL( [o drawsBackground] ,@"Draws background" ) - ADD_OBJECT_NOT_NIL([o locale] ,@"Locale") - ADD_OBJECT( [o maxDate] ,@"Max date") - ADD_OBJECT( [o minDate] ,@"Min date") - ADD_OBJECT( [o textColor] ,@"Text Color") - ADD_NUMBER( [o timeInterval] ,@"Time interval") - ADD_OBJECT( [o timeZone] ,@"Time zone") - } - else if ([object isKindOfClass:[NSFormCell class]]) - { - NSFormCell *o = object; - ADD_CLASS_LABEL(@"NSFormCell Info"); - ADD_OBJECT( [o attributedTitle] ,@"Attributed title") - ADD_OBJECT_NOT_NIL( [o placeholderAttributedString] ,@"Placeholder attributed string") - ADD_OBJECT_NOT_NIL( [o placeholderString] ,@"Placeholder string") - ADD_OBJECT(objectFromTextAlignment([o titleAlignment]) ,@"Title alignment") - ADD_OBJECT(objectFromWritingDirection([o titleBaseWritingDirection]),@"Title base writing direction") - ADD_OBJECT( [o titleFont] ,@"Title font") - ADD_NUMBER( [o titleWidth] ,@"Title width") - } - else if ([object isKindOfClass:[NSLevelIndicatorCell class]]) - { - NSLevelIndicatorCell *o = object; - ADD_CLASS_LABEL(@"NSLevelIndicatorCell Info"); - ADD_NUMBER( [o criticalValue] ,@"Critical value") - ADD_OBJECT(objectFromLevelIndicatorStyle([o levelIndicatorStyle]),@"Level indicator style") - ADD_NUMBER( [o maxValue] ,@"Max value") - ADD_NUMBER( [o minValue] ,@"Min value") - ADD_NUMBER( [o numberOfMajorTickMarks] ,@"Number of major tick marks") - ADD_NUMBER( [o numberOfTickMarks] ,@"Number of tick marks") - ADD_OBJECT(objectFromTickMarkPosition([o tickMarkPosition], NO),@"Tick mark position") - ADD_NUMBER( [o warningValue] ,@"Warning value") - } - else if ([object isKindOfClass:[NSPathCell class]]) - { - NSPathCell *o = object; - ADD_CLASS_LABEL(@"NSPathCell Info"); - ADD_OBJECTS( [o allowedTypes] ,@"Allowed types") - ADD_OBJECT_NOT_NIL([o backgroundColor] ,@"Background color") - ADD_OBJECT( [o delegate] ,@"Delegate") - ADD_SEL( [o doubleAction] ,@"Double action") - ADD_OBJECTS( [o pathComponentCells] ,@"Path component cells") - ADD_OBJECT(objectFromPathStyle([o pathStyle]) ,@"Path style") - ADD_OBJECT_NOT_NIL([o placeholderAttributedString] ,@"Placeholder attributed string") - ADD_OBJECT_NOT_NIL([o placeholderString] ,@"Placeholder string") - ADD_OBJECT_NOT_NIL([o URL] ,@"URL") - } - else if ([object isKindOfClass:[NSSegmentedCell class]]) - { - NSSegmentedCell *o = object; - NSInteger segmentCount = [o segmentCount]; - ADD_CLASS_LABEL(@"NSSegmentedCell Info"); - - ADD_NUMBER( segmentCount ,@"Segment count") - ADD_NUMBER( [o selectedSegment] ,@"Selected segment") - ADD_OBJECT(objectFromSegmentSwitchTracking([o trackingMode]),@"Tracking mode") - - for (NSInteger i = 0; i < segmentCount; i++) - { - ADD_OBJECT_NOT_NIL([o imageForSegment:i] ,([NSString stringWithFormat:@"Image for segment %ld",(long)i])) - ADD_OBJECT(objectFromImageScaling([o imageScalingForSegment:i]),([NSString stringWithFormat:@"Image scaling for segment %ld",(long)i])) - ADD_BOOL( [o isEnabledForSegment:i] ,([NSString stringWithFormat:@"Is enabled for segment %ld",(long)i])) - ADD_BOOL( [o isSelectedForSegment:i] ,([NSString stringWithFormat:@"Is selected for segment %ld",(long)i])) - ADD_OBJECT_NOT_NIL([o labelForSegment:i] ,([NSString stringWithFormat:@"Label for segment %ld",(long)i])) - ADD_OBJECT_NOT_NIL([o menuForSegment:i] ,([NSString stringWithFormat:@"Menu for segment %ld",(long)i])) - ADD_NUMBER( [o tagForSegment:i] ,([NSString stringWithFormat:@"Tag for segment %ld",(long)i])) - ADD_OBJECT_NOT_NIL([o toolTipForSegment:i] ,([NSString stringWithFormat:@"Tool tip for segment %ld",(long)i])) - ADD_NUMBER( [o widthForSegment:i] ,([NSString stringWithFormat:@"Width for segment %ld",(long)i])) - } - } - else if ([object isKindOfClass:[NSSliderCell class]]) - { - NSSliderCell *o = object; - ADD_CLASS_LABEL(@"NSSliderCell Info"); - ADD_BOOL( [o allowsTickMarkValuesOnly] ,@"Allows tick mark values only") - ADD_NUMBER( [o altIncrementValue] ,@"Alt increment value") - ADD_NUMBER( [(NSSliderCell*)o isVertical] ,@"Is vertical") - ADD_NUMBER( [o knobThickness] ,@"Knob thickness") - ADD_NUMBER( [o maxValue] ,@"Max value") - ADD_NUMBER( [o minValue] ,@"Min value") - ADD_NUMBER( [o numberOfTickMarks] ,@"Number of tick marks") - ADD_OBJECT( objectFromSliderType([o sliderType]) ,@"Slider type") - ADD_OBJECT(objectFromTickMarkPosition([o tickMarkPosition], [(NSSliderCell*)o isVertical] == 1),@"Tick mark position") - ADD_RECT( [o trackRect] ,@"Track rect") - } - else if ([object isKindOfClass:[NSStepperCell class]]) - { - NSStepperCell *o = object; - ADD_CLASS_LABEL(@"NSStepperCell Info"); - ADD_BOOL( [o autorepeat] ,@"Autorepeat") - ADD_NUMBER( [o increment] ,@"Increment") - ADD_NUMBER( [o maxValue] ,@"Max value") - ADD_NUMBER( [o minValue] ,@"Min value") - ADD_BOOL( [o valueWraps] ,@"Value wraps") - } - else if ([object isKindOfClass:[NSTextFieldCell class]]) - { - if ([object isKindOfClass:[NSComboBoxCell class]]) - { - NSComboBoxCell *o = object; - ADD_CLASS_LABEL(@"NSComboBoxCell Info"); - if ([o usesDataSource]) ADD_OBJECT([o dataSource] ,@"Data source") - ADD_BOOL( [o hasVerticalScroller] ,@"Has vertical scroller") - ADD_NUMBER( [o indexOfSelectedItem] ,@"Index of selected item") - ADD_SIZE( [o intercellSpacing] ,@"Intercell spacing") - ADD_BOOL( [o isButtonBordered] ,@"Is button bordered") - ADD_NUMBER( [o itemHeight] ,@"Item height") - ADD_NUMBER( [o numberOfItems] ,@"Number of items") - ADD_NUMBER( [o numberOfVisibleItems] ,@"Number of visible items") - if (![o usesDataSource] && [o indexOfSelectedItem] != -1) - ADD_OBJECT( [o objectValueOfSelectedItem] ,@"Object value of selected item") - if (![o usesDataSource]) - ADD_OBJECTS( [o objectValues] ,@"Object values") - ADD_BOOL( [o usesDataSource] ,@"Uses data source") - } - else if ([object isKindOfClass:[NSPathComponentCell class]]) - { - NSPathComponentCell *o = object; - ADD_CLASS_LABEL(@"NSPathComponentCell Info"); - ADD_OBJECT_NOT_NIL([o image] ,@"Image") - ADD_OBJECT_NOT_NIL([o URL] ,@"URL") - } - else if ([object isKindOfClass:[NSSearchFieldCell class]]) - { - NSSearchFieldCell *o = object; - ADD_CLASS_LABEL(@"NSSearchFieldCell Info"); - ADD_OBJECT( [o cancelButtonCell] ,@"Cancel button cell") - ADD_NUMBER( [o maximumRecents] ,@"Maximum recents") - ADD_OBJECTS( [o recentSearches] ,@"Recent searches") - ADD_OBJECT_NOT_NIL([o recentsAutosaveName] ,@"Recents autosave name") - ADD_OBJECT( [o searchButtonCell] ,@"Search button cell") - ADD_OBJECT_NOT_NIL([o searchMenuTemplate] ,@"Search menu template") - ADD_BOOL( [o sendsSearchStringImmediately] ,@"Sends search string immediately") - ADD_BOOL( [o sendsWholeSearchString] ,@"Sends whole search string") - } - else if ([object isKindOfClass:[NSTokenFieldCell class]]) - { - NSTokenField *o = object; - ADD_CLASS_LABEL(@"NSTokenField Info"); - ADD_NUMBER( [o completionDelay] ,@"Completion delay") - ADD_OBJECT_NOT_NIL([o delegate] ,@"Delegate") - ADD_OBJECT( [o tokenizingCharacterSet] ,@"Tokenizing character set") - ADD_OBJECT(objectFromTokenStyle([o tokenStyle]) ,@"Token style") - } - - NSTextFieldCell *o = object; - ADD_CLASS_LABEL(@"NSTextFieldCell Info"); - ADD_OBJECTS( [o allowedInputSourceLocales] ,@"Allowed input source locales") - ADD_OBJECT( [o backgroundColor] ,@"Background color") - ADD_OBJECT(objectFromTextFieldBezelStyle([o bezelStyle]) ,@"Bezel style") - ADD_BOOL( [o drawsBackground] ,@"Draws background") - ADD_OBJECT_NOT_NIL([o placeholderAttributedString] ,@"Placeholder attributed string") - ADD_OBJECT_NOT_NIL([o placeholderString] ,@"Placeholder string") - ADD_OBJECT( [o textColor] ,@"Text color") - } - } - else if ([object isKindOfClass:[NSBrowserCell class]]) - { - NSBrowserCell *o = object; - ADD_CLASS_LABEL(@"NSBrowserCell Info"); - ADD_OBJECT_NOT_NIL( [o alternateImage] ,@"Alternate image") - ADD_BOOL( [o isLeaf] ,@"Is leaf") - ADD_BOOL( [o isLoaded] ,@"Is loaded") - } - else if ([object isKindOfClass:[NSImageCell class]]) - { - NSImageCell *o = object; - ADD_CLASS_LABEL(@"NSImageCell Info"); - ADD_OBJECT(objectFromImageAlignment([o imageAlignment]) ,@"Image alignment") - ADD_OBJECT(objectFromImageScaling([o imageScaling]) ,@"Image scaling") - } - else if ([object isKindOfClass:[NSTextAttachmentCell class]]) - { - NSTextAttachmentCell *o = object; - ADD_CLASS_LABEL(@"NSTextAttachmentCell Info"); - ADD_OBJECT( [o attachment] ,@"Attachment") - ADD_POINT( [o cellBaselineOffset] ,@"Cell baseline offset") - ADD_SIZE( [o cellSize] ,@"Cell size") - ADD_BOOL( [o wantsToTrackMouse] ,@"Wants to track mouse") - } - - NSCell *o = object; - ADD_CLASS_LABEL(@"NSCell Info"); - ADD_BOOL( [o acceptsFirstResponder] ,@"Accepts first responder") - ADD_SEL_NOT_NULL( [o action] ,@"Action") - ADD_OBJECT( objectFromTextAlignment([o alignment]) ,@"Alignment") - ADD_BOOL( [o allowsEditingTextAttributes] ,@"Allows editing text attributes") - ADD_BOOL( [o allowsMixedState] ,@"Allows mixed state") - ADD_BOOL( [o allowsUndo] ,@"Allows undo") - //ADD_OBJECT( [o attributedStringValue] ,@"Attributed string value") - ADD_OBJECT(objectFromBackgroundStyle([o backgroundStyle]) ,@"Background style") - ADD_OBJECT(objectFromWritingDirection([o baseWritingDirection]) ,@"Base writing direction") - ADD_SIZE( [o cellSize] ,@"Cell size") - ADD_OBJECT(objectFromControlSize([o controlSize]) ,@"Control size") - ADD_OBJECT(objectFromControlTint([o controlTint]) ,@"Control tint") - ADD_OBJECT_NOT_NIL( [o controlView] ,@"Control view") - ADD_OBJECT(objectFromFocusRingType([o focusRingType]) ,@"Focus ring type") - ADD_OBJECT( [o font] ,@"Font") - ADD_OBJECT_NOT_NIL( [o formatter] ,@"Formatter") - ADD_OBJECT_NOT_NIL( [o image] ,@"Image") - if ([(NSCell *)o type] == NSTextCellType) ADD_BOOL([o importsGraphics] ,@"Imports graphics") - ADD_OBJECT(objectFromBackgroundStyle([o interiorBackgroundStyle]),@"Interior background style") - ADD_BOOL( [o isBezeled] ,@"Is bezeled") - ADD_BOOL( [o isBordered] ,@"Is bordered") - ADD_BOOL( [o isContinuous] ,@"Is continuous") - ADD_BOOL( [o isEditable] ,@"Is editable") - ADD_BOOL( [o isEnabled] ,@"Is enabled") - ADD_BOOL( [o isHighlighted] ,@"Is highlighted") - ADD_BOOL( [o isOpaque] ,@"Is opaque") - ADD_BOOL( [o isScrollable] ,@"Is scrollable") - ADD_BOOL( [o isSelectable] ,@"Is selectable") - if ([[o keyEquivalent] length]!=0) ADD_OBJECT([o keyEquivalent] ,@"Key equivalent") - ADD_OBJECT(objectFromLineBreakMode([o lineBreakMode]) ,@"Line break mode") - ADD_OBJECT_NOT_NIL( [o menu] ,@"Menu") - if ([[o mnemonic] length]!=0) ADD_OBJECT([o mnemonic] ,@"Mnemonic") - if ([o mnemonicLocation]!=NSNotFound) ADD_NUMBER([o mnemonicLocation],@"Mnemonic location") - ADD_OBJECT(objectFromCellStateValue([o nextState]) ,@"Next state") - //ADD_OBJECT( [o objectValue] ,@"Object value") - ADD_BOOL( [o refusesFirstResponder] ,@"Refuses first responder") - ADD_OBJECT_NOT_NIL( [o representedObject] ,@"Represented object") - ADD_BOOL( [o sendsActionOnEndEditing] ,@"Sends action on end editing") - ADD_BOOL( [o showsFirstResponder] ,@"Shows first responder") - ADD_OBJECT(objectFromCellStateValue([o state]) ,@"State") - ADD_NUMBER( [o tag] ,@"Tag") - ADD_OBJECT_NOT_NIL( [o target] ,@"Target") - ADD_OBJECT(objectFromCellType([(NSCell *)o type]) ,@"Type") - ADD_BOOL( [o wantsNotificationForMarkedText] ,@"Wants notification for marked text") - ADD_BOOL( [o wraps] ,@"Wraps") - } - -- (void)addNSCollectionViewItem:(id)object -{ - NSCollectionViewItem *o = object; - ADD_CLASS_LABEL(@"NSCollectionViewItem Info"); - ADD_OBJECT( [o collectionView] ,@"Collection view") - ADD_BOOL( [o isSelected] ,@"Is selected") - ADD_OBJECT( [o representedObject] ,@"Represented object") - ADD_OBJECT_NOT_NIL( [o view] ,@"View") -} - -- (void)addNSComparisonPredicate:(id)object -{ - NSComparisonPredicate *o = object; - ADD_CLASS_LABEL(@"NSComparisonPredicate Info"); - ADD_OBJECT(objectFromComparisonPredicateModifier([o comparisonPredicateModifier]), @"Comparison predicate modifier") - ADD_SEL_NOT_NULL( [o customSelector] ,@"Custom selector") - ADD_OBJECT( [o leftExpression] ,@"Left expression") - ADD_OBJECT(objectFromPredicateOperatorType([o predicateOperatorType]), @"Predicate operator type") - ADD_OBJECT( [o rightExpression] ,@"Right expression") -} - -- (void)addNSCompoundPredicate:(id)object -{ - NSCompoundPredicate *o = object; - ADD_CLASS_LABEL(@"NSCompoundPredicate Info") - ADD_OBJECT(objectFromCompoundPredicateType([o compoundPredicateType]) ,@"Compound predicate type") - ADD_OBJECTS( [o subpredicates] ,@"Subpredicates") -} - -- (void)addNSController:(id)object -{ - if ([object isKindOfClass:[NSObjectController class]]) - { - if ([object isKindOfClass:[NSArrayController class]]) - { - if ([object isKindOfClass:[NSDictionaryController class]]) - { - NSDictionaryController *o = object; - ADD_CLASS_LABEL(@"NSDictionaryController Info"); - ADD_OBJECTS( [o excludedKeys] ,@"Excluded keys") - ADD_OBJECTS( [o includedKeys] ,@"Included keys") - ADD_OBJECT( [o initialKey] ,@"Initial key") - ADD_OBJECT( [o initialValue] ,@"Initial value") - ADD_DICTIONARY( [o localizedKeyDictionary] ,@"Localized key dictionary") - ADD_OBJECT_NOT_NIL( [o localizedKeyTable] ,@"Localized key table") - } - - NSArrayController *o = object; - ADD_CLASS_LABEL(@"NSArrayController Info"); - ADD_BOOL( [o alwaysUsesMultipleValuesMarker] ,@"Always uses multiple values marker") - ADD_BOOL( [o automaticallyRearrangesObjects] ,@"Automatically rearranges objects") - ADD_OBJECTS( [o automaticRearrangementKeyPaths] ,@"Automatic rearrangement key paths") - ADD_BOOL( [o avoidsEmptySelection] ,@"Avoids empty selection") - ADD_BOOL( [o clearsFilterPredicateOnInsertion] ,@"Clears filter predicate on insertion") - ADD_BOOL( [o canInsert] ,@"Can insert") - ADD_BOOL( [o canSelectNext] ,@"Can select next") - ADD_BOOL( [o canSelectPrevious] ,@"Can select previous") - ADD_OBJECT_NOT_NIL( [o filterPredicate] ,@"Filter predicate") - ADD_BOOL( [o preservesSelection] ,@"Preserves selection") - if ([o selectionIndex] != NSNotFound) ADD_NUMBER([o selectionIndex], @"Selection index") - ADD_OBJECT( [o selectionIndexes] ,@"Selection indexes") - ADD_BOOL( [o selectsInsertedObjects] ,@"Selects inserted Objects") - ADD_OBJECTS( [o sortDescriptors] ,@"Sort descriptors") + if (type == NSLeftMouseDown || type == NSLeftMouseUp || type == NSRightMouseDown || type == NSRightMouseUp || type == NSOtherMouseDown || type == NSOtherMouseUp || type == NSMouseMoved || type == NSLeftMouseDragged || type == NSRightMouseDragged || type == NSOtherMouseDragged || type == NSScrollWheel) + ADD_NUMBER(o, pressure) + if (type == NSTabletPoint || ((type == NSLeftMouseDown || type == NSLeftMouseUp || type == NSRightMouseDown || type == NSRightMouseUp || type == NSOtherMouseDown || type == NSOtherMouseUp || type == NSMouseMoved || type == NSLeftMouseDragged || type == NSRightMouseDragged || type == NSOtherMouseDragged || type == NSScrollWheel) && [object subtype] == NSTabletPointEventSubtype)) + ADD_NUMBER(o, rotation) + if (type == NSAppKitDefined || type == NSSystemDefined || type == NSApplicationDefined || type == NSLeftMouseDown || type == NSLeftMouseUp || type == NSRightMouseDown || type == NSRightMouseUp || type == NSOtherMouseDown || type == NSOtherMouseUp || type == NSMouseMoved || type == NSLeftMouseDragged || type == NSRightMouseDragged || type == NSOtherMouseDragged || type == NSScrollWheel) + ADD_ENUM(o, subtype, EventSubtype) + if (type == NSTabletProximity || ((type == NSLeftMouseDown || type == NSLeftMouseUp || type == NSRightMouseDown || type == NSRightMouseUp || type == NSOtherMouseDown || type == NSOtherMouseUp || type == NSMouseMoved || type == NSLeftMouseDragged || type == NSRightMouseDragged || type == NSOtherMouseDragged || type == NSScrollWheel) && [object subtype] == NSTabletProximityEventSubtype)) { + ADD_NUMBER(o, systemTabletID) + ADD_NUMBER(o, tabletID) } - else if ([object isKindOfClass:[NSTreeController class]]) - { - NSTreeController *o = object; - ADD_CLASS_LABEL(@"NSTreeController Info"); - ADD_BOOL( [o alwaysUsesMultipleValuesMarker] ,@"Always uses multiple values marker") - ADD_BOOL( [o avoidsEmptySelection] ,@"Avoids empty selection") - ADD_BOOL( [o canAddChild] ,@"Can add child") - ADD_BOOL( [o canInsert] ,@"Can insert") - ADD_BOOL( [o canInsertChild] ,@"Can insert child") - ADD_OBJECT( [o childrenKeyPath] ,@"Children key path") - ADD_OBJECT( [o countKeyPath] ,@"Count key path") - ADD_OBJECT( [o leafKeyPath] ,@"Leaf key path") - ADD_BOOL( [o preservesSelection] ,@"Preserves selection") - ADD_OBJECTS( [o selectedNodes] ,@"Selected nodes") - ADD_OBJECTS( [o selectedObjects] ,@"Selected objects") - ADD_OBJECTS( [o selectionIndexPaths] ,@"Selection index paths") - ADD_BOOL( [o selectsInsertedObjects] ,@"Selects inserted Objects") - ADD_OBJECTS( [o sortDescriptors] ,@"Sort descriptors") - } - - NSObjectController *o = object; - ADD_CLASS_LABEL(@"NSObjectController Info"); - ADD_BOOL( [o automaticallyPreparesContent] ,@"Automatically prepares content") - ADD_BOOL( [o canAdd] ,@"Can add") - ADD_BOOL( [o canRemove] ,@"Can remove") - ADD_OBJECT( [o content] ,@"Content") - if ([o managedObjectContext] != nil) // Do not work when there is no managedObjectContext associated with the object - ADD_OBJECT_NOT_NIL( [o defaultFetchRequest] ,@"Default fetch request") - ADD_OBJECT_NOT_NIL( [o entityName] ,@"Entity name") - ADD_OBJECT_NOT_NIL( [o fetchPredicate] ,@"Fetch predicate") - ADD_BOOL( [o isEditable] ,@"Is editable") - ADD_OBJECT_NOT_NIL( [o managedObjectContext] ,@"Managed object context") - ADD_OBJECT( [o objectClass] ,@"Object class") - ADD_OBJECTS( [o selectedObjects] ,@"Selected objects") - ADD_OBJECT( [o selection] ,@"Selection") - ADD_BOOL( [o usesLazyFetching] ,@"Uses lazy fetching") - - } - else if ([object isKindOfClass:[NSUserDefaultsController class]]) - { - NSUserDefaultsController *o = object; - ADD_CLASS_LABEL(@"NSUserDefaultsController Info"); - ADD_BOOL( [o appliesImmediately] ,@"Applies immediately") - ADD_OBJECT( [o defaults] ,@"Defaults") - ADD_BOOL( [o hasUnappliedChanges] ,@"Has unapplied changes") - ADD_OBJECT( [o initialValues] ,@"Initial values") - ADD_OBJECT( [o values] ,@"Values") - } - - NSController *o = object; - ADD_CLASS_LABEL(@"NSController Info"); - ADD_BOOL( [o isEditing] ,@"Is editing") -} - -- (void)addNSCursor:(id)object -{ - NSCursor *o = object; - ADD_CLASS_LABEL(@"NSCursor Info"); - ADD_POINT( [o hotSpot] ,@"HotSpot") - ADD_OBJECT( [o image] ,@"Image") - ADD_BOOL( [o isSetOnMouseEntered] ,@"Is set on mouse entered") - ADD_BOOL( [o isSetOnMouseExited] ,@"Is set on mouse exited") -} - -- (void)addNSDockTile:(id)object -{ - NSDockTile *o = object; - ADD_CLASS_LABEL(@"NSDockTile Info"); - ADD_OBJECT( [o badgeLabel] ,@"Badge label") - ADD_OBJECT( [o contentView] ,@"Content view") - ADD_OBJECT( [o owner] ,@"Owner") - ADD_BOOL( [o showsApplicationBadge] ,@"Shows application badge") - ADD_SIZE( [o size] ,@"Size") -} - -- (void)addNSDocument:(id)object -{ - /* - if ([object isKindOfClass:NSClassFromString(@"NSPersistentDocument")]) - { - NSPersistentDocument *o = object; - ADD_CLASS_LABEL(@"NSPersistentDocument Info"); - } - */ - - NSDocument *o = object; - ADD_CLASS_LABEL(@"NSDocument Info"); - ADD_OBJECT_NOT_NIL( [o autosavedContentsFileURL] ,@"Autosaved contents file URL") - ADD_OBJECT( [o autosavingFileType] ,@"Autosaving file type") - ADD_OBJECT( [o displayName] ,@"Display name") - ADD_OBJECT( [o fileModificationDate] ,@"File modification date") - ADD_BOOL( [o fileNameExtensionWasHiddenInLastRunSavePanel],@"File name extension was hidden in last run save panel") - ADD_OBJECT( [o fileType] ,@"File type") - ADD_OBJECT( [o fileTypeFromLastRunSavePanel] ,@"File type from last run save panel") - ADD_OBJECT_NOT_NIL( [o fileURL] ,@"File URL") - ADD_BOOL( [o hasUnautosavedChanges] ,@"Has unautosaved changes") - ADD_BOOL( [o hasUndoManager] ,@"Has undo manager") - ADD_BOOL( [o isDocumentEdited] ,@"Is document edited") - ADD_BOOL( [o keepBackupFile] ,@"Keep backup file") - ADD_OBJECT( [o fileTypeFromLastRunSavePanel] ,@"File type from last run save panel") - ADD_OBJECT( [o printInfo] ,@"Print info") - ADD_BOOL( [o shouldRunSavePanelWithAccessoryView] ,@"Should run save panel with accessory view") - ADD_OBJECTS( [o windowControllers] ,@"Window controllers") - ADD_OBJECT( [o windowForSheet] ,@"Window for sheet") - ADD_OBJECT( [o windowNibName] ,@"Window nib name") -} - -- (void)addNSDocumentController:(id)object -{ - NSDocumentController *o = object; - ADD_CLASS_LABEL(@"NSDocumentController Info"); - ADD_NUMBER( [o autosavingDelay] ,@"Autosaving delay") - ADD_OBJECT( [o currentDirectory] ,@"Current directory") - ADD_OBJECT( [o currentDocument] ,@"Current document") - ADD_OBJECT( [o defaultType] ,@"Default type") - ADD_OBJECTS( [o documentClassNames] ,@"Document class names") - ADD_OBJECTS( [o documents] ,@"Documents") - ADD_BOOL( [o hasEditedDocuments] ,@"Has edited documents") - ADD_NUMBER( [o maximumRecentDocumentCount] ,@"Maximum recent document count") - ADD_OBJECT( [o recentDocumentURLs] ,@"Recent document URLs") -} - -- (void)addNSEntityDescription:(id)object -{ - NSEntityDescription *o = object; - ADD_CLASS_LABEL(@"NSEntityDescription Info"); - ADD_DICTIONARY( [o attributesByName] ,@"Attributes by name") - ADD_BOOL( [o isAbstract] ,@"Is abstract") - ADD_OBJECT( [o managedObjectClassName] ,@"Managed object class name") - ADD_OBJECT( [o managedObjectModel] ,@"Managed object model") - ADD_OBJECT( [o name] ,@"Name") - ADD_DICTIONARY( [o relationshipsByName] ,@"Relationships by name") - if ([[o subentities] count] != 0) - { - ADD_DICTIONARY( [o subentitiesByName] ,@"Subentities by Name") - } - ADD_OBJECT( [o superentity] ,@"Superentity") - ADD_DICTIONARY( [o userInfo] ,@"User info") -} - -- (void)addNSEvent:(id)object -{ - NSEvent *o = object; - NSEventType type = [o type]; - ADD_CLASS_LABEL(@"NSEvent Info"); - - if (type == NSTabletPoint || ((type == NSLeftMouseDown || type == NSLeftMouseUp || type == NSRightMouseDown || type == NSRightMouseUp || type == NSOtherMouseDown || type == NSOtherMouseUp || type == NSMouseMoved || type == NSLeftMouseDragged || type == NSRightMouseDragged || type == NSOtherMouseDragged || type == NSScrollWheel) && [object subtype] == NSTabletPointEventSubtype) ) - { - ADD_NUMBER( [o absoluteX] ,@"Absolute x") - ADD_NUMBER( [o absoluteY] ,@"Absolute y") - ADD_NUMBER( [o absoluteZ] ,@"Absolute z") - ADD_OBJECT(objectFromButtonMask([o buttonMask]) ,@"Button mask") - } - if (type == NSLeftMouseDown || type == NSLeftMouseUp || type == NSRightMouseDown || type == NSRightMouseUp || type == NSOtherMouseDown || type == NSOtherMouseUp) - ADD_NUMBER( [o buttonNumber] ,@"Button number") - - if (type == NSTabletProximity || ((type == NSLeftMouseDown || type == NSLeftMouseUp || type == NSRightMouseDown || type == NSRightMouseUp || type == NSOtherMouseDown || type == NSOtherMouseUp || type == NSMouseMoved || type == NSLeftMouseDragged || type == NSRightMouseDragged || type == NSOtherMouseDragged || type == NSScrollWheel) && [object subtype] == NSTabletProximityEventSubtype) ) - ADD_NUMBER( [o capabilityMask] ,@"Capability mask") - - if (type == NSKeyDown || type == NSKeyUp) - { - ADD_OBJECT( [(NSEvent *)o characters] ,@"Characters") - ADD_OBJECT( [o charactersIgnoringModifiers] ,@"Characters ignoring modifiers") - } - if (type == NSLeftMouseDown || type == NSLeftMouseUp || type == NSRightMouseDown || type == NSRightMouseUp || type == NSOtherMouseDown || type == NSOtherMouseUp) - ADD_NUMBER( [o clickCount] ,@"Click count") - if (type == NSAppKitDefined || type == NSSystemDefined || type == NSApplicationDefined) - { - ADD_NUMBER( [o data1] ,@"Data1") - ADD_NUMBER( [o data2] ,@"Data2") - } - if (type == NSMouseMoved || type == NSLeftMouseDragged || type == NSRightMouseDragged || type == NSOtherMouseDragged || type == NSScrollWheel) - { - ADD_NUMBER( [o deltaX] ,@"Delta x") - ADD_NUMBER( [o deltaY] ,@"Delta y") - ADD_NUMBER( [o deltaZ] ,@"Delta z") - } - - if (type == NSTabletPoint || type == NSTabletProximity || ((type == NSLeftMouseDown || type == NSLeftMouseUp || type == NSRightMouseDown || type == NSRightMouseUp || type == NSOtherMouseDown || type == NSOtherMouseUp || type == NSMouseMoved || type == NSLeftMouseDragged || type == NSRightMouseDragged || type == NSOtherMouseDragged || type == NSScrollWheel) && ([object subtype] == NSTabletProximityEventSubtype || [object subtype] == NSTabletPointEventSubtype)) ) - ADD_NUMBER( [o deviceID] ,@"Device ID") - if (type == NSLeftMouseDown || type == NSLeftMouseUp || type == NSRightMouseDown || type == NSRightMouseUp || type == NSOtherMouseDown || type == NSOtherMouseUp || type == NSMouseMoved || type == NSLeftMouseDragged || type == NSRightMouseDragged || type == NSOtherMouseDragged || type == NSScrollWheel || type == NSMouseEntered || type == NSMouseExited || type == NSCursorUpdate) - ADD_NUMBER( [o eventNumber] ,@"Event number") - if (type == NSKeyDown) - ADD_BOOL( [o isARepeat] ,@"Is a repeat") - if (type == NSTabletProximity || ((type == NSLeftMouseDown || type == NSLeftMouseUp || type == NSRightMouseDown || type == NSRightMouseUp || type == NSOtherMouseDown || type == NSOtherMouseUp || type == NSMouseMoved || type == NSLeftMouseDragged || type == NSRightMouseDragged || type == NSOtherMouseDragged || type == NSScrollWheel) && [object subtype] == NSTabletProximityEventSubtype) ) - ADD_BOOL( [o isEnteringProximity] ,@"Is entering proximity") - if (type == NSKeyDown || type == NSKeyUp) - ADD_NUMBER( [o keyCode] ,@"Key code") - if (type == NSLeftMouseDown || type == NSLeftMouseUp || type == NSRightMouseDown || type == NSRightMouseUp || type == NSOtherMouseDown || type == NSOtherMouseUp || type == NSMouseMoved || type == NSLeftMouseDragged || type == NSRightMouseDragged || type == NSOtherMouseDragged || type == NSScrollWheel) - ADD_POINT( [o locationInWindow] ,@"Location in window") - ADD_OBJECT(objectFromKeyModifierMask([o modifierFlags]) ,@"Modifier flags") - if (type == NSTabletProximity || ((type == NSLeftMouseDown || type == NSLeftMouseUp || type == NSRightMouseDown || type == NSRightMouseUp || type == NSOtherMouseDown || type == NSOtherMouseUp || type == NSMouseMoved || type == NSLeftMouseDragged || type == NSRightMouseDragged || type == NSOtherMouseDragged || type == NSScrollWheel) && [object subtype] == NSTabletProximityEventSubtype) ) - { - ADD_NUMBER( [o pointingDeviceID] ,@"Pointing device ID") - ADD_NUMBER( [o pointingDeviceSerialNumber] ,@"Pointing device serial number") - ADD_OBJECT(objectFromPointingDeviceType([o pointingDeviceType]),@"Pointing device type") - } - if (type == NSLeftMouseDown || type == NSLeftMouseUp || type == NSRightMouseDown || type == NSRightMouseUp || type == NSOtherMouseDown || type == NSOtherMouseUp || type == NSMouseMoved || type == NSLeftMouseDragged || type == NSRightMouseDragged || type == NSOtherMouseDragged || type == NSScrollWheel) - ADD_NUMBER( [o pressure] ,@"Pressure") - if (type == NSTabletPoint || ((type == NSLeftMouseDown || type == NSLeftMouseUp || type == NSRightMouseDown || type == NSRightMouseUp || type == NSOtherMouseDown || type == NSOtherMouseUp || type == NSMouseMoved || type == NSLeftMouseDragged || type == NSRightMouseDragged || type == NSOtherMouseDragged || type == NSScrollWheel) && [object subtype] == NSTabletPointEventSubtype) ) - ADD_NUMBER( [o rotation] ,@"Rotation") - if (type == NSAppKitDefined || type == NSSystemDefined || type == NSApplicationDefined || type == NSLeftMouseDown || type == NSLeftMouseUp || type == NSRightMouseDown || type == NSRightMouseUp || type == NSOtherMouseDown || type == NSOtherMouseUp || type == NSMouseMoved || type == NSLeftMouseDragged || type == NSRightMouseDragged || type == NSOtherMouseDragged || type == NSScrollWheel) - ADD_OBJECT(objectFromEventSubtype([o subtype]) ,@"Subtype") - if (type == NSTabletProximity || ((type == NSLeftMouseDown || type == NSLeftMouseUp || type == NSRightMouseDown || type == NSRightMouseUp || type == NSOtherMouseDown || type == NSOtherMouseUp || type == NSMouseMoved || type == NSLeftMouseDragged || type == NSRightMouseDragged || type == NSOtherMouseDragged || type == NSScrollWheel) && [object subtype] == NSTabletProximityEventSubtype) ) - { - ADD_NUMBER( [o systemTabletID] ,@"System tablet ID") - ADD_NUMBER( [o tabletID] ,@"Tablet ID") + if (type == NSTabletPoint || ((type == NSLeftMouseDown || type == NSLeftMouseUp || type == NSRightMouseDown || type == NSRightMouseUp || type == NSOtherMouseDown || type == NSOtherMouseUp || type == NSMouseMoved || type == NSLeftMouseDragged || type == NSRightMouseDragged || type == NSOtherMouseDragged || type == NSScrollWheel) && [object subtype] == NSTabletPointEventSubtype)) { + ADD_NUMBER(o, tangentialPressure) + ADD_POINT(o, tilt) + } + ADD_NUMBER(o, timestamp) + if (type == NSMouseEntered || type == NSMouseExited || type == NSCursorUpdate) { + ADD_OBJECT(o, trackingArea) + ADD_NUMBER(o, trackingNumber) } - if (type == NSTabletPoint || ((type == NSLeftMouseDown || type == NSLeftMouseUp || type == NSRightMouseDown || type == NSRightMouseUp || type == NSOtherMouseDown || type == NSOtherMouseUp || type == NSMouseMoved || type == NSLeftMouseDragged || type == NSRightMouseDragged || type == NSOtherMouseDragged || type == NSScrollWheel) && [object subtype] == NSTabletPointEventSubtype) ) - { - ADD_NUMBER( [o tangentialPressure] ,@"Tangential pressure") - ADD_POINT( [o tilt] ,@"Tilt") - } - ADD_NUMBER( [o timestamp] ,@"Timestamp") - if (type == NSMouseEntered || type == NSMouseExited || type == NSCursorUpdate) - { - ADD_OBJECT( [o trackingArea] ,@"Tracking area") - ADD_NUMBER( [o trackingNumber] ,@"Tracking number") - } - ADD_OBJECT(objectFromEventType([(NSEvent *)o type]) ,@"Type") - if (type == NSTabletProximity || ((type == NSLeftMouseDown || type == NSLeftMouseUp || type == NSRightMouseDown || type == NSRightMouseUp || type == NSOtherMouseDown || type == NSOtherMouseUp || type == NSMouseMoved || type == NSLeftMouseDragged || type == NSRightMouseDragged || type == NSOtherMouseDragged || type == NSScrollWheel) && [object subtype] == NSTabletProximityEventSubtype) ) - ADD_NUMBER( [o uniqueID] ,@"Unique ID") - if (type == NSMouseEntered || type == NSMouseExited || type == NSCursorUpdate) - { - void *userData = [o userData]; - if (userData) - ADD_POINTER( [o userData] ,@"User data") + ADD_ENUM(o, type, EventType) + if (type == NSTabletProximity || ((type == NSLeftMouseDown || type == NSLeftMouseUp || type == NSRightMouseDown || type == NSRightMouseUp || type == NSOtherMouseDown || type == NSOtherMouseUp || type == NSMouseMoved || type == NSLeftMouseDragged || type == NSRightMouseDragged || type == NSOtherMouseDragged || type == NSScrollWheel) && [object subtype] == NSTabletProximityEventSubtype)) + ADD_NUMBER(o, uniqueID) + if (type == NSMouseEntered || type == NSMouseExited || type == NSCursorUpdate) { + void* userData = [o userData]; + if (userData) + ADD_POINTER([o userData], @"User data") } - if (type == NSTabletPoint || ((type == NSLeftMouseDown || type == NSLeftMouseUp || type == NSRightMouseDown || type == NSRightMouseUp || type == NSOtherMouseDown || type == NSOtherMouseUp || type == NSMouseMoved || type == NSLeftMouseDragged || type == NSRightMouseDragged || type == NSOtherMouseDragged || type == NSScrollWheel) && [object subtype] == NSTabletPointEventSubtype) ) - ADD_OBJECT( [o vendorDefined] ,@"Vendor defined") - if (type == NSTabletProximity || ((type == NSLeftMouseDown || type == NSLeftMouseUp || type == NSRightMouseDown || type == NSRightMouseUp || type == NSOtherMouseDown || type == NSOtherMouseUp || type == NSMouseMoved || type == NSLeftMouseDragged || type == NSRightMouseDragged || type == NSOtherMouseDragged || type == NSScrollWheel) && [object subtype] == NSTabletProximityEventSubtype) ) - { - ADD_NUMBER( [o vendorID] ,@"Vendor ID") - ADD_NUMBER( [o vendorPointingDeviceType] ,@"Vendor pointing device type") - } - if (type != NSPeriodic) - ADD_OBJECT( [o window] ,@"Window") - } - + if (type == NSTabletPoint || ((type == NSLeftMouseDown || type == NSLeftMouseUp || type == NSRightMouseDown || type == NSRightMouseUp || type == NSOtherMouseDown || type == NSOtherMouseUp || type == NSMouseMoved || type == NSLeftMouseDragged || type == NSRightMouseDragged || type == NSOtherMouseDragged || type == NSScrollWheel) && [object subtype] == NSTabletPointEventSubtype)) + ADD_OBJECT(o, vendorDefined) + if (type == NSTabletProximity || ((type == NSLeftMouseDown || type == NSLeftMouseUp || type == NSRightMouseDown || type == NSRightMouseUp || type == NSOtherMouseDown || type == NSOtherMouseUp || type == NSMouseMoved || type == NSLeftMouseDragged || type == NSRightMouseDragged || type == NSOtherMouseDragged || type == NSScrollWheel) && [object subtype] == NSTabletProximityEventSubtype)) { + ADD_NUMBER(o, vendorID) + ADD_NUMBER(o, vendorPointingDeviceType) + } + if (type != NSPeriodic) + ADD_OBJECT(o, window) +} + - (void)addNSExpression:(id)object { - NSExpression *o = object; - NSArray *arguments = nil; - id collection = nil; - id constantValue = nil; - NSExpressionType expressionType = 0; - NSString *function = nil; - NSString *keyPath = nil; - NSExpression *leftExpression = nil; - NSExpression *operand = nil; - NSPredicate *predicate = nil; - NSExpression *rightExpression = nil; - NSString *variable = nil; - - BOOL argumentsIsInitialized = NO; - BOOL collectionIsInitialized = NO; - BOOL constantValueIsInitialized = NO; - BOOL expressionTypeIsInitialized = NO; - BOOL functionIsInitialized = NO; - BOOL keyPathIsInitialized = NO; - BOOL leftExpressionIsInitialized = NO; - BOOL operandIsInitialized = NO; - BOOL predicateIsInitialized = NO; - BOOL rightExpressionIsInitialized = NO; - BOOL variableIsInitialized = NO; - - @try { arguments = [o arguments]; argumentsIsInitialized = YES; } @catch (id exception) {} - @try { collection = [o collection]; collectionIsInitialized = YES; } @catch (id exception) {} - @try { constantValue = [o constantValue]; constantValueIsInitialized = YES; } @catch (id exception) {} - @try { expressionType = [o expressionType]; expressionTypeIsInitialized = YES; } @catch (id exception) {} - @try { function = [o function]; functionIsInitialized = YES; } @catch (id exception) {} - @try { keyPath = [o keyPath]; keyPathIsInitialized = YES; } @catch (id exception) {} - @try { leftExpression = [o leftExpression]; leftExpressionIsInitialized = YES; } @catch (id exception) {} - @try { operand = [o operand]; operandIsInitialized = YES; } @catch (id exception) {} - @try { predicate = [o predicate]; predicateIsInitialized = YES; } @catch (id exception) {} - @try { rightExpression = [o rightExpression]; rightExpressionIsInitialized = YES; } @catch (id exception) {} - @try { variable = [o variable]; variableIsInitialized = YES; } @catch (id exception) {} - - ADD_CLASS_LABEL(@"NSExpression Info"); - - if (argumentsIsInitialized) ADD_OBJECTS(arguments ,@"Arguments"); - if (collectionIsInitialized) ADD_OBJECT(collection ,@"Collection"); - if (constantValueIsInitialized) ADD_OBJECT(constantValue ,@"Constant value"); - if (expressionTypeIsInitialized) ADD_OBJECT(objectFromExpressionType(expressionType) ,@"Expression type"); - if (functionIsInitialized) ADD_OBJECT(function ,@"Function"); - if (keyPathIsInitialized) ADD_OBJECT(keyPath ,@"Key path"); - if (leftExpressionIsInitialized) ADD_OBJECT(leftExpression ,@"Left expression"); - if (operandIsInitialized) ADD_OBJECT(operand ,@"Operand"); - if (predicateIsInitialized) ADD_OBJECT(predicate ,@"Predicate"); - if (rightExpressionIsInitialized) ADD_OBJECT(leftExpression ,@"Right expression"); - if (variableIsInitialized) ADD_OBJECT(variable ,@"Variable"); + ADD_CLASS_LABEL(@"NSExpression Info"); + NSExpression *o = object; + + @try { ADD_OBJECTS(o, arguments); } @catch (id exception) {} + @try { ADD_OBJECT(o, collection); } @catch (id exception) {} + @try { ADD_OBJECT(o, constantValue); } @catch (id exception) {} + @try { ADD_ENUM(o, expressionType, ExpressionType); } @catch (id exception) {} + @try { ADD_STRING(o, function); } @catch (id exception) {} + @try { ADD_STRING(o, keyPath); } @catch (id exception) {} + @try { ADD_OBJECT(o, leftExpression); } @catch (id exception) {} + @try { ADD_OBJECT(o, operand); } @catch (id exception) {} + @try { ADD_OBJECT(o, predicate); } @catch (id exception) {} + @try { ADD_OBJECT(o, rightExpression); } @catch (id exception) {} + @try { ADD_STRING(o, variable); } @catch (id exception) {} + } - + - (void)addNSFetchRequest:(id)object { - NSFetchRequest *o = object; - ADD_CLASS_LABEL(@"NSFetchRequest Info"); - ADD_OBJECTS( [o affectedStores] ,@"Affected stores") - ADD_OBJECT( [o entity] ,@"Entity") - ADD_NUMBER( [o fetchLimit] ,@"Fetch limit") - ADD_BOOL( [o includesPropertyValues] ,@"Includes property values") - ADD_BOOL( [o includesSubentities] ,@"Includes bubentities") - ADD_OBJECT( [o predicate] ,@"Predicate") - ADD_OBJECTS( [o relationshipKeyPathsForPrefetching] ,@"Relationship key paths for prefetching") - ADD_OBJECT(objectFromFetchRequestResultType([o resultType]) ,@"Result type") - ADD_BOOL( [o returnsObjectsAsFaults] ,@"Returns objects as faults") - ADD_OBJECTS( [o sortDescriptors] ,@"Sort descriptors") + NSFetchRequest* o = object; + ADD_CLASS_LABEL(@"NSFetchRequest Info"); + ADD_OBJECTS(o, affectedStores) + ADD_OBJECT(o, entity) + ADD_NUMBER(o, fetchLimit) + ADD_BOOL(o, includesPropertyValues) + ADD_BOOL(o, includesSubentities) + ADD_OBJECT(o, predicate) + ADD_OBJECTS(o, relationshipKeyPathsForPrefetching) + ADD_ENUM(o, resultType, FetchRequestResultType) + ADD_BOOL(o, returnsObjectsAsFaults) + ADD_OBJECTS(o, sortDescriptors) } - (void)addNSFileWrapper:(id)object { - NSFileWrapper *o = object; - ADD_CLASS_LABEL(@"NSFileWrapper Info"); - ADD_DICTIONARY( [o fileAttributes] ,@"File attributes") - ADD_OBJECT( [o filename] ,@"Filename") - ADD_OBJECT_NOT_NIL( [o icon] ,@"Icon") - ADD_BOOL( [o isDirectory] ,@"Is directory") - ADD_BOOL( [o isRegularFile] ,@"Is regularFile") - ADD_BOOL( [o isSymbolicLink] ,@"Is symbolic link") - ADD_OBJECT_NOT_NIL( [o preferredFilename] ,@"Preferred filename") - if ([o isSymbolicLink]) - ADD_OBJECT_NOT_NIL( [o symbolicLinkDestination] ,@"Symbolic link destination") + NSFileWrapper* o = object; + ADD_CLASS_LABEL(@"NSFileWrapper Info"); + ADD_DICTIONARY(o, fileAttributes) + ADD_OBJECT(o, filename) + ADD_OBJECT_NOT_NIL(o, icon) + ADD_BOOL(o, isDirectory) + ADD_BOOL(o, isRegularFile) + ADD_BOOL(o, isSymbolicLink) + ADD_OBJECT_NOT_NIL(o, preferredFilename) + if ([o isSymbolicLink]) + ADD_OBJECT_NOT_NIL(o, symbolicLinkDestination) } - + - (void)addNSFont:(id)object { - NSFont *o = object; - ADD_CLASS_LABEL(@"NSFont Info"); - ADD_NUMBER( [o ascender] ,@"Ascender") - ADD_RECT( [o boundingRectForFont] ,@"Bounding rect for font") - ADD_NUMBER( [o capHeight] ,@"Cap height") - ADD_OBJECT( [o coveredCharacterSet] ,@"Covered character set") - ADD_NUMBER( [o descender] ,@"Descender") - ADD_OBJECT( [o displayName] ,@"Display name") - ADD_OBJECT( [o familyName] ,@"Family name") - ADD_OBJECT( [o fontDescriptor] ,@"Font descriptor") - ADD_OBJECT( [o fontName] ,@"Font name") - ADD_BOOL( [o isFixedPitch] ,@"Is fixedPitch") - ADD_NUMBER( [o italicAngle] ,@"Italic angle") - ADD_NUMBER( [o leading] ,@"Leading") - - const CGFloat *matrix = [o matrix]; - NSString *matrixString = [NSString stringWithFormat:@"[%g %g %g %g %g %g]", (double)(matrix[0]), (double)(matrix[1]), (double)(matrix[2]), (double)(matrix[3]), (double)(matrix[4]), (double)(matrix[5])]; - [view addObject:matrixString withLabel:@"Matrix" toMatrix:m leaf:YES classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject indentationLevel:0]; - - ADD_SIZE( [o maximumAdvancement] ,@"Maximum advancement") - ADD_OBJECT(objectFromStringEncoding([o mostCompatibleStringEncoding]),@"Most compatible string encoding") - ADD_NUMBER( [o numberOfGlyphs] ,@"Number of glyphs") - ADD_NUMBER( [o pointSize] ,@"Point size") - ADD_OBJECT( [o printerFont] ,@"Printer font") - ADD_OBJECT(objectFromFontRenderingMode([o renderingMode]) ,@"Rendering mode") - ADD_OBJECT_NOT_NIL( [o screenFont] ,@"Screen font") - ADD_NUMBER( [o underlinePosition] ,@"Underline position") - ADD_NUMBER( [o underlineThickness] ,@"Underline thickness") - ADD_NUMBER( [o xHeight] ,@"xHeight") -} - + NSFont* o = object; + ADD_CLASS_LABEL(@"NSFont Info"); + ADD_NUMBER(o, ascender) + ADD_RECT(o, boundingRectForFont) + ADD_NUMBER(o, capHeight) + ADD_OBJECT(o, coveredCharacterSet) + ADD_NUMBER(o, descender) + ADD_OBJECT(o, displayName) + ADD_OBJECT(o, familyName) + ADD_OBJECT(o, fontDescriptor) + ADD_OBJECT(o, fontName) + ADD_BOOL(o, isFixedPitch) + ADD_NUMBER(o, italicAngle) + ADD_NUMBER(o, leading) + + const CGFloat* matrix = [o matrix]; + NSString* matrixString = [NSString stringWithFormat:@"[%g %g %g %g %g %g]", (double)(matrix[0]), (double)(matrix[1]), (double)(matrix[2]), (double)(matrix[3]), (double)(matrix[4]), (double)(matrix[5])]; + [view addObject:matrixString withLabel:@"Matrix" toMatrix:m leaf:YES classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject indentationLevel:0]; + + ADD_SIZE(o, maximumAdvancement) + ADD_ENUM(o, mostCompatibleStringEncoding, StringEncoding) + ADD_NUMBER(o, numberOfGlyphs) + ADD_NUMBER(o, pointSize) + ADD_OBJECT(o, printerFont) + ADD_ENUM(o, renderingMode, FontRenderingMode) + ADD_OBJECT_NOT_NIL(o, screenFont) + ADD_NUMBER(o, underlinePosition) + ADD_NUMBER(o, underlineThickness) + ADD_NUMBER(o, xHeight) +} + - (void)addNSFontDescriptor:(id)object { - NSFontDescriptor *o = object; - ADD_CLASS_LABEL(@"NSFontDescriptor Info"); - ADD_DICTIONARY( [o fontAttributes] ,@"Font attributes") - ADD_OBJECT( [o matrix] ,@"Matrix") - ADD_NUMBER( [o pointSize] ,@"Point size") - ADD_OBJECT( [o postscriptName] ,@"Postscript name") - ADD_NUMBER( [o symbolicTraits] ,@"Symbolic traits") + NSFontDescriptor* o = object; + ADD_CLASS_LABEL(@"NSFontDescriptor Info"); + ADD_DICTIONARY(o, fontAttributes) + ADD_OBJECT(o, matrix) + ADD_NUMBER(o, pointSize) + ADD_OBJECT(o, postscriptName) + ADD_NUMBER(o, symbolicTraits) } - + - (void)addNSFontManager:(id)object { - NSFontManager *o = object; - ADD_CLASS_LABEL(@"NSFontManager Info"); - ADD_SEL( [o action] ,@"Action") - ADD_OBJECTS( [o availableFontFamilies] ,@"Available font families") - ADD_OBJECTS( [o availableFonts] ,@"Available fonts") - ADD_OBJECTS( [o collectionNames] ,@"Collection names") - ADD_OBJECT_NOT_NIL( [o delegate] ,@"Delegate") - ADD_BOOL( [o isEnabled] ,@"Is enabled") - ADD_BOOL( [o isMultiple] ,@"IsMultiple") - ADD_OBJECT( [o selectedFont] ,@"Selected font") - ADD_OBJECT( [o target] ,@"Target") + NSFontManager* o = object; + ADD_CLASS_LABEL(@"NSFontManager Info"); + ADD_SEL(o, action) + ADD_OBJECTS(o, availableFontFamilies) + ADD_OBJECTS(o, availableFonts) + ADD_OBJECTS(o, collectionNames) + ADD_OBJECT(o, delegate, NSObject.class, YES) + ADD_BOOL(o, isEnabled) + ADD_BOOL(o, isMultiple) + ADD_OBJECT(o, selectedFont) + ADD_OBJECT(o, target) } - + - (void)addNSGlyphInfo:(id)object - { - NSGlyphInfo *o = object; +{ + NSGlyphInfo* o = object; ADD_CLASS_LABEL(@"NSGlyphInfo Info"); - ADD_OBJECT(objectFromCharacterCollection([o characterCollection]),@"Character collection") - if ([o characterIdentifier]) ADD_NUMBER( [o characterIdentifier],@"Character identifier"); - ADD_OBJECT_NOT_NIL( [o glyphName] ,@"Glyph name") - } - + ADD_ENUM(o, characterCollection, CharacterCollection) + if ([o characterIdentifier]) + ADD_NUMBER(o, characterIdentifier); + ADD_OBJECT_NOT_NIL(o, glyphName) +} + - (void)addNSGlyphGenerator:(id)object { - //NSGlyphGenerator *o = object; - //ADD_CLASS_LABEL(@"NSGlyphGenerator Info"); + //NSGlyphGenerator *o = object; + //ADD_CLASS_LABEL(@"NSGlyphGenerator Info"); } - + - (void)addNSGradient:(id)object { - NSGradient *o = object; - ADD_CLASS_LABEL(@"NSGradient Info"); - ADD_OBJECT_NOT_NIL( [o colorSpace] ,@"Color space") - ADD_NUMBER( [o numberOfColorStops] ,@"Number of color stops") + NSGradient* o = object; + ADD_CLASS_LABEL(@"NSGradient Info"); + ADD_OBJECT_NOT_NIL(o, colorSpace) + ADD_NUMBER(o, numberOfColorStops) } - - + + - (void)addNSGraphicsContext:(id)object { - NSGraphicsContext *o = object; - ADD_CLASS_LABEL(@"NSGraphicsContext Info"); - ADD_DICTIONARY( [o attributes] ,@"Attributes") - ADD_OBJECT(objectFromColorRenderingIntent([o colorRenderingIntent]),@"Color rendering intent") - ADD_OBJECT(objectFromCompositingOperation([o compositingOperation]),@"Compositing operation") - ADD_POINTER( [o graphicsPort] ,@"Graphics port") - ADD_OBJECT(objectFromImageInterpolation([o imageInterpolation]) ,@"Image interpolation") - ADD_BOOL( [o isDrawingToScreen] ,@"Is drawing to screen") - ADD_BOOL( [o isFlipped] ,@"Is flipped") - ADD_POINT( [o patternPhase] ,@"Pattern phase") - ADD_BOOL( [o shouldAntialias] ,@"Should antialias") + NSGraphicsContext* o = object; + ADD_CLASS_LABEL(@"NSGraphicsContext Info"); + ADD_DICTIONARY(o, attributes) + ADD_ENUM(o, colorRenderingIntent, ColorRenderingIntent) + ADD_ENUM(o, compositingOperation, CompositingOperation) + ADD_POINTER([o graphicsPort], @"Graphics port") + ADD_ENUM(o, imageInterpolation, ImageInterpolation) + ADD_BOOL(o, isDrawingToScreen) + ADD_BOOL(o, isFlipped) + ADD_POINT(o, patternPhase) + ADD_BOOL(o, shouldAntialias) } - + - (void)addNSImage:(id)object { - NSImage *o = object; - ADD_CLASS_LABEL(@"NSImage Info"); - ADD_RECT( [o alignmentRect] ,@"Alignment rect") - ADD_OBJECT( [o backgroundColor] ,@"Background color") - ADD_BOOL( [o cacheDepthMatchesImageDepth] ,@"Cache depth matches image depth") - ADD_OBJECT(objectFromImageCacheMode([o cacheMode]) ,@"Cache mode") - ADD_OBJECT_NOT_NIL( [o delegate] ,@"Delegate") - ADD_BOOL( [o isCachedSeparately] ,@"Is cached separately") - ADD_BOOL( [o isDataRetained] ,@"Is data retained") - ADD_BOOL( [o isFlipped] ,@"Is flipped") - ADD_BOOL( [o isTemplate] ,@"Is template") - ADD_BOOL( [o isValid] ,@"Is valid") - ADD_BOOL( [o matchesOnMultipleResolution] ,@"Matches on multiple resolution") - ADD_OBJECT_NOT_NIL( [o name] ,@"Name") - ADD_BOOL( [o prefersColorMatch] ,@"Prefers color match") - ADD_OBJECTS( [o representations] ,@"Representations") - ADD_BOOL( [o scalesWhenResized] ,@"Scales when resized") - ADD_SIZE( [o size] ,@"Size") - ADD_BOOL( [o usesEPSOnResolutionMismatch] ,@"Uses EPS on resolution mismatch") -} - + NSImage* o = object; + ADD_CLASS_LABEL(@"NSImage Info"); + ADD_RECT(o, alignmentRect) + ADD_COLOR(o, backgroundColor) + ADD_BOOL(o, cacheDepthMatchesImageDepth) + ADD_ENUM(o, cacheMode, ImageCacheMode) + ADD_OBJECT(o, delegate, NSObject.class, YES) + ADD_BOOL(o, isCachedSeparately) + ADD_BOOL(o, isDataRetained) + ADD_BOOL(o, isFlipped) + ADD_BOOL(o, isTemplate) + ADD_BOOL(o, isValid) + ADD_BOOL(o, matchesOnMultipleResolution) + ADD_OBJECT_NOT_NIL(o, name) + ADD_BOOL(o, prefersColorMatch) + ADD_OBJECTS(o, representations) + ADD_BOOL(o, scalesWhenResized) + ADD_SIZE(o, size) + ADD_BOOL(o, usesEPSOnResolutionMismatch) +} + - (void)addNSImageRep:(id)object { - if ([object isKindOfClass:[NSBitmapImageRep class]]) - { - NSBitmapImageRep *o = object; - ADD_CLASS_LABEL(@"NSBitmapImageRep Info"); - ADD_OBJECT( objectFromBitmapFormat([o bitmapFormat]),@"Bitmap format") - ADD_NUMBER( [o bitsPerPixel] ,@"Bits per pixel") - ADD_NUMBER( [o bytesPerPlane] ,@"Bytes per plane") - ADD_NUMBER( [o bytesPerRow] ,@"Bytes per row") - ADD_OBJECT_NOT_NIL([o valueForProperty:NSImageColorSyncProfileData],@"ColorSync profile data") - ADD_OBJECT_NOT_NIL([o valueForProperty:NSImageCompressionFactor],@"Compression factor") - { - id compressionMethod = [o valueForProperty:NSImageCompressionMethod]; - if ([compressionMethod isKindOfClass:[NSNumber class]]) - ADD_OBJECT(objectFromTIFFCompression([[o valueForProperty:NSImageCompressionMethod] longValue]),@"Compression method") + if ([object isKindOfClass:[NSBitmapImageRep class]]) { + NSBitmapImageRep* o = object; + ADD_CLASS_LABEL(@"NSBitmapImageRep Info"); + ADD_OPTIONS(o, bitmapFormat, BitmapFormat) + ADD_NUMBER(o, bitsPerPixel) + ADD_NUMBER(o, bytesPerPlane) + ADD_NUMBER(o, bytesPerRow) + ADD_OBJECT_GETSET(o, + { return [obj valueForProperty:NSImageColorSyncProfileData]; }, + { [obj setProperty:NSImageColorSyncProfileData withValue:val ];}, + nil, @"ColorSync profile data", YES) + ADD_OBJECT_GETSET(o, + { return [obj valueForProperty:NSImageCompressionFactor]; }, + { [obj setProperty:NSImageCompressionFactor withValue:val ];}, + nil, @"Compression factor", YES) + { + //TODO + //id compressionMethod = [o valueForProperty:NSImageCompressionMethod]; + // if ([compressionMethod isKindOfClass:[NSNumber class]]) + // ADD_ENUM(TIFFCompression, [[o valueForProperty:NSImageCompressionMethod] longValue], imageCompressionMethod, setImageCompressionMethod, @"Compression method") + } + ADD_OBJECT_GETSET(o, + { return [obj valueForProperty:NSImageCurrentFrame]; }, + { [obj setProperty:NSImageCurrentFrame withValue:val ];}, + nil, @"Current frame", YES) + ADD_OBJECT_GETSET(o, + { return [obj valueForProperty:NSImageCurrentFrameDuration]; }, + { [obj setProperty:NSImageCurrentFrameDuration withValue:val ];}, + nil, @"Current frame duration", YES) + ADD_OBJECT_GETSET(o, + { return [obj valueForProperty:NSImageDitherTransparency]; }, + { [obj setProperty:NSImageDitherTransparency withValue:val ];}, + nil, @"Dither transparency", YES) + ADD_OBJECT_GETSET(o, + { return [obj valueForProperty:NSImageEXIFData]; }, + { [obj setProperty:NSImageEXIFData withValue:val ];}, + nil, @"EXIF data", YES) + ADD_OBJECT_GETSET(o, + { return [obj valueForProperty:NSImageFallbackBackgroundColor]; }, + { [obj setProperty:NSImageFallbackBackgroundColor withValue:val ];}, + nil, @"Fallback background color", YES) + ADD_OBJECT_GETSET(o, + { return [obj valueForProperty:NSImageFrameCount]; }, + { [obj setProperty:NSImageFrameCount withValue:val ];}, + nil, @"Frame count", YES) + ADD_OBJECT_GETSET(o, + { return [obj valueForProperty:NSImageGamma]; }, + { [obj setProperty:NSImageGamma withValue:val ];}, + nil, @"Gamma", YES) + ADD_OBJECT_GETSET(o, + { return [obj valueForProperty:NSImageInterlaced]; }, + { [obj setProperty:NSImageInterlaced withValue:val ];}, + nil, @"Interlaced", YES) + ADD_BOOL(o, isPlanar) + ADD_OBJECT_GETSET(o, + { return [obj valueForProperty:NSImageLoopCount]; }, + { [obj setProperty:NSImageLoopCount withValue:val ];}, + nil, @"Loop count", YES) + ADD_NUMBER(o, numberOfPlanes) + ADD_OBJECT_GETSET(o, + { return [obj valueForProperty:NSImageProgressive]; }, + { [obj setProperty:NSImageProgressive withValue:val ];}, + nil, @"Progressive", YES) + ADD_OBJECT_GETSET(o, + { return [obj valueForProperty:NSImageRGBColorTable]; }, + { [obj setProperty:NSImageRGBColorTable withValue:val ];}, + nil, @"RGB color table", YES) + ADD_NUMBER(o, samplesPerPixel) + } + else if ([object isKindOfClass:[NSCIImageRep class]]) { + NSCIImageRep* o = object; + ADD_CLASS_LABEL(@"NSCIImageRep Info"); + ADD_OBJECT(o, CIImage) + } + else if ([object isKindOfClass:[NSCustomImageRep class]]) { + NSCustomImageRep* o = object; + ADD_CLASS_LABEL(@"NSCustomImageRep Info"); + ADD_OBJECT(o, delegate) + ADD_SEL(o, drawSelector) + } + else if ([object isKindOfClass:[NSEPSImageRep class]]) { + NSEPSImageRep* o = object; + ADD_CLASS_LABEL(@"NSEPSImageRep Info"); + ADD_RECT(o, boundingBox) + } + else if ([object isKindOfClass:[NSPDFImageRep class]]) { + NSPDFImageRep* o = object; + ADD_CLASS_LABEL(@"NSPDFImageRep Info"); + ADD_RECT(o, bounds) + ADD_NUMBER(o, currentPage) + ADD_NUMBER(o, pageCount) } - ADD_OBJECT_NOT_NIL([o valueForProperty:NSImageCurrentFrame] ,@"Current frame") - ADD_OBJECT_NOT_NIL([o valueForProperty:NSImageCurrentFrameDuration],@"Current frame duration") - ADD_OBJECT_NOT_NIL([o valueForProperty:NSImageDitherTransparency],@"Dither transparency") - ADD_OBJECT_NOT_NIL([o valueForProperty:NSImageEXIFData] ,@"EXIF data") - ADD_OBJECT_NOT_NIL([o valueForProperty:NSImageFallbackBackgroundColor],@"Fallback background color") - ADD_OBJECT_NOT_NIL([o valueForProperty:NSImageFrameCount] ,@"Frame count") - ADD_OBJECT_NOT_NIL([o valueForProperty:NSImageGamma] ,@"Gamma") - ADD_OBJECT_NOT_NIL([o valueForProperty:NSImageInterlaced] ,@"Interlaced") - ADD_BOOL( [o isPlanar] ,@"Is planar") - ADD_OBJECT_NOT_NIL([o valueForProperty:NSImageLoopCount] ,@"Loop count") - ADD_NUMBER( [o numberOfPlanes] ,@"Number of planes") - ADD_OBJECT_NOT_NIL([o valueForProperty:NSImageProgressive] ,@"Progressive") - ADD_OBJECT_NOT_NIL([o valueForProperty:NSImageRGBColorTable] ,@"RGB color table") - ADD_NUMBER( [o samplesPerPixel] ,@"Samples per pixel") - } - else if ([object isKindOfClass:[NSCIImageRep class]]) - { - NSCIImageRep *o = object; - ADD_CLASS_LABEL(@"NSCIImageRep Info"); - ADD_OBJECT( [o CIImage] ,@"CIImage") - } - else if ([object isKindOfClass:[NSCustomImageRep class]]) - { - NSCustomImageRep *o = object; - ADD_CLASS_LABEL(@"NSCustomImageRep Info"); - ADD_OBJECT( [o delegate] ,@"Delegate") - ADD_SEL( [o drawSelector] ,@"Draw selector") - } - else if ([object isKindOfClass:[NSEPSImageRep class]]) - { - NSEPSImageRep *o = object; - ADD_CLASS_LABEL(@"NSEPSImageRep Info"); - ADD_RECT( [o boundingBox] ,@"Bounding box") - } - else if ([object isKindOfClass:[NSPDFImageRep class]]) - { - NSPDFImageRep *o = object; - ADD_CLASS_LABEL(@"NSPDFImageRep Info"); - ADD_RECT( [o bounds] ,@"Bounding box") - ADD_NUMBER( [o currentPage] ,@"Current page") - ADD_NUMBER( [o pageCount] ,@"Page count") - } - else if ([object isKindOfClass:[NSPICTImageRep class]]) - { - NSPICTImageRep *o = object; - ADD_CLASS_LABEL(@"NSPICTImageRep Info"); - ADD_RECT( [o boundingBox] ,@"Bounding box") - } - - NSImageRep *o = object; - ADD_CLASS_LABEL(@"NSImageRep Info"); - ADD_NUMBER( [o bitsPerSample] ,@"Bits per sample") - ADD_OBJECT( [o colorSpaceName] ,@"Color space name") - ADD_BOOL( [o hasAlpha] ,@"Has alpha") - ADD_BOOL( [o isOpaque] ,@"Is opaque") - ADD_NUMBER( [o pixelsHigh] ,@"Pixels high") - ADD_NUMBER( [o pixelsWide] ,@"Pixels wide") - ADD_SIZE( [o size] ,@"Size") -} - + else if ([object isKindOfClass:[NSPICTImageRep class]]) { + NSPICTImageRep* o = object; + ADD_CLASS_LABEL(@"NSPICTImageRep Info"); + ADD_RECT(o, boundingBox) + } + + NSImageRep* o = object; + ADD_CLASS_LABEL(@"NSImageRep Info"); + ADD_NUMBER(o, bitsPerSample) + ADD_OBJECT(o, colorSpaceName) + ADD_BOOL(o, hasAlpha) + ADD_BOOL(o, isOpaque) + ADD_NUMBER(o, pixelsHigh) + ADD_NUMBER(o, pixelsWide) + ADD_SIZE(o, size) +} + - (void)addNSLayoutManager:(id)object { - NSLayoutManager *o = object; - ADD_CLASS_LABEL(@"NSLayoutManager Info"); - ADD_BOOL( [o allowsNonContiguousLayout] ,@"Allows non contiguous layout") - ADD_BOOL( [o backgroundLayoutEnabled] ,@"Background layout enabled") - ADD_OBJECT(objectFromImageScaling([o defaultAttachmentScaling]) ,@"Default attachment scaling") - ADD_OBJECT_NOT_NIL( [o delegate] ,@"Delegate") - ADD_RECT( [o extraLineFragmentRect] ,@"Extra line fragment rect") - ADD_OBJECT_NOT_NIL( [o extraLineFragmentTextContainer] ,@"Extra line fragment text container") - ADD_RECT( [o extraLineFragmentUsedRect] ,@"Extra line fragment used rect") - ADD_OBJECT( [o firstTextView] ,@"First text view") - ADD_NUMBER( [o firstUnlaidCharacterIndex] ,@"First unlaid character index") - ADD_NUMBER( [o firstUnlaidGlyphIndex] ,@"First unlaid glyph index") - ADD_OBJECT( [o glyphGenerator] ,@"Glyph generator") - ADD_BOOL( [o hasNonContiguousLayout] ,@"Has non contiguous layout") - ADD_NUMBER( [o hyphenationFactor] ,@"Hyphenation factor") - ADD_OBJECT(objectFromLayoutOptions([o layoutOptions]) ,@"Layout options") - ADD_BOOL( [o showsControlCharacters] ,@"Shows control characters") - ADD_BOOL( [o showsInvisibleCharacters] ,@"Shows invisible characters") - ADD_OBJECTS( [o textContainers] ,@"Text containers") - ADD_OBJECT( [o textStorage] ,@"Text storage") - ADD_OBJECT( [o textViewForBeginningOfSelection] ,@"Text view for beginning of selection") - ADD_OBJECT( [o typesetter] ,@"Typesetter") - ADD_OBJECT(objectFromTypesetterBehavior([o typesetterBehavior]) ,@"Typesetter behavior") - ADD_BOOL( [o usesFontLeading] ,@"Uses font leading") - ADD_BOOL( [o usesScreenFonts] ,@"Uses screen fonts") + NSLayoutManager* o = object; + ADD_CLASS_LABEL(@"NSLayoutManager Info"); + ADD_BOOL(o, allowsNonContiguousLayout) + ADD_BOOL(o, backgroundLayoutEnabled) + ADD_ENUM(o, defaultAttachmentScaling, ImageScaling) + ADD_OBJECT_NOT_NIL(o, delegate) + ADD_RECT(o, extraLineFragmentRect) + ADD_OBJECT_NOT_NIL(o, extraLineFragmentTextContainer) + ADD_RECT(o, extraLineFragmentUsedRect) + ADD_OBJECT(o, firstTextView) + ADD_NUMBER(o, firstUnlaidCharacterIndex) + ADD_NUMBER(o, firstUnlaidGlyphIndex) + ADD_OBJECT(o, glyphGenerator) + ADD_BOOL(o, hasNonContiguousLayout) + ADD_NUMBER(o, hyphenationFactor) + ADD_OPTIONS(o, layoutOptions, GlyphStorageLayoutOptions) + ADD_BOOL(o, showsControlCharacters) + ADD_BOOL(o, showsInvisibleCharacters) + ADD_OBJECTS(o, textContainers) + ADD_OBJECT(o, textStorage) + ADD_OBJECT(o, textViewForBeginningOfSelection) + ADD_OBJECT(o, typesetter) + ADD_ENUM(o, typesetterBehavior, TypesetterBehavior) + ADD_BOOL(o, usesFontLeading) + ADD_BOOL(o, usesScreenFonts) } - + - (void)addNSManagedObjectContext:(id)object { - NSManagedObjectContext *o = object; - ADD_CLASS_LABEL(@"NSManagedObjectContext Info"); - ADD_OBJECT( [o deletedObjects] ,@"Deleted objects" ) - ADD_BOOL( [o hasChanges] ,@"Has changes") - ADD_OBJECT( [o insertedObjects] ,@"Inserted objects" ) - ADD_OBJECT( objectFromMergePolicy([o mergePolicy]) ,@"Merge policy" ) - ADD_OBJECT( [o persistentStoreCoordinator] ,@"Persistent store coordinator" ) - ADD_BOOL( [o propagatesDeletesAtEndOfEvent] ,@"Propagates deletes at end of event") - ADD_OBJECT( [o registeredObjects] ,@"Registered objects" ) - ADD_BOOL( [o retainsRegisteredObjects] ,@"Retains registered objects") - ADD_NUMBER( [o stalenessInterval] ,@"Staleness interval") - ADD_BOOL( [o tryLock] ,@"Try lock") - ADD_OBJECT( [o undoManager] ,@"Undo manager" ) - ADD_OBJECT( [o updatedObjects] ,@"Updated objects" ) -} - -- (void)addNSManagedObjectID:(id)object -{ - NSManagedObjectID *o = object; - ADD_CLASS_LABEL(@"NSManagedObjectID Info"); - ADD_OBJECT( [o entity] ,@"Entity" ) - ADD_BOOL( [o isTemporaryID] ,@"Is temporary ID") - ADD_OBJECT( [o persistentStore] ,@"Persistent store" ) - ADD_OBJECT( [o URIRepresentation] ,@"URI representation" ) -} - -- (void)addNSManagedObjectModel:(id)object -{ - NSManagedObjectModel *o = object; - ADD_CLASS_LABEL(@"NSManagedObjectModel Info"); - ADD_OBJECTS( [o configurations] ,@"Configurations" ) - ADD_DICTIONARY( [o entitiesByName] ,@"Entities by name" ) - ADD_DICTIONARY( [o fetchRequestTemplatesByName] ,@"Fetch request templates by name") - ADD_OBJECTS( [[o versionIdentifiers] allObjects] ,@"Version identifiers") + NSManagedObjectContext* o = object; + ADD_CLASS_LABEL(@"NSManagedObjectContext Info"); + ADD_OBJECT(o, deletedObjects) + ADD_BOOL(o, hasChanges) + ADD_OBJECT(o, insertedObjects) + ADD_OPTIONS(o, mergePolicy, MergePolicyMarker) + ADD_OBJECT(o, persistentStoreCoordinator) + ADD_BOOL(o, propagatesDeletesAtEndOfEvent) + ADD_OBJECT(o, registeredObjects) + ADD_BOOL(o, retainsRegisteredObjects) + ADD_NUMBER(o, stalenessInterval) + ADD_BOOL(o, tryLock) + ADD_OBJECT(o, undoManager) + ADD_OBJECT(o, updatedObjects) +} + +- (void)addNSManagedObjectID:(id)object +{ + NSManagedObjectID* o = object; + ADD_CLASS_LABEL(@"NSManagedObjectID Info"); + ADD_OBJECT(o, entity) + ADD_BOOL(o, isTemporaryID) + ADD_OBJECT(o, persistentStore) + ADD_OBJECT(o, URIRepresentation) +} + +- (void)addNSManagedObjectModel:(id)object +{ + NSManagedObjectModel* o = object; + ADD_CLASS_LABEL(@"NSManagedObjectModel Info"); + ADD_OBJECTS(o, configurations) + ADD_DICTIONARY(o, entitiesByName) + ADD_DICTIONARY(o, fetchRequestTemplatesByName) + //TODO: ADD_OBJECTS([[o versionIdentifiers] allObjects], @"Version identifiers") +} + +- (void)addNSMenu:(id)object +{ + NSMenu* o = object; + ADD_CLASS_LABEL(@"NSMenu Info"); + ADD_BOOL(o, autoenablesItems) + ADD_OBJECT(o, delegate, NSObject.class, YES) + ADD_OBJECT_NOT_NIL(o, highlightedItem) + ADD_BOOL(o, isTornOff) + ADD_OBJECTS(o, itemArray) + ADD_BOOL(o, menuChangedMessagesEnabled) + ADD_BOOL(o, showsStateColumn) + ADD_OBJECT_NOT_NIL(o, supermenu) + ADD_STRING(o, title) +} + +- (void)addNSMenuItem:(id)object +{ + NSMenuItem* o = object; + ADD_CLASS_LABEL(@"NSMenuItem Info") + ADD_SEL(o, action) + ADD_OBJECT_NOT_NIL(o, attributedTitle) + ADD_BOOL(o, hasSubmenu) + ADD_OBJECT_NOT_NIL(o, image) + ADD_NUMBER(o, indentationLevel) + ADD_BOOL(o, isAlternate) + ADD_BOOL(o, isEnabled) + ADD_BOOL(o, isHidden) + ADD_BOOL(o, isHiddenOrHasHiddenAncestor) + ADD_BOOL(o, isHighlighted) + ADD_BOOL(o, isSeparatorItem) + ADD_OBJECT(o, keyEquivalent) + ADD_OPTIONS(o, keyEquivalentModifierMask, EventModifierFlags) + ADD_OBJECT(o, menu) + ADD_OBJECT_NOT_NIL(o, mixedStateImage) + ADD_OBJECT_NOT_NIL(o, offStateImage) + ADD_OBJECT_NOT_NIL(o, onStateImage) + ADD_OBJECT_NOT_NIL(o, representedObject) + ADD_ENUM(o, state, CellStateValue) + ADD_OBJECT_NOT_NIL(o, submenu) + ADD_NUMBER(o, tag) + ADD_OBJECT_NOT_NIL(o, target) + ADD_STRING(o, title) + ADD_OBJECT_NOT_NIL(o, toolTip) + ADD_OBJECT(o, userKeyEquivalent) + ADD_OBJECT_NOT_NIL(o, view) +} + +- (void)addNSOpenGLContext:(id)object +{ + NSOpenGLContext* o = object; + ADD_CLASS_LABEL(@"NSOpenGLContext Info"); + ADD_POINTER([o CGLContextObj], @"CGL context obj") + ADD_NUMBER(o, currentVirtualScreen) + ADD_OBJECT_NOT_NIL(o, pixelBuffer) + ADD_NUMBER(o, pixelBufferCubeMapFace) + ADD_NUMBER(o, pixelBufferMipMapLevel) + ADD_OBJECT_NOT_NIL(o, view) +} + +- (void)addNSOpenGLPixelBuffer:(id)object +{ + NSOpenGLPixelBuffer* o = object; + ADD_CLASS_LABEL(@"NSOpenGLPixelBuffer Info"); + ADD_NUMBER(o, pixelsHigh) + ADD_NUMBER(o, pixelsWide) + ADD_NUMBER(o, textureInternalFormat) + ADD_NUMBER(o, textureMaxMipMapLevel) + ADD_NUMBER(o, textureTarget) +} + +- (void)addNSOpenGLPixelFormat:(id)object +{ + NSOpenGLPixelFormat* o = object; + ADD_CLASS_LABEL(@"NSOpenGLPixelFormat Info"); + ADD_POINTER([o CGLPixelFormatObj], @"CGL pixel format obj") + ADD_NUMBER(o, numberOfVirtualScreens) } - -- (void)addNSMenu:(id)object -{ - NSMenu *o = object; - ADD_CLASS_LABEL(@"NSMenu Info"); - ADD_BOOL( [o autoenablesItems] ,@"Autoenables Items") - ADD_OBJECT_NOT_NIL( [o delegate] ,@"Delegate") - ADD_OBJECT_NOT_NIL( [o highlightedItem] ,@"Highlighted item") - ADD_BOOL( [o isTornOff] ,@"Is torn off") - ADD_OBJECTS( [o itemArray] ,@"Items" ) - ADD_BOOL( [o menuChangedMessagesEnabled] ,@"Menu changed messages enabled") - ADD_BOOL( [o showsStateColumn] ,@"Shows state column") - ADD_OBJECT_NOT_NIL( [o supermenu] ,@"Supermenu") - ADD_OBJECT( [o title] ,@"Title") -} - -- (void)addNSMenuItem:(id)object -{ - NSMenuItem *o = object; - ADD_CLASS_LABEL(@"NSMenuItem Info") - ADD_SEL( [o action] ,@"Action") - ADD_OBJECT_NOT_NIL( [o attributedTitle] ,@"Attributed title") - ADD_BOOL( [o hasSubmenu] ,@"Has submenu") - ADD_OBJECT_NOT_NIL( [o image] ,@"Image") - ADD_NUMBER( [o indentationLevel] ,@"Indentation level") - ADD_BOOL( [o isAlternate] ,@"Is alternate") - ADD_BOOL( [o isEnabled] ,@"Is enabled") - ADD_BOOL( [o isHidden] ,@"Is hidden") - ADD_BOOL( [o isHiddenOrHasHiddenAncestor] ,@"Is hidden or has hidden ancestor") - ADD_BOOL( [o isHighlighted] ,@"Is highlighted") - ADD_BOOL( [o isSeparatorItem] ,@"Is separatorItem") - ADD_OBJECT( [o keyEquivalent] ,@"Key equivalent") - ADD_OBJECT(objectFromKeyModifierMask([o keyEquivalentModifierMask]),@"Key equivalent modifier mask") - ADD_OBJECT( [o menu] ,@"Menu") - ADD_OBJECT_NOT_NIL( [o mixedStateImage] ,@"Mixed state image") - ADD_OBJECT_NOT_NIL( [o offStateImage] ,@"Off state image") - ADD_OBJECT_NOT_NIL( [o onStateImage] ,@"On state image") - ADD_OBJECT_NOT_NIL( [o representedObject] ,@"Represented object") - ADD_OBJECT(objectFromCellStateValue([o state]) ,@"State") - ADD_OBJECT_NOT_NIL( [o submenu] ,@"Submenu") - ADD_NUMBER( [o tag] ,@"Tag") - ADD_OBJECT_NOT_NIL( [o target] ,@"Target") - ADD_OBJECT( [o title] ,@"Title") - ADD_OBJECT_NOT_NIL( [o toolTip] ,@"Tool tip") - ADD_OBJECT( [o userKeyEquivalent] ,@"User key equivalent") - ADD_OBJECT_NOT_NIL( [o view] ,@"View") -} - -- (void)addNSOpenGLContext:(id)object -{ - NSOpenGLContext *o = object; - ADD_CLASS_LABEL(@"NSOpenGLContext Info"); - ADD_POINTER( [o CGLContextObj] ,@"CGL context obj") - ADD_NUMBER( [o currentVirtualScreen] ,@"Current virtual screen") - ADD_OBJECT_NOT_NIL( [o pixelBuffer] ,@"Pixel buffer") - ADD_NUMBER( [o pixelBufferCubeMapFace] ,@"Pixel buffer cube map face") - ADD_NUMBER( [o pixelBufferMipMapLevel] ,@"Pixel buffer mipmap level") - ADD_OBJECT_NOT_NIL( [o view] ,@"View") -} - -- (void)addNSOpenGLPixelBuffer:(id)object -{ - NSOpenGLPixelBuffer *o = object; - ADD_CLASS_LABEL(@"NSOpenGLPixelBuffer Info"); - ADD_NUMBER( [o pixelsHigh] ,@"Pixels high") - ADD_NUMBER( [o pixelsWide] ,@"Pixels wide") - ADD_NUMBER( [o textureInternalFormat] ,@"Texture internal format") - ADD_NUMBER( [o textureMaxMipMapLevel] ,@"Texture max mipmap level") - ADD_NUMBER( [o textureTarget] ,@"Texture target") -} - -- (void)addNSOpenGLPixelFormat:(id)object -{ - NSOpenGLPixelFormat *o = object; - ADD_CLASS_LABEL(@"NSOpenGLPixelFormat Info"); - ADD_POINTER( [o CGLPixelFormatObj] ,@"CGL pixel format obj") - ADD_NUMBER( [o numberOfVirtualScreens] ,@"Number of virtual screens") -} - + - (void)addNSPageLayout:(id)object { - NSPageLayout *o = object; - - if ([[o accessoryControllers] count] > 0 || [o printInfo] != nil) - { - ADD_CLASS_LABEL(@"NSPageLayout Info"); - ADD_OBJECTS( [o accessoryControllers] ,@"Accessory controllers") - ADD_OBJECT_NOT_NIL( [o printInfo] ,@"Print info") - } -} - + NSPageLayout* o = object; + + if ([[o accessoryControllers] count] > 0 || [o printInfo] != nil) { + ADD_CLASS_LABEL(@"NSPageLayout Info"); + ADD_OBJECTS(o, accessoryControllers) + ADD_OBJECT_NOT_NIL(o, printInfo) + } +} + - (void)addNSParagraphStyle:(id)object { - if ([object isKindOfClass:[NSMutableParagraphStyle class]]) - { - //NSMutableParagraphStyle *o = object; - //ADD_CLASS_LABEL(@"NSMutableParagraphStyle Info") - } - - NSParagraphStyle *o = object; - ADD_CLASS_LABEL(@"NSParagraphStyle Info") - ADD_OBJECT(objectFromTextAlignment([o alignment]) ,@"Alignment") - ADD_OBJECT(objectFromWritingDirection([o baseWritingDirection]) ,@"Base writing direction") - ADD_NUMBER( [o defaultTabInterval] ,@"Default tab interval") - ADD_NUMBER( [o firstLineHeadIndent] ,@"First line head indent") - ADD_NUMBER( [o headerLevel] ,@"HeaderLevel") - ADD_NUMBER( [o headIndent] ,@"Head indent") - ADD_NUMBER( [o hyphenationFactor] ,@"hyphenationFactor") - ADD_OBJECT(objectFromLineBreakMode([o lineBreakMode]) ,@"Line break mode") - ADD_NUMBER( [o lineHeightMultiple] ,@"Line height multiple") - ADD_NUMBER( [o lineSpacing] ,@"Line spacing") - ADD_NUMBER( [o maximumLineHeight] ,@"Maximum line height") - ADD_NUMBER( [o minimumLineHeight] ,@"Minimum line height") - ADD_NUMBER( [o paragraphSpacing] ,@"Paragraph spacing") - ADD_NUMBER( [o paragraphSpacingBefore] ,@"Paragraph spacing before") - ADD_OBJECTS( [o tabStops] ,@"Tab stops") - ADD_NUMBER( [o tailIndent] ,@"Tail indent") - ADD_OBJECTS( [o textBlocks] ,@"Text blocks") - ADD_OBJECTS( [o textLists] ,@"Text lists") - ADD_NUMBER( [o tighteningFactorForTruncation] ,@"Tightening factor for truncation") + NSParagraphStyle* o = object; + ADD_CLASS_LABEL(@"NSParagraphStyle Info") + ADD_ENUM(o, alignment, TextAlignment) + ADD_ENUM(o, baseWritingDirection, WritingDirection) + ADD_NUMBER(o, defaultTabInterval) + ADD_NUMBER(o, firstLineHeadIndent) + ADD_NUMBER(o, headerLevel) + ADD_NUMBER(o, headIndent) + ADD_NUMBER(o, hyphenationFactor) + ADD_ENUM(o, lineBreakMode, LineBreakMode) + ADD_NUMBER(o, lineHeightMultiple) + ADD_NUMBER(o, lineSpacing) + ADD_NUMBER(o, maximumLineHeight) + ADD_NUMBER(o, minimumLineHeight) + ADD_NUMBER(o, paragraphSpacing) + ADD_NUMBER(o, paragraphSpacingBefore) + ADD_OBJECTS(o, tabStops) + ADD_NUMBER(o, tailIndent) + ADD_OBJECTS(o, textBlocks) + ADD_OBJECTS(o, textLists) + ADD_NUMBER(o, tighteningFactorForTruncation) } - + - (void)addNSPersistentStoreCoordinator:(id)object { - NSPersistentStoreCoordinator *o = object; - ADD_CLASS_LABEL(@"NSPersistentStoreCoordinator Info") - ADD_OBJECT( [o managedObjectModel] ,@"Managed object model") - ADD_OBJECTS( [o persistentStores] ,@"Persistent stores") -} - + NSPersistentStoreCoordinator* o = object; + ADD_CLASS_LABEL(@"NSPersistentStoreCoordinator Info") + ADD_OBJECT(o, managedObjectModel) + ADD_OBJECTS(o, persistentStores) +} + - (void)addNSPredicateEditorRowTemplate:(id)object { - NSPredicateEditorRowTemplate *o = object; - ADD_CLASS_LABEL(@"NSPredicateEditorRowTemplate Info") - ADD_OBJECTS( [o compoundTypes] ,@"Compound types") - ADD_OBJECTS( [o leftExpressions] ,@"Left expressions") - ADD_OBJECT(objectFromComparisonPredicateModifier([o modifier]) ,@"Modifier") - ADD_OBJECTS( [o operators] ,@"Operators") - ADD_OBJECT(objectFromComparisonPredicateOptions([o options]) ,@"Options") - ADD_OBJECT(objectFromAttributeType([o rightExpressionAttributeType]),@"Right expression attribute type") - ADD_OBJECTS( [o rightExpressions] ,@"Right expressions") - ADD_OBJECTS( [o templateViews] ,@"Template views") -} - + NSPredicateEditorRowTemplate* o = object; + ADD_CLASS_LABEL(@"NSPredicateEditorRowTemplate Info") + ADD_OBJECTS(o, compoundTypes) + ADD_OBJECTS(o, leftExpressions) + ADD_ENUM(o, modifier, ComparisonPredicateModifier) + ADD_OBJECTS(o, operators) + ADD_OPTIONS(o, options, ComparisonPredicateOptions) + ADD_ENUM(o, rightExpressionAttributeType, AttributeType) + ADD_OBJECTS(o, rightExpressions) + ADD_OBJECTS(o, templateViews) +} + - (void)addNSPropertyDescription:(id)object { - if ([object isKindOfClass:[NSAttributeDescription class]]) - { - NSAttributeDescription *o = object; - ADD_CLASS_LABEL(@"NSAttributeDescription Info") - ADD_OBJECT(objectFromAttributeType([o attributeType]) ,@"Attribute type") - ADD_OBJECT( [o attributeValueClassName] ,@"Attribute value class name") - ADD_OBJECT( [o defaultValue] ,@"Default value") - - if ([o attributeType] == NSTransformableAttributeType) - ADD_OBJECT( [o valueTransformerName] ,@"Value transformer name") - - } - else if ([object isKindOfClass:[NSFetchedPropertyDescription class]]) - { - NSFetchedPropertyDescription *o = object; - ADD_CLASS_LABEL(@"NSFetchedPropertyDescription Info") - ADD_OBJECT( [o fetchRequest] ,@"Fetch request") - } - else if ([object isKindOfClass:[NSRelationshipDescription class]]) - { - NSRelationshipDescription *o = object; - ADD_CLASS_LABEL(@"NSRelationshipDescription Info") - ADD_OBJECT(objectFromDeleteRule([o deleteRule]) ,@"Delete rule") - ADD_OBJECT( [o destinationEntity] ,@"Destination entity") - ADD_OBJECT( [o inverseRelationship] ,@"Inverse relationship") - ADD_BOOL( [o isToMany] ,@"Is to many") - ADD_NUMBER( [o maxCount] ,@"Max count") - ADD_NUMBER( [o minCount] ,@"Min count") - } - - NSPropertyDescription *o = object; - ADD_CLASS_LABEL(@"NSPropertyDescription Info") - ADD_OBJECT( [o entity] ,@"Entity") - ADD_BOOL( [o isIndexed] ,@"Is indexed") - ADD_BOOL( [o isOptional] ,@"Is optional") - ADD_BOOL( [o isTransient] ,@"Is transient") - ADD_OBJECT( [o name] ,@"Name") - ADD_DICTIONARY( [o userInfo] ,@"User info") - ADD_OBJECTS( [o validationPredicates] ,@"Validation predicates") - ADD_OBJECTS( [o validationWarnings] ,@"Validation warnings") + if ([object isKindOfClass:[NSAttributeDescription class]]) { + NSAttributeDescription* o = object; + ADD_CLASS_LABEL(@"NSAttributeDescription Info") + ADD_ENUM(o, attributeType, AttributeType) + ADD_OBJECT(o, attributeValueClassName) + ADD_OBJECT(o, defaultValue) + + if ([o attributeType] == NSTransformableAttributeType) + ADD_OBJECT(o, valueTransformerName) + } + else if ([object isKindOfClass:[NSFetchedPropertyDescription class]]) { + NSFetchedPropertyDescription* o = object; + ADD_CLASS_LABEL(@"NSFetchedPropertyDescription Info") + ADD_OBJECT(o, fetchRequest) + } + else if ([object isKindOfClass:[NSRelationshipDescription class]]) { + NSRelationshipDescription* o = object; + ADD_CLASS_LABEL(@"NSRelationshipDescription Info") + ADD_ENUM(o, deleteRule, DeleteRule) + ADD_OBJECT(o, destinationEntity) + ADD_OBJECT(o, inverseRelationship) + ADD_BOOL(o, isToMany) + ADD_NUMBER(o, maxCount) + ADD_NUMBER(o, minCount) + } + + NSPropertyDescription* o = object; + ADD_CLASS_LABEL(@"NSPropertyDescription Info") + ADD_OBJECT(o, entity) + ADD_BOOL(o, isIndexed) + ADD_BOOL(o, isOptional) + ADD_BOOL(o, isTransient) + ADD_OBJECT(o, name) + ADD_DICTIONARY(o, userInfo) + ADD_OBJECTS(o, validationPredicates) + ADD_OBJECTS(o, validationWarnings) } - + - (void)addNSResponder:(id)object { - if ([object isKindOfClass:[NSApplication class]]) - { - NSApplication *o = object; - ADD_CLASS_LABEL(@"NSApplication Info") - ADD_OBJECT_NOT_NIL( [o applicationIconImage] ,@"Application icon image") - ADD_OBJECT_NOT_NIL( [o context] ,@"Context") - ADD_OBJECT_NOT_NIL( [o currentEvent] ,@"Current event") - ADD_OBJECT_NOT_NIL( [o delegate] ,@"Delegate") - ADD_OBJECT_NOT_NIL( [o dockTile] ,@"Dock tile") - ADD_BOOL( [o isActive] ,@"Is active") - ADD_BOOL( [o isHidden] ,@"Is hidden") - ADD_BOOL( [o isRunning] ,@"Is running") - ADD_OBJECT_NOT_NIL( [o keyWindow] ,@"Key window") - ADD_OBJECT_NOT_NIL( [o mainMenu] ,@"Main menu") - ADD_OBJECT_NOT_NIL( [o mainWindow] ,@"Main window") - ADD_OBJECT_NOT_NIL( [o modalWindow] ,@"Modal window") - ADD_OBJECTS( [o orderedDocuments] ,@"Ordered documents") - ADD_OBJECTS( [o orderedWindows] ,@"Ordered windows") - ADD_OBJECT_NOT_NIL( [o servicesMenu] ,@"Services menu") - ADD_OBJECT_NOT_NIL( [o servicesProvider] ,@"Services provider") - ADD_OBJECTS( [o windows] ,@"Windows") - ADD_OBJECT_NOT_NIL( [o windowsMenu] ,@"Windows menu") - } - else if ([object isKindOfClass:[NSDrawer class]]) - { - NSDrawer *o = object; - ADD_CLASS_LABEL(@"NSDrawer Info"); - ADD_SIZE( [o contentSize] ,@"Content size") - ADD_OBJECT( [o contentView] ,@"Content view") - ADD_OBJECT( [o delegate] ,@"Delegate") - ADD_OBJECT(objectFromRectEdge([o edge]) ,@"Edge") - ADD_NUMBER( [o leadingOffset] ,@"Leading offset") - ADD_SIZE( [o maxContentSize] ,@"Max content size") - ADD_SIZE( [o minContentSize] ,@"Min content size") - ADD_OBJECT( [o parentWindow] ,@"Parent window") - ADD_OBJECT(objectFromRectEdge([o preferredEdge]) ,@"Preferred edge") - ADD_OBJECT(objectFromDrawerState([o state]) ,@"State") - ADD_NUMBER( [o trailingOffset] ,@"Trailing offset") - } - else if ([object isKindOfClass:[NSView class]]) - { - [self processNSView:object]; - } - - if ([object isKindOfClass:[NSViewController class]]) - { - NSViewController *o = object; - ADD_CLASS_LABEL(@"NSViewController Info") - ADD_OBJECT_NOT_NIL( [o nibBundle] ,@"Nib bundle") - ADD_OBJECT_NOT_NIL( [o nibName] ,@"Nib name") - ADD_OBJECT_NOT_NIL( [o representedObject] ,@"Represented object") - ADD_OBJECT_NOT_NIL( [o title] ,@"Title") - ADD_OBJECT_NOT_NIL( [o view] ,@"View") - } - else if ([object isKindOfClass:[NSWindow class]]) - { - [self processNSWindow:object]; - } - else if ([object isKindOfClass:[NSWindowController class]]) - { - NSWindowController *o = object; - ADD_CLASS_LABEL(@"NSWindowController Info"); - ADD_OBJECT( [o document] ,@"Document") - ADD_BOOL( [o isWindowLoaded] ,@"Is window loaded") - ADD_OBJECT( [o owner] ,@"Owner") - ADD_BOOL( [o shouldCascadeWindows] ,@"Should cascade windows") - ADD_BOOL( [o shouldCloseDocument] ,@"Should close document") - if ([o isWindowLoaded]) - ADD_OBJECT( [o window] ,@"Window") - ADD_OBJECT( [o windowFrameAutosaveName] ,@"Window frame autosave name") - ADD_OBJECT( [o windowNibName] ,@"Window nib name") - ADD_OBJECT( [o windowNibPath] ,@"Window nib path") - } - - NSResponder *o = object; - ADD_CLASS_LABEL(@"NSResponder Info") - ADD_BOOL( [o acceptsFirstResponder] ,@"Accepts first responder") - - @try - { - [view addObject:[o menu] withLabel:@"Menu" toMatrix:m classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; - // The menu method might raise if not implemented in the actual NSResponder subclass - } - @catch (id exception) {} - - if ([o nextResponder]) - { - NSResponder *responder = o; - NSMutableArray *responders = [NSMutableArray array]; - while ((responder = [responder nextResponder])) [responders addObject:responder]; - [view addObjects:responders withLabel:@"Next responders" toMatrix:m classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; - } - - ADD_OBJECT( [o undoManager] ,@"Undo Manager") + if ([object isKindOfClass:[NSApplication class]]) { + + #pragma mark ► NSApplication + //-------------------------------------------------------------------------------- + + NSApplication* o = object; + ADD_CLASS_LABEL(@"NSApplication Info") + ADD_OBJECT_NOT_NIL(o, applicationIconImage) + ADD_OBJECT_NOT_NIL(o, context) + ADD_OBJECT_NOT_NIL(o, currentEvent) + ADD_OBJECT(o, delegate, NSObject.class, YES) + ADD_OBJECT_NOT_NIL(o, dockTile) + ADD_BOOL(o, isActive) + ADD_BOOL(o, isHidden) + ADD_BOOL(o, isRunning) + ADD_OBJECT_NOT_NIL(o, keyWindow) + ADD_OBJECT_NOT_NIL(o, mainMenu) + ADD_OBJECT_NOT_NIL(o, mainWindow) + ADD_OBJECT_NOT_NIL(o, modalWindow) + ADD_OBJECTS(o, orderedDocuments) + ADD_OBJECTS(o, orderedWindows) + ADD_OBJECT_NOT_NIL(o, servicesMenu) + ADD_OBJECT_NOT_NIL(o, servicesProvider) + ADD_OBJECTS(o, windows) + ADD_OBJECT_NOT_NIL(o, windowsMenu) + } + else if ([object isKindOfClass:[NSDrawer class]]) { + + + #pragma mark ► NSDrawer + //-------------------------------------------------------------------------------- + + NSDrawer* o = object; + ADD_CLASS_LABEL(@"NSDrawer Info"); + ADD_SIZE(o, contentSize) + ADD_OBJECT(o, contentView) + ADD_OBJECT(o, delegate, NSObject.class, YES) + ADD_ENUM(o, edge, RectEdge) + ADD_NUMBER(o, leadingOffset) + ADD_SIZE(o, maxContentSize) + ADD_SIZE(o, minContentSize) + ADD_OBJECT(o, parentWindow) + ADD_ENUM(o, preferredEdge, RectEdge) + ADD_ENUM(o, state, DrawerState) + ADD_NUMBER(o, trailingOffset) + } + else if ([object isKindOfClass:[NSView class]]) { + [self processNSView:object]; + } + + if ([object isKindOfClass:[NSViewController class]]) { + + + #pragma mark ► NSViewController + //-------------------------------------------------------------------------------- + + NSViewController* o = object; + ADD_CLASS_LABEL(@"NSViewController Info") + ADD_OBJECT_NOT_NIL(o, nibBundle) + ADD_OBJECT_NOT_NIL(o, nibName) + ADD_OBJECT_NOT_NIL(o, representedObject) + ADD_STRING_NOT_NIL(o, title) + ADD_OBJECT_NOT_NIL(o, view) + } + else if ([object isKindOfClass:[NSWindow class]]) { + [self processNSWindow:object]; + } + else if ([object isKindOfClass:[NSWindowController class]]) { + + + #pragma mark ► NSWindowController + //-------------------------------------------------------------------------------- + + NSWindowController* o = object; + ADD_CLASS_LABEL(@"NSWindowController Info"); + ADD_OBJECT(o, document) + ADD_BOOL(o, isWindowLoaded) + ADD_OBJECT(o, owner) + ADD_BOOL(o, shouldCascadeWindows) + ADD_BOOL(o, shouldCloseDocument) + if ([o isWindowLoaded]) + ADD_OBJECT(o, window) + ADD_OBJECT(o, windowFrameAutosaveName) + ADD_OBJECT(o, windowNibName) + ADD_OBJECT(o, windowNibPath) + } + + NSResponder* o = object; + ADD_CLASS_LABEL(@"NSResponder Info") + ADD_BOOL(o, acceptsFirstResponder) + + @try { + [view addObject:[o menu] withLabel:@"Menu" toMatrix:m classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; + // The menu method might raise if not implemented in the actual NSResponder subclass + } + @catch (id exception) {} + + if ([o nextResponder]) { + NSResponder* responder = o; + NSMutableArray* responders = [NSMutableArray array]; + while ((responder = [responder nextResponder])) + [responders addObject:responder]; + [view addObjects:responders withLabel:@"Next responders" toMatrix:m classLabel:classLabel selectedClassLabel:selectedClassLabel selectedLabel:selectedLabel selectedObject:selectedObject]; + } + + ADD_OBJECT(o, undoManager) } - + - (void)addNSRulerMarker:(id)object { - NSRulerMarker *o = object; - ADD_CLASS_LABEL(@"NSRulerMarker Info"); - ADD_OBJECT( [o image] ,@"Image") - ADD_POINT( [o imageOrigin] ,@"Image origin") - ADD_RECT( [o imageRectInRuler] ,@"Image rect in ruler") - ADD_BOOL( [o isDragging] ,@"Is dragging") - ADD_BOOL( [o isMovable] ,@"Is movable") - ADD_BOOL( [o isRemovable] ,@"Is removable") - ADD_NUMBER( [o markerLocation] ,@"Marker location") - ADD_OBJECT( [o representedObject] ,@"Represented object") - ADD_OBJECT( [o ruler] ,@"Ruler") - ADD_NUMBER( [o thicknessRequiredInRuler] ,@"Thickness required in ruler") - + NSRulerMarker* o = object; + ADD_CLASS_LABEL(@"NSRulerMarker Info"); + ADD_OBJECT(o, image) + ADD_POINT(o, imageOrigin) + ADD_RECT(o, imageRectInRuler) + ADD_BOOL(o, isDragging) + ADD_BOOL(o, isMovable) + ADD_BOOL(o, isRemovable) + ADD_NUMBER(o, markerLocation) + ADD_OBJECT(o, representedObject) + ADD_OBJECT(o, ruler) + ADD_NUMBER(o, thicknessRequiredInRuler) } - + - (void)addNSScreen:(id)object { - NSScreen *o = object; - ADD_CLASS_LABEL(@"NSScreen Info"); - ADD_NUMBER( [o depth] ,@"Depth") - ADD_DICTIONARY( [o deviceDescription] ,@"Device description") - ADD_RECT( [o frame] ,@"Frame") - ADD_NUMBER( [o userSpaceScaleFactor] ,@"User space scale factor") - ADD_RECT( [o visibleFrame] ,@"Visible frame") - + NSScreen* o = object; + ADD_CLASS_LABEL(@"NSScreen Info"); + ADD_NUMBER(o, depth) + ADD_DICTIONARY(o, deviceDescription) + ADD_RECT(o, frame) + ADD_NUMBER(o, userSpaceScaleFactor) + ADD_RECT(o, visibleFrame) } - + - (void)addNSShadow:(id)object { - NSShadow *o = object; - ADD_CLASS_LABEL(@"NSShadow Info"); - ADD_NUMBER( [o shadowBlurRadius] ,@"Shadow blur radius") - ADD_OBJECT( [o shadowColor] ,@"Shadow color") - ADD_SIZE( [o shadowOffset] ,@"Shadow offset") - + NSShadow* o = object; + ADD_CLASS_LABEL(@"NSShadow Info"); + ADD_NUMBER(o, shadowBlurRadius) + ADD_COLOR(o, shadowColor) + ADD_SIZE(o, shadowOffset) } - + - (void)addNSStatusBar:(id)object { - NSStatusBar *o = object; - ADD_CLASS_LABEL(@"NSStatusBar Info"); - ADD_BOOL( [o isVertical] ,@"Is vertical") - ADD_NUMBER( [o thickness] ,@"Thickness") - + NSStatusBar* o = object; + ADD_CLASS_LABEL(@"NSStatusBar Info"); + ADD_BOOL(o, isVertical) + ADD_NUMBER(o, thickness) } - + - (void)addNSStatusItem:(id)object { - NSStatusItem *o = object; - ADD_CLASS_LABEL(@"NSStatusItem Info"); - ADD_SEL( [o action] ,@"Action") - ADD_OBJECT_NOT_NIL( [o alternateImage] ,@"Alternate image") - ADD_OBJECT_NOT_NIL( [o attributedTitle] ,@"Attributed title") - ADD_SEL( [o doubleAction] ,@"Double action") - ADD_BOOL( [o highlightMode] ,@"Highlight mode") - ADD_OBJECT_NOT_NIL( [o image] ,@"Image") - ADD_BOOL( [o isEnabled] ,@"Is enabled") - ADD_OBJECT(objectFromStatusItemLength([o length]) ,@"Length") - ADD_OBJECT_NOT_NIL( [o menu] ,@"Menu") - ADD_OBJECT( [o statusBar] ,@"Status bar") - ADD_OBJECT( [o target] ,@"Target") - ADD_OBJECT_NOT_NIL( [o title] ,@"Title") - ADD_OBJECT_NOT_NIL( [o toolTip] ,@"Tool tip") - ADD_OBJECT_NOT_NIL( [o view] ,@"View") - + NSStatusItem* o = object; + ADD_CLASS_LABEL(@"NSStatusItem Info"); + ADD_SEL(o, action) + ADD_OBJECT_NOT_NIL(o, alternateImage) + ADD_OBJECT_NOT_NIL(o, attributedTitle) + ADD_SEL(o, doubleAction) + ADD_BOOL(o, highlightMode) + ADD_OBJECT_NOT_NIL(o, image) + ADD_BOOL(o, isEnabled) + ADD_ENUM(o, length, StatusItemLength) + ADD_OBJECT_NOT_NIL(o, menu) + ADD_OBJECT(o, statusBar) + ADD_OBJECT(o, target) + ADD_STRING_NOT_NIL(o, title) + ADD_STRING_NOT_NIL(o, toolTip) + ADD_OBJECT_NOT_NIL(o, view) } - + - (void)addNSTabViewItem:(id)object { - NSTabViewItem *o = object; - ADD_CLASS_LABEL(@"NSTabViewItem Info"); - ADD_OBJECT( [o color] ,@"Color") - ADD_OBJECT( [(NSTabViewItem *)o identifier] ,@"Identifier") - ADD_OBJECT( [o initialFirstResponder] ,@"Initial first responder") - ADD_OBJECT( [o label] ,@"Label") - ADD_OBJECT( objectFromTabState([o tabState]) ,@"Tab state") - ADD_OBJECT( [o tabView] ,@"Parent tab view") - ADD_OBJECT( [o view] ,@"View") - + NSTabViewItem* o = object; + ADD_CLASS_LABEL(@"NSTabViewItem Info"); + ADD_COLOR(o, color) + ADD_OBJECT(o, identifier) + ADD_OBJECT(o, initialFirstResponder) + ADD_OBJECT(o, label) + ADD_ENUM(o, tabState, TabState) + ADD_OBJECT(o, tabView) + ADD_OBJECT(o, view) } - + - (void)addNSTableColumn:(id)object { - NSTableColumn *o = object; - ADD_CLASS_LABEL(@"NSTableColumn Info"); - ADD_OBJECT( [o dataCell] ,@"Data cell") - ADD_OBJECT( [o headerCell] ,@"Header cell") - ADD_OBJECT_NOT_NIL( [o headerToolTip] ,@"Header tool tip") - ADD_OBJECT( [(NSTableColumn*)o identifier] ,@"Identifier") - ADD_BOOL( [o isEditable] ,@"Is editable") - ADD_BOOL( [o isHidden] ,@"Is hidden") - ADD_NUMBER( [o maxWidth] ,@"Max width") - ADD_NUMBER( [o minWidth] ,@"Min width") - ADD_OBJECT(objectFromTableColumnResizingMask([o resizingMask]) ,@"Resizing mask") - ADD_OBJECT_NOT_NIL( [o sortDescriptorPrototype] ,@"Sort descriptor prototype") - ADD_OBJECT( [o tableView] ,@"Table view") - ADD_NUMBER( [o width] ,@"Width") - + NSTableColumn* o = object; + ADD_CLASS_LABEL(@"NSTableColumn Info"); + ADD_OBJECT(o, dataCell) + ADD_OBJECT(o, headerCell) + ADD_OBJECT_NOT_NIL(o, headerToolTip) + ADD_OBJECT(o, identifier) + ADD_BOOL(o, isEditable) + ADD_BOOL(o, isHidden) + ADD_NUMBER(o, maxWidth) + ADD_NUMBER(o, minWidth) + ADD_OPTIONS(o, resizingMask, TableColumnResizingOptions) + ADD_OBJECT_NOT_NIL(o, sortDescriptorPrototype) + ADD_OBJECT(o, tableView) + ADD_NUMBER(o, width) } - + - (void)addNSTextAttachment:(id)object { - NSTextAttachment *o = object; - ADD_CLASS_LABEL(@"NSTextAttachment Info"); - ADD_OBJECT( [o attachmentCell] ,@"Attachment cell") - ADD_OBJECT( [o fileWrapper] ,@"File wrapper") - + NSTextAttachment* o = object; + ADD_CLASS_LABEL(@"NSTextAttachment Info"); + ADD_OBJECT(o, attachmentCell) + ADD_OBJECT(o, fileWrapper) } - + - (void)addNSTextBlock:(id)object { - if ([object isKindOfClass:[NSTextTableBlock class]]) - { - NSTextTableBlock *o = object; - ADD_CLASS_LABEL(@"NSTextTableBlock Info"); - ADD_NUMBER( [o columnSpan] ,@"Column span") - ADD_NUMBER( [o rowSpan] ,@"Row span") - ADD_NUMBER( [o startingColumn] ,@"Starting column") - ADD_NUMBER( [o startingRow] ,@"Starting row") - ADD_OBJECT( [o table] ,@"Table") - } - else if ([object isKindOfClass:[NSTextTable class]]) - { - NSTextTable *o = object; - ADD_CLASS_LABEL(@"NSTextTable Info"); - ADD_BOOL( [o collapsesBorders] ,@"Collapses borders") - ADD_BOOL( [o hidesEmptyCells] ,@"Hides empty cells") - ADD_OBJECT(objectFromTextTableLayoutAlgorithm([o layoutAlgorithm]),@"Layout algorithm") - ADD_NUMBER( [o numberOfColumns] ,@"Number of columns") - } - - NSTextBlock *o = object; - ADD_CLASS_LABEL(@"NSTextBlock Info"); - ADD_OBJECT( [o backgroundColor] ,@"Background color") - ADD_NUMBER( [o contentWidth] ,@"Content width") - ADD_OBJECT(objectFromTextBlockValueType([o contentWidthValueType]),@"Content width value type") - ADD_OBJECT(objectFromTextBlockVerticalAlignment([o verticalAlignment]),@"Vertical alignment") + if ([object isKindOfClass:[NSTextTableBlock class]]) { + NSTextTableBlock* o = object; + ADD_CLASS_LABEL(@"NSTextTableBlock Info"); + ADD_NUMBER(o, columnSpan) + ADD_NUMBER(o, rowSpan) + ADD_NUMBER(o, startingColumn) + ADD_NUMBER(o, startingRow) + ADD_OBJECT(o, table) + } + else if ([object isKindOfClass:[NSTextTable class]]) { + NSTextTable* o = object; + ADD_CLASS_LABEL(@"NSTextTable Info"); + ADD_BOOL(o, collapsesBorders) + ADD_BOOL(o, hidesEmptyCells) + ADD_ENUM(o, layoutAlgorithm, TextTableLayoutAlgorithm) + ADD_NUMBER(o, numberOfColumns) + } + + NSTextBlock* o = object; + ADD_CLASS_LABEL(@"NSTextBlock Info"); + ADD_COLOR(o, backgroundColor) + ADD_NUMBER(o, contentWidth) + ADD_ENUM(o, contentWidthValueType, TextBlockValueType) + ADD_ENUM(o, verticalAlignment, TextBlockVerticalAlignment) } - + - (void)addNSTextContainer:(id)object { - NSTextContainer *o = object; - ADD_CLASS_LABEL(@"NSTextContainer Info"); - ADD_SIZE( [o containerSize] ,@"Container size") - ADD_BOOL( [o heightTracksTextView] ,@"Height tracks text view") - ADD_BOOL( [o isSimpleRectangularTextContainer] ,@"Is simple rectangular text container") - ADD_OBJECT_NOT_NIL( [o layoutManager] ,@"Layout manager") - ADD_NUMBER( [o lineFragmentPadding] ,@"Line fragment padding") - ADD_OBJECT_NOT_NIL( [o textView] ,@"Text view") - ADD_BOOL( [o widthTracksTextView] ,@"Width tracks text view") - + NSTextContainer* o = object; + ADD_CLASS_LABEL(@"NSTextContainer Info"); + ADD_SIZE(o, containerSize) + ADD_BOOL(o, heightTracksTextView) + ADD_BOOL(o, isSimpleRectangularTextContainer) + ADD_OBJECT_NOT_NIL(o, layoutManager) + ADD_NUMBER(o, lineFragmentPadding) + ADD_OBJECT_NOT_NIL(o, textView) + ADD_BOOL(o, widthTracksTextView) } - + - (void)addNSTextList:(id)object { - NSTextList *o = object; - ADD_CLASS_LABEL(@"NSTextList Info"); - ADD_OBJECT(objectFromTextListOptionsMask([o listOptions]) ,@"List options") - ADD_OBJECT( [o markerFormat] ,@"Marker format") - + NSTextList* o = object; + ADD_CLASS_LABEL(@"NSTextList Info"); + ADD_OPTIONS(o, listOptions, TextListOptions) + ADD_OBJECT(o, markerFormat) } - + - (void)addNSTextTab:(id)object { - NSTextTab *o = object; - ADD_CLASS_LABEL(@"NSTextTab Info"); - ADD_OBJECT( objectFromTextAlignment([o alignment]) ,@"Alignment") - ADD_NUMBER( [o location] ,@"Location") - ADD_OBJECT( [o options] ,@"Options") - ADD_OBJECT(objectFromTextTabType([o tabStopType]) ,@"Tab stop type") - + NSTextTab* o = object; + ADD_CLASS_LABEL(@"NSTextTab Info"); + ADD_ENUM(o, alignment, TextAlignment) + ADD_NUMBER(o, location) + ADD_OBJECT(o, options) + ADD_ENUM(o, tabStopType, TextTabType) } - + - (void)addNSToolbar:(id)object { - NSToolbar *o = object; - ADD_CLASS_LABEL(@"NSToolbar Info"); - ADD_BOOL( [o allowsUserCustomization] ,@"Allows user customization") - ADD_BOOL( [o autosavesConfiguration] ,@"Autosaves configuration") - ADD_DICTIONARY( [o configurationDictionary] ,@"Configuration dictionary") - ADD_BOOL( [o customizationPaletteIsRunning] ,@"Customization palette is running") - ADD_OBJECT( [o delegate] ,@"Delegate") - ADD_OBJECT(objectFromToolbarDisplayMode([o displayMode]) ,@"Display mode") - ADD_OBJECT( [(NSToolbar*)o identifier] ,@"Identifier") - ADD_BOOL( [o isVisible] ,@"Is visible") - ADD_OBJECTS( [o items] ,@"Items") - ADD_OBJECT_NOT_NIL( [o selectedItemIdentifier] ,@"Selected item identifier") - ADD_BOOL( [o showsBaselineSeparator] ,@"Shows baseline separator") - ADD_OBJECT(objectFromToolbarSizeMode([o sizeMode]) ,@"Identifier") - ADD_OBJECTS( [o visibleItems] ,@"Visible items") + NSToolbar* o = object; + ADD_CLASS_LABEL(@"NSToolbar Info"); + ADD_BOOL(o, allowsUserCustomization) + ADD_BOOL(o, autosavesConfiguration) + ADD_DICTIONARY(o, configurationDictionary) + ADD_BOOL(o, customizationPaletteIsRunning) + ADD_OBJECT(o, delegate, NSObject.class, YES) + ADD_ENUM(o, displayMode, ToolbarDisplayMode) + ADD_OBJECT(o, identifier) + ADD_BOOL(o, isVisible) + ADD_OBJECTS(o, items) + ADD_OBJECT_NOT_NIL(o, selectedItemIdentifier) + ADD_BOOL(o, showsBaselineSeparator) + ADD_ENUM(o, sizeMode, ToolbarSizeMode) + ADD_OBJECTS(o, visibleItems) } - + - (void)addNSToolbarItem:(id)object { - if ([object isKindOfClass:[NSToolbarItemGroup class]]) - { - NSToolbarItemGroup *o = object; - ADD_CLASS_LABEL(@"NSToolbarItemGroup Info"); - ADD_OBJECTS( [o subitems] ,@"Subitems") - } - - NSToolbarItem *o = object; - ADD_CLASS_LABEL(@"NSToolbarItem Info"); - ADD_SEL( [o action] ,@"Action") - ADD_BOOL( [o allowsDuplicatesInToolbar] ,@"Allows duplicates in toolbar") - ADD_BOOL( [o autovalidates] ,@"Autovalidates") - ADD_OBJECT( [o image] ,@"Image") - ADD_BOOL( [o isEnabled] ,@"Is enabled") - ADD_OBJECT( [(NSToolbarItem*)o itemIdentifier] ,@"Item identifier") - ADD_OBJECT( [o label] ,@"Label") - ADD_SIZE( [o maxSize] ,@"Max size") - ADD_OBJECT_NOT_NIL( [o menuFormRepresentation] ,@"Menu form representation") - ADD_SIZE( [o minSize] ,@"Min size") - ADD_OBJECT( [o paletteLabel] ,@"Palette label") - ADD_NUMBER( [o tag] ,@"Tag") - ADD_OBJECT( [o target] ,@"Target") - ADD_OBJECT( [o toolbar] ,@"Toolbar") - ADD_OBJECT_NOT_NIL( [o toolTip] ,@"Tool tip") - ADD_OBJECT( [o view] ,@"View") - ADD_OBJECT(objectFromToolbarItemVisibilityPriority([o visibilityPriority]),@"Visibility priority") - + if ([object isKindOfClass:[NSToolbarItemGroup class]]) { + NSToolbarItemGroup* o = object; + ADD_CLASS_LABEL(@"NSToolbarItemGroup Info"); + ADD_OBJECTS(o, subitems) + } + + NSToolbarItem* o = object; + ADD_CLASS_LABEL(@"NSToolbarItem Info"); + ADD_SEL(o, action) + ADD_BOOL(o, allowsDuplicatesInToolbar) + ADD_BOOL(o, autovalidates) + ADD_OBJECT(o, image) + ADD_BOOL(o, isEnabled) + ADD_OBJECT(o, itemIdentifier) + ADD_OBJECT(o, label) + ADD_SIZE(o, maxSize) + ADD_OBJECT_NOT_NIL(o, menuFormRepresentation) + ADD_SIZE(o, minSize) + ADD_OBJECT(o, paletteLabel) + ADD_NUMBER(o, tag) + ADD_OBJECT(o, target) + ADD_OBJECT(o, toolbar) + ADD_OBJECT_NOT_NIL(o, toolTip) + ADD_OBJECT(o, view) + ADD_ENUM(o, visibilityPriority, ToolbarItemVisibilityPriority) } - + - (void)addNSTrackingArea:(id)object { - NSTrackingArea *o = object; - ADD_CLASS_LABEL(@"NSTrackingArea Info"); - ADD_OBJECT(objectFromTrackingAreaOptions([o options]) ,@"Options") - ADD_OBJECT( [o owner] ,@"Owner") - ADD_RECT( [o rect] ,@"Rect") - ADD_DICTIONARY( [o userInfo] ,@"User info") - + NSTrackingArea* o = object; + ADD_CLASS_LABEL(@"NSTrackingArea Info"); + ADD_OPTIONS(o, options, TrackingAreaOptions) + ADD_OBJECT(o, owner) + ADD_RECT(o, rect) + ADD_DICTIONARY(o, userInfo) } - (void)addNSUndoManager:(id)object { - NSUndoManager *o = object; - ADD_CLASS_LABEL(@"NSUndoManager Info"); - ADD_NUMBER( [o groupingLevel] ,@"Grouping level") - ADD_BOOL( [o groupsByEvent] ,@"Groups by event") - ADD_BOOL( [o isUndoRegistrationEnabled] ,@"Is undo registration enabled") - ADD_NUMBER( [o levelsOfUndo] ,@"Levels of undo") - ADD_OBJECT_NOT_NIL( [o redoActionName] ,@"Redo action name") - ADD_OBJECT_NOT_NIL( [o redoMenuItemTitle] ,@"Redo menu item title") - ADD_OBJECTS( [o runLoopModes] ,@"Run loop modes") - ADD_OBJECT_NOT_NIL( [o undoActionName] ,@"Undo action name") - ADD_OBJECT_NOT_NIL( [o undoMenuItemTitle] ,@"Undo menu item title") + NSUndoManager* o = object; + ADD_CLASS_LABEL(@"NSUndoManager Info"); + ADD_NUMBER(o, groupingLevel) + ADD_BOOL(o, groupsByEvent) + ADD_BOOL(o, isUndoRegistrationEnabled) + ADD_NUMBER(o, levelsOfUndo) + ADD_STRING_NOT_NIL(o, redoActionName) + ADD_STRING_NOT_NIL(o, redoMenuItemTitle) + ADD_OBJECTS(o, runLoopModes) + ADD_STRING_NOT_NIL(o, undoActionName) + ADD_STRING_NOT_NIL(o, undoMenuItemTitle) } --(void)addNSATSTypesetter:(id)object +- (void)addNSATSTypesetter:(id)object { - if ([object isKindOfClass:NSClassFromString(@"NSATSTypesetter")]) - { - // NSATSTypesetter *o = object; - // ADD_CLASS_LABEL(@"NSATSTypesetter Info"); - } - - NSTypesetter *o = object; - ADD_CLASS_LABEL(@"NSTypesetter Info"); - //ADD_OBJECT( [o attributedString] ,@"Attributed string") - ADD_DICTIONARY( [o attributesForExtraLineFragment] ,@"Attributes for extra line fragment") - ADD_BOOL( [o bidiProcessingEnabled] ,@"Bidi processing enabled") - ADD_OBJECT_NOT_NIL( [o currentTextContainer] ,@"Current text container") - ADD_NUMBER( [o hyphenationFactor] ,@"Hyphenation factor") - ADD_OBJECT_NOT_NIL( [o layoutManager] ,@"Layout manager") - ADD_NUMBER( [o lineFragmentPadding] ,@"Line fragment padding") - ADD_OBJECT(objectFromTypesetterBehavior([o typesetterBehavior]) ,@"Typesetter behavior") - ADD_BOOL( [o usesFontLeading] ,@"Uses font leading") + if ([object isKindOfClass:NSClassFromString(@"NSATSTypesetter")]) { + // NSATSTypesetter *o = object; + // ADD_CLASS_LABEL(@"NSATSTypesetter Info"); + } + + NSTypesetter* o = object; + ADD_CLASS_LABEL(@"NSTypesetter Info"); + //ADD_OBJECT( [o attributedString] ,@"Attributed string") + ADD_DICTIONARY(o, attributesForExtraLineFragment) + ADD_BOOL(o, bidiProcessingEnabled) + ADD_OBJECT_NOT_NIL(o, currentTextContainer) + ADD_NUMBER(o, hyphenationFactor) + ADD_OBJECT_NOT_NIL(o, layoutManager) + ADD_NUMBER(o, lineFragmentPadding) + ADD_ENUM(o, typesetterBehavior, TypesetterBehavior) + ADD_BOOL(o, usesFontLeading) } - (void)processNSView:(id)object { - if ([object isKindOfClass:[NSBox class]]) - { - NSBox *o = object; - ADD_CLASS_LABEL(@"NSBox Info"); - ADD_OBJECT( [o borderColor] ,@"Border color" ) - ADD_RECT( [o borderRect] ,@"Border rect") - ADD_OBJECT(objectFromBorderType([o borderType]) ,@"Border type" ) - ADD_NUMBER( [o borderWidth] ,@"Border width") - ADD_OBJECT(objectFromBoxType([o boxType]) ,@"Box type" ) - ADD_OBJECT( [o contentView] ,@"Content view" ) - ADD_SIZE( [o contentViewMargins] ,@"Content view margins") - ADD_NUMBER( [o cornerRadius] ,@"Corner radius") - ADD_OBJECT( [o fillColor] ,@"Fill color" ) - ADD_BOOL( [o isTransparent] ,@"Is transparent") - ADD_OBJECT( [o title] ,@"Title" ) - ADD_OBJECT( [o titleCell] ,@"Title cell" ) - ADD_OBJECT( [o titleFont] ,@"Title font" ) - ADD_OBJECT(objectFromTitlePosition([o titlePosition]) ,@"Title position" ) - ADD_RECT( [o titleRect] ,@"Title rect") - } - if ([object isKindOfClass:[NSCollectionView class]]) - { - NSCollectionView *o = object; - ADD_CLASS_LABEL(@"NSCollectionView Info"); - ADD_BOOL( [o allowsMultipleSelection] ,@"Allows multiple selection") - ADD_OBJECTS( [o backgroundColors] ,@"Background colors" ) - ADD_OBJECT( [o content] ,@"Content" ) - ADD_BOOL( [o isFirstResponder] ,@"Is first responder") - ADD_BOOL( [o isSelectable] ,@"Is selectable") - ADD_OBJECT_NOT_NIL( [o itemPrototype] ,@"Item prototype" ) - ADD_SIZE( [o maxItemSize] ,@"Max item size") - ADD_NUMBER( [o maxNumberOfColumns] ,@"Max number of columns") - ADD_NUMBER( [o maxNumberOfRows] ,@"Max number of rows") - ADD_SIZE( [o minItemSize] ,@"Min item size") - ADD_OBJECT_NOT_NIL( [o selectionIndexes] ,@"Selection indexes" ) - } - else if ([object isKindOfClass:[NSControl class]]) - { - [self processNSControl:object]; - } - else if ([object isKindOfClass:[NSClipView class]]) - { - NSClipView *o = object; - ADD_CLASS_LABEL(@"NSClipView Info"); - ADD_OBJECT( [o backgroundColor] ,@"Background color") - ADD_BOOL( [o copiesOnScroll] ,@"Copies on scroll") - ADD_OBJECT( [o documentCursor] ,@"Document cursor") - ADD_RECT( [o documentRect] ,@"Document rect") - ADD_OBJECT( [o documentView] ,@"Document view") - ADD_RECT( [o documentVisibleRect] ,@"Document visible rect") - ADD_BOOL( [o drawsBackground] ,@"Draws background") - } - else if ([object isKindOfClass:[NSOpenGLView class]]) - { - NSOpenGLView *o = object; - ADD_CLASS_LABEL(@"NSOpenGLView Info"); - ADD_OBJECT( [o openGLContext] ,@"OpenGL context") - ADD_OBJECT( [o pixelFormat] ,@"Pixel format") - } - else if ([object isKindOfClass:[NSProgressIndicator class]]) - { - NSProgressIndicator *o = object; - ADD_CLASS_LABEL(@"NSProgressIndicator Info"); - ADD_OBJECT( objectFromControlSize([o controlSize]) ,@"Control size") - ADD_OBJECT( objectFromControlTint([o controlTint]) ,@"Control tint") - if ([o style] == NSProgressIndicatorBarStyle && ![o isIndeterminate]) - ADD_NUMBER( [o doubleValue] ,@"Double value") - ADD_BOOL( [o isBezeled] ,@"Is bezeled") - ADD_BOOL( [o isDisplayedWhenStopped] ,@"Is displayed when stopped") - if ([o style] == NSProgressIndicatorBarStyle && ![o isIndeterminate]) - { - ADD_NUMBER( [o maxValue] ,@"Max value") - ADD_NUMBER( [o minValue] ,@"Min value") + if ([object isKindOfClass:[NSBox class]]) { + + + #pragma mark ► NSBox + //-------------------------------------------------------------------------------- + + NSBox* o = object; + ADD_CLASS_LABEL(@"NSBox Info"); + ADD_COLOR(o, borderColor) + ADD_RECT(o, borderRect) + ADD_ENUM(o, borderType, BorderType) + ADD_NUMBER(o, borderWidth) + ADD_ENUM(o, boxType, BoxType) + ADD_OBJECT(o, contentView) + ADD_SIZE(o, contentViewMargins) + ADD_NUMBER(o, cornerRadius) + ADD_COLOR(o, fillColor) + ADD_BOOL(o, isTransparent) + ADD_STRING(o, title) + ADD_OBJECT(o, titleCell) + ADD_OBJECT(o, titleFont) + ADD_ENUM(o, titlePosition, TitlePosition) + ADD_RECT(o, titleRect) + } + if ([object isKindOfClass:[NSCollectionView class]]) { + + + #pragma mark ► NSCollectionView + //-------------------------------------------------------------------------------- + + NSCollectionView* o = object; + ADD_CLASS_LABEL(@"NSCollectionView Info"); + ADD_BOOL(o, allowsMultipleSelection) + ADD_OBJECTS(o, backgroundColors) + ADD_OBJECT(o, content) + ADD_BOOL(o, isFirstResponder) + ADD_BOOL(o, isSelectable) + ADD_OBJECT_NOT_NIL(o, itemPrototype) + ADD_SIZE(o, maxItemSize) + ADD_NUMBER(o, maxNumberOfColumns) + ADD_NUMBER(o, maxNumberOfRows) + ADD_SIZE(o, minItemSize) + ADD_OBJECT_NOT_NIL(o, selectionIndexes) + } + else if ([object isKindOfClass:[NSControl class]]) { + [self processNSControl:object]; + } + else if ([object isKindOfClass:[NSClipView class]]) { + + + #pragma mark ► NSClipView + //-------------------------------------------------------------------------------- + + NSClipView* o = object; + ADD_CLASS_LABEL(@"NSClipView Info"); + ADD_COLOR(o, backgroundColor) + ADD_BOOL(o, copiesOnScroll) + ADD_OBJECT(o, documentCursor) + ADD_RECT(o, documentRect) + ADD_OBJECT(o, documentView) + ADD_RECT(o, documentVisibleRect) + ADD_BOOL(o, drawsBackground) + } + else if ([object isKindOfClass:[NSOpenGLView class]]) { + + + #pragma mark ► NSOpenGLView + //-------------------------------------------------------------------------------- + + NSOpenGLView* o = object; + ADD_CLASS_LABEL(@"NSOpenGLView Info"); + ADD_OBJECT(o, openGLContext) + ADD_OBJECT(o, pixelFormat) + } + else if ([object isKindOfClass:[NSProgressIndicator class]]) { + + + #pragma mark ► NSProgressIndicator + //-------------------------------------------------------------------------------- + + NSProgressIndicator* o = object; + ADD_CLASS_LABEL(@"NSProgressIndicator Info"); + ADD_ENUM(o, controlSize, ControlSize) + ADD_ENUM(o, controlTint, ControlTint) + if ([o style] == NSProgressIndicatorBarStyle && ![o isIndeterminate]) + ADD_NUMBER(o, doubleValue) + ADD_BOOL(o, isBezeled) + ADD_BOOL(o, isDisplayedWhenStopped) + if ([o style] == NSProgressIndicatorBarStyle && ![o isIndeterminate]) { + ADD_NUMBER(o, maxValue) + ADD_NUMBER(o, minValue) + } + ADD_ENUM(o, style, ProgressIndicatorStyle) + ADD_BOOL(o, usesThreadedAnimation) + } + else if ([object isKindOfClass:[NSRulerView class]]) { + + + #pragma mark ► NSRulerView + //-------------------------------------------------------------------------------- + + NSRulerView* o = object; + ADD_CLASS_LABEL(@"NSRulerView Info"); + ADD_OBJECT_NOT_NIL(o, accessoryView) + ADD_NUMBER(o, baselineLocation) + ADD_OBJECT(o, clientView) + ADD_BOOL(o, isFlipped) + ADD_OBJECTS(o, markers) + ADD_OBJECT(o, measurementUnits) + ADD_ENUM(o, orientation, RulerOrientation) + ADD_NUMBER(o, originOffset) + ADD_NUMBER(o, requiredThickness) + ADD_NUMBER(o, reservedThicknessForAccessoryView) + ADD_NUMBER(o, reservedThicknessForMarkers) + ADD_NUMBER(o, ruleThickness) + ADD_OBJECT(o, scrollView) + } + else if ([object isKindOfClass:[NSScrollView class]]) { + + + #pragma mark ► NSScrollView + //-------------------------------------------------------------------------------- + + NSScrollView* o = object; + ADD_CLASS_LABEL(@"NSScrollView Info"); + ADD_BOOL(o, autohidesScrollers) + ADD_COLOR(o, backgroundColor) + ADD_ENUM(o, borderType, BorderType) + ADD_SIZE(o, contentSize) + ADD_OBJECT(o, contentView) + ADD_OBJECT(o, documentCursor) + ADD_OBJECT(o, documentView) + ADD_RECT(o, documentVisibleRect) + ADD_BOOL(o, drawsBackground) + ADD_BOOL(o, hasHorizontalRuler) + ADD_BOOL(o, hasHorizontalScroller) + ADD_BOOL(o, hasVerticalRuler) + ADD_BOOL(o, hasVerticalScroller) + ADD_NUMBER(o, horizontalLineScroll) + ADD_NUMBER(o, horizontalPageScroll) + ADD_OBJECT(o, horizontalRulerView) + ADD_OBJECT(o, horizontalScroller) + ADD_NUMBER(o, lineScroll) + ADD_NUMBER(o, pageScroll) + ADD_BOOL(o, rulersVisible) + ADD_BOOL(o, scrollsDynamically) + ADD_NUMBER(o, verticalLineScroll) + ADD_NUMBER(o, verticalPageScroll) + ADD_OBJECT(o, verticalRulerView) + ADD_OBJECT(o, verticalScroller) + } + else if ([object isKindOfClass:[NSSplitView class]]) { + + + #pragma mark ► NSSplitView + //-------------------------------------------------------------------------------- + + NSSplitView* o = object; + ADD_CLASS_LABEL(@"NSSplitView Info"); + ADD_OBJECT(o, delegate, NSObject.class, YES) + ADD_NUMBER(o, dividerThickness) + ADD_BOOL(o, isVertical) + ADD_OBJECT_NOT_NIL(o, autosaveName) + } +#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_9 + else if ([object isKindOfClass:[NSStackView class]]) { + + + #pragma mark ► NSStackView + //-------------------------------------------------------------------------------- + + NSStackView* o = object; + ADD_CLASS_LABEL(@"NSStackView Info"); + ADD_ENUM(o, alignment, LayoutAttribute) + ADD_ENUM(o, orientation, UserInterfaceLayoutOrientation) + ADD_NUMBER(o, spacing) + ADD_OBJECT(o, delegate, NSObject.class, YES) + ADD_BOOL(o, hasEqualSpacing) + ADD_OBJECTS(o, views) + ADD_OBJECTS(o, detachedViews) + } + +#endif + else if ([object isKindOfClass:[NSTabView class]]) { + + + #pragma mark ► NSTabView + //-------------------------------------------------------------------------------- + + NSTabView* o = object; + ADD_CLASS_LABEL(@"NSTabView Info"); + ADD_BOOL(o, allowsTruncatedLabels) + ADD_RECT(o, contentRect) + ADD_ENUM(o, controlSize, ControlSize) + ADD_ENUM(o, controlTint, ControlTint) + ADD_OBJECT(o, delegate, NSObject.class, YES) + ADD_BOOL(o, drawsBackground) + ADD_OBJECT(o, font) + ADD_SIZE(o, minimumSize) + ADD_OBJECT(o, selectedTabViewItem) + ADD_OBJECTS(o, tabViewItems) + ADD_ENUM(o, tabViewType, TabViewType) + } + else if ([object isKindOfClass:[NSTableHeaderView class]]) { + + + #pragma mark ► NSTableHeaderView + //-------------------------------------------------------------------------------- + + NSTableHeaderView* o = object; + ADD_CLASS_LABEL(@"NSTableHeaderView Info"); + ADD_OBJECT(o, tableView) + } + else if ([object isKindOfClass:[NSText class]]) { + + + #pragma mark ► NSTextView + //-------------------------------------------------------------------------------- + + if ([object isKindOfClass:[NSTextView class]]) { + NSTextView* o = object; + ADD_CLASS_LABEL(@"NSTextView Info"); + ADD_OBJECTS(o, acceptableDragTypes) + ADD_BOOL(o, acceptsGlyphInfo) + ADD_OBJECTS(o, allowedInputSourceLocales) + ADD_BOOL(o, allowsImageEditing) + ADD_BOOL(o, allowsDocumentBackgroundColorChange) + ADD_BOOL(o, allowsUndo) + ADD_OBJECT_NOT_NIL(o, defaultParagraphStyle) + ADD_BOOL(o, displaysLinkToolTips) + ADD_COLOR(o, insertionPointColor) + ADD_BOOL(o, isAutomaticLinkDetectionEnabled) + ADD_BOOL(o, isAutomaticQuoteSubstitutionEnabled) + ADD_BOOL(o, isContinuousSpellCheckingEnabled) + ADD_BOOL(o, isGrammarCheckingEnabled) + ADD_OBJECT_NOT_NIL(o, layoutManager) + ADD_DICTIONARY(o, linkTextAttributes) + ADD_DICTIONARY(o, markedTextAttributes) + ADD_RANGE(o, rangeForUserCompletion) + ADD_OBJECTS(o, rangesForUserCharacterAttributeChange) + ADD_OBJECTS(o, rangesForUserParagraphAttributeChange) + ADD_OBJECTS(o, rangesForUserTextChange) + ADD_OBJECTS(o, readablePasteboardTypes) + ADD_OBJECTS(o, selectedRanges) + ADD_DICTIONARY(o, selectedTextAttributes) + ADD_ENUM(o, selectionAffinity, SelectionAffinity) + ADD_ENUM(o, selectionGranularity, SelectionGranularity) + ADD_BOOL(o, shouldDrawInsertionPoint) + ADD_BOOL(o, smartInsertDeleteEnabled) + ADD_NUMBER(o, spellCheckerDocumentTag) + ADD_OBJECT(o, textContainer) + ADD_SIZE(o, textContainerInset) + ADD_POINT(o, textContainerOrigin) + ADD_OBJECT(o, textStorage) + ADD_DICTIONARY(o, typingAttributes) + ADD_BOOL(o, usesFindPanel) + ADD_BOOL(o, usesFontPanel) + ADD_BOOL(o, usesRuler) + ADD_OBJECT(o, writablePasteboardTypes) + } + + + + #pragma mark ► NSText + //-------------------------------------------------------------------------------- + + NSText* o = object; + ADD_CLASS_LABEL(@"NSText Info"); + ADD_ENUM(o, alignment, TextAlignment) + ADD_COLOR(o, backgroundColor) + ADD_ENUM(o, baseWritingDirection, WritingDirection) + ADD_OBJECT(o, delegate, NSObject.class, YES) + ADD_BOOL(o, drawsBackground) + ADD_OBJECT(o, font) + ADD_BOOL(o, importsGraphics) + ADD_BOOL(o, isEditable) + ADD_BOOL(o, isFieldEditor) + ADD_BOOL(o, isHorizontallyResizable) + ADD_BOOL(o, isRichText) + ADD_BOOL(o, isRulerVisible) + ADD_BOOL(o, isSelectable) + ADD_BOOL(o, isVerticallyResizable) + ADD_SIZE(o, maxSize) + ADD_SIZE(o, minSize) + ADD_RANGE(o, selectedRange) + ADD_OBJECT(o, string) + ADD_COLOR_NOT_NIL(o, textColor) + ADD_BOOL(o, usesFontPanel) + } + + + + #pragma mark ► NSView + //-------------------------------------------------------------------------------- + + NSView* o = object; + ADD_CLASS_LABEL(@"NSView Info"); +#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6 + ADD_BOOL(o, acceptsTouchEvents) +#endif +#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10 + ADD_BOOL(o, allowsVibrancy) +#endif + ADD_OPTIONS(o, autoresizingMask, AutoresizingMaskOptions) + ADD_BOOL(o, autoresizesSubviews) + ADD_RECT(o, bounds) + ADD_NUMBER(o, boundsRotation) + ADD_BOOL(o, canBecomeKeyView) + ADD_BOOL(o, canDraw) +#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6 + ADD_BOOL(o, canDrawConcurrently) +#endif + ADD_OBJECT_NOT_NIL(o, enclosingMenuItem) + ADD_OBJECT_NOT_NIL(o, enclosingScrollView) +#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_7 + ADD_RECT(o, focusRingMaskBounds) +#endif + ADD_RECT(o, frame) + ADD_NUMBER(o, frameRotation) + ADD_ENUM(o, focusRingType, FocusRingType) + ADD_NUMBER(o, gState) + ADD_NUMBER(o, heightAdjustLimit) + ADD_BOOL(o, isFlipped) + ADD_BOOL(o, isHidden) + ADD_BOOL(o, isHiddenOrHasHiddenAncestor) + ADD_BOOL(o, isInFullScreenMode) + ADD_BOOL(o, isOpaque) + ADD_BOOL(o, isRotatedFromBase) + ADD_BOOL(o, isRotatedOrScaledFromBase) + ADD_OBJECT(o, layer) + ADD_BOOL(o, mouseDownCanMoveWindow) + ADD_BOOL(o, needsDisplay) + ADD_BOOL(o, needsPanelToBecomeKey) + ADD_OBJECT(o, nextKeyView) + ADD_OBJECT(o, nextValidKeyView) + ADD_OBJECT(o, opaqueAncestor) + ADD_BOOL(o, preservesContentDuringLiveResize) + ADD_BOOL(o, postsBoundsChangedNotifications) + ADD_BOOL(o, postsFrameChangedNotifications) + ADD_OBJECT(o, previousKeyView) + ADD_OBJECT(o, previousValidKeyView) + ADD_STRING(o, printJobTitle) + ADD_OBJECTS(o, registeredDraggedTypes) + ADD_BOOL(o, shouldDrawColor) + ADD_NUMBER(o, tag) + ADD_OBJECTS(o, trackingAreas) +#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_7 + ADD_BOOL(o, translatesAutoresizingMaskIntoConstraints) +#endif + ADD_RECT(o, visibleRect) + ADD_BOOL(o, wantsDefaultClipping) + ADD_BOOL(o, wantsLayer) + ADD_NUMBER(o, widthAdjustLimit) + ADD_OBJECT(o, window, NSWindow.class) +} + +// Works for NSSegmentedControl and NSSegmentedCell +- (void)processSegmentedItem:(id)segmentedItem +{ + NSSegmentedCell* o = segmentedItem; + NSUInteger segmentCount = o.segmentCount; + for (NSInteger i = 0; i < segmentCount; i++) { + [self addGroup:[NSString stringWithFormat:@"Segment %lu", i]]; + ADD_OBJECT_GETSET(o, { return [(NSSegmentedControl*)obj imageForSegment:i]; } + , { [(NSSegmentedControl*)obj setImage:val forSegment:i]; } + ,nil, ([NSString stringWithFormat:@"Image for segment %ld", (long)i]), YES ); + if ([o respondsToSelector:@selector(imageScalingForSegment:)]) { + [self addObject:objectFromImageScaling([o imageScalingForSegment:i]) + valueType:FS_ITEM_ENUM + getter:^id(id obj, FSObjectInspectorViewModelItem* item) { return @([(NSSegmentedCell*)obj imageScalingForSegment:i]); + } + setter:^(id obj, id newValue, FSObjectInspectorViewModelItem* item) { [(NSSegmentedCell*)obj setImageScaling:[newValue integerValue] forSegment:i]; + } + withLabel:[NSString stringWithFormat:@"Image scaling for segment %ld", (long)i] + enumBiDict:FSObjectEnumInfo.optionsForImageScaling + mask:0 + valueClass:nil + notNil:NO]; + } + ADD_BOOL_GETSET(o, + { return [(NSSegmentedControl*)obj isEnabledForSegment:i]; }, + { [(NSSegmentedControl*)obj setEnabled:val forSegment:i]; }, + ([NSString stringWithFormat:@"Is enabled for segment %ld", (long)i])); + ADD_BOOL_GETSET(o, + { return [(NSSegmentedControl*)obj isSelectedForSegment:i]; }, + { [(NSSegmentedControl*)obj setSelected:val forSegment:i]; }, + ([NSString stringWithFormat:@"Is selected for segment %ld", (long)i])); + ADD_OBJECT_GETSET(o, { return [(NSSegmentedControl*)obj labelForSegment:i]; } + , { [(NSSegmentedControl*)obj setLabel:val forSegment:i]; } + , NSString.class, ([NSString stringWithFormat:@"Label for segment %ld", (long)i]), YES ); + ADD_OBJECT_GETSET(o, { return [(NSSegmentedControl*)obj menuForSegment:i]; } + , { [(NSSegmentedControl*)obj setMenu:val forSegment:i]; } + , nil, ([NSString stringWithFormat:@"Menu for segment %ld", (long)i]), YES ); + if ([o respondsToSelector:@selector(tagForSegment:)]) { + ADD_NUMBER_GETSET(o + , { return [(NSSegmentedCell*)obj tagForSegment:i]; } + , { [(NSSegmentedCell*)obj setTag:val forSegment:i]; } + , ([NSString stringWithFormat:@"Tag for segment %ld", (long)i])) + } + if ([o respondsToSelector:@selector(toolTipForSegment:)]) { + ADD_OBJECT_GETSET(o, { return [(NSSegmentedCell*)obj toolTipForSegment:i]; } + , { [(NSSegmentedCell*)obj setToolTip:val forSegment:i]; } + , NSString.class, ([NSString stringWithFormat:@"ToolTip for segment %ld", (long)i]), YES ); + } + ADD_NUMBER_GETSET(o + , { return [(NSSegmentedCell*)obj widthForSegment:i]; } + , { [(NSSegmentedCell*)obj setWidth:val forSegment:i]; } + , ([NSString stringWithFormat:@"Width for segment %ld", (long)i])) + [self endGroup]; } - ADD_OBJECT(objectFromProgressIndicatorStyle([o style]) ,@"Style") - ADD_BOOL( [o usesThreadedAnimation] ,@"Uses threaded animation") - } - else if ([object isKindOfClass:[NSRulerView class]]) - { - NSRulerView *o = object; - ADD_CLASS_LABEL(@"NSRulerView Info"); - ADD_OBJECT_NOT_NIL( [o accessoryView] ,@"Accessory view") - ADD_NUMBER( [o baselineLocation] ,@"Baseline location") - ADD_OBJECT( [o clientView] ,@"Client view") - ADD_BOOL( [o isFlipped] ,@"Is flipped") - ADD_OBJECTS( [o markers] ,@"Markers") - ADD_OBJECT( [o measurementUnits] ,@"Measurement units") - ADD_OBJECT(objectFromRulerOrientation([o orientation]) ,@"Orientation") - ADD_NUMBER( [o originOffset] ,@"Origin offset") - ADD_NUMBER( [o requiredThickness] ,@"Required thickness") - ADD_NUMBER( [o reservedThicknessForAccessoryView] ,@"Reserved thickness for accessory view") - ADD_NUMBER( [o reservedThicknessForMarkers] ,@"Reserved thickness for markers") - ADD_NUMBER( [o ruleThickness] ,@"Rule thickness") - ADD_OBJECT( [o scrollView] ,@"ScrollView") - } - else if ([object isKindOfClass:[NSScrollView class]]) - { - NSScrollView *o = object; - ADD_CLASS_LABEL(@"NSScrollView Info"); - ADD_BOOL( [o autohidesScrollers] ,@"Autohides scrollers") - ADD_OBJECT( [o backgroundColor] ,@"Background color") - ADD_OBJECT( objectFromBorderType([o borderType]) ,@"Border type") - ADD_SIZE( [o contentSize] ,@"Content size") - ADD_OBJECT( [o contentView] ,@"Content view") - ADD_OBJECT( [o documentCursor] ,@"Document cursor") - ADD_OBJECT( [o documentView] ,@"Document view") - ADD_RECT( [o documentVisibleRect] ,@"Document visible rect") - ADD_BOOL( [o drawsBackground] ,@"Draws background") - ADD_BOOL( [o hasHorizontalRuler] ,@"Has horizontal ruler") - ADD_BOOL( [o hasHorizontalScroller] ,@"Has horizontal scroller") - ADD_BOOL( [o hasVerticalRuler] ,@"Has vertical ruler") - ADD_BOOL( [o hasVerticalScroller] ,@"Has vertical scroller") - ADD_NUMBER( [o horizontalLineScroll] ,@"Horizontal line scroll") - ADD_NUMBER( [o horizontalPageScroll] ,@"Horizontal page scroll") - ADD_OBJECT( [o horizontalRulerView] ,@"Horizontal ruler view") - ADD_OBJECT( [o horizontalScroller] ,@"Horizontal scroller") - ADD_NUMBER( [o lineScroll] ,@"Line scroll") - ADD_NUMBER( [o pageScroll] ,@"Page scroll") - ADD_BOOL( [o rulersVisible] ,@"Ruller visible") - ADD_BOOL( [o scrollsDynamically] ,@"Scrolls dynamically") - ADD_NUMBER( [o verticalLineScroll] ,@"Vertical line scroll") - ADD_NUMBER( [o verticalPageScroll] ,@"Vertical page scroll") - ADD_OBJECT( [o verticalRulerView] ,@"Vertical ruler view") - ADD_OBJECT( [o verticalScroller] ,@"Vertical scroller") - } - else if ([object isKindOfClass:[NSSplitView class]]) - { - NSSplitView *o = object; - ADD_CLASS_LABEL(@"NSSplitView Info"); - ADD_OBJECT_NOT_NIL( [o delegate] ,@"Delegate") - ADD_NUMBER( [o dividerThickness] ,@"Divider thickness") - ADD_BOOL( [o isVertical] ,@"Is vertical") - ADD_OBJECT_NOT_NIL( [o autosaveName] ,@"Autosave name") - } - else if ([object isKindOfClass:[NSTabView class]]) - { - NSTabView *o = object; - ADD_CLASS_LABEL(@"NSTabView Info"); - ADD_BOOL( [o allowsTruncatedLabels] ,@"Allows truncated labels") - ADD_RECT( [o contentRect] ,@"Content rect") - ADD_OBJECT( objectFromControlSize([o controlSize]) ,@"Control size") - ADD_OBJECT( objectFromControlTint([o controlTint]) ,@"Control tint") - ADD_OBJECT( [o delegate] ,@"Delegate") - ADD_BOOL( [o drawsBackground] ,@"Draws background") - ADD_OBJECT( [o font] ,@"Font") - ADD_SIZE( [o minimumSize] ,@"Minimum size") - ADD_OBJECT( [o selectedTabViewItem] ,@"Selected tab view item") - ADD_OBJECTS( [o tabViewItems] ,@"Tab view items") - ADD_OBJECT( objectFromTabViewType([o tabViewType]) ,@"Tab view type") - } - else if ([object isKindOfClass:[NSTableHeaderView class]]) - { - NSTableHeaderView *o = object; - ADD_CLASS_LABEL(@"NSTableHeaderView Info"); - ADD_OBJECT( [o tableView] ,@"Table view") - } - else if ([object isKindOfClass:[NSText class]]) - { - if ([object isKindOfClass:[NSTextView class]]) - { - NSTextView *o = object; - ADD_CLASS_LABEL(@"NSTextView Info"); - ADD_OBJECTS( [o acceptableDragTypes] ,@"Acceptable drag types") - ADD_BOOL( [o acceptsGlyphInfo] ,@"Accepts glyph info") - ADD_OBJECTS( [o allowedInputSourceLocales] ,@"Allowed input source locales") - ADD_BOOL( [o allowsImageEditing] ,@"Allows image editing") - ADD_BOOL( [o allowsDocumentBackgroundColorChange],@"Allows document background color change") - ADD_BOOL( [o allowsUndo] ,@"Allows undo") - ADD_OBJECT_NOT_NIL([o defaultParagraphStyle] ,@"Default paragraph style") - ADD_BOOL( [o displaysLinkToolTips] ,@"Displays link tool tips") - ADD_OBJECT( [o insertionPointColor] ,@"Insertion point color") - ADD_BOOL( [o isAutomaticLinkDetectionEnabled] ,@"Is automatic link detection enabled") - ADD_BOOL( [o isAutomaticQuoteSubstitutionEnabled],@"Is automatic quote substitution enabled") - ADD_BOOL( [o isContinuousSpellCheckingEnabled] ,@"Is continuous spell checking enabled") - ADD_BOOL( [o isGrammarCheckingEnabled] ,@"Is grammar checking enabled") - ADD_OBJECT_NOT_NIL([o layoutManager] ,@"Layout manager") - ADD_DICTIONARY( [o linkTextAttributes] ,@"Link text attributes") - ADD_DICTIONARY([o markedTextAttributes] ,@"Marked text attributes") - ADD_RANGE( [o rangeForUserCompletion] ,@"Range for user completion") - ADD_OBJECTS( [o rangesForUserCharacterAttributeChange],@"Ranges for user character attribute change") - ADD_OBJECTS( [o rangesForUserParagraphAttributeChange],@"Ranges for user paragraph attribute change") - ADD_OBJECTS( [o rangesForUserTextChange] ,@"Ranges for user text change") - ADD_OBJECTS( [o readablePasteboardTypes] ,@"Readable pasteboard types") - ADD_OBJECTS( [o selectedRanges] ,@"Selected ranges") - ADD_DICTIONARY( [o selectedTextAttributes] ,@"Selected text attributes") - ADD_OBJECT(objectFromSelectionAffinity([o selectionAffinity]),@"Selection affinity") - ADD_OBJECT(objectFromSelectionGranularity([o selectionGranularity]),@"Selection granularity") - ADD_BOOL( [o shouldDrawInsertionPoint] ,@"Should draw insertion point") - ADD_BOOL( [o smartInsertDeleteEnabled] ,@"Smart insert delete enabled") - ADD_NUMBER( [o spellCheckerDocumentTag] ,@"Spell checker document tag") - ADD_OBJECT( [o textContainer] ,@"Text container") - ADD_SIZE( [o textContainerInset] ,@"Text container inset") - ADD_POINT( [o textContainerOrigin] ,@"Text container origin") - ADD_OBJECT( [o textStorage] ,@"Text storage") - ADD_DICTIONARY( [o typingAttributes] ,@"Typing attributes") - ADD_BOOL( [o usesFindPanel] ,@"Uses find panel") - ADD_BOOL( [o usesFontPanel] ,@"Uses font panel") - ADD_BOOL( [o usesRuler] ,@"Uses ruler") - ADD_OBJECT( [o writablePasteboardTypes] ,@"Writable pasteboard types") - } - - NSText *o = object; - ADD_CLASS_LABEL(@"NSText Info"); - ADD_OBJECT( objectFromTextAlignment([o alignment]) ,@"Alignment") - ADD_OBJECT( [o backgroundColor] ,@"Background color") - ADD_OBJECT(objectFromWritingDirection([o baseWritingDirection]),@"Base writing direction") - ADD_OBJECT_NOT_NIL( [o delegate] ,@"Delegate") - ADD_BOOL( [o drawsBackground] ,@"Draws background") - ADD_OBJECT( [o font] ,@"Font") - ADD_BOOL( [o importsGraphics] ,@"Imports graphics") - ADD_BOOL( [o isEditable] ,@"Is editable") - ADD_BOOL( [o isFieldEditor] ,@"Is field editor") - ADD_BOOL( [o isHorizontallyResizable] ,@"Is horizontally resizable") - ADD_BOOL( [o isRichText] ,@"Is rich text") - ADD_BOOL( [o isRulerVisible] ,@"Is ruler visible") - ADD_BOOL( [o isSelectable] ,@"Is selectable") - ADD_BOOL( [o isVerticallyResizable] ,@"Is vertically resizable") - ADD_SIZE( [o maxSize] ,@"Max size") - ADD_SIZE( [o minSize] ,@"Min size") - ADD_RANGE( [o selectedRange] ,@"Selected range") - ADD_OBJECT( [o string] ,@"String") - ADD_OBJECT_NOT_NIL( [o textColor] ,@"Text color") - ADD_BOOL( [o usesFontPanel] ,@"Uses font panel") - } - - NSView *o = object; - ADD_CLASS_LABEL(@"NSView Info"); - ADD_OBJECT(objectFromAutoresizingMask([o autoresizingMask]) ,@"Autoresizing mask") - ADD_BOOL( [o autoresizesSubviews] ,@"Autoresizes subviews") - ADD_RECT( [o bounds] ,@"Bounds") - ADD_NUMBER( [o boundsRotation] ,@"Bounds rotation") - ADD_BOOL( [o canBecomeKeyView] ,@"Can become key view") - ADD_BOOL( [o canDraw] ,@"Can draw") - ADD_OBJECT_NOT_NIL( [o enclosingMenuItem] ,@"Enclosing menu item") - ADD_OBJECT_NOT_NIL( [o enclosingScrollView] ,@"Enclosing scroll view") - ADD_RECT( [o frame] ,@"Frame") - ADD_NUMBER( [o frameRotation] ,@"Frame rotation") - ADD_OBJECT( objectFromFocusRingType([o focusRingType]) ,@"Focus ring type") - ADD_NUMBER( [o gState] ,@"gState") - ADD_NUMBER( [o heightAdjustLimit] ,@"Height adjust limit") - ADD_BOOL( [o isFlipped] ,@"Is flipped") - ADD_BOOL( [o isHidden] ,@"Is hidden") - ADD_BOOL( [o isHiddenOrHasHiddenAncestor] ,@"Is hidden or has hidden ancestor" ) - ADD_BOOL( [o isInFullScreenMode] ,@"Is in full screen mode") - ADD_BOOL( [o isOpaque] ,@"Is opaque") - ADD_BOOL( [o isRotatedFromBase] ,@"Is rotated from base") - ADD_BOOL( [o isRotatedOrScaledFromBase] ,@"Is rotated or scaled from base") - ADD_OBJECT( [o layer] ,@"Layer") - ADD_BOOL( [o mouseDownCanMoveWindow] ,@"Mouse down can move window") - ADD_BOOL( [o needsDisplay] ,@"Needs display") - ADD_BOOL( [o needsPanelToBecomeKey] ,@"Needs panel to become key") - ADD_OBJECT( [o nextKeyView] ,@"Next key view") - ADD_OBJECT( [o nextValidKeyView] ,@"Next valid key view") - ADD_OBJECT( [o opaqueAncestor] ,@"Opaque ancestor") - ADD_BOOL( [o preservesContentDuringLiveResize] ,@"Preserves content during live resize") - ADD_BOOL( [o postsBoundsChangedNotifications] ,@"Posts bounds changed notifications") - ADD_BOOL( [o postsFrameChangedNotifications] ,@"Posts frame changed notifications") - ADD_OBJECT( [o previousKeyView] ,@"Previous key view") - ADD_OBJECT( [o previousValidKeyView] ,@"Previous valid key view") - ADD_OBJECT( [o printJobTitle] ,@"Print job title") - ADD_OBJECTS( [o registeredDraggedTypes] ,@"Registered dragged types") - ADD_BOOL( [o shouldDrawColor] ,@"Should draw color") - ADD_NUMBER( [o tag] ,@"Tag") - ADD_OBJECTS( [o trackingAreas] ,@"Tracking areas") - ADD_RECT( [o visibleRect] ,@"Visible rect") - ADD_BOOL( [o wantsDefaultClipping] ,@"Wants default clipping") - ADD_BOOL( [o wantsLayer] ,@"Wants layer") - ADD_NUMBER( [o widthAdjustLimit] ,@"Width adjust limit") - ADD_OBJECT( [o window] ,@"Window") } - (void)processNSControl:(id)object { - { - if ([object isKindOfClass:[NSBrowser class]]) - { - NSBrowser *o = object; - ADD_CLASS_LABEL(@"NSBrowser Info"); - ADD_BOOL( [o allowsBranchSelection] ,@"Allows branch selection") - ADD_BOOL( [o allowsEmptySelection] ,@"Allows empty selection") - ADD_BOOL( [o allowsMultipleSelection] ,@"Allows multiple selection") - ADD_BOOL( [o allowsTypeSelect] ,@"Allows type select") - ADD_OBJECT( [o backgroundColor] ,@"Background color" ) - ADD_OBJECT( [o cellPrototype] ,@"Cell prototype" ) - ADD_OBJECT(objectFromBrowserColumnResizingType([o columnResizingType]) ,@"Column resizing type") - ADD_OBJECT( [o columnsAutosaveName] ,@"Columns autosave name") - ADD_OBJECT( [o delegate] ,@"Delegate") - ADD_SEL( [o doubleAction] ,@"Double action") - ADD_NUMBER( [o firstVisibleColumn] ,@"First visible column") - ADD_BOOL( [o hasHorizontalScroller] ,@"Has horizontal scroller") - ADD_BOOL( [o isLoaded] ,@"Is loaded") - ADD_BOOL( [o isTitled] ,@"Is titled") - ADD_NUMBER( [o lastColumn] ,@"Last column") - ADD_NUMBER( [o lastVisibleColumn] ,@"Last visible column") - ADD_OBJECT( [o matrixClass] ,@"Matrix class") - ADD_NUMBER( [o maxVisibleColumns] ,@"Max visible columns") - ADD_NUMBER( [o minColumnWidth] ,@"Min column width") - ADD_NUMBER( [o numberOfVisibleColumns] ,@"Number of visible columns" ) - ADD_OBJECT( [o path] ,@"Path") - ADD_OBJECT( [o pathSeparator] ,@"Path separator") - ADD_BOOL( [o prefersAllColumnUserResizing] ,@"Prefers all column user resizing" ) - ADD_BOOL( [o reusesColumns] ,@"Reuses columns") - ADD_OBJECTS( [o selectedCells] ,@"Selected cells") - ADD_NUMBER( [o selectedColumn] ,@"Selected column") - ADD_BOOL( [o sendsActionOnArrowKeys] ,@"Sends action on arrow keys") - ADD_BOOL( [o separatesColumns] ,@"Separates columns") - ADD_BOOL( [o takesTitleFromPreviousColumn] ,@"Takes title from previous column" ) - ADD_NUMBER( [o titleHeight] ,@"Title height") - } - else if ([object isKindOfClass:[NSButton class]]) - { - if ([object isKindOfClass:[NSPopUpButton class]]) - { - NSPopUpButton *o = object; - ADD_CLASS_LABEL(@"NSPopUpButton Info"); - ADD_BOOL( [o autoenablesItems] ,@"Autoenables Items") - ADD_NUMBER( [o indexOfSelectedItem] ,@"Index of selected item") - ADD_OBJECTS( [o itemArray] ,@"Item array") - ADD_NUMBER( [o numberOfItems] ,@"Number of items") - ADD_OBJECT( [o objectValue] ,@"Object value") - ADD_OBJECT(objectFromRectEdge([o preferredEdge]) ,@"Preferred edge") - ADD_BOOL( [o pullsDown] ,@"Pulls down") - ADD_OBJECT( [o selectedItem] ,@"Selected item") - } - - NSButton *o = object; - ADD_CLASS_LABEL(@"NSButton Info"); - ADD_BOOL( [o allowsMixedState] ,@"Allows mixed state") - ADD_OBJECT_NOT_NIL([o alternateImage] ,@"Alternate image" ) - ADD_OBJECT( [o alternateTitle] ,@"Alternate title") - ADD_OBJECT( [o attributedAlternateTitle] ,@"Attributed alternate title") - ADD_OBJECT( [o attributedTitle] ,@"Attributed title") - ADD_OBJECT(objectFromBezelStyle([o bezelStyle]) ,@"Bezel style") - ADD_OBJECT( [o image] ,@"Image") - ADD_OBJECT(objectFromCellImagePosition([o imagePosition]) ,@"Image position") - ADD_BOOL( [o isBordered] ,@"Is bordered") - ADD_BOOL( [o isTransparent] ,@"Is transparent" ) - ADD_OBJECT( [o keyEquivalent] ,@"Key equivalent") - ADD_OBJECT(objectFromKeyModifierMask([o keyEquivalentModifierMask]) , @"Key equivalent modifier mask") - ADD_BOOL( [o showsBorderOnlyWhileMouseInside] ,@"Shows border only while mouse inside") - ADD_OBJECT_NOT_NIL([o sound] ,@"Sound") - ADD_OBJECT(objectFromCellStateValue([o state]) ,@"State") - ADD_OBJECT( [o title] ,@"Title") - } - else if ([object isKindOfClass:[NSColorWell class]]) - { - NSColorWell *o = object; - ADD_CLASS_LABEL(@"NSColorWell Info"); - ADD_OBJECT( [o color] ,@"Color") - ADD_BOOL( [o isActive] ,@"Is active" ) - ADD_BOOL( [o isBordered] ,@"Is bordered") - } - else if ([object isKindOfClass:[NSDatePicker class]]) - { - NSDatePicker *o = object; - ADD_CLASS_LABEL(@"NSDatePicker Info"); - ADD_OBJECT( [o backgroundColor] ,@"Background color") - ADD_OBJECT( [o calendar] ,@"Calendar") - ADD_OBJECT(objectFromDatePickerElementFlags([o datePickerElements]),@"Date picker elements") - ADD_OBJECT(objectFromDatePickerMode([o datePickerMode]) ,@"Date picker mode") - ADD_OBJECT(objectFromDatePickerStyle([o datePickerStyle]) ,@"Date picker style") - ADD_OBJECT( [o dateValue] ,@"Date value") - ADD_OBJECT_NOT_NIL([o delegate] ,@"Delegate") - ADD_BOOL( [o drawsBackground] ,@"Draws background" ) - ADD_BOOL( [o isBezeled] ,@"Is bezeled" ) - ADD_BOOL( [o isBordered] ,@"Is bordered" ) - ADD_OBJECT_NOT_NIL([o locale] ,@"Locale") - ADD_OBJECT( [o maxDate] ,@"Max date") - ADD_OBJECT( [o minDate] ,@"Min date") - ADD_OBJECT( [o textColor] ,@"Text Color") - ADD_NUMBER( [o timeInterval] ,@"Time interval") - ADD_OBJECT( [o timeZone] ,@"Time zone") - } - else if ([object isKindOfClass:[NSImageView class]]) - { - NSImageView *o = object; - ADD_CLASS_LABEL(@"NSImageView Info"); - ADD_BOOL( [o allowsCutCopyPaste] ,@"Allows cut copy paste") - ADD_BOOL( [o animates] ,@"Animates") - ADD_OBJECT( [o image] ,@"Image") - ADD_OBJECT(objectFromImageAlignment([o imageAlignment]) ,@"Image alignment") - ADD_OBJECT(objectFromImageFrameStyle([o imageFrameStyle]) ,@"Image frame style") - ADD_OBJECT(objectFromImageScaling([o imageScaling]) ,@"Image scaling") - ADD_BOOL( [o isEditable] ,@"Is editable") - } - else if ([object isKindOfClass:[NSLevelIndicator class]]) - { - NSLevelIndicator *o = object; - ADD_CLASS_LABEL(@"NSLevelIndicator Info"); - ADD_NUMBER( [o criticalValue] ,@"Critical value") - ADD_NUMBER( [o maxValue] ,@"Max value") - ADD_NUMBER( [o minValue] ,@"Min value") - ADD_NUMBER( [o numberOfMajorTickMarks] ,@"Number of major tick marks") - ADD_NUMBER( [o numberOfTickMarks] ,@"Number of tick marks") - ADD_OBJECT(objectFromTickMarkPosition([o tickMarkPosition], NO),@"Tick mark position") - ADD_NUMBER( [o warningValue] ,@"Warning value") - } - else if ([object isKindOfClass:[NSMatrix class]]) - { - NSMatrix *o = object; - ADD_CLASS_LABEL(@"NSMatrix Info"); - ADD_BOOL( [o allowsEmptySelection] ,@"Allows empty selection") - ADD_BOOL( [o autosizesCells] ,@"Autosizes cells") - ADD_OBJECT( [o backgroundColor] ,@"Background color") - ADD_OBJECT( [o cellBackgroundColor] ,@"Cell background color") - ADD_OBJECT( [o cellClass] ,@"Cell class") - ADD_SIZE( [o cellSize] ,@"Cell size"); - - NSInteger numberOfColumns = [o numberOfColumns]; - NSInteger numberOfRows = [o numberOfRows]; - - if (numberOfRows != 0) - { - for (NSInteger column = 0; column < numberOfColumns; column++) { - NSMutableArray *columnArray = [NSMutableArray arrayWithCapacity:numberOfRows]; - for (NSInteger row = 0; row < numberOfRows; row++) [columnArray addObject:[o cellAtRow:row column:column]]; - ADD_OBJECT( [NSArray arrayWithArray:columnArray] ,([NSString stringWithFormat:@"Column %ld",(long)column])) + if ([object isKindOfClass:[NSBrowser class]]) { + + + #pragma mark ► NSBrowser + //-------------------------------------------------------------------------------- + + NSBrowser* o = object; + ADD_CLASS_LABEL(@"NSBrowser Info"); + ADD_BOOL(o, allowsBranchSelection) + ADD_BOOL(o, allowsEmptySelection) + ADD_BOOL(o, allowsMultipleSelection) + ADD_BOOL(o, allowsTypeSelect) + ADD_COLOR(o, backgroundColor) + ADD_OBJECT(o, cellPrototype) + ADD_ENUM(o, columnResizingType, BrowserColumnResizingType) + ADD_OBJECT(o, columnsAutosaveName) + ADD_OBJECT(o, delegate, NSObject.class, YES) + ADD_SEL(o, doubleAction) + ADD_NUMBER(o, firstVisibleColumn) + ADD_BOOL(o, hasHorizontalScroller) + ADD_BOOL(o, isLoaded) + ADD_BOOL(o, isTitled) + ADD_NUMBER(o, lastColumn) + ADD_NUMBER(o, lastVisibleColumn) + ADD_OBJECT(o, matrixClass) + ADD_NUMBER(o, maxVisibleColumns) + ADD_NUMBER(o, minColumnWidth) + ADD_NUMBER(o, numberOfVisibleColumns) + ADD_OBJECT(o, path) + ADD_OBJECT(o, pathSeparator) + ADD_BOOL(o, prefersAllColumnUserResizing) + ADD_BOOL(o, reusesColumns) + ADD_OBJECTS(o, selectedCells) + ADD_NUMBER(o, selectedColumn) + ADD_BOOL(o, sendsActionOnArrowKeys) + ADD_BOOL(o, separatesColumns) + ADD_BOOL(o, takesTitleFromPreviousColumn) + ADD_NUMBER(o, titleHeight) + } + else if ([object isKindOfClass:[NSButton class]]) { + if ([object isKindOfClass:[NSPopUpButton class]]) { + + + #pragma mark ► NSPopUpButton + //-------------------------------------------------------------------------------- + + NSPopUpButton* o = object; + ADD_CLASS_LABEL(@"NSPopUpButton Info"); + ADD_BOOL(o, autoenablesItems) + ADD_NUMBER(o, indexOfSelectedItem) + ADD_OBJECTS(o, itemArray) + ADD_NUMBER(o, numberOfItems) + ADD_OBJECT(o, objectValue) + ADD_ENUM(o, preferredEdge, RectEdge) + ADD_BOOL(o, pullsDown) + ADD_OBJECT(o, selectedItem) + } + + + + #pragma mark ► NSButton + //-------------------------------------------------------------------------------- + + NSButton* o = object; + ADD_CLASS_LABEL(@"NSButton Info"); + ADD_BOOL(o, allowsMixedState) + ADD_OBJECT_NOT_NIL(o, alternateImage) + ADD_STRING(o, alternateTitle) + ADD_OBJECT(o, attributedAlternateTitle) + ADD_OBJECT(o, attributedTitle) + ADD_ENUM(o, bezelStyle, BezelStyle) + ADD_OBJECT(o, image) + ADD_ENUM(o, imagePosition, CellImagePosition) + ADD_BOOL(o, isBordered) + ADD_BOOL(o, isTransparent) + ADD_OBJECT(o, keyEquivalent) + ADD_OPTIONS(o, keyEquivalentModifierMask, EventModifierFlags) + ADD_BOOL(o, showsBorderOnlyWhileMouseInside) + ADD_OBJECT_NOT_NIL(o, sound) + ADD_ENUM(o, state, CellStateValue) + ADD_STRING(o, title) + } + else if ([object isKindOfClass:[NSColorWell class]]) { + + + #pragma mark ► NSColorWell + //-------------------------------------------------------------------------------- + + NSColorWell* o = object; + ADD_CLASS_LABEL(@"NSColorWell Info"); + ADD_COLOR(o, color) + ADD_BOOL(o, isActive) + ADD_BOOL(o, isBordered) + } + else if ([object isKindOfClass:[NSDatePicker class]]) { + + + #pragma mark ► NSDatePicker + //-------------------------------------------------------------------------------- + + NSDatePicker* o = object; + ADD_CLASS_LABEL(@"NSDatePicker Info"); + ADD_COLOR(o, backgroundColor) + ADD_OBJECT(o, calendar) + ADD_OPTIONS(o, datePickerElements, DatePickerElementFlags) + ADD_ENUM(o, datePickerMode, DatePickerMode) + ADD_ENUM(o, datePickerStyle, DatePickerStyle) + ADD_OBJECT(o, dateValue) + ADD_OBJECT(o, delegate, NSObject.class, YES) + ADD_BOOL(o, drawsBackground) + ADD_BOOL(o, isBezeled) + ADD_BOOL(o, isBordered) + ADD_OBJECT_NOT_NIL(o, locale) + ADD_OBJECT(o, maxDate) + ADD_OBJECT(o, minDate) + ADD_COLOR(o, textColor) + ADD_NUMBER(o, timeInterval) + ADD_OBJECT(o, timeZone) + } + else if ([object isKindOfClass:[NSImageView class]]) { + + + #pragma mark ► NSImageView + //-------------------------------------------------------------------------------- + + NSImageView* o = object; + ADD_CLASS_LABEL(@"NSImageView Info"); + ADD_BOOL(o, allowsCutCopyPaste) + ADD_BOOL(o, animates) + ADD_OBJECT(o, image) + ADD_ENUM(o, imageAlignment, ImageAlignment) + ADD_ENUM(o, imageFrameStyle, ImageFrameStyle) + ADD_ENUM(o, imageScaling, ImageScaling) + ADD_BOOL(o, isEditable) + } + else if ([object isKindOfClass:[NSLevelIndicator class]]) { + + + #pragma mark ► NSLevelIndicator + //-------------------------------------------------------------------------------- + + NSLevelIndicator* o = object; + ADD_CLASS_LABEL(@"NSLevelIndicator Info"); + ADD_NUMBER(o, criticalValue) + ADD_NUMBER(o, maxValue) + ADD_NUMBER(o, minValue) + ADD_NUMBER(o, numberOfMajorTickMarks) + ADD_NUMBER(o, numberOfTickMarks) + ADD_OBJECT_RO(objectFromTickMarkPosition([o tickMarkPosition], NO), @"Tick mark position") + ADD_NUMBER(o, warningValue) + } + else if ([object isKindOfClass:[NSMatrix class]]) { + + + #pragma mark ► NSMatrix + //-------------------------------------------------------------------------------- + + NSMatrix* o = object; + ADD_CLASS_LABEL(@"NSMatrix Info"); + ADD_BOOL(o, allowsEmptySelection) + ADD_BOOL(o, autosizesCells) + ADD_COLOR(o, backgroundColor) + ADD_COLOR(o, cellBackgroundColor) + ADD_OBJECT(o, cellClass) + ADD_SIZE(o, cellSize); + + NSInteger numberOfColumns = [o numberOfColumns]; + NSInteger numberOfRows = [o numberOfRows]; + + if (numberOfRows != 0) { + for (NSInteger column = 0; column < numberOfColumns; column++) { + NSMutableArray* columnArray = [NSMutableArray arrayWithCapacity:numberOfRows]; + for (NSInteger row = 0; row < numberOfRows; row++) + [columnArray addObject:[o cellAtRow:row column:column]]; + ADD_OBJECT_RO([NSArray arrayWithArray:columnArray], ([NSString stringWithFormat:@"Column %ld", (long)column])) + } + } + + ADD_OBJECT(o, delegate, NSObject.class, YES) + ADD_SEL(o, doubleAction) + ADD_BOOL(o, drawsBackground) + ADD_BOOL(o, drawsCellBackground) + ADD_SIZE(o, intercellSpacing) + ADD_BOOL(o, isAutoscroll) + ADD_BOOL(o, isSelectionByRect) + ADD_OBJECT(o, keyCell) + ADD_ENUM(o, mode, MatrixMode) + ADD_NUMBER(o, numberOfColumns) + ADD_NUMBER(o, numberOfRows) + ADD_OBJECT(o, prototype) + ADD_OBJECTS(o, selectedCells) + ADD_NUMBER(o, selectedColumn) + ADD_NUMBER(o, selectedRow) + ADD_BOOL(o, tabKeyTraversesCells) + } + else if ([object isKindOfClass:[NSPathControl class]]) { + + + #pragma mark ► NSPathControl + //-------------------------------------------------------------------------------- + + NSPathControl* o = object; + ADD_CLASS_LABEL(@"NSPathControl Info"); + ADD_COLOR_NOT_NIL(o, backgroundColor) + ADD_OBJECT(o, delegate, NSObject.class, YES) + ADD_SEL(o, doubleAction) + ADD_OBJECTS(o, pathComponentCells) + ADD_ENUM(o, pathStyle, PathStyle) + ADD_OBJECT(o, URL) + } + else if ([object isKindOfClass:[NSRuleEditor class]]) { + if ([object isKindOfClass:[NSPredicateEditor class]]) { + + + #pragma mark ► NSPredicateEditor + //-------------------------------------------------------------------------------- + + NSPredicateEditor* o = object; + ADD_CLASS_LABEL(@"NSPredicateEditor Info"); + ADD_OBJECTS(o, rowTemplates) + } + + + + #pragma mark ► NSRuleEditor + //-------------------------------------------------------------------------------- + + NSRuleEditor* o = object; + ADD_CLASS_LABEL(@"NSRuleEditor Info"); + ADD_BOOL(o, canRemoveAllRows) + ADD_OBJECT_NOT_NIL(o, criteriaKeyPath) + ADD_OBJECT(o, delegate, NSObject.class, YES) + ADD_OBJECT_NOT_NIL(o, displayValuesKeyPath) + ADD_DICTIONARY(o, formattingDictionary) + ADD_OBJECT_NOT_NIL(o, formattingStringsFilename) + ADD_BOOL(o, isEditable) + ADD_ENUM(o, nestingMode, RuleEditorNestingMode) + ADD_NUMBER(o, numberOfRows) + ADD_OBJECT(o, predicate) + ADD_OBJECT(o, rowClass) + ADD_NUMBER(o, rowHeight) + ADD_OBJECT_NOT_NIL(o, rowTypeKeyPath) + ADD_OBJECT_NOT_NIL(o, selectedRowIndexes) + ADD_OBJECT_NOT_NIL(o, subrowsKeyPath) + } + else if ([object isKindOfClass:[NSScroller class]]) { + + + #pragma mark ► NSScroller + //-------------------------------------------------------------------------------- + + NSScroller* o = object; + ADD_CLASS_LABEL(@"NSScroller Info"); + ADD_ENUM(o, arrowsPosition, ScrollArrowPosition) + ADD_ENUM(o, controlSize, ControlSize) + ADD_ENUM(o, controlTint, ControlTint) + ADD_NUMBER(o, doubleValue) + ADD_ENUM(o, hitPart, ScrollerPart) + ADD_NUMBER(o, knobProportion) + ADD_ENUM(o, usableParts, UsableScrollerParts) + } + else if ([object isKindOfClass:[NSSegmentedControl class]]) { + + + #pragma mark ► NSSegmentedControl + //-------------------------------------------------------------------------------- + + NSSegmentedControl* o = object; + ADD_CLASS_LABEL(@"NSSegmentedControl Info"); + + ADD_NUMBER(o, segmentCount) + ADD_NUMBER(o, selectedSegment) + [self processSegmentedItem:o]; + } + else if ([object isKindOfClass:[NSSlider class]]) { + + + #pragma mark ► NSSlider + //-------------------------------------------------------------------------------- + + NSSlider* o = object; + ADD_CLASS_LABEL(@"NSSlider Info"); + ADD_BOOL(o, allowsTickMarkValuesOnly) + ADD_NUMBER(o, altIncrementValue) +#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_10 + ADD_BOOL(o, isVertical) + ADD_NUMBER(o, knobThickness) +#endif + ADD_NUMBER(o, maxValue) + ADD_NUMBER(o, minValue) + ADD_NUMBER(o, numberOfTickMarks) + ADD_OBJECT_RO(objectFromTickMarkPosition([o tickMarkPosition], [(NSSlider*)o isVertical] == 1), @"Tick mark position") + ADD_STRING(o, title) + } + else if ([object isKindOfClass:[NSTableView class]]) { + if ([object isKindOfClass:[NSOutlineView class]]) { + + + #pragma mark ► NSOutlineView + //-------------------------------------------------------------------------------- + + NSOutlineView* o = object; + ADD_CLASS_LABEL(@"NSOutlineView Info"); + ADD_BOOL(o, autoresizesOutlineColumn) + ADD_BOOL(o, autosaveExpandedItems) + ADD_BOOL(o, indentationMarkerFollowsCell) + ADD_NUMBER(o, indentationPerLevel) + ADD_OBJECT(o, outlineTableColumn) + } + + + + #pragma mark ► NSTableView + //-------------------------------------------------------------------------------- + + NSTableView* o = object; + ADD_CLASS_LABEL(@"NSTableView Info"); + ADD_BOOL(o, allowsColumnReordering) + ADD_BOOL(o, allowsColumnResizing) + ADD_BOOL(o, allowsColumnSelection) + ADD_BOOL(o, allowsEmptySelection) + ADD_BOOL(o, allowsMultipleSelection) + ADD_BOOL(o, allowsTypeSelect) + ADD_OBJECT_NOT_NIL(o, autosaveName) + ADD_BOOL(o, autosaveTableColumns) + ADD_COLOR(o, backgroundColor) + ADD_ENUM(o, columnAutoresizingStyle, TableViewColumnAutoresizingStyle) + ADD_OBJECT(o, cornerView) + ADD_OBJECT(o, dataSource) + ADD_OBJECT(o, delegate, NSObject.class, YES) + ADD_SEL(o, doubleAction) + ADD_COLOR(o, gridColor) + ADD_OPTIONS(o, gridStyleMask, TableViewGridLineStyle) + ADD_OBJECT(o, headerView) + ADD_OBJECT_NOT_NIL(o, highlightedTableColumn) + ADD_SIZE(o, intercellSpacing) + ADD_NUMBER(o, numberOfColumns) + ADD_NUMBER(o, numberOfRows) + ADD_NUMBER(o, numberOfSelectedColumns) + ADD_NUMBER(o, numberOfSelectedRows) + ADD_NUMBER(o, rowHeight) + ADD_NUMBER(o, selectedColumn) + ADD_OBJECT(o, selectedColumnIndexes) + ADD_NUMBER(o, selectedRow) + ADD_OBJECT(o, selectedRowIndexes) + ADD_ENUM(o, selectionHighlightStyle, TableViewSelectionHighlightStyle) + ADD_OBJECTS(o, sortDescriptors) + ADD_OBJECTS(o, tableColumns) + ADD_BOOL(o, usesAlternatingRowBackgroundColors) + ADD_BOOL(o, verticalMotionCanBeginDrag) + } + else if ([object isKindOfClass:[NSStepper class]]) { + + + #pragma mark ► NSStepper + //-------------------------------------------------------------------------------- + + NSStepper* o = object; + ADD_CLASS_LABEL(@"NSStepper Info"); + ADD_BOOL(o, autorepeat) + ADD_NUMBER(o, increment) + ADD_NUMBER(o, maxValue) + ADD_NUMBER(o, minValue) + ADD_BOOL(o, valueWraps) + } + else if ([object isKindOfClass:[NSTextField class]]) { + if ([object isKindOfClass:[NSComboBox class]]) { + + + #pragma mark ► NSComboBox + //-------------------------------------------------------------------------------- + + NSComboBox* o = object; + ADD_CLASS_LABEL(@"NSComboBox Info"); + if ([o usesDataSource]) + ADD_OBJECT(o, dataSource) + ADD_BOOL(o, hasVerticalScroller) + ADD_NUMBER(o, indexOfSelectedItem) + ADD_SIZE(o, intercellSpacing) + ADD_BOOL(o, isButtonBordered) + ADD_NUMBER(o, itemHeight) + ADD_NUMBER(o, numberOfItems) + ADD_NUMBER(o, numberOfVisibleItems) + if (![o usesDataSource] && [o indexOfSelectedItem] != -1) + ADD_OBJECT(o, objectValueOfSelectedItem) + if (![o usesDataSource]) + ADD_OBJECTS(o, objectValues) + ADD_BOOL(o, usesDataSource) + } + else if ([object isKindOfClass:[NSSearchField class]]) { + + + #pragma mark ► NSSearchField + //-------------------------------------------------------------------------------- + + NSSearchField* o = object; + if ([[o recentSearches] count] != 0 || [o recentsAutosaveName] != nil) + ADD_CLASS_LABEL(@"NSSearchField Info"); + ADD_OBJECTS(o, recentSearches) + ADD_OBJECT_NOT_NIL(o, recentsAutosaveName) + } + else if ([object isKindOfClass:[NSTokenField class]]) { + + + #pragma mark ► NSTokenField + //-------------------------------------------------------------------------------- + + NSTokenField* o = object; + ADD_CLASS_LABEL(@"NSTokenField Info"); + ADD_NUMBER(o, completionDelay) + ADD_OBJECT(o, tokenizingCharacterSet) + ADD_ENUM(o, tokenStyle, TokenStyle) + } + + + + #pragma mark ► NSTextField + //-------------------------------------------------------------------------------- + + NSTextField* o = object; + ADD_CLASS_LABEL(@"NSTextField Info"); + ADD_BOOL(o, allowsEditingTextAttributes) + ADD_COLOR(o, backgroundColor) + ADD_ENUM(o, bezelStyle, TextFieldBezelStyle) + ADD_OBJECT(o, delegate, NSObject.class, YES) + ADD_BOOL(o, drawsBackground) + ADD_BOOL(o, importsGraphics) + ADD_BOOL(o, isBezeled) + ADD_BOOL(o, isBordered) + ADD_BOOL(o, isEditable) + ADD_BOOL(o, isSelectable) + ADD_COLOR(o, textColor) + } + + + + #pragma mark ► NSControl + //-------------------------------------------------------------------------------- + + NSControl* o = object; + ADD_CLASS_LABEL(@"NSControl Info"); + ADD_SEL(o, action) + ADD_ENUM(o, alignment, TextAlignment) + ADD_ENUM(o, baseWritingDirection, WritingDirection) + ADD_OBJECT(o, cell) + ADD_ENUM(o, controlSize, ControlSize) + ADD_OBJECT_NOT_NIL(o, currentEditor) + ADD_OBJECT(o, font) + ADD_OBJECT(o, formatter) + ADD_BOOL(o, ignoresMultiClick) + ADD_BOOL(o, isContinuous) + ADD_BOOL(o, isEnabled) + if ([o currentEditor] == nil) + ADD_OBJECT(o, objectValue) // To avoid side-effects, we only call objectValue if the control is not being edited, which is determined with the currentEditor call. + ADD_BOOL(o, refusesFirstResponder) + ADD_OBJECT(o, selectedCell) + ADD_NUMBER(o, selectedTag) + ADD_OBJECT(o, target) } - } - - ADD_OBJECT( [o delegate] ,@"Delegate") - ADD_SEL( [o doubleAction] ,@"Double action") - ADD_BOOL( [o drawsBackground] ,@"Draws background") - ADD_BOOL( [o drawsCellBackground] ,@"Draws cell background") - ADD_SIZE( [o intercellSpacing] ,@"Intercell spacing") - ADD_BOOL( [o isAutoscroll] ,@"Is autoscroll") - ADD_BOOL( [o isSelectionByRect] ,@"Is selection by rect") - ADD_OBJECT( [o keyCell] ,@"Key cell") - ADD_OBJECT(objectFromMatrixMode([(NSMatrix *)o mode]) ,@"Mode") - ADD_NUMBER( [o numberOfColumns] ,@"Number of columns") - ADD_NUMBER( [o numberOfRows] ,@"Number of rows") - ADD_OBJECT( [o prototype] ,@"Prototype") - ADD_OBJECTS( [o selectedCells] ,@"Selected cells") - ADD_NUMBER( [o selectedColumn] ,@"Selected column") - ADD_NUMBER( [o selectedRow] ,@"Selected row") - ADD_BOOL( [o tabKeyTraversesCells] ,@"Tab key traverses cells") - } - else if ([object isKindOfClass:[NSPathControl class]]) - { - NSPathControl *o = object; - ADD_CLASS_LABEL(@"NSPathControl Info"); - ADD_OBJECT_NOT_NIL([o backgroundColor] ,@"Background color") - ADD_OBJECT( [o delegate] ,@"Delegate") - ADD_SEL( [o doubleAction] ,@"Double action") - ADD_OBJECTS( [o pathComponentCells] ,@"Path component cells") - ADD_OBJECT(objectFromPathStyle([o pathStyle]) ,@"Path style") - ADD_OBJECT( [o URL] ,@"URL") - } - else if ([object isKindOfClass:[NSRuleEditor class]]) - { - if ([object isKindOfClass:[NSPredicateEditor class]]) - { - NSPredicateEditor *o = object; - ADD_CLASS_LABEL(@"NSPredicateEditor Info"); - ADD_OBJECTS( [o rowTemplates] ,@"Row templates") - } - - NSRuleEditor *o = object; - ADD_CLASS_LABEL(@"NSRuleEditor Info"); - ADD_BOOL( [o canRemoveAllRows] ,@"Can remove all rows") - ADD_OBJECT_NOT_NIL([o criteriaKeyPath] ,@"Criteria key path") - ADD_OBJECT( [o delegate] ,@"Delegate") - ADD_OBJECT_NOT_NIL([o displayValuesKeyPath] ,@"Display values key path") - ADD_DICTIONARY( [o formattingDictionary] ,@"Formatting dictionary") - ADD_OBJECT_NOT_NIL([o formattingStringsFilename] ,@"Formatting strings filename") - ADD_BOOL( [o isEditable] ,@"Is editable") - ADD_OBJECT(objectFromNestingMode([o nestingMode]) ,@"Nesting mode") - ADD_NUMBER( [o numberOfRows] ,@"Number of rows") - ADD_OBJECT( [o predicate] ,@"Predicate") - ADD_OBJECT( [o rowClass] ,@"Row class") - ADD_NUMBER( [o rowHeight] ,@"Row height") - ADD_OBJECT_NOT_NIL([o rowTypeKeyPath] ,@"Row type key path") - ADD_OBJECT_NOT_NIL([o selectedRowIndexes] ,@"Selected row indexes") - ADD_OBJECT_NOT_NIL([o subrowsKeyPath] ,@"Subrows key path") - } - else if ([object isKindOfClass:[NSScroller class]]) - { - NSScroller *o = object; - ADD_CLASS_LABEL(@"NSScroller Info"); - ADD_OBJECT(objectFromScrollArrowPosition([o arrowsPosition]),@"Arrows position") - ADD_OBJECT(objectFromControlSize([o controlSize]) ,@"Control size") - ADD_OBJECT(objectFromControlTint([o controlTint]) ,@"Control tint") - ADD_NUMBER( [o doubleValue] ,@"Double value") - ADD_OBJECT(objectFromScrollerPart([o hitPart]) ,@"Hit part") - ADD_NUMBER( [o knobProportion] ,@"Knob proportion") - ADD_OBJECT(objectFromUsableScrollerParts([o usableParts]) ,@"Usable parts") - } - else if ([object isKindOfClass:[NSSegmentedControl class]]) - { - NSSegmentedControl *o = object; - NSInteger segmentCount = [o segmentCount]; - ADD_CLASS_LABEL(@"NSSegmentedControl Info"); - - ADD_NUMBER( segmentCount ,@"Segment count") - ADD_NUMBER( [o selectedSegment] ,@"Selected segment") - - for (NSInteger i = 0; i < segmentCount; i++) - { - ADD_OBJECT_NOT_NIL([o imageForSegment:i] ,([NSString stringWithFormat:@"Image for segment %ld",(long)i])) - ADD_BOOL( [o isEnabledForSegment:i] ,([NSString stringWithFormat:@"Is enabled for segment %ld",(long)i])) - ADD_BOOL( [o isSelectedForSegment:i] ,([NSString stringWithFormat:@"Is selected for segment %ld",(long)i])) - ADD_OBJECT_NOT_NIL([o labelForSegment:i] ,([NSString stringWithFormat:@"Label for segment %ld",(long)i])) - ADD_OBJECT_NOT_NIL([o menuForSegment:i] ,([NSString stringWithFormat:@"Menu for segment %ld",(long)i])) - if ([o widthForSegment:i] != 0) - ADD_NUMBER( [o widthForSegment:i] ,([NSString stringWithFormat:@"Width for segment %ld",(long)i])) - } - } - else if ([object isKindOfClass:[NSSlider class]]) - { - NSSlider *o = object; - ADD_CLASS_LABEL(@"NSSlider Info"); - ADD_BOOL( [o allowsTickMarkValuesOnly] ,@"Allows tick mark values only") - ADD_NUMBER( [o altIncrementValue] ,@"Alt increment value") - ADD_NUMBER( [(NSSlider*)o isVertical] ,@"Is vertical") - ADD_NUMBER( [o knobThickness] ,@"Knob thickness") - ADD_NUMBER( [o maxValue] ,@"Max value") - ADD_NUMBER( [o minValue] ,@"Min value") - ADD_NUMBER( [o numberOfTickMarks] ,@"Number of tick marks") - ADD_OBJECT(objectFromTickMarkPosition([o tickMarkPosition], [(NSSlider*)o isVertical] == 1),@"Tick mark position") - ADD_OBJECT( [o title] ,@"title") - } - else if ([object isKindOfClass:[NSTableView class]]) - { - if ([object isKindOfClass:[NSOutlineView class]]) - { - NSOutlineView *o = object; - ADD_CLASS_LABEL(@"NSOutlineView Info"); - ADD_BOOL( [o autoresizesOutlineColumn] ,@"Autoresizes outline column") - ADD_BOOL( [o autosaveExpandedItems] ,@"Autosave expanded items") - ADD_BOOL( [o indentationMarkerFollowsCell] ,@"Indentation marker follows cell") - ADD_NUMBER( [o indentationPerLevel] ,@"Indentation per level") - ADD_OBJECT( [o outlineTableColumn] ,@"Outline table column") - } - - NSTableView *o = object; - ADD_CLASS_LABEL(@"NSTableView Info"); - ADD_BOOL( [o allowsColumnReordering] ,@"Allows column reordering") - ADD_BOOL( [o allowsColumnResizing] ,@"Allows column resizing") - ADD_BOOL( [o allowsColumnSelection] ,@"Allows column selection") - ADD_BOOL( [o allowsEmptySelection] ,@"Allows empty selection") - ADD_BOOL( [o allowsMultipleSelection] ,@"Allows multiple selection") - ADD_BOOL( [o allowsTypeSelect] ,@"Allows type select") - ADD_OBJECT_NOT_NIL([o autosaveName] ,@"Autosave name") - ADD_BOOL( [o autosaveTableColumns] ,@"Autosave table columns") - ADD_OBJECT( [o backgroundColor] ,@"Background color") - ADD_OBJECT(objectFromTableViewColumnAutoresizingStyle([o columnAutoresizingStyle]),@"Column autoresizing style") - ADD_OBJECT( [o cornerView] ,@"Corner view") - ADD_OBJECT( [o dataSource] ,@"Data source") - ADD_OBJECT( [o delegate] ,@"Delegate") - ADD_SEL( [o doubleAction] ,@"Double action") - ADD_OBJECT( [o gridColor] ,@"Grid color") - ADD_OBJECT( objectFromGridStyleMask([o gridStyleMask]),@"Grid style mask") - ADD_OBJECT( [o headerView] ,@"Header view") - ADD_OBJECT_NOT_NIL([o highlightedTableColumn] ,@"Highlighted table column") - ADD_SIZE( [o intercellSpacing] ,@"Intercell spacing") - ADD_NUMBER( [o numberOfColumns] ,@"Number of columns") - ADD_NUMBER( [o numberOfRows] ,@"Number of rows") - ADD_NUMBER( [o numberOfSelectedColumns] ,@"Number of selected columns") - ADD_NUMBER( [o numberOfSelectedRows] ,@"Number of selected rows") - ADD_NUMBER( [o rowHeight] ,@"Row height") - ADD_NUMBER( [o selectedColumn] ,@"Selected column") - ADD_OBJECT( [o selectedColumnIndexes] ,@"Selected column indexes") - ADD_NUMBER( [o selectedRow] ,@"Selected row") - ADD_OBJECT( [o selectedRowIndexes] ,@"Selected row indexes") - ADD_OBJECT(objectFromTableViewSelectionHighlightStyle([o selectionHighlightStyle]),@"Selection highlight style") - ADD_OBJECTS( [o sortDescriptors] ,@"Sort descriptors") - ADD_OBJECTS( [o tableColumns] ,@"Table columns") - ADD_BOOL( [o usesAlternatingRowBackgroundColors] ,@"Uses alternating row background colors" ) - ADD_BOOL( [o verticalMotionCanBeginDrag] ,@"Vertical motion can begin drag" ) - } - else if ([object isKindOfClass:[NSStepper class]]) - { - NSStepper *o = object; - ADD_CLASS_LABEL(@"NSStepper Info"); - ADD_BOOL( [o autorepeat] ,@"Autorepeat") - ADD_NUMBER( [o increment] ,@"Increment") - ADD_NUMBER( [o maxValue] ,@"Max value") - ADD_NUMBER( [o minValue] ,@"Min value") - ADD_BOOL( [o valueWraps] ,@"Value wraps") - } - else if ([object isKindOfClass:[NSTextField class]]) - { - if ([object isKindOfClass:[NSComboBox class]]) - { - NSComboBox *o = object; - ADD_CLASS_LABEL(@"NSComboBox Info"); - if ([o usesDataSource]) ADD_OBJECT([o dataSource] ,@"Data source") - ADD_BOOL( [o hasVerticalScroller] ,@"Has vertical scroller") - ADD_NUMBER( [o indexOfSelectedItem] ,@"Index of selected item") - ADD_SIZE( [o intercellSpacing] ,@"Intercell spacing") - ADD_BOOL( [o isButtonBordered] ,@"Is button bordered") - ADD_NUMBER( [o itemHeight] ,@"Item height") - ADD_NUMBER( [o numberOfItems] ,@"Number of items") - ADD_NUMBER( [o numberOfVisibleItems] ,@"Number of visible items") - if (![o usesDataSource] && [o indexOfSelectedItem] != -1) - ADD_OBJECT( [o objectValueOfSelectedItem] ,@"Object value of selected item") - if (![o usesDataSource]) - ADD_OBJECTS( [o objectValues] ,@"Object values") - ADD_BOOL( [o usesDataSource] ,@"Uses data source") - } - else if ([object isKindOfClass:[NSSearchField class]]) - { - NSSearchField *o = object; - if ([[o recentSearches] count] != 0 || [o recentsAutosaveName] != nil) - ADD_CLASS_LABEL(@"NSSearchField Info"); - ADD_OBJECTS( [o recentSearches] ,@"Recent searches") - ADD_OBJECT_NOT_NIL([o recentsAutosaveName] ,@"Recents autosave name") - } - else if ([object isKindOfClass:[NSTokenField class]]) - { - NSTokenField *o = object; - ADD_CLASS_LABEL(@"NSTokenField Info"); - ADD_NUMBER( [o completionDelay] ,@"Completion delay") - ADD_OBJECT( [o tokenizingCharacterSet] ,@"Tokenizing character set") - ADD_OBJECT(objectFromTokenStyle([o tokenStyle]) ,@"Token style") - } - - NSTextField *o = object; - ADD_CLASS_LABEL(@"NSTextField Info"); - ADD_BOOL( [o allowsEditingTextAttributes] ,@"Allows editing text attributes") - ADD_OBJECT( [o backgroundColor] ,@"Background color") - ADD_OBJECT(objectFromTextFieldBezelStyle([o bezelStyle]) ,@"Bezel style") - ADD_OBJECT_NOT_NIL([o delegate] ,@"Delegate") - ADD_BOOL( [o drawsBackground] ,@"Draws background") - ADD_BOOL( [o importsGraphics] ,@"Imports graphics") - ADD_BOOL( [o isBezeled] ,@"Is bezeled") - ADD_BOOL( [o isBordered] ,@"Is bordered") - ADD_BOOL( [o isEditable] ,@"Is editable") - ADD_BOOL( [o isSelectable] ,@"Is selectable") - ADD_OBJECT( [o textColor] ,@"Text color") - } - - NSControl *o = object; - ADD_CLASS_LABEL(@"NSControl Info"); - ADD_SEL( [o action] ,@"Action") - ADD_OBJECT( objectFromTextAlignment([o alignment]) ,@"Alignment") - ADD_OBJECT(objectFromWritingDirection([o baseWritingDirection]) ,@"Base writing direction") - ADD_OBJECT( [o cell] ,@"Cell") - ADD_OBJECT_NOT_NIL( [o currentEditor] ,@"Current editor") - ADD_OBJECT( [o font] ,@"Font") - ADD_OBJECT( [o formatter] ,@"Formatter") - ADD_BOOL( [o ignoresMultiClick] ,@"Ignores multiclick") - ADD_BOOL( [o isContinuous] ,@"Is continuous") - ADD_BOOL( [o isEnabled] ,@"Is enabled") - if ([o currentEditor] == nil) ADD_OBJECT([o objectValue] ,@"Object value") // To avoid side-effects, we only call objectValue if the control is not being edited, which is determined with the currentEditor call. - ADD_BOOL( [o refusesFirstResponder] ,@"Refuses first responder") - ADD_OBJECT( [o selectedCell] ,@"Selected cell") - ADD_NUMBER( [o selectedTag] ,@"Selected tag") - ADD_OBJECT( [o target] ,@"Target") - } } - + - (void)processNSWindow:(id)object { - { - if ([object isKindOfClass:[NSPanel class]]) - { - if ([object isKindOfClass:[NSColorPanel class]]) - { - NSColorPanel *o = object; - ADD_CLASS_LABEL(@"NSColorPanel Info"); - ADD_OBJECT_NOT_NIL([o accessoryView] ,@"Accessory view") - ADD_NUMBER( [o alpha] ,@"Alpha") - ADD_OBJECT( [o color] ,@"Color") - ADD_BOOL( [o isContinuous] ,@"Is continuous") - ADD_OBJECT( objectFromColorPanelMode([o mode]) ,@"Mode") - ADD_BOOL( [o showsAlpha] ,@"Shows alpha") - } - else if ([object isKindOfClass:[NSFontPanel class]]) - { - NSFontPanel *o = object; - ADD_CLASS_LABEL(@"NSFontPanel Info"); - ADD_OBJECT_NOT_NIL([o accessoryView] ,@"Accessory view") - ADD_BOOL( [o isEnabled] ,@"Is enabled") - } - else if ([object isKindOfClass:[NSSavePanel class]]) - { - if ([object isKindOfClass:[NSOpenPanel class]]) - { - NSOpenPanel *o = object; - ADD_CLASS_LABEL(@"NSOpenPanel Info"); - ADD_BOOL( [o allowsMultipleSelection] ,@"Allows multiple selection") - ADD_BOOL( [o canChooseDirectories] ,@"Can choose directories") - ADD_BOOL( [o canChooseFiles] ,@"Can choose files") - ADD_OBJECTS( [o filenames] ,@"Filenames") - ADD_BOOL( [o resolvesAliases] ,@"Resolves aliases") - ADD_OBJECTS( [o URLs] ,@"URLs") + { + if ([object isKindOfClass:[NSPanel class]]) { + if ([object isKindOfClass:[NSColorPanel class]]) { + NSColorPanel* o = object; + ADD_CLASS_LABEL(@"NSColorPanel Info"); + ADD_OBJECT_NOT_NIL(o, accessoryView) + ADD_NUMBER(o, alpha) + ADD_COLOR(o, color) + ADD_BOOL(o, isContinuous) + ADD_ENUM(o, mode, ColorPanelMode) + ADD_BOOL(o, showsAlpha) + } + else if ([object isKindOfClass:[NSFontPanel class]]) { + NSFontPanel* o = object; + ADD_CLASS_LABEL(@"NSFontPanel Info"); + ADD_OBJECT_NOT_NIL(o, accessoryView) + ADD_BOOL(o, isEnabled) + } + else if ([object isKindOfClass:[NSSavePanel class]]) { + if ([object isKindOfClass:[NSOpenPanel class]]) { + NSOpenPanel* o = object; + ADD_CLASS_LABEL(@"NSOpenPanel Info"); + ADD_BOOL(o, allowsMultipleSelection) + ADD_BOOL(o, canChooseDirectories) + ADD_BOOL(o, canChooseFiles) + ADD_OBJECTS(o, filenames) + ADD_BOOL(o, resolvesAliases) + ADD_OBJECTS(o, URLs) + } + + NSSavePanel* o = object; + ADD_CLASS_LABEL(@"NSSavePanel Info"); + ADD_OBJECT_NOT_NIL(o, accessoryView) + ADD_OBJECTS(o, allowedFileTypes) + ADD_BOOL(o, allowsOtherFileTypes) + ADD_BOOL(o, canCreateDirectories) + ADD_BOOL(o, canSelectHiddenExtension) + ADD_OBJECT(o, delegate, NSObject.class, YES) + ADD_OBJECT(o, directory) + ADD_OBJECT(o, filename) + ADD_BOOL(o, isExpanded) + ADD_BOOL(o, isExtensionHidden) + ADD_STRING(o, message) + ADD_STRING(o, nameFieldLabel) + ADD_OBJECT(o, prompt) + ADD_BOOL(o, treatsFilePackagesAsDirectories) + ADD_OBJECT(o, URL) + } + + + NSPanel* o = object; + ADD_CLASS_LABEL(@"NSPanel Info"); + ADD_BOOL(o, becomesKeyOnlyIfNeeded) + ADD_BOOL(o, isFloatingPanel) + } + + NSWindow* o = object; + ADD_CLASS_LABEL(@"NSWindow Info"); + ADD_BOOL(o, acceptsMouseMovedEvents) + ADD_BOOL(o, allowsToolTipsWhenApplicationIsInactive) + ADD_NUMBER(o, alphaValue) + ADD_BOOL(o, areCursorRectsEnabled) + ADD_SIZE(o, aspectRatio) + ADD_OBJECT_NOT_NIL(o, attachedSheet) + ADD_BOOL(o, autorecalculatesKeyViewLoop) + ADD_ENUM(o, backingLocation, WindowBackingLocation) + ADD_COLOR(o, backgroundColor) + ADD_ENUM(o, backingType, BackingStoreType) + ADD_BOOL(o, canBecomeKeyWindow) + ADD_BOOL(o, canBecomeMainWindow) + ADD_BOOL(o, canBecomeVisibleWithoutLogin) + ADD_BOOL(o, canHide) + ADD_BOOL(o, canStoreColor) + ADD_ENUM(o, collectionBehavior, WindowCollectionBehavior) + ADD_OBJECTS(o, childWindows) + ADD_SIZE(o, contentAspectRatio) + ADD_SIZE(o, contentMaxSize) + ADD_SIZE(o, contentMinSize) + ADD_SIZE(o, contentResizeIncrements) + ADD_OBJECT(o, contentView) + ADD_OBJECT_NOT_NIL(o, deepestScreen) + ADD_OBJECT(o, defaultButtonCell) + ADD_OBJECT(o, delegate, NSObject.class, YES) + ADD_NUMBER(o, depthLimit) + ADD_DICTIONARY(o, deviceDescription) + ADD_BOOL(o, displaysWhenScreenProfileChanges) + ADD_OBJECTS(o, drawers) + ADD_OBJECT(o, firstResponder) + ADD_RECT(o, frame) + ADD_OBJECT_NOT_NIL(o, frameAutosaveName) + ADD_OBJECT(o, graphicsContext) + // Call to gState fails when the window in miniaturized + //ADD_NUMBER( [o gState] ,@"gState") + ADD_BOOL(o, hasDynamicDepthLimit) + ADD_BOOL(o, hasShadow) + ADD_BOOL(o, hidesOnDeactivate) + ADD_BOOL(o, ignoresMouseEvents) + ADD_OBJECT(o, initialFirstResponder) + ADD_BOOL(o, isAutodisplay) + ADD_BOOL(o, isDocumentEdited) + ADD_BOOL(o, isExcludedFromWindowsMenu) + ADD_BOOL(o, isFlushWindowDisabled) + ADD_BOOL(o, isMiniaturized) + ADD_BOOL(o, isMovableByWindowBackground) + ADD_BOOL(o, isOneShot) + ADD_BOOL(o, isOpaque) + ADD_BOOL(o, isReleasedWhenClosed) + ADD_BOOL(o, isSheet) + ADD_BOOL(o, isVisible) + ADD_BOOL(o, isZoomed) + ADD_ENUM(o, keyViewSelectionDirection, SelectionDirection) + ADD_ENUM(o, level, WindowLevel) + ADD_SIZE(o, maxSize) + ADD_SIZE(o, minSize) + ADD_OBJECT_NOT_NIL(o, miniwindowImage) + ADD_STRING(o, miniwindowTitle) + ADD_OBJECT_NOT_NIL(o, parentWindow) + ADD_ENUM(o, preferredBackingLocation, WindowBackingLocation) + ADD_BOOL(o, preservesContentDuringLiveResize) + ADD_OBJECT_NOT_NIL(o, representedFilename) + ADD_OBJECT_NOT_NIL(o, representedURL) + ADD_SIZE(o, resizeIncrements) + ADD_OBJECT(o, screen) + ADD_ENUM(o, sharingType, WindowSharingType) + ADD_BOOL(o, showsResizeIndicator) + ADD_BOOL(o, showsToolbarButton) + ADD_OPTIONS(o, styleMask, WindowMask) + ADD_STRING(o, title) + ADD_OBJECT_NOT_NIL(o, toolbar) + ADD_NUMBER(o, userSpaceScaleFactor) + ADD_BOOL(o, viewsNeedDisplay) + ADD_OBJECT_NOT_NIL(o, windowController) + ADD_NUMBER(o, windowNumber) + ADD_BOOL(o, worksWhenModal) } - - NSSavePanel *o = object; - ADD_CLASS_LABEL(@"NSSavePanel Info"); - ADD_OBJECT_NOT_NIL([o accessoryView] ,@"Accessory view") - ADD_OBJECTS( [o allowedFileTypes] ,@"Allowed file types") - ADD_BOOL( [o allowsOtherFileTypes] ,@"Allows other file types") - ADD_BOOL( [o canCreateDirectories] ,@"Can create directories") - ADD_BOOL( [o canSelectHiddenExtension] ,@"Can select hidden extension") - ADD_OBJECT_NOT_NIL([o delegate] ,@"Delegate") - ADD_OBJECT( [o directory] ,@"Directory") - ADD_OBJECT( [o filename] ,@"Filename") - ADD_BOOL( [o isExpanded] ,@"Is expanded") - ADD_BOOL( [o isExtensionHidden] ,@"Is extension hidden") - ADD_OBJECT( [o message] ,@"Message") - ADD_OBJECT( [o nameFieldLabel] ,@"nameFieldLabel") - ADD_OBJECT( [o prompt] ,@"Prompt") - ADD_BOOL( [o treatsFilePackagesAsDirectories] ,@"Treats file packages as directories") - ADD_OBJECT( [o URL] ,@"URL") - } - - - NSPanel *o = object; - ADD_CLASS_LABEL(@"NSPanel Info"); - ADD_BOOL( [o becomesKeyOnlyIfNeeded] ,@"Becomes key only if needed") - ADD_BOOL( [o isFloatingPanel] ,@"Is floating panel") - } - - NSWindow *o = object; - ADD_CLASS_LABEL(@"NSWindow Info"); - ADD_BOOL( [o acceptsMouseMovedEvents] ,@"Accepts mouse moved events") - ADD_BOOL( [o allowsToolTipsWhenApplicationIsInactive] ,@"Allows tool tips when application is inactive") - ADD_NUMBER( [o alphaValue] ,@"Alpha value") - ADD_BOOL( [o areCursorRectsEnabled] ,@"Are cursor rects enabled") - ADD_SIZE( [o aspectRatio] ,@"Aspect ratio") - ADD_OBJECT_NOT_NIL( [o attachedSheet] ,@"Attached sheet") - ADD_BOOL( [o autorecalculatesKeyViewLoop] ,@"Autorecalculates key view loop") - ADD_OBJECT(objectFromWindowBackingLocation([o backingLocation]),@"Backing location") - ADD_OBJECT( [o backgroundColor] ,@"Background color") - ADD_OBJECT(objectFromBackingStoreType([o backingType]) ,@"Backing type") - ADD_BOOL( [o canBecomeKeyWindow] ,@"Can become key window") - ADD_BOOL( [o canBecomeMainWindow] ,@"Can become main window") - ADD_BOOL( [o canBecomeVisibleWithoutLogin] ,@"Can become visible without login") - ADD_BOOL( [o canHide] ,@"Can hide") - ADD_BOOL( [o canStoreColor] ,@"Can store color") - ADD_OBJECT(objectFromWindowCollectionBehavior([o collectionBehavior]),@"Collection behavior") - ADD_OBJECTS( [o childWindows] ,@"Child windows") - ADD_SIZE( [o contentAspectRatio] ,@"Content aspect ratio") - ADD_SIZE( [o contentMaxSize] ,@"Content max size") - ADD_SIZE( [o contentMinSize] ,@"Content min size") - ADD_SIZE( [o contentResizeIncrements] ,@"Content resize increments") - ADD_OBJECT( [o contentView] ,@"Content view") - ADD_OBJECT_NOT_NIL( [o deepestScreen] ,@"Deepest screen") - ADD_OBJECT( [o defaultButtonCell] ,@"Default button cell") - ADD_OBJECT( [o delegate] ,@"Delegate") - ADD_NUMBER( [o depthLimit] ,@"Depth limit") - ADD_DICTIONARY( [o deviceDescription] ,@"Device description") - ADD_BOOL( [o displaysWhenScreenProfileChanges] ,@"Displays when screen profile changes") - ADD_OBJECTS( [o drawers] ,@"Drawers") - ADD_OBJECT( [o firstResponder] ,@"First responder") - ADD_RECT( [o frame] ,@"Frame") - ADD_OBJECT_NOT_NIL( [o frameAutosaveName] ,@"Frame autosave name") - ADD_OBJECT( [o graphicsContext] ,@"Graphics context") - // Call to gState fails when the window in miniaturized - //ADD_NUMBER( [o gState] ,@"gState") - ADD_BOOL( [o hasDynamicDepthLimit] ,@"Has dynamic depth limit") - ADD_BOOL( [o hasShadow] ,@"Has shadow") - ADD_BOOL( [o hidesOnDeactivate] ,@"Hides on deactivate") - ADD_BOOL( [o ignoresMouseEvents] ,@"Ignores mouse events") - ADD_OBJECT( [o initialFirstResponder] ,@"Initial first responder") - ADD_BOOL( [o isAutodisplay] ,@"Is autodisplay") - ADD_BOOL( [o isDocumentEdited] ,@"Is document edited") - ADD_BOOL( [o isExcludedFromWindowsMenu] ,@"Is exclude from windowsmenu") - ADD_BOOL( [o isFlushWindowDisabled] ,@"Is flush window disabled") - ADD_BOOL( [o isMiniaturized] ,@"Is miniaturized") - ADD_BOOL( [o isMovableByWindowBackground] ,@"Is movable by window background") - ADD_BOOL( [o isOneShot] ,@"Is oneShot") - ADD_BOOL( [o isOpaque] ,@"Is opaque") - ADD_BOOL( [o isReleasedWhenClosed] ,@"Is released when closed") - ADD_BOOL( [o isSheet] ,@"Is sheet") - ADD_BOOL( [o isVisible] ,@"Is visible") - ADD_BOOL( [o isZoomed] ,@"Is zoomed") - ADD_OBJECT(objectFromSelectionDirection([o keyViewSelectionDirection]), @"Key view selection direction") - ADD_OBJECT(objectFromWindowLevel([o level]) , @"Level") - ADD_SIZE( [o maxSize] ,@"Max size") - ADD_SIZE( [o minSize] ,@"Min size") - ADD_OBJECT_NOT_NIL( [o miniwindowImage] ,@"Miniwindow image") - ADD_OBJECT( [o miniwindowTitle] ,@"Miniwindow title") - ADD_OBJECT_NOT_NIL( [o parentWindow] ,@"Parent window") - ADD_OBJECT(objectFromWindowBackingLocation([o preferredBackingLocation]),@"Preferred backing location") - ADD_BOOL( [o preservesContentDuringLiveResize] ,@"Preserves content during live resize") - ADD_OBJECT_NOT_NIL( [o representedFilename] ,@"Represented filename") - ADD_OBJECT_NOT_NIL( [o representedURL] ,@"Represented URL") - ADD_SIZE( [o resizeIncrements] ,@"Resize increments") - ADD_OBJECT( [o screen] ,@"Screen") - ADD_OBJECT(objectFromWindowSharingType([o sharingType]) ,@"Sharing type") - ADD_BOOL( [o showsResizeIndicator] ,@"Shows resize indicator") - ADD_BOOL( [o showsToolbarButton] ,@"Shows toolbar button") - ADD_OBJECT(objectFromWindowMask([o styleMask]) ,@"Style mask") - ADD_OBJECT( [o title] ,@"Title") - ADD_OBJECT_NOT_NIL( [o toolbar] ,@"Toolbar") - ADD_NUMBER( [o userSpaceScaleFactor] ,@"User space scale factor") - ADD_BOOL( [o viewsNeedDisplay] ,@"Views need display") - ADD_OBJECT_NOT_NIL( [o windowController] ,@"Window controller") - ADD_NUMBER( [o windowNumber] ,@"Window number") - ADD_BOOL( [o worksWhenModal] ,@"Works when modal") - } } -@end \ No newline at end of file +@end diff --git a/FScriptFramework/FSObjectBrowserWindow.h b/FScriptFramework/FSObjectBrowserWindow.h new file mode 100644 index 0000000..72756ec --- /dev/null +++ b/FScriptFramework/FSObjectBrowserWindow.h @@ -0,0 +1,16 @@ +// +// FSObjectBrowserWindow.h +// FScript +// +// Created by Anthony Dervish on 08/12/2014. +// +// + +#import + +@class FSObjectBrowserButtonsInspector; + +@interface FSObjectBrowserWindow : NSWindow +@property (strong,nonatomic) NSSearchField *visibleSearchField; +@property (strong,nonatomic) FSObjectBrowserButtonsInspector *buttonsInspector; +@end diff --git a/FScriptFramework/FSObjectBrowserWindow.m b/FScriptFramework/FSObjectBrowserWindow.m new file mode 100644 index 0000000..e654e05 --- /dev/null +++ b/FScriptFramework/FSObjectBrowserWindow.m @@ -0,0 +1,47 @@ +// +// FSObjectBrowserWindow.m +// FScript +// +// Created by Anthony Dervish on 08/12/2014. +// +// + +#import "FSObjectBrowserWindow.h" +#import "FSObjectBrowserButtonsInspector.h" + +@implementation FSObjectBrowserWindow + +- (void)sendEvent:(NSEvent *)theEvent +{ + // Goal: route most key events directly to the searchfield + + if ([theEvent type] == NSKeyDown) + { + unichar character = [[theEvent characters] characterAtIndex:0]; + if (character != NSLeftArrowFunctionKey && character != NSRightArrowFunctionKey && character != NSUpArrowFunctionKey && character != NSDownArrowFunctionKey) + { + NSSearchField *searchField = [self visibleSearchField]; + if (searchField && [searchField currentEditor] == nil) // If the searchfield is not already active then we make it become the first responder + [self makeFirstResponder:searchField]; + } + } + [super sendEvent:theEvent]; +} + +- (void)runToolbarCustomizationPalette:(id)sender +{ + if (!self.buttonsInspector) { + self.buttonsInspector = [[FSObjectBrowserButtonsInspector alloc] init]; + } + [super runToolbarCustomizationPalette:sender]; + [self.buttonsInspector activate]; +} + +- (BOOL)worksWhenModal +{ + // Since F-Script is often used as a debugging tool, we want it to + // continue working even when some other window is being run modally + return YES; +} + +@end diff --git a/FScriptFramework/FSObjectEnumInfo.h b/FScriptFramework/FSObjectEnumInfo.h new file mode 100644 index 0000000..a482b33 --- /dev/null +++ b/FScriptFramework/FSObjectEnumInfo.h @@ -0,0 +1,144 @@ +// +// FSObjectEnumInfo.h +// FScript +// +// Created by Anthony Dervish on 16/11/2014. +// +// + +#import +#import + + +typedef NSUInteger NSGlyphStorageLayoutOptions; +typedef CGFloat NSStatusItemLength; +typedef NSUInteger NSToolbarItemVisibilityPriority; +typedef CGWindowLevelKey NSWindowLevel; +typedef NSUInteger NSWindowMask; +typedef id NSMergePolicyMarker; +@class NSMutableDictionary; + +#define BIMAP_CLASS_METHODS_DECL(_name) \ + +(id)objectFor##_name : (NS##_name)mask; \ + +(NSMutableDictionary*)optionsFor##_name; \ + extern id objectFrom##_name(NS##_name _name); \ + extern const NSUInteger _name##Mask ; + +extern const NSUInteger CellTypeMask; +extern const NSUInteger MergePolicyMarkerMask; + +@interface FSObjectEnumInfo : NSObject + +BIMAP_CLASS_METHODS_DECL(AlertStyle); +BIMAP_CLASS_METHODS_DECL(AnimationBlockingMode); +BIMAP_CLASS_METHODS_DECL(AnimationCurve); +BIMAP_CLASS_METHODS_DECL(AttributeType); +BIMAP_CLASS_METHODS_DECL(AutoresizingMaskOptions); +BIMAP_CLASS_METHODS_DECL(BackgroundStyle); +BIMAP_CLASS_METHODS_DECL(BackingStoreType); +BIMAP_CLASS_METHODS_DECL(BezelStyle); +BIMAP_CLASS_METHODS_DECL(BitmapFormat); +BIMAP_CLASS_METHODS_DECL(BorderType); +BIMAP_CLASS_METHODS_DECL(BoxType); +BIMAP_CLASS_METHODS_DECL(BrowserColumnResizingType); +BIMAP_CLASS_METHODS_DECL(CellImagePosition); +BIMAP_CLASS_METHODS_DECL(CellStateValue); +BIMAP_CLASS_METHODS_DECL(CellStyleMask); +BIMAP_CLASS_METHODS_DECL(CellType); +BIMAP_CLASS_METHODS_DECL(CharacterCollection); +BIMAP_CLASS_METHODS_DECL(ColorPanelMode); +BIMAP_CLASS_METHODS_DECL(ColorRenderingIntent); +BIMAP_CLASS_METHODS_DECL(ComparisonPredicateModifier); +BIMAP_CLASS_METHODS_DECL(ComparisonPredicateOptions); +BIMAP_CLASS_METHODS_DECL(CompositingOperation); +BIMAP_CLASS_METHODS_DECL(CompoundPredicateType); +BIMAP_CLASS_METHODS_DECL(ControlSize); +BIMAP_CLASS_METHODS_DECL(ControlTint); +BIMAP_CLASS_METHODS_DECL(DatePickerElementFlags); +BIMAP_CLASS_METHODS_DECL(DatePickerMode); +BIMAP_CLASS_METHODS_DECL(DatePickerStyle); +BIMAP_CLASS_METHODS_DECL(DeleteRule); +BIMAP_CLASS_METHODS_DECL(DrawerState); +BIMAP_CLASS_METHODS_DECL(EventButtonMask); +BIMAP_CLASS_METHODS_DECL(EventModifierFlags); +BIMAP_CLASS_METHODS_DECL(EventSubtype); +BIMAP_CLASS_METHODS_DECL(EventType); +BIMAP_CLASS_METHODS_DECL(ExpressionType); +BIMAP_CLASS_METHODS_DECL(FetchRequestResultType); +BIMAP_CLASS_METHODS_DECL(FocusRingType); +BIMAP_CLASS_METHODS_DECL(FontRenderingMode); +BIMAP_CLASS_METHODS_DECL(GlyphStorageLayoutOptions); +BIMAP_CLASS_METHODS_DECL(GradientType); +BIMAP_CLASS_METHODS_DECL(ImageAlignment); +BIMAP_CLASS_METHODS_DECL(ImageCacheMode); +BIMAP_CLASS_METHODS_DECL(ImageFrameStyle); +BIMAP_CLASS_METHODS_DECL(ImageInterpolation); +BIMAP_CLASS_METHODS_DECL(ImageScaling); +#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_7 +BIMAP_CLASS_METHODS_DECL(LayoutAttribute); +#endif +BIMAP_CLASS_METHODS_DECL(LevelIndicatorStyle); +BIMAP_CLASS_METHODS_DECL(LineBreakMode); +BIMAP_CLASS_METHODS_DECL(LineCapStyle); +BIMAP_CLASS_METHODS_DECL(LineJoinStyle); +BIMAP_CLASS_METHODS_DECL(MatrixMode); +BIMAP_CLASS_METHODS_DECL(MergePolicyMarker); +BIMAP_CLASS_METHODS_DECL(EventModifierFlags); +BIMAP_CLASS_METHODS_DECL(PathStyle); +BIMAP_CLASS_METHODS_DECL(PointingDeviceType); +BIMAP_CLASS_METHODS_DECL(PopUpArrowPosition); +BIMAP_CLASS_METHODS_DECL(PredicateOperatorType); +BIMAP_CLASS_METHODS_DECL(ProgressIndicatorStyle); +BIMAP_CLASS_METHODS_DECL(RectEdge); +BIMAP_CLASS_METHODS_DECL(RuleEditorNestingMode); +BIMAP_CLASS_METHODS_DECL(RulerOrientation); +BIMAP_CLASS_METHODS_DECL(ScrollArrowPosition); +BIMAP_CLASS_METHODS_DECL(ScrollerPart); +BIMAP_CLASS_METHODS_DECL(SegmentSwitchTracking); +BIMAP_CLASS_METHODS_DECL(SelectionAffinity); +BIMAP_CLASS_METHODS_DECL(SelectionDirection); +BIMAP_CLASS_METHODS_DECL(SelectionGranularity); +BIMAP_CLASS_METHODS_DECL(SliderType); +#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_9 +BIMAP_CLASS_METHODS_DECL(StackViewGravity); +#endif +BIMAP_CLASS_METHODS_DECL(StatusItemLength); +BIMAP_CLASS_METHODS_DECL(StringEncoding); +BIMAP_CLASS_METHODS_DECL(TIFFCompression); +BIMAP_CLASS_METHODS_DECL(TabState); +BIMAP_CLASS_METHODS_DECL(TabViewType); +BIMAP_CLASS_METHODS_DECL(TableColumnResizingOptions); +BIMAP_CLASS_METHODS_DECL(TableViewColumnAutoresizingStyle); +BIMAP_CLASS_METHODS_DECL(TableViewGridLineStyle); +BIMAP_CLASS_METHODS_DECL(TableViewSelectionHighlightStyle); +BIMAP_CLASS_METHODS_DECL(TextAlignment); +BIMAP_CLASS_METHODS_DECL(TextBlockValueType); +BIMAP_CLASS_METHODS_DECL(TextBlockVerticalAlignment); +BIMAP_CLASS_METHODS_DECL(TextFieldBezelStyle); +BIMAP_CLASS_METHODS_DECL(TextListOptions); +BIMAP_CLASS_METHODS_DECL(TextStorageEditedOptions); +BIMAP_CLASS_METHODS_DECL(TextTabType); +BIMAP_CLASS_METHODS_DECL(TextTableLayoutAlgorithm); +BIMAP_CLASS_METHODS_DECL(TitlePosition); +BIMAP_CLASS_METHODS_DECL(TokenStyle); +BIMAP_CLASS_METHODS_DECL(ToolbarDisplayMode); +BIMAP_CLASS_METHODS_DECL(ToolbarItemVisibilityPriority); +BIMAP_CLASS_METHODS_DECL(ToolbarSizeMode); +BIMAP_CLASS_METHODS_DECL(TrackingAreaOptions); +BIMAP_CLASS_METHODS_DECL(TypesetterBehavior); +BIMAP_CLASS_METHODS_DECL(UsableScrollerParts); +#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_9 +BIMAP_CLASS_METHODS_DECL(UserInterfaceLayoutOrientation); +#endif +BIMAP_CLASS_METHODS_DECL(WindingRule); +BIMAP_CLASS_METHODS_DECL(WindowBackingLocation); +BIMAP_CLASS_METHODS_DECL(WindowCollectionBehavior); +BIMAP_CLASS_METHODS_DECL(WindowLevel); +BIMAP_CLASS_METHODS_DECL(WindowMask); +BIMAP_CLASS_METHODS_DECL(WindowSharingType); +BIMAP_CLASS_METHODS_DECL(WritingDirection); +id objectFromTickMarkPosition(NSTickMarkPosition tickMarkPosition, BOOL isVertical); + +@end + +id objectFromOptions(NSUInteger opts, NSMutableDictionary *dict, NSUInteger mask); \ No newline at end of file diff --git a/FScriptFramework/FSObjectEnumInfo.m b/FScriptFramework/FSObjectEnumInfo.m new file mode 100644 index 0000000..2f94566 --- /dev/null +++ b/FScriptFramework/FSObjectEnumInfo.m @@ -0,0 +1,916 @@ +// +// FSObjectEnumInfo.m +// FScript +// +// Created by Anthony Dervish on 16/11/2014. +// +// + +#import "FSObjectEnumInfo.h" +#import "FSNamedNumber.h" +#import "FSNumber.h" +#import "FSObjectBrowserNamedObjectWrapper.h" + +#import "metamacros.h" + +const NSUInteger CellTypeMask = NSUIntegerMax; +const NSUInteger MergePolicyMarkerMask = NSUIntegerMax; + +#define _ENUMDICT(_idx, _enum) \ + @{ @(_enum) : @metamacro_stringify(_enum) }, + +#define _BIDICT(_idx, _enum) \ + @(_enum) \ + : @metamacro_stringify(_enum) \ + , + +#define _BIDICT_LEADER(_name) \ + static inline NSMutableDictionary* _name##Bimap() \ + { \ + static NSMutableDictionary* dict = nil; \ + if (!dict) { \ + dict = [NSMutableDictionary new]; \ + + +#define BIDICT(_name, ...) \ + _BIDICT_LEADER(_name) \ + NSArray * enumItems = @[ metamacro_foreach(_ENUMDICT, ,__VA_ARGS__) ] ; \ + for (NSDictionary *enumDict in enumItems) { \ + NSNumber *key = enumDict.allKeys.firstObject; NSString *val = enumDict.allValues.firstObject; \ + if (dict[key]) { dict[key] = [ NSString stringWithFormat:@"%@ / %@", dict[key], val ]; } else { dict[key] = val; } \ + } \ + } \ + return dict; \ + } + +#define BIDICT_LIT(_name, _dict) \ + _BIDICT_LEADER(_name) \ + [dict addEntriesFromDictionary:_dict ]; \ + } \ + return dict; \ + } + +#define _IDENTITY(_idx, _val) _val + +#define OPTSMASK(...) \ + metamacro_foreach(_IDENTITY, |, __VA_ARGS__) + + +#define BIMAP_CLASS_METHODS_DEFN(_name) \ + +(id)objectFor##_name : (NS##_name)mask { return objectFrom##_name(mask); } \ + +(NSMutableDictionary*)optionsFor##_name { return (_name##Bimap()); } + +#define _FS_NUMBER_WRAPPER(_name) \ + lookup ? [FSNamedNumber namedNumberWithDouble:(double)value name:lookup] : [FSNumber numberWithDouble:value] +#define _FS_OBJECT_WRAPPER(_name) \ + lookup ? [FSObjectBrowserNamedObjectWrapper namedObjectWrapperWithObject:value name:lookup] : value + +#define ENUM_FUNC(_name, _lookup, _boxed_value) \ + id objectFrom##_name(NS##_name value) \ + { \ + NSMutableDictionary* dict = _name##Bimap(); \ + id lookup = dict[_boxed_value]; \ + return _lookup; \ + } + +// Define a lookup function 'objectTo', for simple enumerations (can take one, and only one value from the enum) +#define ENUMTOOBJ(_name, ...) \ + BIDICT(_name, __VA_ARGS__) \ + ENUM_FUNC(_name, _FS_NUMBER_WRAPPER(_name), @(value)) \ + BIMAP_CLASS_METHODS_DEFN(_name) + +// Define a lookup function 'objectTo', for 'marker' objects (e.g. NSMergePolicy) +#define OBJTOOBJ_LIT(_name, _dict) \ + BIDICT_LIT(_name, _dict) \ + ENUM_FUNC(_name, _FS_OBJECT_WRAPPER(_name), value) \ + BIMAP_CLASS_METHODS_DEFN(_name) + +// Same as 'ENUMTOOBJ', but use when the elements of the 'enumeration' are actually macros +#define ENUMTOOBJ_DICT(_name, _dict) \ + BIDICT_LIT(_name, _dict) \ + ENUM_FUNC(_name, _FS_NUMBER_WRAPPER(_name), @(value)) \ + BIMAP_CLASS_METHODS_DEFN(_name) + +#define OPTSDICT(_name, ...) \ + const NSUInteger _name##Mask = OPTSMASK(__VA_ARGS__); \ + BIDICT(_name, __VA_ARGS__) + +// Define a lookup function 'objectTo', for flag enumerations (can take a logical OR of enumeration values) +#define OPTSTOOBJ(_name, ...) \ + OPTSDICT(_name, __VA_ARGS__) \ + id objectFrom##_name(NS##_name opts) \ + { \ + return objectFromOptions(opts, _name##Bimap(), _name##Mask); \ + } \ + BIMAP_CLASS_METHODS_DEFN(_name) + +id objectFromOptions(NSUInteger opts, NSMutableDictionary *dict, NSUInteger mask) +{ + if (mask == 0 || (opts & ~mask)) { + return [FSNumber numberWithDouble:opts]; + } + NSMutableArray* result = [NSMutableArray array]; + for (NSNumber * opt in dict.allKeys) { + if (opts & opt.unsignedIntegerValue) { + [result addObject:dict[opt]]; + } + } + return result.count ? [FSNamedNumber namedNumberWithDouble:opts name:[result componentsJoinedByString:@" + "]] : [FSNumber numberWithDouble:opts]; +} + +@implementation FSObjectEnumInfo + +ENUMTOOBJ(AnimationBlockingMode, + NSAnimationBlocking, + NSAnimationNonblocking, + NSAnimationNonblockingThreaded); + + +ENUMTOOBJ(AnimationCurve, + NSAnimationEaseInOut, + NSAnimationEaseIn, + NSAnimationEaseOut, + NSAnimationLinear); + + +ENUMTOOBJ(AlertStyle, + NSWarningAlertStyle, + NSInformationalAlertStyle, + NSCriticalAlertStyle); + + +OPTSTOOBJ(AutoresizingMaskOptions, + NSViewMinXMargin, + NSViewWidthSizable, + NSViewMaxXMargin, + NSViewMinYMargin, + NSViewHeightSizable, + NSViewMaxYMargin); + +ENUMTOOBJ(AttributeType, + NSUndefinedAttributeType, + NSInteger16AttributeType, + NSInteger32AttributeType, + NSInteger64AttributeType, + NSDecimalAttributeType, + NSDoubleAttributeType, + NSFloatAttributeType, + NSStringAttributeType, + NSBooleanAttributeType, + NSDateAttributeType, + NSBinaryDataAttributeType, + NSTransformableAttributeType); + + +ENUMTOOBJ(BackgroundStyle, + NSBackgroundStyleLight, + NSBackgroundStyleDark, + NSBackgroundStyleRaised, + NSBackgroundStyleLowered); + + +ENUMTOOBJ(BackingStoreType, + NSBackingStoreBuffered, + NSBackingStoreRetained, + NSBackingStoreNonretained); + + +ENUMTOOBJ(BorderType, + NSNoBorder, + NSLineBorder, + NSBezelBorder, + NSGrooveBorder); + +ENUMTOOBJ(BezelStyle, + NSRoundedBezelStyle, + NSRegularSquareBezelStyle, + NSThickSquareBezelStyle, + NSThickerSquareBezelStyle, + NSDisclosureBezelStyle, + NSShadowlessSquareBezelStyle, + NSCircularBezelStyle, + NSTexturedSquareBezelStyle, + NSHelpButtonBezelStyle, + NSSmallSquareBezelStyle, + NSTexturedRoundedBezelStyle); + + +OPTSTOOBJ(BitmapFormat, + NSAlphaFirstBitmapFormat, + NSAlphaNonpremultipliedBitmapFormat, + NSFloatingPointSamplesBitmapFormat); + +ENUMTOOBJ(BoxType, + NSBoxPrimary, + NSBoxSecondary, + NSBoxSeparator, + NSBoxOldStyle, + NSBoxCustom); + + +OPTSTOOBJ(EventButtonMask, + NSPenTipMask, + NSPenLowerSideMask, + NSPenUpperSideMask); + + +ENUMTOOBJ(BrowserColumnResizingType, + NSBrowserNoColumnResizing, + NSBrowserAutoColumnResizing, + NSBrowserUserColumnResizing); + + +ENUMTOOBJ(CellImagePosition, + NSNoImage, + NSImageOnly, + NSImageLeft, + NSImageRight, + NSImageBelow, + NSImageAbove, + NSImageOverlaps); + + +OPTSTOOBJ(CellStyleMask, + NSNoCellMask, + NSContentsCellMask, + NSPushInCellMask, + NSChangeGrayCellMask, + NSChangeBackgroundCellMask); + +ENUMTOOBJ(CellStateValue, + NSMixedState, + NSOffState, + NSOnState); + + +ENUMTOOBJ(CellType, + NSNullCellType, + NSTextCellType, + NSImageCellType); + + +ENUMTOOBJ(CharacterCollection, + NSIdentityMappingCharacterCollection, + NSAdobeCNS1CharacterCollection, + NSAdobeGB1CharacterCollection, + NSAdobeJapan1CharacterCollection, + NSAdobeJapan2CharacterCollection, + NSAdobeKorea1CharacterCollection); + + +ENUMTOOBJ(ColorPanelMode, + NSGrayModeColorPanel, + NSRGBModeColorPanel, + NSCMYKModeColorPanel, + NSHSBModeColorPanel, + NSCustomPaletteModeColorPanel, + NSColorListModeColorPanel, + NSWheelModeColorPanel, + NSCrayonModeColorPanel); + + +ENUMTOOBJ(ColorRenderingIntent, + NSColorRenderingIntentDefault, + NSColorRenderingIntentAbsoluteColorimetric, + NSColorRenderingIntentRelativeColorimetric, + NSColorRenderingIntentPerceptual, + NSColorRenderingIntentSaturation); + + +OPTSTOOBJ(ComparisonPredicateOptions, + NSCaseInsensitivePredicateOption, + NSDiacriticInsensitivePredicateOption, + NSNormalizedPredicateOption); + +ENUMTOOBJ(ComparisonPredicateModifier, + NSDirectPredicateModifier, + NSAllPredicateModifier, + NSAnyPredicateModifier); + + +ENUMTOOBJ(CompositingOperation, + NSCompositeClear, + NSCompositeCopy, + NSCompositeSourceOver, + NSCompositeSourceIn, + NSCompositeSourceOut, + NSCompositeSourceAtop, + NSCompositeDestinationOver, + NSCompositeDestinationIn, + NSCompositeDestinationOut, + NSCompositeDestinationAtop, + NSCompositeXOR, + NSCompositePlusDarker, + NSCompositeHighlight, + NSCompositePlusLighter); + + +ENUMTOOBJ(CompoundPredicateType, + NSNotPredicateType, + NSAndPredicateType, + NSOrPredicateType); + + +ENUMTOOBJ(ControlSize, + NSRegularControlSize, + NSSmallControlSize, + NSMiniControlSize); + + +ENUMTOOBJ(ControlTint, + NSDefaultControlTint, + NSBlueControlTint, + NSGraphiteControlTint, + NSClearControlTint); + +OPTSTOOBJ(DatePickerElementFlags, + NSHourMinuteDatePickerElementFlag, + NSHourMinuteSecondDatePickerElementFlag, + NSTimeZoneDatePickerElementFlag, + NSYearMonthDatePickerElementFlag, + NSYearMonthDayDatePickerElementFlag, + NSEraDatePickerElementFlag); + +ENUMTOOBJ(DatePickerMode, + NSSingleDateMode, + NSRangeDateMode); + + +ENUMTOOBJ(DatePickerStyle, + NSTextFieldAndStepperDatePickerStyle, + NSClockAndCalendarDatePickerStyle); + + +ENUMTOOBJ(DeleteRule, + NSNoActionDeleteRule, + NSNullifyDeleteRule, + NSCascadeDeleteRule, + NSDenyDeleteRule); + + +ENUMTOOBJ(DrawerState, + NSDrawerClosedState, + NSDrawerOpeningState, + NSDrawerOpenState, + NSDrawerClosingState); + + +ENUMTOOBJ(EventType, + NSLeftMouseDown, + NSLeftMouseUp, + NSRightMouseDown, + NSRightMouseUp, + NSOtherMouseDown, + NSOtherMouseUp, + NSMouseMoved, + NSLeftMouseDragged, + NSRightMouseDragged, + NSOtherMouseDragged, + NSMouseEntered, + NSMouseExited, + NSCursorUpdate, + NSKeyDown, + NSKeyUp, + NSFlagsChanged, + NSAppKitDefined, + NSSystemDefined, + NSApplicationDefined, + NSPeriodic, + NSScrollWheel, + NSTabletPoint, + NSTabletProximity); + + +ENUMTOOBJ(EventSubtype, + NSMouseEventSubtype, + NSTabletPointEventSubtype, + NSTabletProximityEventSubtype); + + +ENUMTOOBJ(ExpressionType, + NSConstantValueExpressionType, + NSEvaluatedObjectExpressionType, + NSVariableExpressionType, + NSKeyPathExpressionType, + NSFunctionExpressionType, + NSUnionSetExpressionType, + NSIntersectSetExpressionType, + NSMinusSetExpressionType, + NSSubqueryExpressionType, + NSAggregateExpressionType); + + +ENUMTOOBJ(FetchRequestResultType, + NSManagedObjectResultType, + NSManagedObjectIDResultType); + + +ENUMTOOBJ(FocusRingType, + NSFocusRingTypeDefault, + NSFocusRingTypeNone, + NSFocusRingTypeExterior); + + +ENUMTOOBJ(FontRenderingMode, + NSFontDefaultRenderingMode, + NSFontAntialiasedRenderingMode, + NSFontIntegerAdvancementsRenderingMode, + NSFontAntialiasedIntegerAdvancementsRenderingMode); + + +ENUMTOOBJ(GradientType, + NSGradientNone, + NSGradientConcaveWeak, + NSGradientConcaveStrong, + NSGradientConvexWeak, + NSGradientConvexStrong); + + +OPTSTOOBJ(TableViewGridLineStyle, + NSTableViewSolidVerticalGridLineMask, + NSTableViewSolidHorizontalGridLineMask, + NSTableViewDashedHorizontalGridLineMask); + + +ENUMTOOBJ(ImageAlignment, + NSImageAlignCenter, + NSImageAlignTop, + NSImageAlignTopLeft, + NSImageAlignTopRight, + NSImageAlignLeft, + NSImageAlignBottom, + NSImageAlignBottomLeft, + NSImageAlignBottomRight, + NSImageAlignRight); + + +ENUMTOOBJ(ImageCacheMode, + NSImageCacheDefault, + NSImageCacheAlways, + NSImageCacheBySize, + NSImageCacheNever); + + +ENUMTOOBJ(ImageFrameStyle, + NSImageFrameNone, + NSImageFramePhoto, + NSImageFrameGrayBezel, + NSImageFrameGroove, + NSImageFrameButton); + + +ENUMTOOBJ(ImageInterpolation, + NSImageInterpolationDefault, + NSImageInterpolationNone, + NSImageInterpolationLow, + NSImageInterpolationHigh); + + +ENUMTOOBJ(ImageScaling, + NSImageScaleProportionallyDown, + NSImageScaleAxesIndependently, + NSImageScaleNone, + NSImageScaleProportionallyUpOrDown); + + +OPTSTOOBJ(EventModifierFlags, + NSAlphaShiftKeyMask, + NSShiftKeyMask, + NSControlKeyMask, + NSAlternateKeyMask, + NSCommandKeyMask, + NSNumericPadKeyMask, + NSHelpKeyMask, + NSFunctionKeyMask); + +OPTSTOOBJ(GlyphStorageLayoutOptions, + NSShowControlGlyphs, + NSShowInvisibleGlyphs, + NSWantsBidiLevels); + +#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_7 +ENUMTOOBJ(LayoutAttribute, + NSLayoutAttributeNotAnAttribute, + NSLayoutAttributeLeft, + NSLayoutAttributeRight, + NSLayoutAttributeTop, + NSLayoutAttributeBottom, + NSLayoutAttributeLeading, + NSLayoutAttributeTrailing, + NSLayoutAttributeWidth, + NSLayoutAttributeHeight, + NSLayoutAttributeCenterX, + NSLayoutAttributeCenterY, + NSLayoutAttributeBaseline + ); + +#endif + +ENUMTOOBJ(LevelIndicatorStyle, + NSRelevancyLevelIndicatorStyle, + NSContinuousCapacityLevelIndicatorStyle, + NSDiscreteCapacityLevelIndicatorStyle, + NSRatingLevelIndicatorStyle); + + +ENUMTOOBJ(LineBreakMode, + NSLineBreakByWordWrapping, + NSLineBreakByCharWrapping, + NSLineBreakByClipping, + NSLineBreakByTruncatingHead, + NSLineBreakByTruncatingTail, + NSLineBreakByTruncatingMiddle); + + +ENUMTOOBJ(LineCapStyle, + NSButtLineCapStyle, + NSRoundLineCapStyle, + NSSquareLineCapStyle); + + +ENUMTOOBJ(LineJoinStyle, + NSMiterLineJoinStyle, + NSRoundLineJoinStyle, + NSBevelLineJoinStyle); + + +ENUMTOOBJ(MatrixMode, + NSRadioModeMatrix, + NSHighlightModeMatrix, + NSListModeMatrix, + NSTrackModeMatrix); + + +OBJTOOBJ_LIT(MergePolicyMarker, (@{ + NSErrorMergePolicy : @"NSErrorMergePolicy", + NSMergeByPropertyStoreTrumpMergePolicy : @"NSMergeByPropertyStoreTrumpMergePolicy", + NSMergeByPropertyObjectTrumpMergePolicy : @"NSMergeByPropertyObjectTrumpMergePolicy", + NSOverwriteMergePolicy : @"NSOverwriteMergePolicy", + NSRollbackMergePolicy : @"NSRollbackMergePolicy" + })); + +ENUMTOOBJ(RuleEditorNestingMode, + NSRuleEditorNestingModeSingle, + NSRuleEditorNestingModeList, + NSRuleEditorNestingModeCompound, + NSRuleEditorNestingModeSimple); + + +ENUMTOOBJ(PathStyle, + NSPathStyleStandard, + NSPathStyleNavigationBar, + NSPathStylePopUp); + + +ENUMTOOBJ(PointingDeviceType, + NSUnknownPointingDevice, + NSPenPointingDevice, + NSCursorPointingDevice, + NSEraserPointingDevice); + + +ENUMTOOBJ(PredicateOperatorType, + NSLessThanPredicateOperatorType, + NSLessThanOrEqualToPredicateOperatorType, + NSGreaterThanPredicateOperatorType, + NSGreaterThanOrEqualToPredicateOperatorType, + NSEqualToPredicateOperatorType, + NSNotEqualToPredicateOperatorType, + NSMatchesPredicateOperatorType, + NSLikePredicateOperatorType, + NSBeginsWithPredicateOperatorType, + NSEndsWithPredicateOperatorType, + NSInPredicateOperatorType, + NSCustomSelectorPredicateOperatorType, + NSContainsPredicateOperatorType, + NSBetweenPredicateOperatorType); + + +ENUMTOOBJ(ProgressIndicatorStyle, + NSProgressIndicatorBarStyle, + NSProgressIndicatorSpinningStyle); + + +ENUMTOOBJ(PopUpArrowPosition, + NSPopUpNoArrow, + NSPopUpArrowAtCenter, + NSPopUpArrowAtBottom); + + +ENUMTOOBJ_DICT(RectEdge, (@{ + @(NSMinXEdge) : @"NSMinXEdge", + @(NSMinYEdge) : @"NSMinYEdge", + @(NSMaxXEdge) : @"NSMaxXEdge", + @(NSMaxYEdge) : @"NSMaxYEdge" + })); + + +ENUMTOOBJ(RulerOrientation, + NSHorizontalRuler, + NSVerticalRuler); + + +ENUMTOOBJ(ScrollArrowPosition, + NSScrollerArrowsDefaultSetting, + NSScrollerArrowsNone); + + +ENUMTOOBJ(ScrollerPart, + NSScrollerNoPart, + NSScrollerDecrementPage, + NSScrollerKnob, + NSScrollerIncrementPage, + NSScrollerDecrementLine, + NSScrollerIncrementLine, + NSScrollerKnobSlot); + + +ENUMTOOBJ(SegmentSwitchTracking, + NSSegmentSwitchTrackingSelectOne, + NSSegmentSwitchTrackingSelectAny, + NSSegmentSwitchTrackingMomentary); + + +ENUMTOOBJ(SelectionAffinity, + NSSelectionAffinityUpstream, + NSSelectionAffinityDownstream); + + +ENUMTOOBJ(SelectionDirection, + NSDirectSelection, + NSSelectingNext, + NSSelectingPrevious); + + +ENUMTOOBJ(SelectionGranularity, + NSSelectByCharacter, + NSSelectByWord, + NSSelectByParagraph); + + +ENUMTOOBJ(TableViewSelectionHighlightStyle, + NSTableViewSelectionHighlightStyleRegular, + NSTableViewSelectionHighlightStyleSourceList); + + +ENUMTOOBJ(SliderType, + NSLinearSlider, + NSCircularSlider); + +#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_9 +ENUMTOOBJ(StackViewGravity, + NSStackViewGravityTop, + NSStackViewGravityLeading, + NSStackViewGravityCenter, + NSStackViewGravityBottom, + NSStackViewGravityTrailing + ); + +#endif + +ENUMTOOBJ(StatusItemLength, + NSVariableStatusItemLength, + NSSquareStatusItemLength); + +ENUMTOOBJ(StringEncoding, + NSASCIIStringEncoding, + NSNEXTSTEPStringEncoding, + NSJapaneseEUCStringEncoding, + NSUTF8StringEncoding, + NSISOLatin1StringEncoding, + NSSymbolStringEncoding, + NSNonLossyASCIIStringEncoding, + NSShiftJISStringEncoding, + NSISOLatin2StringEncoding, + NSUnicodeStringEncoding, + NSWindowsCP1251StringEncoding, + NSWindowsCP1252StringEncoding, + NSWindowsCP1253StringEncoding, + NSWindowsCP1254StringEncoding, + NSWindowsCP1250StringEncoding, + NSISO2022JPStringEncoding, + NSMacOSRomanStringEncoding); + + +OPTSTOOBJ(TableColumnResizingOptions, + NSTableColumnNoResizing, + NSTableColumnAutoresizingMask, + NSTableColumnUserResizingMask); + +ENUMTOOBJ(TableViewColumnAutoresizingStyle, + NSTableViewNoColumnAutoresizing, + NSTableViewUniformColumnAutoresizingStyle, + NSTableViewSequentialColumnAutoresizingStyle, + NSTableViewReverseSequentialColumnAutoresizingStyle, + NSTableViewLastColumnOnlyAutoresizingStyle, + NSTableViewFirstColumnOnlyAutoresizingStyle); + + +ENUMTOOBJ(TabState, + NSBackgroundTab, + NSPressedTab, + NSSelectedTab); + + +ENUMTOOBJ(TabViewType, + NSTopTabsBezelBorder, + NSLeftTabsBezelBorder, + NSBottomTabsBezelBorder, + NSRightTabsBezelBorder, + NSNoTabsBezelBorder, + NSNoTabsLineBorder, + NSNoTabsNoBorder); + + +ENUMTOOBJ(TextAlignment, + NSLeftTextAlignment, + NSRightTextAlignment, + NSCenterTextAlignment, + NSJustifiedTextAlignment, + NSNaturalTextAlignment); + + +ENUMTOOBJ(TextBlockValueType, + NSTextBlockAbsoluteValueType, + NSTextBlockPercentageValueType); + + +ENUMTOOBJ(TextBlockVerticalAlignment, + NSTextBlockTopAlignment, + NSTextBlockMiddleAlignment, + NSTextBlockBottomAlignment, + NSTextBlockBaselineAlignment); + + +ENUMTOOBJ(TextFieldBezelStyle, + NSTextFieldSquareBezel, + NSTextFieldRoundedBezel); + +OPTSTOOBJ(TextListOptions, + NSTextListPrependEnclosingMarker); + + +OPTSTOOBJ(TextStorageEditedOptions, + NSTextStorageEditedAttributes, + NSTextStorageEditedCharacters); + +ENUMTOOBJ(TextTableLayoutAlgorithm, + NSTextTableAutomaticLayoutAlgorithm, + NSTextTableFixedLayoutAlgorithm); + + +ENUMTOOBJ(TextTabType, + NSLeftTabStopType, + NSRightTabStopType, + NSCenterTabStopType, + NSDecimalTabStopType); + + +ENUMTOOBJ(TIFFCompression, + NSTIFFCompressionNone, + NSTIFFCompressionCCITTFAX3, + NSTIFFCompressionCCITTFAX4, + NSTIFFCompressionLZW, + NSTIFFCompressionJPEG, + NSTIFFCompressionNEXT, + NSTIFFCompressionPackBits, + NSTIFFCompressionOldJPEG); + + +ENUMTOOBJ(TitlePosition, + NSNoTitle, + NSAboveTop, + NSAtTop, + NSBelowTop, + NSAboveBottom, + NSAtBottom, + NSBelowBottom); + + +ENUMTOOBJ(TokenStyle, + NSDefaultTokenStyle, + NSPlainTextTokenStyle, + NSRoundedTokenStyle); + + +ENUMTOOBJ(ToolbarDisplayMode, + NSToolbarDisplayModeDefault, + NSToolbarDisplayModeIconAndLabel, + NSToolbarDisplayModeIconOnly, + NSToolbarDisplayModeLabelOnly); + +ENUMTOOBJ(ToolbarItemVisibilityPriority, + NSToolbarItemVisibilityPriorityStandard, + NSToolbarItemVisibilityPriorityLow, + NSToolbarItemVisibilityPriorityHigh, + NSToolbarItemVisibilityPriorityUser); + + +ENUMTOOBJ(ToolbarSizeMode, + NSToolbarSizeModeDefault, + NSToolbarSizeModeRegular, + NSToolbarSizeModeSmall); + + +OPTSTOOBJ(TrackingAreaOptions, + NSTrackingMouseEnteredAndExited, + NSTrackingMouseMoved, + NSTrackingCursorUpdate, + NSTrackingActiveWhenFirstResponder, + NSTrackingActiveInKeyWindow, + NSTrackingActiveInActiveApp, + NSTrackingActiveAlways, + NSTrackingAssumeInside, + NSTrackingInVisibleRect, + NSTrackingEnabledDuringMouseDrag); + + +ENUMTOOBJ(TypesetterBehavior, + NSTypesetterLatestBehavior, + NSTypesetterOriginalBehavior, + NSTypesetterBehavior_10_2_WithCompatibility, + NSTypesetterBehavior_10_2, + NSTypesetterBehavior_10_3, + NSTypesetterBehavior_10_4); + + +ENUMTOOBJ(UsableScrollerParts, + NSNoScrollerParts, + NSOnlyScrollerArrows, + NSAllScrollerParts); + +#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_9 +ENUMTOOBJ(UserInterfaceLayoutOrientation, + NSUserInterfaceLayoutOrientationHorizontal, + NSUserInterfaceLayoutOrientationVertical + ); +#endif + + +ENUMTOOBJ(WindingRule, + NSNonZeroWindingRule, + NSEvenOddWindingRule); + +ENUMTOOBJ_DICT(WindowLevel, (@{ + @(NSNormalWindowLevel) : @"NSNormalWindowLevel", + @(NSFloatingWindowLevel) : @"NSFloatingWindowLevel", + @(NSSubmenuWindowLevel) : @"NSSubmenuWindowLevel", + @(NSTornOffMenuWindowLevel) : @"NSTornOffMenuWindowLevel", + @(NSMainMenuWindowLevel) : @"NSMainMenuWindowLevel", + @(NSStatusWindowLevel) : @"NSStatusWindowLevel", + @(NSDockWindowLevel) : @"NSDockWindowLevel", + @(NSModalPanelWindowLevel) : @"NSModalPanelWindowLevel", + @(NSPopUpMenuWindowLevel) : @"NSPopUpMenuWindowLevel", + @(NSScreenSaverWindowLevel) : @"NSScreenSaverWindowLevel" + })); + + +OPTSTOOBJ(WindowMask, + NSBorderlessWindowMask, + NSTitledWindowMask, + NSClosableWindowMask, + NSMiniaturizableWindowMask, + NSResizableWindowMask, + NSTexturedBackgroundWindowMask, + NSUnifiedTitleAndToolbarWindowMask, + NSFullScreenWindowMask, + NSFullSizeContentViewWindowMask); + +ENUMTOOBJ(WindowBackingLocation, + NSWindowBackingLocationDefault, + NSWindowBackingLocationVideoMemory, + NSWindowBackingLocationMainMemory); + + +ENUMTOOBJ(WindowCollectionBehavior, + NSWindowCollectionBehaviorDefault, + NSWindowCollectionBehaviorCanJoinAllSpaces, + NSWindowCollectionBehaviorMoveToActiveSpace); + + +ENUMTOOBJ(WindowSharingType, + NSWindowSharingNone, + NSWindowSharingReadOnly, + NSWindowSharingReadWrite); + + +ENUMTOOBJ(WritingDirection, + NSWritingDirectionNatural, + NSWritingDirectionLeftToRight, + NSWritingDirectionRightToLeft); + + +id objectFromTickMarkPosition(NSTickMarkPosition tickMarkPosition, BOOL isVertical) +{ + switch (tickMarkPosition) { + case NSTickMarkBelow: + return [FSNamedNumber namedNumberWithDouble:tickMarkPosition name:isVertical ? @"NSTickMarkRight" : @"NSTickMarkBelow"]; + case NSTickMarkAbove: + return [FSNamedNumber namedNumberWithDouble:tickMarkPosition name:isVertical ? @"NSTickMarkLeft" : @"NSTickMarkAbove"]; + //case NSTickMarkLeft: return [NamedNumber namedNumberWithDouble:tickMarkPosition name:@"NSTickMarkLeft"]; + //case NSTickMarkRight: return [NamedNumber namedNumberWithDouble:tickMarkPosition name:@"NSTickMarkRight"]; + default: + return [FSNumber numberWithDouble:tickMarkPosition]; + } +} +@end diff --git a/FScriptFramework/FSObjectInspectorBackgroundView.h b/FScriptFramework/FSObjectInspectorBackgroundView.h new file mode 100644 index 0000000..f5ff375 --- /dev/null +++ b/FScriptFramework/FSObjectInspectorBackgroundView.h @@ -0,0 +1,13 @@ +// +// FSObjectInspectorBackgroundView.h +// FScript +// +// Created by Anthony Dervish on 17/11/2014. +// +// + +#import + +@interface FSObjectInspectorBackgroundView : NSView + +@end diff --git a/FScriptFramework/FSObjectInspectorBackgroundView.m b/FScriptFramework/FSObjectInspectorBackgroundView.m new file mode 100644 index 0000000..b318e2a --- /dev/null +++ b/FScriptFramework/FSObjectInspectorBackgroundView.m @@ -0,0 +1,14 @@ +// +// FSObjectInspectorBackgroundView.m +// FScript +// +// Created by Anthony Dervish on 17/11/2014. +// +// + +#import "FSObjectInspectorBackgroundView.h" + +@implementation FSObjectInspectorBackgroundView + +-(BOOL)allowsVibrancy { return YES; } +@end diff --git a/FScriptFramework/FSObjectInspectorOptionsViewController.h b/FScriptFramework/FSObjectInspectorOptionsViewController.h new file mode 100644 index 0000000..aa9cf26 --- /dev/null +++ b/FScriptFramework/FSObjectInspectorOptionsViewController.h @@ -0,0 +1,14 @@ +// +// FSObjectInspectorOptionsViewController.h +// FScript +// +// Created by Anthony Dervish on 21/11/2014. +// +// + +#import + +@interface FSObjectInspectorOptionsViewController : NSViewController +@property (assign) IBOutlet NSArrayController *optionsArrayController; +@property (copy,nonatomic) NSArray *optionItems; +@end diff --git a/FScriptFramework/FSObjectInspectorOptionsViewController.m b/FScriptFramework/FSObjectInspectorOptionsViewController.m new file mode 100644 index 0000000..c662ae4 --- /dev/null +++ b/FScriptFramework/FSObjectInspectorOptionsViewController.m @@ -0,0 +1,27 @@ +// +// FSObjectInspectorOptionsViewController.m +// FScript +// +// Created by Anthony Dervish on 21/11/2014. +// +// + +#import "FSObjectInspectorOptionsViewController.h" + +@interface FSObjectInspectorOptionsViewController () + +@end + +@implementation FSObjectInspectorOptionsViewController + +-(NSString *)nibName +{ + return @"FSObjectInspectorOptionsViewController"; +} + +-(NSBundle *)nibBundle +{ + return [NSBundle bundleForClass:self.class]; +} + +@end diff --git a/FScriptFramework/FSObjectInspectorOptionsViewController.xib b/FScriptFramework/FSObjectInspectorOptionsViewController.xib new file mode 100644 index 0000000..f423d77 --- /dev/null +++ b/FScriptFramework/FSObjectInspectorOptionsViewController.xib @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/FScriptFramework/FSObjectInspectorOutlineView.h b/FScriptFramework/FSObjectInspectorOutlineView.h new file mode 100644 index 0000000..a09508b --- /dev/null +++ b/FScriptFramework/FSObjectInspectorOutlineView.h @@ -0,0 +1,13 @@ +// +// FSObjectInspectorOutlineView.h +// FScript +// +// Created by Anthony Dervish on 21/11/2014. +// +// + +#import + +@interface FSObjectInspectorOutlineView : NSOutlineView + +@end diff --git a/FScriptFramework/FSObjectInspectorOutlineView.m b/FScriptFramework/FSObjectInspectorOutlineView.m new file mode 100644 index 0000000..dcbfe88 --- /dev/null +++ b/FScriptFramework/FSObjectInspectorOutlineView.m @@ -0,0 +1,24 @@ +// +// FSObjectInspectorOutlineView.m +// FScript +// +// Created by Anthony Dervish on 21/11/2014. +// +// + +#import "FSObjectInspectorOutlineView.h" + +@implementation FSObjectInspectorOutlineView + +- (void)drawRect:(NSRect)dirtyRect { + [super drawRect:dirtyRect]; + + // Drawing code here. +} + +// Allow stepper views to work properly +- (BOOL)validateProposedFirstResponder:(NSResponder *)responder forEvent:(NSEvent *)event { + return YES; +} + +@end diff --git a/FScriptFramework/FSObjectInspectorViewController+NonArc.h b/FScriptFramework/FSObjectInspectorViewController+NonArc.h new file mode 100644 index 0000000..88795df --- /dev/null +++ b/FScriptFramework/FSObjectInspectorViewController+NonArc.h @@ -0,0 +1,17 @@ +// +// FSObjectInspectorViewController+NonArc.h +// FScript +// +// Created by Anthony Dervish on 18/11/2014. +// +// + +#import +#import "FSObjectInspectorViewController.h" + +@class FSArray, FSBlock; +@interface FSObjectInspectorViewController (NonArc) +- (void)applyBlock:(FSBlock*)block withObject:(id)selectedObject newValue:(id)value; +- (BOOL)sendMessageTo:(id)receiver selectorString:(NSString*)selectorStr arguments:(FSArray*)arguments column:(NSUInteger)column putResultInMatrix:(NSMatrix*)matrix; + +@end diff --git a/FScriptFramework/FSObjectInspectorViewController+NonArc.m b/FScriptFramework/FSObjectInspectorViewController+NonArc.m new file mode 100644 index 0000000..6048d60 --- /dev/null +++ b/FScriptFramework/FSObjectInspectorViewController+NonArc.m @@ -0,0 +1,73 @@ +// +// FSObjectInspectorViewController+NonArc.m +// FScript +// +// Created by Anthony Dervish on 18/11/2014. +// +// + +#import "FSObjectInspectorViewController+NonArc.h" +#import "FSCompiler.h" +#import "FSInterpreter.h" +#import "FSInterpreterPrivate.h" +#import "FSInterpreterResult.h" +#import "FSExecEngine.h" +#import "FSBlock.h" +#import "FSObjectBrowserButtonCtxBlock.h" +#import "FSMiscTools.h" +#import "FSUtils.h" + +@implementation FSObjectInspectorViewController (NonArc) + + +- (void)applyBlock:(FSBlock*)block withObject:(id)selectedObject newValue:(id)value +{ + FSInterpreter* interpreter = self.interpreter; + + @try { + [block compilIfNeeded]; + } + @catch (id exception) + { + NSRunAlertPanel(@"Syntax Error", FSErrorMessageFromException(exception), @"OK", nil, nil, nil); + FSInspectBlocksInCallStackForException(exception); + return; + } + + FSObjectBrowserButtonCtxBlock* contextualizedBlock; + + contextualizedBlock = [interpreter objectBrowserButtonCtxBlockFromString:[block printString]]; + [contextualizedBlock setMaster:block]; + + FSInterpreterResult* interpreterResult = [contextualizedBlock executeWithArguments:@[selectedObject, value]]; + if (!checkInterpreterResult(interpreterResult)) { + return; + } +} + +- (BOOL)sendMessageTo:(id)receiver selectorString:(NSString*)selectorStr arguments:(FSArray*)arguments column:(NSUInteger)column putResultInMatrix:(NSMatrix*)matrix +{ + NSInteger nbarg = [arguments count]; + id args[nbarg + 2]; + SEL selector = [FSCompiler selectorFromString:selectorStr]; + NSInteger i; + id result = nil; // To avoid a warning "might be used uninitialized" + + args[0] = receiver; + args[1] = (__bridge id)(void*)selector; + for (i = 0; i < nbarg; i++) + args[i + 2] = [arguments objectAtIndex:i]; + + @try { + result = sendMsgNoPattern(receiver, selector, nbarg + 2, args, [FSMsgContext msgContext], nil); + } + @catch (id exception) + { + FSInspectBlocksInCallStackForException(exception); + NSRunAlertPanel(@"Error", FSErrorMessageFromException(exception), @"OK", nil, nil, nil); + return NO; + } + + return YES; +} +@end diff --git a/FScriptFramework/FSObjectInspectorViewController.h b/FScriptFramework/FSObjectInspectorViewController.h new file mode 100644 index 0000000..78cf59f --- /dev/null +++ b/FScriptFramework/FSObjectInspectorViewController.h @@ -0,0 +1,29 @@ +// +// FSObjectInspectorViewController.h +// FScript +// +// Created by Anthony Dervish on 17/11/2014. +// +// + +#import + +@class FSObjectInspectorViewModelItem; +@class FSInterpreter; +@class FSDetailedObjectInspector; + +@interface FSObjectInspectorViewController : NSViewController +@property (assign) IBOutlet NSPathControl *viewPathControl; +@property (assign) IBOutlet NSOutlineView *outlineView; +@property (weak,nonatomic) FSDetailedObjectInspector *inspector; +@property (strong,nonatomic) FSObjectInspectorViewModelItem *rootViewModelItem; +@property (weak,nonatomic) FSObjectInspectorViewModelItem *selectedViewModelItem; +@property (readonly,nonatomic) NSSize desiredSize; +@property (strong,nonatomic) FSInterpreter *interpreter; +@property (strong,nonatomic) NSMenu *viewPathMenu; +@property (strong,nonatomic) NSArray *pathControlItems; +-(IBAction)showColorPanel:(id)sender; +-(IBAction)showOptionsPopover:(id)sender; +-(IBAction)inspectAction:(id)sender; +-(IBAction)viewPathClicked:(id)sender; +@end diff --git a/FScriptFramework/FSObjectInspectorViewController.m b/FScriptFramework/FSObjectInspectorViewController.m new file mode 100644 index 0000000..9b1097b --- /dev/null +++ b/FScriptFramework/FSObjectInspectorViewController.m @@ -0,0 +1,494 @@ +// +// FSObjectInspectorViewController.m +// FScript +// +// Created by Anthony Dervish on 17/11/2014. +// +// + +#import "FSObjectInspectorViewController.h" +#import "FSObjectInspectorViewController+NonArc.h" +#import "FSObjectInspectorViewModelItem.h" +#import "FSObjectInspectorOptionsViewController.h" +#import "FSDetailedObjectInspector.h" +#import "FSNamedNumber.h" +#import "FSMiscTools.h" +#import "FSObjectEnumInfo.h" +#import +#import + +#define AppearanceName NSAppearanceNameVibrantDark + +@interface FSObjectInspectorViewController () +@property (nonatomic) BOOL hasAwoken; +@property (nonatomic,strong) NSPopover *optionsPopover; +@end + +@interface FSObjectInspectorOption : NSObject +@property (copy,nonatomic) NSString *name; +@property (nonatomic) BOOL state; +@property (nonatomic) NSUInteger value; +@end +@implementation FSObjectInspectorOption ++(FSObjectInspectorOption*)optionWithName:(NSString*)name value:(NSUInteger)value state:(BOOL)on +{ + FSObjectInspectorOption *opt = [FSObjectInspectorOption new]; + opt.name = name; + opt.state = on; + opt.value = value; + return opt; +} + ++(NSArray *)arrayFromOptions:(NSUInteger) opts dict:(NSMutableDictionary *)dict mask:(NSUInteger) mask +{ + NSMutableArray* result = [NSMutableArray array]; + for (NSNumber * opt in dict.allKeys) { + [result addObject:[FSObjectInspectorOption optionWithName:(NSString*)dict[opt] value:opt.unsignedIntegerValue state:(opts & opt.unsignedIntegerValue)]]; + } + return result; +} ++(NSUInteger)optionsFromArray:(NSArray /*of FSObjectInspectorOption */ *) opts dict:(NSMutableDictionary *)dict mask:(NSUInteger) mask +{ + NSUInteger result = 0; + for (FSObjectInspectorOption *opt in opts) { + if (opt.state) { + result |= opt.value; + } + } + return result; +} +@end + +/* + * + * + *================================================================================================*/ +#pragma mark - FSObjectInspectorViewController Implementation +/*================================================================================================== + */ + + +@implementation FSObjectInspectorViewController +{ + CGFloat _scrollViewOffsetY; +} +static NSImage * sViewImage = nil; +static NSImage * sWindowImage = nil; + ++ (void)initialize +{ + if (self == [FSObjectInspectorViewController class]) { + sViewImage = [NSImage imageWithSize:NSMakeSize(33.0, 27.0) flipped:NO drawingHandler:^BOOL(NSRect dstRect) { + //// Color Declarations + NSColor* color = [NSColor colorWithCalibratedRed: 0.49 green: 0.827 blue: 0.976 alpha: 1]; + NSColor* color2 = [NSColor colorWithCalibratedRed: 0.49 green: 0.827 blue: 0.976 alpha: 0.296]; + NSColor* color3 = [NSColor colorWithCalibratedRed: 1 green: 1 blue: 1 alpha: 1]; + + //// Group + { + //// Rectangle Drawing + NSBezierPath* rectanglePath = [NSBezierPath bezierPathWithRect: NSMakeRect(0, 0, 33, 27)]; + [color setFill]; + [rectanglePath fill]; + + + //// Rectangle 2 Drawing + NSBezierPath* rectangle2Path = [NSBezierPath bezierPathWithRect: NSMakeRect(1, 1, 31, 22)]; + [NSColor.whiteColor setFill]; + [rectangle2Path fill]; + + + //// Rectangle 3 Drawing + NSBezierPath* rectangle3Path = [NSBezierPath bezierPathWithRect: NSMakeRect(3, 3, 27, 18)]; + [color2 setFill]; + [rectangle3Path fill]; + + + //// Oval Drawing + NSBezierPath* ovalPath = [NSBezierPath bezierPathWithOvalInRect: NSMakeRect(2, 24, 2, 2)]; + [color3 setFill]; + [ovalPath fill]; + + + //// Oval 2 Drawing + NSBezierPath* oval2Path = [NSBezierPath bezierPathWithOvalInRect: NSMakeRect(5, 24, 2, 2)]; + [color3 setFill]; + [oval2Path fill]; + + + //// Oval 3 Drawing + NSBezierPath* oval3Path = [NSBezierPath bezierPathWithOvalInRect: NSMakeRect(8, 24, 2, 2)]; + [color3 setFill]; + [oval3Path fill]; + } + return YES; + }]; + sWindowImage = sViewImage; + + } +} + +-(instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil +{ + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + if (self) { + _pathControlItems = @[]; + } + return self; +} + +- (void)viewDidLoad +{ + [super viewDidLoad]; +#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10 + self.view.appearance = [NSAppearance appearanceNamed:AppearanceName]; + self.viewPathControl.appearance = [NSAppearance appearanceNamed:AppearanceName]; +#endif +} + +- (void)awakeFromNib +{ + if (!self.hasAwoken) { + self.hasAwoken = YES; + [self expandAll:self]; + NSScrollView* scrollView = self.outlineView.enclosingScrollView; + _scrollViewOffsetY = NSHeight(scrollView.superview.bounds) - NSHeight(scrollView.frame); + self.outlineView.doubleAction = @selector(inspectAction:); + self.outlineView.target = self; +#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10 + self.outlineView.appearance = [NSAppearance appearanceNamed:AppearanceName]; + if (self.rootViewModelItem.valueClass == NSView.class) { + self.viewPathMenu = [self _menuForView:self.rootViewModelItem.value]; + } + +#endif + } +} + +- (NSSize)desiredSize +{ + NSScrollView* scrollView = self.outlineView.enclosingScrollView; + NSSize scrollViewSize = [NSScrollView frameSizeForContentSize:self.outlineView.bounds.size + horizontalScrollerClass:scrollView.horizontalScroller.class + verticalScrollerClass:scrollView.verticalScroller.class + borderType:scrollView.borderType + controlSize:scrollView.horizontalScroller.controlSize + scrollerStyle:scrollView.scrollerStyle]; + if (self.outlineView.headerView) { + scrollViewSize.height += NSHeight(self.outlineView.headerView.bounds); + } + scrollViewSize.height += _scrollViewOffsetY; + return scrollViewSize; +} + +-(void)dealloc +{ + //NSLog(@"Dealloc %@",self); + [NSObject cancelPreviousPerformRequestsWithTarget:self ]; +} +-(IBAction)expandAll:(id)sender +{ + [self.outlineView expandItem:nil expandChildren:YES]; +} +/* + * + * + *================================================================================================*/ +#pragma mark - Properties +/*================================================================================================== + */ + +-(void)setRootViewModelItem:(FSObjectInspectorViewModelItem *)rootViewModelItem +{ + if (self.hasAwoken && rootViewModelItem.valueClass == NSView.class) { + self.viewPathMenu = [self _menuForView:rootViewModelItem.value]; + } + _rootViewModelItem = rootViewModelItem; + [self performSelector:@selector(expandAll:) withObject:self afterDelay:0.0]; +} + +-(FSObjectInspectorOptionsViewController*)optionsViewController +{ + return (FSObjectInspectorOptionsViewController*)self.optionsPopover.contentViewController; +} +-(NSPopover*)optionsPopover +{ + if (_optionsPopover == nil) { + _optionsPopover = [NSPopover new]; + _optionsPopover.behavior = NSPopoverBehaviorTransient; +#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10 + _optionsPopover.appearance = [NSAppearance appearanceNamed:NSAppearanceNameLightContent]; +#else + _optionsPopover.appearance = NSPopoverAppearanceHUD; +#endif + _optionsPopover.contentViewController = [FSObjectInspectorOptionsViewController new]; + _optionsPopover.delegate = self; + } + return _optionsPopover; +} +/* + * + * + *================================================================================================*/ +#pragma mark - NSOutlineViewDelegate +/*================================================================================================== + */ + +- (NSView*)outlineView:(NSOutlineView*)outlineView viewForTableColumn:(NSTableColumn*)tableColumn item:(id)item +{ + if ([tableColumn.identifier isEqualToString:@"Name"]) { + return [self.outlineView makeViewWithIdentifier:@"Name" owner:self]; + } + NSView *view = nil; + FSObjectInspectorViewModelItem* viewModel = [item representedObject]; + if ([viewModel respondsToSelector:@selector(valueType)]) { + switch (viewModel.valueType) { + case FS_ITEM_HEADER: + view = [self.outlineView makeViewWithIdentifier:@"Header" owner:self]; + break; + case FS_ITEM_ENUM: + view = [self.outlineView makeViewWithIdentifier:@"ObjectInspectorEnumView" owner:self]; + break; + case FS_ITEM_OPTIONS: + view = [self.outlineView makeViewWithIdentifier:@"ObjectInspectorOptionsView" owner:self]; + break; + case FS_ITEM_NUMBER: + view = [self.outlineView makeViewWithIdentifier:@"ObjectInspectorNumberView" owner:self]; + break; + case FS_ITEM_SIZE: + view = [self.outlineView makeViewWithIdentifier:@"ObjectInspectorSizeView" owner:self]; + break; + case FS_ITEM_RECT: + view = [self.outlineView makeViewWithIdentifier:@"ObjectInspectorRectView" owner:self]; + break; + case FS_ITEM_OBJECT: + view = [self.outlineView makeViewWithIdentifier:[self _viewIdentifierForValueClass:viewModel.valueClass] + owner:self]; + break; + case FS_ITEM_POINT: + view = [self.outlineView makeViewWithIdentifier:@"ObjectInspectorReadOnlyView" owner:self]; + break; + case FS_ITEM_RANGE: + view = [self.outlineView makeViewWithIdentifier:@"ObjectInspectorReadOnlyView" owner:self]; + break; + case FS_ITEM_BOOL: + view = [self.outlineView makeViewWithIdentifier:@"ObjectInspectorEnumView" owner:self]; + break; + + default: + break; + } + } + else { + view = [self.outlineView makeViewWithIdentifier:@"ObjectInspectorReadOnlyView" owner:self]; + } + return view; +} + +-(BOOL)outlineView:(NSOutlineView *)outlineView isGroupItem:(id)item +{ + FSInspectorVMValueType vmType = ((FSObjectInspectorViewModelItem*)[item representedObject]).valueType; + return vmType == FS_ITEM_HEADER; +} + +-(BOOL)outlineView:(NSOutlineView *)outlineView shouldSelectItem:(id)item +{ + FSInspectorVMValueType valueType = [(FSObjectInspectorViewModelItem*)[item representedObject] valueType] ; + return (valueType != FS_ITEM_HEADER && valueType != FS_ITEM_GROUP); +} + +/* + * + * + *================================================================================================*/ +#pragma mark - Actions +/*================================================================================================== + */ + + +-(IBAction)setColor:(id)sender +{ + NSColor *color = [(NSColorPanel*)sender color]; + self.selectedViewModelItem.value = color; +} + +-(IBAction)showColorPanel:(id)sender +{ + NSInteger row = [self.outlineView rowForView:sender]; + if (row >= 0) { + [NSColorPanel.sharedColorPanel orderFront:self]; + NSColorPanel.sharedColorPanel.target = self; + NSColorPanel.sharedColorPanel.action = @selector(setColor:); + + self.selectedViewModelItem = [[self.outlineView itemAtRow:row] representedObject]; + + } + +} +-(IBAction)inspectAction:(id)sender +{ + NSInteger row = [self.outlineView selectedRow]; + if (row >= 0) { + FSObjectInspectorViewModelItem *item = [[self.outlineView itemAtRow:row] representedObject]; + if (item.valueType == FS_ITEM_OBJECT && item.valueClass != nil) { + inspect(item.value, self.interpreter, nil); + } + } +} + + +-(IBAction)showOptionsPopover:(id)sender +{ + NSInteger row = [self.outlineView rowForView:sender]; + if (row >= 0) { + NSRect senderFrame = [sender frame]; + FSObjectInspectorViewModelItem *clickedItem = [[self.outlineView itemAtRow:row] representedObject]; + self.selectedViewModelItem = clickedItem; + NSArray *optionItems = [FSObjectInspectorOption arrayFromOptions:clickedItem.numValue dict:clickedItem.enumBiDict mask:clickedItem.optsMask]; + self.optionsViewController.optionItems = optionItems; + [self.optionsPopover showRelativeToRect:senderFrame ofView:sender preferredEdge:NSMaxYEdge]; + } +} + +-(IBAction)viewPathClicked:(id)sender +{ + if ([NSApp currentEvent].modifierFlags & NSAlternateKeyMask) { + self.inspector.inspectedObject = [[(NSPathControl*)sender clickedPathComponentCell] representedObject]; + [self.inspector refreshModel:self]; + } + else { + id clickedObject = [[(NSPathControl*)sender clickedPathComponentCell] representedObject]; + inspect(clickedObject, self.interpreter, nil); + } +} +/* + * + * + *================================================================================================*/ +#pragma mark - NSPopoverDelegate +/*================================================================================================== + */ + +-(void)popoverDidClose:(NSNotification *)notification +{ + + NSUInteger newOpts = [FSObjectInspectorOption optionsFromArray:self.optionsViewController.optionItems dict:self.selectedViewModelItem.enumBiDict mask:self.selectedViewModelItem.optsMask]; + self.selectedViewModelItem.value = objectFromOptions(newOpts, self.selectedViewModelItem.enumBiDict, self.selectedViewModelItem.optsMask); +} + +/* + * + * + *================================================================================================*/ +#pragma mark - NSResponder +/*================================================================================================== + */ +-(BOOL)acceptsFirstResponder +{ + return YES; +} +-(id)supplementalTargetForAction:(SEL)action sender:(id)sender +{ + if (action == @selector(refreshModel:) + || action == @selector(browseAction:)) + { + return self.inspector; + } + return [super supplementalTargetForAction:action sender:sender]; +} + +/* + * + * + *================================================================================================*/ +#pragma mark - Utilities +/*================================================================================================== + */ + + +-(NSString*)_viewIdentifierForValueClass:(Class)class +{ + if (class == NSColor.class) { + return @"ObjectInspectorColorView"; + } + else if (class == NSString.class) { + return @"ObjectInspectorStringView"; + } + return @"ObjectInspectorReadOnlyView"; +} + +-(NSString*)_titleForView:(NSView*)view +{ + return view.description; +} + +-(NSImage*)_imageForView:(NSView*)view +{ + return sViewImage; +} + +-(NSPathComponentCell*)_pathComponentCellForView:(NSView*)view withURL:(NSURL*)url +{ + NSPathComponentCell *item = [[NSPathComponentCell alloc] initTextCell:[self _titleForView:view]]; + item.controlSize = self.viewPathControl.controlSize; + item.font = self.viewPathControl.font; + item.image = [self _imageForView:view]; + item.representedObject = view; + return item; +} +-(IBAction)viewWasSelectedFromMenu:(id)sender +{ + +} +-(NSMenu*)_menuForSiblingViewsOfView:(NSView*)view select:(BOOL)select +{ + NSAssert([view isKindOfClass:NSView.class], @"Cannot get view hierarchy for a non-view class %@",view); + NSView *superview = view.superview; + NSMenu *menu = [[NSMenu alloc] initWithTitle:view.description]; + NSArray *views = superview ? superview.subviews : @[view]; + for (NSView *v in views) { + NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:[self _titleForView:v] action:@selector(viewWasSelectedFromMenu:) keyEquivalent:@""]; + item.representedObject = v; + [menu addItem:item]; + if (select && v == view) { + [(NSMenuItem*)menu.itemArray.lastObject setState:NSOnState]; + [(NSMenuItem*)menu.itemArray.lastObject setTag:1]; + + } + } + return menu; +} + +-(NSMenu*)_menuForView:(NSView*)view +{ + + NSAssert([view isKindOfClass:NSView.class], @"Cannot get view hierarchy for a non-view class %@",view); + if (!view.superview) { return nil; } + NSMutableArray * pathControlItems = [NSMutableArray new]; + NSMutableArray *submenus = [NSMutableArray new]; + NSView *v = view; + NSUInteger submenuCount = 0; + while (v.superview) { + NSMenu *submenu = [self _menuForSiblingViewsOfView:v select:YES]; + [submenus addObject:submenu]; + ++submenuCount; + v = v.superview; + } + NSURL *url = [NSURL URLWithString:@"views://"]; + NSMenu *rootMenu = submenus.lastObject; + NSMenuItem *selectedItem = [rootMenu itemWithTag:1]; + [pathControlItems addObject:[self _pathComponentCellForView:selectedItem.representedObject withURL:url]]; + NSMenu *currentMenu = rootMenu; + [submenus removeLastObject]; + for (NSMenu *submenu in submenus.reverseObjectEnumerator) { + selectedItem = [currentMenu itemWithTag:1]; + url = [url URLByAppendingPathComponent:@"view"]; + [pathControlItems addObject:[self _pathComponentCellForView:selectedItem.representedObject withURL:url]]; + [selectedItem setSubmenu:submenu]; + currentMenu = submenu; + } + self.viewPathControl.pathComponentCells = pathControlItems.count ? pathControlItems : @[]; + return rootMenu; +} + +@end diff --git a/FScriptFramework/FSObjectInspectorViewController.xib b/FScriptFramework/FSObjectInspectorViewController.xib new file mode 100644 index 0000000..e4e5704 --- /dev/null +++ b/FScriptFramework/FSObjectInspectorViewController.xib @@ -0,0 +1,599 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NSIsNil + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/FScriptFramework/FSObjectInspectorViewModelItem.h b/FScriptFramework/FSObjectInspectorViewModelItem.h new file mode 100644 index 0000000..5979659 --- /dev/null +++ b/FScriptFramework/FSObjectInspectorViewModelItem.h @@ -0,0 +1,51 @@ +// +// FSObjectInspectorViewModelItem.h +// FScript +// +// Created by Anthony Dervish on 16/11/2014. +// +// + +#import + +typedef NS_ENUM(NSUInteger, FSInspectorVMValueType) { + FS_ITEM_HEADER, + FS_ITEM_ENUM, + FS_ITEM_OPTIONS, + FS_ITEM_NUMBER, + FS_ITEM_SIZE, + FS_ITEM_RECT, + FS_ITEM_OBJECT, + FS_ITEM_POINT, + FS_ITEM_RANGE, + FS_ITEM_BOOL, + FS_ITEM_GROUP, +}; + +@class FSObjectInspectorViewModelItem; +@class NSMutableDictionary; + +typedef id(^FSGetterBlock)(id obj, FSObjectInspectorViewModelItem *item) ; +typedef void(^FSSetterBlock)(id obj, id newValue, FSObjectInspectorViewModelItem *item); + + +@interface FSObjectInspectorViewModelItem : NSTreeNode +@property (copy,nonatomic) NSString *name; +@property (strong,nonatomic) id value; +@property (assign,nonatomic) FSInspectorVMValueType valueType; +@property (readonly,nonatomic) NSString *displayValue; +@property (assign,nonatomic) NSMutableDictionary *enumBiDict; +@property (readonly,nonatomic) NSArray *enumNames; +@property (readonly,nonatomic) NSArray *enumValues; +@property (nonatomic) double numValue; +@property (nonatomic,copy) FSGetterBlock getter; +@property (nonatomic,copy) FSSetterBlock setter; +@property (nonatomic) NSUInteger optsMask; +@property (nonatomic) NSInteger minValue; +@property (nonatomic) NSInteger maxValue; +@property (nonatomic) Class valueClass; +@property (nonatomic) CGFloat float1; +@property (nonatomic) CGFloat float2; +@property (nonatomic) CGFloat float3; +@property (nonatomic) CGFloat float4; +@end diff --git a/FScriptFramework/FSObjectInspectorViewModelItem.m b/FScriptFramework/FSObjectInspectorViewModelItem.m new file mode 100644 index 0000000..10c81b7 --- /dev/null +++ b/FScriptFramework/FSObjectInspectorViewModelItem.m @@ -0,0 +1,242 @@ +// +// FSObjectInspectorViewModelItem.m +// FScript +// +// Created by Anthony Dervish on 16/11/2014. +// +// + +#import "FSObjectInspectorViewModelItem.h" +#import "FSBoolean.h" +#import "FSNamedNumber.h" +#import "FSNumber.h" +#import "FSObjectEnumInfo.h" + +static void *FLOAT_CHANGED_CTX = &FLOAT_CHANGED_CTX; + +@interface FSNamedInteger : NSObject +@property NSInteger integer; +@property NSString* name; +@end +@implementation FSNamedInteger + ++ (instancetype)integer:(NSInteger)num withName:(NSString*)name +{ + FSNamedInteger* n = [self new]; + n.integer = num; + n.name = name.copy; + return n; +} +@end + +static NSArray *sBOOLEnum = nil; +@implementation FSObjectInspectorViewModelItem + ++(void)initialize +{ + if (self == FSObjectInspectorViewModelItem.class) { + sBOOLEnum = @[[FSNamedInteger integer:NO withName:@"NO"], + [FSNamedInteger integer:YES withName:@"YES"]]; + } +} + +-(id)representedObject +{ + return [super representedObject] ?: self.value; +} + +- (instancetype)initWithRepresentedObject:(id)modelObject +{ + self = [super initWithRepresentedObject:modelObject]; + if (self) { + self.minValue = NSIntegerMin; + self.maxValue = NSIntegerMax; + [self addObserver:self + forKeyPath:@"float1" + options:nil + context:&FLOAT_CHANGED_CTX + ]; + [self addObserver:self + forKeyPath:@"float2" + options:nil + context:&FLOAT_CHANGED_CTX + ]; + [self addObserver:self + forKeyPath:@"float3" + options:nil + context:&FLOAT_CHANGED_CTX + ]; + [self addObserver:self + forKeyPath:@"float4" + options:nil + context:&FLOAT_CHANGED_CTX + ]; + } + return self; +} + + +- (void)dealloc +{ + [self removeObserver:self forKeyPath:@"float1"]; + [self removeObserver:self forKeyPath:@"float2"]; + [self removeObserver:self forKeyPath:@"float3"]; + [self removeObserver:self forKeyPath:@"float4"]; +} + +-(void)setValue:(id)value +{ + _value = value; + NSValue *val = value; + switch (self.valueType) { + case FS_ITEM_SIZE: { + NSSize sz = val.sizeValue; + _float1 = sz.width; + _float2 = sz.height; + } + break; + case FS_ITEM_RECT: { + NSRect rect = val.rectValue; + _float1 = rect.origin.x; + _float2 = rect.origin.y; + _float3 = rect.size.width; + _float4 = rect.size.height; + } + break; + case FS_ITEM_POINT: { + NSPoint point = val.pointValue; + _float1 = point.x; + _float2 = point.y; + } + break; + case FS_ITEM_RANGE: { + NSRange rng = val.rangeValue; + _float1 = rng.location; + _float2 = rng.length; + + } + break; + default: + break; + } + +} + +- (NSString*)displayValue +{ + switch (self.valueType) { + case FS_ITEM_HEADER: + return self.name; + break; + case FS_ITEM_ENUM: + return [self.value description]; + break; + case FS_ITEM_OPTIONS: + return [self.value description]; + break; + case FS_ITEM_NUMBER: + return [self.value description]; + break; + case FS_ITEM_SIZE: + return NSStringFromSize([(NSValue*)self.value sizeValue]); + break; + case FS_ITEM_RECT: + return NSStringFromRect([(NSValue*)self.value rectValue]); + break; + case FS_ITEM_OBJECT: + return [[self.value description] stringByReplacingOccurrencesOfString:@"\n" withString:@""]; + break; + case FS_ITEM_POINT: + return NSStringFromPoint([(NSValue*)self.value pointValue]); + break; + case FS_ITEM_RANGE: + return NSStringFromRange([(NSValue*)self.value rangeValue]); + break; + case FS_ITEM_BOOL: + return [self.value description]; + break; + default: + break; + } + return @""; +} + +- (NSArray*)enumObjects +{ + NSArray* objs = nil; + if (self.valueType == FS_ITEM_ENUM) { + NSMutableArray *enumObjs = [NSMutableArray new]; + for (NSNumber* num in self.enumBiDict.allKeys) { + [enumObjs addObject:[FSNamedInteger integer:num.integerValue withName:self.enumBiDict[num]]]; + } + objs = enumObjs; + } + else if (self.valueType == FS_ITEM_BOOL) { + objs = sBOOLEnum; + } + return objs; +} + + +- (double)numValue +{ + return [self.value doubleValue]; +} + +- (void)setNumValue:(double)value +{ + switch (self.valueType) { + case FS_ITEM_ENUM: + self.value = [FSNamedNumber namedNumberWithDouble:value name:self.enumBiDict[@(value)]] ?: [FSNumber numberWithDouble:value]; + break; + case FS_ITEM_OPTIONS: + self.value = objectFromOptions(value, self.enumBiDict, self.optsMask); + break; + case FS_ITEM_NUMBER: + self.value = [FSNumber numberWithDouble:value]; + break; + case FS_ITEM_BOOL: + self.value = [FSBoolean booleanWithBool:value]; + break; + default: + break; + } +} + +-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context +{ + if (context == FLOAT_CHANGED_CTX) { + [self refreshValue]; + } +} + +// A 'floatX' has changed: update our aggregate value +-(void)refreshValue +{ + [self willChangeValueForKey:@"value"]; + switch (self.valueType) { + case FS_ITEM_SIZE: + _value = [NSValue valueWithSize:NSMakeSize(self.float1, self.float2)]; + break; + case FS_ITEM_RECT: + _value = [NSValue valueWithRect:NSMakeRect(self.float1, self.float2, self.float3, self.float4)]; + break; + case FS_ITEM_POINT: + _value = [NSValue valueWithPoint:NSMakePoint(self.float1, self.float2)]; + break; + case FS_ITEM_RANGE: + _value = [NSValue valueWithRange:NSMakeRange(self.float1, self.float2)]; + break; + default: + break; + } + [self didChangeValueForKey:@"value"]; + +} + ++ (NSSet*)keyPathsForValuesAffectingDisplayValue +{ + return [NSSet setWithObject:@"value"]; +} + +@end diff --git a/FScriptFramework/FSSystem.m b/FScriptFramework/FSSystem.m index f7cbdfe..2ae7ab3 100644 --- a/FScriptFramework/FSSystem.m +++ b/FScriptFramework/FSSystem.m @@ -262,10 +262,12 @@ - (id) load:(NSString *)fileName NSString *logFmt = @"failure of loading: %@"; FSVerifClassArgsNoNil(@"load:",1,fileName,[NSString class]); - - @try - { - data = [NSData dataWithContentsOfFile:fileName]; + + BOOL unknownFileFormat = NO; + @try + { + NSError* error = nil; + data = [NSData dataWithContentsOfFile:fileName options:0 error:&error ]; if (data) { if (loadNonKeyedArchives) @@ -282,15 +284,18 @@ - (id) load:(NSString *)fileName } @catch (id exception) { - unarchiver = [[[FSUnarchiver alloc] initForReadingWithData:data loaderEnvironmentSymbolTable:[executor symbolTable] symbolTableForCompiledCodeNode:nil] autorelease]; - r = [unarchiver decodeObject]; + unarchiver = [[[FSUnarchiver alloc] initForReadingWithData:data loaderEnvironmentSymbolTable:[executor symbolTable] symbolTableForCompiledCodeNode:nil] autorelease]; + r = [unarchiver decodeObject]; + if (r == nil) { + unknownFileFormat = YES; + } } } } else { r = nil; - errStr = [NSString stringWithFormat:@"loading: can't open file %@",fileName]; + errStr = [NSString stringWithFormat:@"loading: can't open file %@. Error (%lu) = %@",fileName,error.code, error.localizedDescription]; } } @catch (id exception) @@ -302,6 +307,9 @@ - (id) load:(NSString *)fileName if (r == nil) { if (!errStr) errStr = @"failure of loading"; + if (unknownFileFormat) { + errStr = [ NSString stringWithFormat:@"%@: File %@ is in an unknown format (should be a valid keyed archive)",errStr, fileName ]; + } FSExecError(errStr); } return r; diff --git a/FScriptFramework/FSUtils.h b/FScriptFramework/FSUtils.h new file mode 100644 index 0000000..46dd65f --- /dev/null +++ b/FScriptFramework/FSUtils.h @@ -0,0 +1,30 @@ +// +// FSUtils.h +// FScript +// +// Created by Anthony Dervish on 18/11/2014. +// +// + +#import + +@interface FSUtils : NSObject + +@end + + +static inline NSRect rectWithWidthAndHeight(CGFloat width, CGFloat height) +{ + return NSMakeRect(0.0, 0.0, width, height); +} +static inline NSRect rectWithSize(NSSize size) +{ + return NSMakeRect(0.0, 0.0, size.width, size.height); +} + +static inline NSSize addSizes(NSSize size1, NSSize size2) +{ + return NSMakeSize(size1.width + size2.width, size1.height + size2.height); +} +@class FSInterpreterResult; +BOOL checkInterpreterResult(FSInterpreterResult *result); \ No newline at end of file diff --git a/FScriptFramework/FSUtils.m b/FScriptFramework/FSUtils.m new file mode 100644 index 0000000..9646780 --- /dev/null +++ b/FScriptFramework/FSUtils.m @@ -0,0 +1,24 @@ +// +// FSUtils.m +// FScript +// +// Created by Anthony Dervish on 18/11/2014. +// +// + +#import "FSUtils.h" +#import "FSInterpreterResult.h" +#import + +@implementation FSUtils +@end + +BOOL checkInterpreterResult(FSInterpreterResult* interpreterResult) +{ + if (![interpreterResult isOK]) { + NSRunAlertPanel(@"Error", [interpreterResult errorMessage], @"OK", nil, nil, nil); + [interpreterResult inspectBlocksInCallStack]; + return NO; + } + return YES; +} diff --git a/FScriptFramework/FScriptPreferences.xib b/FScriptFramework/FScriptPreferences.xib new file mode 100644 index 0000000..8e58737 --- /dev/null +++ b/FScriptFramework/FScriptPreferences.xib @@ -0,0 +1,679 @@ + + + + 1050 + 14A379a + 941 + 1343.13 + 755.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 941 + + + YES + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + FScriptMenuItem + + + FirstResponder + + + NSApplication + + + 3 + 2 + {{296, 611}, {443, 82}} + -260571136 + F-Script Preferences + NSPanel + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {209.31399999999999, 58} + + + 256 + + YES + + + 256 + {{98, 40}, {50, 22}} + + YES + + -1804599232 + -2147482624 + + + .HelveticaNeueDeskInterface-Regular + 13 + 1040 + + + + YES + + YES + allowsFloats + attributedStringForNil + attributedStringForNotANumber + attributedStringForZero + decimalSeparator + formatterBehavior + groupingSeparator + locale + minimum + negativeFormat + positiveFormat + usesGroupingSeparator + + + YES + + + + + + NaN + + YES + + YES + + + YES + + + + + 0.00 + + + . + + , + + + + + 0 + 0 + NO + NO + 1 + AAAAAAAAAAAAAAAAAAAAAA + + -0.00 + 0.00 + + + + 0.00 + -0.00 + + + + + + + + 0 + 0 + YES + NO + 1 + AAAAAAAAAAAAAAAAAAAAAA + + + . + , + NO + NO + YES + + + YES + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + textColor + + 3 + MAA + + + + NO + 1 + + + + 256 + {{17, 42}, {76, 17}} + + YES + + 67108864 + 134217728 + Font size + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + + + NO + 1 + + + + 256 + {{18, 18}, {407, 18}} + + YES + + 67108864 + 0 + Object browser automatically introspects declared properties + + + -935575296 + 0 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + NO + + + {443, 82} + + {{0, 0}, {1680, 1028}} + {209.31399999999999, 80} + {1.7976931348623157e+308, 1.7976931348623157e+308} + YES + + + + + YES + + + initialFirstResponder + + + + 39 + + + + fontSizeUI + + + + 48 + + + + updatePreference: + + + + 49 + + + + updatePreference: + + + + 55 + + + + automaticallyIntrospectDeclaredPropertiesUI + + + + 56 + + + + preferencePanel + + + + 61 + + + + + YES + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 24 + + + YES + + + + Panel1 + + + 25 + + + YES + + + + + + + + 26 + + + YES + + + + + + 29 + + + YES + + + + + + 53 + + + YES + + + + + + 63 + + + YES + + + + + + 64 + + + + + 65 + + + + + 27 + + + + + + + YES + + YES + -3.IBPluginDependency + -3.ImportedFromIB2 + 24.IBPluginDependency + 24.ImportedFromIB2 + 24.windowTemplate.hasMinSize + 24.windowTemplate.minSize + 25.IBPluginDependency + 25.ImportedFromIB2 + 26.IBPluginDependency + 26.ImportedFromIB2 + 27.IBPluginDependency + 27.ImportedFromIB2 + 29.IBPluginDependency + 29.ImportedFromIB2 + 53.IBPluginDependency + 53.ImportedFromIB2 + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + {209.31399999999999, 58} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + YES + + + YES + + + + + YES + + + YES + + + + 65 + + + + YES + + FSInterpreterView + + YES + + YES + object1 + object2 + object3 + object4 + object5 + object6 + object7 + object8 + object9 + + + YES + id + id + id + id + id + id + id + id + id + + + + YES + + YES + object1 + object2 + object3 + object4 + object5 + object6 + object7 + object8 + object9 + + + YES + + object1 + id + + + object2 + id + + + object3 + id + + + object4 + id + + + object5 + id + + + object6 + id + + + object7 + id + + + object8 + id + + + object9 + id + + + + + IBUserSource + + + + + FScriptMenuItem + NSMenuItem + + YES + + YES + openObjectBrowser: + showConsole: + showPreferencePanel: + updatePreference: + + + YES + id + id + id + id + + + + YES + + YES + openObjectBrowser: + showConsole: + showPreferencePanel: + updatePreference: + + + YES + + openObjectBrowser: + id + + + showConsole: + id + + + showPreferencePanel: + id + + + updatePreference: + id + + + + + YES + + YES + automaticallyIntrospectDeclaredPropertiesUI + fontSizeUI + interpreterView + preferencePanel + + + YES + NSButton + NSTextField + FSInterpreterView + NSPanel + + + + YES + + YES + automaticallyIntrospectDeclaredPropertiesUI + fontSizeUI + interpreterView + preferencePanel + + + YES + + automaticallyIntrospectDeclaredPropertiesUI + NSButton + + + fontSizeUI + NSTextField + + + interpreterView + FSInterpreterView + + + preferencePanel + NSPanel + + + + + IBUserSource + + + + + FirstResponder + + IBUserSource + + + + + NSObject + + IBUserSource + + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + ../FScript.xcodeproj + 3 + + NSSwitch + {15, 15} + + + diff --git a/FScriptFramework/Pointer.m b/FScriptFramework/Pointer.m index 8e94d86..b387cc1 100644 --- a/FScriptFramework/Pointer.m +++ b/FScriptFramework/Pointer.m @@ -121,6 +121,7 @@ - (id)at:(id)i case fscode_NSPoint: return [NSValue valueWithPoint:((NSPoint *)cPointer)[index]]; case fscode_NSSize: return [NSValue valueWithSize: ((NSSize *) cPointer)[index]]; case fscode_NSRect: return [NSValue valueWithRect: ((NSRect *) cPointer)[index]]; + case fscode_NSEdgeInsets: return [NSValue valueWithEdgeInsets: ((NSEdgeInsets *) cPointer)[index]]; case '^': { void *p = ((void **)cPointer)[index]; return (p ? [Pointer pointerWithCPointer:p type:type+1] : nil ); } case 'v': FSExecError(@"dereferencing \"void *\" pointer"); default: FSExecError(@"can't dereference pointer: the type of the referenced data is not supported by F-Script"); @@ -289,7 +290,15 @@ - (id)at:(id)i put:(id)elem } else FSArgumentError(elem,2,@"NSValue containing an NSRect",@"at:put:"); - case '^': + case fscode_NSEdgeInsets: + if ([elem isKindOfClass:[NSValue class]] && strcmp([elem objCType],@encode(NSEdgeInsets)) == 0) + { + ((NSEdgeInsets *)cPointer)[index] = [elem edgeInsetsValue]; + return elem; + } + else FSArgumentError(elem,2,@"NSValue containing an NSEdgeInsets",@"top:left:bottom:right:"); + + case '^': if (elem == nil) ((void **)cPointer)[index] = NULL; else if ([elem isKindOfClass:[Pointer class]]) ((void **)cPointer)[index] = [elem cPointer]; else FSArgumentError(elem,2,@"Pointer",@"at:put:"); diff --git a/FScriptFramework/Resources/view.png b/FScriptFramework/Resources/view.png new file mode 100755 index 0000000..8a75318 Binary files /dev/null and b/FScriptFramework/Resources/view.png differ diff --git a/FScriptFramework/Resources/window.png b/FScriptFramework/Resources/window.png new file mode 100755 index 0000000..06eb113 Binary files /dev/null and b/FScriptFramework/Resources/window.png differ diff --git a/FScriptFramework/ShellView.m b/FScriptFramework/ShellView.m index e74b317..d599331 100644 --- a/FScriptFramework/ShellView.m +++ b/FScriptFramework/ShellView.m @@ -109,7 +109,7 @@ - (id)initWithFrame:(NSRect)frameRect prompt:(NSString *)thePrompt historySize:( if (self = [super initWithFrame:frameRect]) { prompt = [thePrompt retain]; - history = [[FSCommandHistory alloc] initWithUIntSize:theHistorySize]; + history = [FSCommandHistory latestHistoryWithSize:theHistorySize]; parserMode = NO_DECOMPOSE; commandHandler = [theCommandHandler retain]; lineEdited = NO; @@ -267,14 +267,14 @@ - (void)moveUp:(id)sender if ([self selectedRange].location < start || [self selectedRange].location == loc) // moved before start of command || not moved because we are on the first line of the text view { - if ([self selectedRange].location >= start-[prompt length] && [self selectedRange].location < start) - // we are on the prompt, so we move to the start of the current command (the insertion point should not be on the prompt) - [self setSelectedRange:NSMakeRange(start,0)]; - else - { + if (loc >= start - prompt.length && self.selectedRange.location < start) { [self saveEditedCommand:self]; [self replaceCurrentCommandWith:[[history goToPrevious] getStr]]; - } + } + if ([self selectedRange].location >= start-[prompt length] && [self selectedRange].location < start) { + // we are on the prompt, so we move to the start of the current command (the insertion point should not be on the prompt) + [self setSelectedRange:NSMakeRange(start,0)]; + } } } diff --git a/FScriptFramework/blockInspector.nib/designable.nib b/FScriptFramework/blockInspector.nib/designable.nib index e023a8f..82f36f2 100644 --- a/FScriptFramework/blockInspector.nib/designable.nib +++ b/FScriptFramework/blockInspector.nib/designable.nib @@ -1,41 +1,38 @@ - + 1060 - 11C74 - 1938 - 1138.23 - 567.00 + 14B25 + 6254 + 1343.16 + 755.00 com.apple.InterfaceBuilder.CocoaPlugin - 1938 + 6254 - - YES - NSToolbar + + NSBox + NSCustomObject + NSCustomView + NSScrollView NSScroller NSSplitView + NSTextView + NSToolbar NSToolbarFlexibleSpaceItem - NSScrollView + NSToolbarItem NSToolbarSpaceItem - NSBox - NSCustomObject - NSCustomView NSView NSWindowTemplate - NSTextView - NSToolbarItem - - - YES + + com.apple.InterfaceBuilder.CocoaPlugin - + PluginDependencyRecalculationVersion - - YES + BlockInspector @@ -63,163 +60,148 @@ YES 2 1 - - YES - - YES - 771145F7-3AD6-4F13-BC83-CA31D4D6D0AD - C119E078-D0E8-4EEB-B2C1-BB21CC86A3CA - NSToolbarFlexibleSpaceItem - NSToolbarSpaceItem + + + + 771145F7-3AD6-4F13-BC83-CA31D4D6D0AD + + run + run + + + + NSImage + run + + + + {0, 0} + {0, 0} + YES + YES + -1 + YES + 0 - - YES - - - 771145F7-3AD6-4F13-BC83-CA31D4D6D0AD - - run - run - - - - NSImage - run - - - - {0, 0} - {0, 0} - YES - YES - -1 - YES - 0 + + + C119E078-D0E8-4EEB-B2C1-BB21CC86A3CA - - - C119E078-D0E8-4EEB-B2C1-BB21CC86A3CA - - build - build - - - + build + build + + + + NSImage + build + + + + {0, 0} + {0, 0} + YES + YES + -1 + YES + 0 + + + NSToolbarFlexibleSpaceItem + + Flexible Space + + + + + + {1, 5} + {20000, 32} + YES + YES + -1 + YES + 0 + + YES + YES + + + 1048576 + 2147483647 + NSImage - build + NSMenuCheckmark - - - {0, 0} - {0, 0} - YES - YES - -1 - YES - 0 - - - NSToolbarFlexibleSpaceItem - - Flexible Space - - - - - - {1, 5} - {20000, 32} - YES - YES - -1 - YES - 0 - - YES - YES - - - 1048576 - 2147483647 - - NSImage - NSMenuCheckmark - - - NSImage - NSMenuMixedState - + + NSImage + NSMenuMixedState - - NSToolbarSpaceItem - - Space - - - - - - {32, 5} - {32, 32} - YES - YES - -1 - YES - 0 - - YES - YES - - - 1048576 - 2147483647 - - - + + + NSToolbarSpaceItem + + Space + + + + + + {32, 5} + {32, 10000} + YES + YES + -1 + YES + 0 + + YES + YES + + + 1048576 + 2147483647 + + - - - YES + + - - - YES + + - - - YES - + + {290, 158} 256 - - YES + 266 - - YES + 274 - {{2, 2}, {429, 0}} + {{2, 2}, {429, 2}} + - - {{-7, 245}, {433, 2}} + + {{-7, 243}, {433, 6}} + {0, 0} - 67239424 + 67108864 0 @@ -237,8 +219,13 @@ - 3 - MCAwLjgwMDAwMDAxAA + 6 + System + labelColor + + 3 + MAA + @@ -250,29 +237,28 @@ 274 - - YES + 256 - - YES + - 2304 - - YES + 2322 + 274 - {339, 197} + {354, 197} + FScriptTextView NSTextView - - {{1, 1}, {339, 222}} + + {{1, 1}, {354, 222}} + @@ -285,12 +271,17 @@ 4 + YES 256 - {{340, 1}, {15, 222}} + {{339, 1}, {16, 222}} + + NO + _doScroller: + _doScroller: 1 @@ -301,123 +292,127 @@ -2147483392 {{-100, -100}, {356, 15}} + + NO + _doScroller: + 1 _doScroller: 0.22752810000000001 - + {356, 224} + + YES 133138 + 0.25 + 4 + 1 256 - - YES + - 2304 - - YES + 2322 + 2322 - - YES - - YES - Apple HTML pasteboard type - Apple PDF pasteboard type - Apple PICT pasteboard type - CorePasteboardFlavorType 0x6D6F6F76 - NSColor pasteboard type - NSFilenamesPboardType - NSStringPboardType - NSTypedFilenamesPboardType:'.SGI' - NSTypedFilenamesPboardType:'8BPS' - NSTypedFilenamesPboardType:'BMPf' - NSTypedFilenamesPboardType:'EPSF' - NSTypedFilenamesPboardType:'FPix' - NSTypedFilenamesPboardType:'GIFf' - NSTypedFilenamesPboardType:'ICO ' - NSTypedFilenamesPboardType:'JPEG' - NSTypedFilenamesPboardType:'PDF ' - NSTypedFilenamesPboardType:'PICT' - NSTypedFilenamesPboardType:'PNGf' - NSTypedFilenamesPboardType:'PNTG' - NSTypedFilenamesPboardType:'TIFF' - NSTypedFilenamesPboardType:'TPIC' - NSTypedFilenamesPboardType:'qtif' - NSTypedFilenamesPboardType:BMP - NSTypedFilenamesPboardType:CUR - NSTypedFilenamesPboardType:FAX - NSTypedFilenamesPboardType:FPIX - NSTypedFilenamesPboardType:FPX - NSTypedFilenamesPboardType:GIF - NSTypedFilenamesPboardType:ICNS - NSTypedFilenamesPboardType:ICO - NSTypedFilenamesPboardType:JPEG - NSTypedFilenamesPboardType:JPG - NSTypedFilenamesPboardType:MAC - NSTypedFilenamesPboardType:PCT - NSTypedFilenamesPboardType:PDF - NSTypedFilenamesPboardType:PICT - NSTypedFilenamesPboardType:PNG - NSTypedFilenamesPboardType:PNT - NSTypedFilenamesPboardType:PNTG - NSTypedFilenamesPboardType:PSD - NSTypedFilenamesPboardType:QTI - NSTypedFilenamesPboardType:QTIF - NSTypedFilenamesPboardType:RGB - NSTypedFilenamesPboardType:SGI - NSTypedFilenamesPboardType:TARGA - NSTypedFilenamesPboardType:TGA - NSTypedFilenamesPboardType:TIF - NSTypedFilenamesPboardType:TIFF - NSTypedFilenamesPboardType:bmp - NSTypedFilenamesPboardType:cur - NSTypedFilenamesPboardType:eps - NSTypedFilenamesPboardType:fax - NSTypedFilenamesPboardType:fpix - NSTypedFilenamesPboardType:fpx - NSTypedFilenamesPboardType:gif - NSTypedFilenamesPboardType:icns - NSTypedFilenamesPboardType:ico - NSTypedFilenamesPboardType:jpeg - NSTypedFilenamesPboardType:jpg - NSTypedFilenamesPboardType:mac - NSTypedFilenamesPboardType:pct - NSTypedFilenamesPboardType:pdf - NSTypedFilenamesPboardType:pict - NSTypedFilenamesPboardType:png - NSTypedFilenamesPboardType:pnt - NSTypedFilenamesPboardType:pntg - NSTypedFilenamesPboardType:psd - NSTypedFilenamesPboardType:qti - NSTypedFilenamesPboardType:qtif - NSTypedFilenamesPboardType:rgb - NSTypedFilenamesPboardType:sgi - NSTypedFilenamesPboardType:targa - NSTypedFilenamesPboardType:tga - NSTypedFilenamesPboardType:tif - NSTypedFilenamesPboardType:tiff - NXTypedFilenamePboardType:eps - NXTypedFilenamePboardType:tif - NXTypedFilenamePboardType:tiff - NeXT Encapsulated PostScript v1.2 pasteboard type - NeXT RTFD pasteboard type - NeXT Rich Text Format v1.0 pasteboard type - NeXT TIFF v4.0 pasteboard type - - - {338, 14} + + Apple HTML pasteboard type + Apple PDF pasteboard type + Apple PICT pasteboard type + CorePasteboardFlavorType 0x6D6F6F76 + NSColor pasteboard type + NSFilenamesPboardType + NSStringPboardType + NSTypedFilenamesPboardType:'.SGI' + NSTypedFilenamesPboardType:'8BPS' + NSTypedFilenamesPboardType:'BMPf' + NSTypedFilenamesPboardType:'EPSF' + NSTypedFilenamesPboardType:'FPix' + NSTypedFilenamesPboardType:'GIFf' + NSTypedFilenamesPboardType:'ICO ' + NSTypedFilenamesPboardType:'JPEG' + NSTypedFilenamesPboardType:'PDF ' + NSTypedFilenamesPboardType:'PICT' + NSTypedFilenamesPboardType:'PNGf' + NSTypedFilenamesPboardType:'PNTG' + NSTypedFilenamesPboardType:'TIFF' + NSTypedFilenamesPboardType:'TPIC' + NSTypedFilenamesPboardType:'qtif' + NSTypedFilenamesPboardType:BMP + NSTypedFilenamesPboardType:CUR + NSTypedFilenamesPboardType:FAX + NSTypedFilenamesPboardType:FPIX + NSTypedFilenamesPboardType:FPX + NSTypedFilenamesPboardType:GIF + NSTypedFilenamesPboardType:ICNS + NSTypedFilenamesPboardType:ICO + NSTypedFilenamesPboardType:JPEG + NSTypedFilenamesPboardType:JPG + NSTypedFilenamesPboardType:MAC + NSTypedFilenamesPboardType:PCT + NSTypedFilenamesPboardType:PDF + NSTypedFilenamesPboardType:PICT + NSTypedFilenamesPboardType:PNG + NSTypedFilenamesPboardType:PNT + NSTypedFilenamesPboardType:PNTG + NSTypedFilenamesPboardType:PSD + NSTypedFilenamesPboardType:QTI + NSTypedFilenamesPboardType:QTIF + NSTypedFilenamesPboardType:RGB + NSTypedFilenamesPboardType:SGI + NSTypedFilenamesPboardType:TARGA + NSTypedFilenamesPboardType:TGA + NSTypedFilenamesPboardType:TIF + NSTypedFilenamesPboardType:TIFF + NSTypedFilenamesPboardType:bmp + NSTypedFilenamesPboardType:cur + NSTypedFilenamesPboardType:eps + NSTypedFilenamesPboardType:fax + NSTypedFilenamesPboardType:fpix + NSTypedFilenamesPboardType:fpx + NSTypedFilenamesPboardType:gif + NSTypedFilenamesPboardType:icns + NSTypedFilenamesPboardType:ico + NSTypedFilenamesPboardType:jpeg + NSTypedFilenamesPboardType:jpg + NSTypedFilenamesPboardType:mac + NSTypedFilenamesPboardType:pct + NSTypedFilenamesPboardType:pdf + NSTypedFilenamesPboardType:pict + NSTypedFilenamesPboardType:png + NSTypedFilenamesPboardType:pnt + NSTypedFilenamesPboardType:pntg + NSTypedFilenamesPboardType:psd + NSTypedFilenamesPboardType:qti + NSTypedFilenamesPboardType:qtif + NSTypedFilenamesPboardType:rgb + NSTypedFilenamesPboardType:sgi + NSTypedFilenamesPboardType:targa + NSTypedFilenamesPboardType:tga + NSTypedFilenamesPboardType:tif + NSTypedFilenamesPboardType:tiff + NXTypedFilenamePboardType:eps + NXTypedFilenamePboardType:tif + NXTypedFilenamePboardType:tiff + NeXT Encapsulated PostScript v1.2 pasteboard type + NeXT RTFD pasteboard type + NeXT Rich Text Format v1.0 pasteboard type + NeXT TIFF v4.0 pasteboard type + + {353, 51} + @@ -426,15 +421,14 @@ - - YES + - - 6 + + 38 - 338 + 353 1 @@ -445,54 +439,37 @@ 2 MC45NDUwOTgxIDAuOTQ1MDk4MSAwLjk0NTA5ODEAA - - YES - - YES - NSBackgroundColor - NSColor + + + 6 + System + selectedTextBackgroundColor + - - YES - - 6 - System - selectedTextBackgroundColor - - - - 6 - System - selectedTextColor - - 3 - MAA - - + + 6 + System + selectedTextColor + + + + 6 + System + controlTextColor + - - - YES - - YES - NSColor - NSCursor - NSUnderline + + + 1 + MCAwIDEAA - - YES - - 1 - MCAwIDEAA - - - {8, -8} - 13 - - + + {8, -8} + 13 - + + @@ -501,12 +478,13 @@ 6 {694, 10000000} - {338, 0} + {354, 51} - - {{1, 1}, {339, 51}} + + {{1, 1}, {354, 51}} + @@ -517,10 +495,8 @@ {4, 5} 12582912 - - YES - - YES + + @@ -531,8 +507,8 @@ AAEAAAAIARIAAwAAAAEAAQAAARUAAwAAAAEAAgAAARYAAwAAAAEAEAAAARcABAAAAAEAAABnARwAAwAA AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA - - + + 3 MCAwAA @@ -540,12 +516,17 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA 4 + YES 256 - {{340, 1}, {15, 51}} + {{339, 1}, {16, 51}} + + NO + _doScroller: + _doScroller: 1 @@ -555,38 +536,48 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA -2147483392 {{-100, -100}, {87, 18}} + + NO + _doScroller: + 1 _doScroller: 1 0.94565220000000005 - + {{0, 233}, {356, 53}} + + YES 133138 + 0.25 + 4 + 1 - + {356, 286} + - + {356, 286} + - {{0, 0}, {1440, 878}} + {{0, 0}, {2560, 1417}} {290, 219} {10000000000000, 10000000000000} YES - + - - YES + sourceView @@ -643,10 +634,9 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA 59 - + - - YES + 0 @@ -674,51 +664,45 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA 8 - - YES + - + Window1 6 - - YES + - + 4 - - YES - + 57 - - YES + - + 51 - - YES + - + @@ -729,12 +713,11 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA 52 - - YES + - + @@ -765,13 +748,12 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA 90 - - YES + - + @@ -794,112 +776,266 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA - - - - YES - - YES - -1.IBPluginDependency - -2.IBPluginDependency - -3.IBPluginDependency - 112.IBPluginDependency - 113.IBPluginDependency - 4.IBPluginDependency - 50.IBPluginDependency - 51.IBPluginDependency - 52.IBPluginDependency - 53.IBPluginDependency - 57.IBPluginDependency - 6.IBPluginDependency - 76.IBPluginDependency - 76.IBShouldRemoveOnLegacySave - 77.IBPluginDependency - 77.IBShouldRemoveOnLegacySave - 78.IBPluginDependency - 78.IBShouldRemoveOnLegacySave - 79.IBPluginDependency - 79.IBShouldRemoveOnLegacySave - 8.IBPluginDependency - 8.IBWindowTemplateEditedContentRect - 8.NSWindowTemplate.visibleAtLaunch - 90.IBPluginDependency - 98.IBPluginDependency - 99.IBPluginDependency - - - YES - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - {{328, 129}, {356, 286}} - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - - - YES - - + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + {{328, 129}, {356, 286}} + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + - - YES - - - + 113 - + + + + BlockInspector + NSObject + + id + id + + + + compil: + id + + + run: + id + + + + NSScrollView + NSScrollView + NSSplitView + + + + messageView + NSScrollView + + + sourceView + NSScrollView + + + splitView + NSSplitView + + + + IBProjectSource + ../FScriptFramework/BlockInspector.h + + + + BlockInspector + + id + id + id + id + + + + cancelArgumentsSheetAction: + id + + + compil: + id + + + evaluateBlockAction: + id + + + run: + id + + + + IBProjectSource + ../FScriptFramework/BlockInspector.m + + + + FScriptTextView + NSTextView + + IBProjectSource + ../FScriptFramework/FScriptTextView.h + + + + + + NSApplication + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSApplication.h + + + + NSBox + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSBox.h + + + + NSControl + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSControl.h + + + + NSFormatter + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFormatter.h + + + + NSMenu + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSMenu.h + + + + NSResponder + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSResponder.h + + + + NSScrollView + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSScrollView.h + + + + NSScroller + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSScroller.h + + + + NSSplitView + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSSplitView.h + + + + NSText + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSText.h + + + + NSTextView + NSText + + IBFrameworkSource + AppKit.framework/Headers/NSTextView.h + + + + NSToolbar + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSToolbar.h + + + + NSToolbarItem + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSToolbarItem.h + + + + NSView + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSView.h + + + + NSWindow + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSWindow.h + + + + 0 IBCocoaFramework + NO com.apple.InterfaceBuilder.CocoaPlugin.macosx com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 - + YES 3 - - YES - - YES - NSMenuCheckmark - NSMenuMixedState - build - run - - - YES - {9, 8} - {7, 2} - {32, 32} - {32, 32} - - + + {12, 12} + {10, 2} + {32, 32} + {32, 32} + diff --git a/FScriptFramework/blockInspector.nib/keyedobjects.nib b/FScriptFramework/blockInspector.nib/keyedobjects.nib index 605f322..b89a20b 100644 Binary files a/FScriptFramework/blockInspector.nib/keyedobjects.nib and b/FScriptFramework/blockInspector.nib/keyedobjects.nib differ diff --git a/FScriptFramework/blockInspector.xib b/FScriptFramework/blockInspector.xib new file mode 100644 index 0000000..5410161 --- /dev/null +++ b/FScriptFramework/blockInspector.xib @@ -0,0 +1,846 @@ + + + + 1060 + 14B23 + 6254 + 1343.16 + 755.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 6254 + + + NSBox + NSCustomObject + NSCustomView + NSScrollView + NSScroller + NSSplitView + NSTextView + NSToolbar + NSToolbarFlexibleSpaceItem + NSToolbarItem + NSToolbarSpaceItem + NSView + NSWindowTemplate + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + BlockInspector + + + FirstResponder + + + NSApplication + + + 4111 + 2 + {{516, 482}, {356, 286}} + 544735232 + Block Inspector + NSWindow + + + 99025BCD-28BD-4E10-A236-49C3770B7CF0 + + + YES + NO + YES + YES + 2 + 1 + + + + 771145F7-3AD6-4F13-BC83-CA31D4D6D0AD + + run + run + + + + NSImage + run + + + + {0, 0} + {0, 0} + YES + YES + -1 + YES + 0 + + + + C119E078-D0E8-4EEB-B2C1-BB21CC86A3CA + + build + build + + + + NSImage + build + + + + {0, 0} + {0, 0} + YES + YES + -1 + YES + 0 + + + NSToolbarFlexibleSpaceItem + + Flexible Space + + + + + + {1, 5} + {20000, 32} + YES + YES + -1 + YES + 0 + + YES + YES + + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + + + + NSToolbarSpaceItem + + Space + + + + + + {32, 5} + {32, 10000} + YES + YES + -1 + YES + 0 + + YES + YES + + + 1048576 + 2147483647 + + + + + + + + + + + + + + + + + + + {290, 158} + + + 256 + + + + 266 + + + + 274 + {{2, 2}, {429, 2}} + + + + + + {{-7, 243}, {433, 6}} + + + + {0, 0} + + 67108864 + 0 + + + Helvetica + 12 + 16 + + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + labelColor + + 3 + MAA + + + + + 3 + 0 + 0 + NO + + + + 274 + + + + 256 + + + + 2322 + + + + 274 + {354, 197} + + + + FScriptTextView + NSTextView + + + {{1, 1}, {354, 222}} + + + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + 4 + YES + + + + 256 + {{339, 1}, {16, 222}} + + + + NO + _doScroller: + + + _doScroller: + 1 + 0.98327759999999997 + + + + -2147483392 + {{-100, -100}, {356, 15}} + + + + NO + _doScroller: + + 1 + + _doScroller: + 0.22752810000000001 + + + {356, 224} + + + + YES + 133138 + + + + 0.25 + 4 + 1 + + + + 256 + + + + 2322 + + + + 2322 + + Apple HTML pasteboard type + Apple PDF pasteboard type + Apple PICT pasteboard type + CorePasteboardFlavorType 0x6D6F6F76 + NSColor pasteboard type + NSFilenamesPboardType + NSStringPboardType + NSTypedFilenamesPboardType:'.SGI' + NSTypedFilenamesPboardType:'8BPS' + NSTypedFilenamesPboardType:'BMPf' + NSTypedFilenamesPboardType:'EPSF' + NSTypedFilenamesPboardType:'FPix' + NSTypedFilenamesPboardType:'GIFf' + NSTypedFilenamesPboardType:'ICO ' + NSTypedFilenamesPboardType:'JPEG' + NSTypedFilenamesPboardType:'PDF ' + NSTypedFilenamesPboardType:'PICT' + NSTypedFilenamesPboardType:'PNGf' + NSTypedFilenamesPboardType:'PNTG' + NSTypedFilenamesPboardType:'TIFF' + NSTypedFilenamesPboardType:'TPIC' + NSTypedFilenamesPboardType:'qtif' + NSTypedFilenamesPboardType:BMP + NSTypedFilenamesPboardType:CUR + NSTypedFilenamesPboardType:FAX + NSTypedFilenamesPboardType:FPIX + NSTypedFilenamesPboardType:FPX + NSTypedFilenamesPboardType:GIF + NSTypedFilenamesPboardType:ICNS + NSTypedFilenamesPboardType:ICO + NSTypedFilenamesPboardType:JPEG + NSTypedFilenamesPboardType:JPG + NSTypedFilenamesPboardType:MAC + NSTypedFilenamesPboardType:PCT + NSTypedFilenamesPboardType:PDF + NSTypedFilenamesPboardType:PICT + NSTypedFilenamesPboardType:PNG + NSTypedFilenamesPboardType:PNT + NSTypedFilenamesPboardType:PNTG + NSTypedFilenamesPboardType:PSD + NSTypedFilenamesPboardType:QTI + NSTypedFilenamesPboardType:QTIF + NSTypedFilenamesPboardType:RGB + NSTypedFilenamesPboardType:SGI + NSTypedFilenamesPboardType:TARGA + NSTypedFilenamesPboardType:TGA + NSTypedFilenamesPboardType:TIF + NSTypedFilenamesPboardType:TIFF + NSTypedFilenamesPboardType:bmp + NSTypedFilenamesPboardType:cur + NSTypedFilenamesPboardType:eps + NSTypedFilenamesPboardType:fax + NSTypedFilenamesPboardType:fpix + NSTypedFilenamesPboardType:fpx + NSTypedFilenamesPboardType:gif + NSTypedFilenamesPboardType:icns + NSTypedFilenamesPboardType:ico + NSTypedFilenamesPboardType:jpeg + NSTypedFilenamesPboardType:jpg + NSTypedFilenamesPboardType:mac + NSTypedFilenamesPboardType:pct + NSTypedFilenamesPboardType:pdf + NSTypedFilenamesPboardType:pict + NSTypedFilenamesPboardType:png + NSTypedFilenamesPboardType:pnt + NSTypedFilenamesPboardType:pntg + NSTypedFilenamesPboardType:psd + NSTypedFilenamesPboardType:qti + NSTypedFilenamesPboardType:qtif + NSTypedFilenamesPboardType:rgb + NSTypedFilenamesPboardType:sgi + NSTypedFilenamesPboardType:targa + NSTypedFilenamesPboardType:tga + NSTypedFilenamesPboardType:tif + NSTypedFilenamesPboardType:tiff + NXTypedFilenamePboardType:eps + NXTypedFilenamePboardType:tif + NXTypedFilenamePboardType:tiff + NeXT Encapsulated PostScript v1.2 pasteboard type + NeXT RTFD pasteboard type + NeXT Rich Text Format v1.0 pasteboard type + NeXT TIFF v4.0 pasteboard type + + {353, 51} + + + + + + + + + + + + + + + 38 + + + + 353 + 1 + + + 67111781 + 0 + + + 2 + MC45NDUwOTgxIDAuOTQ1MDk4MSAwLjk0NTA5ODEAA + + + + 6 + System + selectedTextBackgroundColor + + + + 6 + System + selectedTextColor + + + + + 6 + System + controlTextColor + + + + + 1 + MCAwIDEAA + + + {8, -8} + 13 + + + + + + + + 0 + + 6 + {694, 10000000} + {354, 51} + + + + {{1, 1}, {354, 51}} + + + + + + 2 + MC45NDUwOTgxIDAuOTQ1MDk4MSAwLjk0NTA5ODEAA + + + {4, 5} + + 12582912 + + + + + + TU0AKgAAAHCAFUqgBVKsAAAAwdVQUqwaEQeIRGJRGFlYqwWLQ+JxuOQpVRmEx2RROKwOQyOUQSPyaUym +SxqWyKXyeYxyZzWbSuJTScRCbz2Nz+gRKhUOfTqeUai0OSxiWTiBQSHSGFquGwekxyAgAAAOAQAAAwAA +AAEAEAAAAQEAAwAAAAEAEAAAAQIAAwAAAAIACAAIAQMAAwAAAAEABQAAAQYAAwAAAAEAAQAAAREABAAA +AAEAAAAIARIAAwAAAAEAAQAAARUAAwAAAAEAAgAAARYAAwAAAAEAEAAAARcABAAAAAEAAABnARwAAwAA +AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA + + + + + + 3 + MCAwAA + + + + 4 + YES + + + + 256 + {{339, 1}, {16, 51}} + + + + NO + _doScroller: + + + _doScroller: + 1 + + + + -2147483392 + {{-100, -100}, {87, 18}} + + + + NO + _doScroller: + + 1 + + _doScroller: + 1 + 0.94565220000000005 + + + {{0, 233}, {356, 53}} + + + + YES + 133138 + + + + 0.25 + 4 + 1 + + + {356, 286} + + + + + + {356, 286} + + + + + {{0, 0}, {1440, 878}} + {290, 219} + {10000000000000, 10000000000000} + YES + + + + + + + sourceView + + + + 55 + + + + messageView + + + + 56 + + + + splitView + + + + 58 + + + + compil: + + + + 100 + + + + run: + + + + 101 + + + + delegate + + + + 17 + + + + initialFirstResponder + + + + 59 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 8 + + + + + + + Window1 + + + 6 + + + + + + + + + 4 + + + + + + 57 + + + + + + + + + 51 + + + + + + + + + + 50 + + + + + 52 + + + + + + + + + + 53 + + + + + 76 + + + + + 77 + + + + + 78 + + + + + 79 + + + + + 90 + + + + + + + + + + + 99 + + + + + 98 + + + + + 112 + + + + + 113 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + {{328, 129}, {356, 286}} + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + 113 + + + 0 + IBCocoaFramework + NO + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + 3 + + {12, 12} + {10, 2} + {32, 32} + {32, 32} + + + diff --git a/FScriptFramework/genObjInspector.xib b/FScriptFramework/genObjInspector.xib new file mode 100644 index 0000000..42b7144 --- /dev/null +++ b/FScriptFramework/genObjInspector.xib @@ -0,0 +1,549 @@ + + + + 1060 + 14A379a + 941 + 1343.13 + 755.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 941 + + + YES + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + FSGenericObjectInspector + + + FirstResponder + + + NSApplication + + + 4111 + 2 + {{366, 532}, {544, 191}} + 813170688 + + NSWindow + + + 802241AF-3006-41E3-868B-F9E247469442 + + + YES + YES + YES + YES + 2 + 1 + + 8EDF667F-1A07-4315-8190-D1193D7EC7C5 + + + 8EDF667F-1A07-4315-8190-D1193D7EC7C5 + + Refresh + Refresh + + + + 268 + {{0, 14}, {80, 25}} + YES + + 67108864 + 134217728 + Refresh + + .HelveticaNeueDeskInterface-Regular + 13 + 1040 + + + -2034876416 + 32 + + + + + + + + 200 + 25 + + NO + + + + + {80, 25} + {80, 25} + YES + YES + 0 + YES + 0 + + + + YES + + + + YES + + + + YES + + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {213, 107} + + + 256 + + YES + + + 274 + + YES + + + 2304 + + YES + + + 2322 + + YES + + YES + Apple HTML pasteboard type + Apple PDF pasteboard type + Apple PICT pasteboard type + CorePasteboardFlavorType 0x6D6F6F76 + NSColor pasteboard type + NSFilenamesPboardType + NSStringPboardType + NeXT Encapsulated PostScript v1.2 pasteboard type + NeXT RTFD pasteboard type + NeXT Rich Text Format v1.0 pasteboard type + NeXT TIFF v4.0 pasteboard type + + + {544, 191} + + + + + + + + + + + YES + + + 38 + + + + 544 + 1 + + + 100674405 + 0 + + + 3 + MQA + + + YES + + YES + NSBackgroundColor + NSColor + + + YES + + 6 + System + selectedTextBackgroundColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + selectedTextColor + + 3 + MAA + + + + + + 6 + System + controlTextColor + + + + YES + + YES + NSColor + NSCursor + NSUnderline + + + YES + + 1 + MCAwIDEAA + + + {8, -8} + 13 + + + + + + + 1 + + 6 + {1086, 10000000} + + + + {{1, 1}, {544, 191}} + + + + + + {4, 5} + + 12582912 + + YES + + YES + + + + TU0AKgAAAHCAFUqgBVKsAAAAwdVQUqwaEQeIRGJRGFlYqwWLQ+JxuOQpVRmEx2RROKwOQyOUQSPyaUym +SxqWyKXyeYxyZzWbSuJTScRCbz2Nz+gRKhUOfTqeUai0OSxiWTiBQSHSGFquGwekxyAgAAAOAQAAAwAA +AAEAEAAAAQEAAwAAAAEAEAAAAQIAAwAAAAIACAAIAQMAAwAAAAEABQAAAQYAAwAAAAEAAQAAAREABAAA +AAEAAAAIARIAAwAAAAEAAQAAARUAAwAAAAEAAgAAARYAAwAAAAEAEAAAARcABAAAAAEAAABnARwAAwAA +AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA + + + + + + 3 + MCAwAA + + + + 4 + YES + + + + -2147483392 + {{-30, 1}, {15, 152}} + + NO + _doScroller: + + + _doScroller: + 1 + + + + -2147483392 + {{-100, -100}, {87, 18}} + + NO + _doScroller: + + 1 + + _doScroller: + 1 + 0.94565220000000005 + + + {{-1, -1}, {546, 193}} + + + 133650 + + + + 0.25 + 4 + 1 + + + {544, 191} + + {{0, 0}, {1440, 878}} + {213, 162} + {1.7976931348623157e+308, 1.7976931348623157e+308} + YES + + + + + YES + + + printStringView + + + + 31 + + + + window + + + + 33 + + + + delegate + + + + 34 + + + + updateAction: + + + + 57 + + + + + YES + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 5 + + + YES + + + + + Window + + + 6 + + + YES + + + + + + 18 + + + YES + + + + + + + + 19 + + + + + 44 + + + + + 45 + + + + + 46 + + + YES + + + + + + 56 + + + YES + + + + + + 54 + + + YES + + + + + + 55 + + + + + + + YES + + YES + -1.IBPluginDependency + -2.IBPluginDependency + -3.IBPluginDependency + 18.IBPluginDependency + 19.IBPluginDependency + 44.IBPluginDependency + 44.IBShouldRemoveOnLegacySave + 45.IBPluginDependency + 45.IBShouldRemoveOnLegacySave + 46.IBPluginDependency + 5.IBPluginDependency + 5.IBWindowTemplateEditedContentRect + 5.windowTemplate.hasMinSize + 5.windowTemplate.minSize + 54.IBPluginDependency + 55.IBPluginDependency + 56.IBPluginDependency + 6.IBPluginDependency + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{215, 425}, {544, 191}} + + {213, 107} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + YES + + + YES + + + + + YES + + + YES + + + + 57 + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + + 3 + + diff --git a/FScriptFramework/metamacros.h b/FScriptFramework/metamacros.h new file mode 100644 index 0000000..b15ba67 --- /dev/null +++ b/FScriptFramework/metamacros.h @@ -0,0 +1,772 @@ +/** + * Macros for metaprogramming + * ExtendedC + * + * Copyright (C) 2012 Justin Spahr-Summers + * Released under the MIT license + */ + +#ifndef EXTC_METAMACROS_H +#define EXTC_METAMACROS_H + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +/** + * Executes one or more expressions (which may have a void type, such as a call + * to a function that returns no value) and always returns true. + */ +#define metamacro_exprify(...) \ + ((__VA_ARGS__), true) + +/** + * Returns a string representation of VALUE after full macro expansion. + */ +#define metamacro_stringify(VALUE) \ + metamacro_stringify_(VALUE) + +/** + * Returns A and B concatenated after full macro expansion. + */ +#define metamacro_concat(A, B) \ + metamacro_concat_(A, B) + +/** + * Returns the Nth variadic argument (starting from zero). At least + * N + 1 variadic arguments must be given. N must be between zero and twenty, + * inclusive. + */ +#define metamacro_at(N, ...) \ + metamacro_concat(metamacro_at, N)(__VA_ARGS__) + +/** + * Returns the number of arguments (up to twenty) provided to the macro. At + * least one argument must be provided. + * + * Inspired by P99: http://p99.gforge.inria.fr + */ +#define metamacro_argcount(...) \ + metamacro_at(25, __VA_ARGS__, 25, 24, 23, 22 ,21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1) + +/** + * Identical to #metamacro_foreach_cxt, except that no CONTEXT argument is + * given. Only the index and current argument will thus be passed to MACRO. + */ +#define metamacro_foreach(MACRO, SEP, ...) \ + metamacro_foreach_cxt(metamacro_foreach_iter, SEP, MACRO, __VA_ARGS__) + +/** + * For each consecutive variadic argument (up to twenty), MACRO is passed the + * zero-based index of the current argument, CONTEXT, and then the argument + * itself. The results of adjoining invocations of MACRO are then separated by + * SEP. + * + * Inspired by P99: http://p99.gforge.inria.fr + */ +#define metamacro_foreach_cxt(MACRO, SEP, CONTEXT, ...) \ + metamacro_concat(metamacro_foreach_cxt, metamacro_argcount(__VA_ARGS__))(MACRO, SEP, CONTEXT, __VA_ARGS__) + +/** + * Identical to #metamacro_foreach_cxt. This can be used when the former would + * fail due to recursive macro expansion. + */ +#define metamacro_foreach_cxt_recursive(MACRO, SEP, CONTEXT, ...) \ + metamacro_concat(metamacro_foreach_cxt_recursive, metamacro_argcount(__VA_ARGS__))(MACRO, SEP, CONTEXT, __VA_ARGS__) + +/** + * In consecutive order, appends each variadic argument (up to twenty) onto + * BASE. The resulting concatenations are then separated by SEP. + * + * This is primarily useful to manipulate a list of macro invocations into instead + * invoking a different, possibly related macro. + */ +#define metamacro_foreach_concat(BASE, SEP, ...) \ + metamacro_foreach_cxt(metamacro_foreach_concat_iter, SEP, BASE, __VA_ARGS__) + +/** + * Iterates COUNT times, each time invoking MACRO with the current index + * (starting at zero) and CONTEXT. The results of adjoining invocations of MACRO + * are then separated by SEP. + * + * COUNT must be an integer between zero and twenty, inclusive. + */ +#define metamacro_for_cxt(COUNT, MACRO, SEP, CONTEXT) \ + metamacro_concat(metamacro_for_cxt, COUNT)(MACRO, SEP, CONTEXT) + +/** + * Returns the first argument given. At least one argument must be provided. + * + * This is useful when implementing a variadic macro, where you may have only + * one variadic argument, but no way to retrieve it (for example, because \c ... + * always needs to match at least one argument). + * + * @code + +#define varmacro(...) \ + metamacro_head(__VA_ARGS__) + + * @endcode + */ +#define metamacro_head(...) \ + metamacro_head_(__VA_ARGS__, 0) + +/** + * Returns every argument except the first. At least two arguments must be + * provided. + */ +#define metamacro_tail(...) \ + metamacro_tail_(__VA_ARGS__) + +/** + * Returns the first N (up to twenty) variadic arguments as a new argument list. + * At least N variadic arguments must be provided. + */ +#define metamacro_take(N, ...) \ + metamacro_concat(metamacro_take, N)(__VA_ARGS__) + +/** + * Removes the first N (up to twenty) variadic arguments from the given argument + * list. At least N variadic arguments must be provided. + */ +#define metamacro_drop(N, ...) \ + metamacro_concat(metamacro_drop, N)(__VA_ARGS__) + +/** + * Decrements VAL, which must be a number between zero and twenty, inclusive. + * + * This is primarily useful when dealing with indexes and counts in + * metaprogramming. + */ +#define metamacro_dec(VAL) \ + metamacro_at(VAL, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24) + +/** + * Increments VAL, which must be a number between zero and twenty, inclusive. + * + * This is primarily useful when dealing with indexes and counts in + * metaprogramming. + */ +#define metamacro_inc(VAL) \ + metamacro_at(VAL, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26) + +/** + * If A is equal to B, the next argument list is expanded; otherwise, the + * argument list after that is expanded. A and B must be numbers between zero + * and twenty, inclusive. Additionally, B must be greater than or equal to A. + * + * @code + +// expands to true +metamacro_if_eq(0, 0)(true)(false) + +// expands to false +metamacro_if_eq(0, 1)(true)(false) + + * @endcode + * + * This is primarily useful when dealing with indexes and counts in + * metaprogramming. + */ +#define metamacro_if_eq(A, B) \ + metamacro_concat(metamacro_if_eq, A)(B) + +/** + * Identical to #metamacro_if_eq. This can be used when the former would fail + * due to recursive macro expansion. + */ +#define metamacro_if_eq_recursive(A, B) \ + metamacro_concat(metamacro_if_eq_recursive, A)(B) + +/** + * Returns 1 if N is an even number, or 0 otherwise. N must be between zero and + * twenty, inclusive. + * + * For the purposes of this test, zero is considered even. + */ +#define metamacro_is_even(N) \ + metamacro_at(N, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1) + +/** + * Returns the logical NOT of B, which must be the number zero or one. + */ +#define metamacro_not(B) \ + metamacro_at(B, 1, 0) + +// IMPLEMENTATION DETAILS FOLLOW! +// Do not write code that depends on anything below this line. +#define metamacro_stringify_(VALUE) # VALUE +#define metamacro_concat_(A, B) A ## B +#define metamacro_foreach_iter(INDEX, MACRO, ARG) MACRO(INDEX, ARG) +#define metamacro_head_(FIRST, ...) FIRST +#define metamacro_tail_(FIRST, ...) __VA_ARGS__ +#define metamacro_consume_(...) +#define metamacro_expand_(...) __VA_ARGS__ + +// implemented from scratch so that metamacro_concat() doesn't end up nesting +#define metamacro_foreach_concat_iter(INDEX, BASE, ARG) metamacro_foreach_concat_iter_(BASE, ARG) +#define metamacro_foreach_concat_iter_(BASE, ARG) BASE ## ARG + +// metamacro_at expansions +#define metamacro_at0(...) metamacro_head(__VA_ARGS__) +#define metamacro_at1(_0, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at2(_0, _1, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at3(_0, _1, _2, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at4(_0, _1, _2, _3, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at5(_0, _1, _2, _3, _4, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at6(_0, _1, _2, _3, _4, _5, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at7(_0, _1, _2, _3, _4, _5, _6, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at8(_0, _1, _2, _3, _4, _5, _6, _7, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at9(_0, _1, _2, _3, _4, _5, _6, _7, _8, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at10(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at11(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at12(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at13(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at14(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at15(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at16(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at17(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at18(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at19(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at20(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at21(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at22(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at23(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at24(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at25(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, ...) metamacro_head(__VA_ARGS__) + +// metamacro_foreach_cxt expansions +#define metamacro_foreach_cxt0(MACRO, SEP, CONTEXT) +#define metamacro_foreach_cxt1(MACRO, SEP, CONTEXT, _0) MACRO(0, CONTEXT, _0) + +#define metamacro_foreach_cxt2(MACRO, SEP, CONTEXT, _0, _1) \ + metamacro_foreach_cxt1(MACRO, SEP, CONTEXT, _0) \ + SEP \ + MACRO(1, CONTEXT, _1) + +#define metamacro_foreach_cxt3(MACRO, SEP, CONTEXT, _0, _1, _2) \ + metamacro_foreach_cxt2(MACRO, SEP, CONTEXT, _0, _1) \ + SEP \ + MACRO(2, CONTEXT, _2) + +#define metamacro_foreach_cxt4(MACRO, SEP, CONTEXT, _0, _1, _2, _3) \ + metamacro_foreach_cxt3(MACRO, SEP, CONTEXT, _0, _1, _2) \ + SEP \ + MACRO(3, CONTEXT, _3) + +#define metamacro_foreach_cxt5(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4) \ + metamacro_foreach_cxt4(MACRO, SEP, CONTEXT, _0, _1, _2, _3) \ + SEP \ + MACRO(4, CONTEXT, _4) + +#define metamacro_foreach_cxt6(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5) \ + metamacro_foreach_cxt5(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4) \ + SEP \ + MACRO(5, CONTEXT, _5) + +#define metamacro_foreach_cxt7(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6) \ + metamacro_foreach_cxt6(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5) \ + SEP \ + MACRO(6, CONTEXT, _6) + +#define metamacro_foreach_cxt8(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7) \ + metamacro_foreach_cxt7(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6) \ + SEP \ + MACRO(7, CONTEXT, _7) + +#define metamacro_foreach_cxt9(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8) \ + metamacro_foreach_cxt8(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7) \ + SEP \ + MACRO(8, CONTEXT, _8) + +#define metamacro_foreach_cxt10(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9) \ + metamacro_foreach_cxt9(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8) \ + SEP \ + MACRO(9, CONTEXT, _9) + +#define metamacro_foreach_cxt11(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) \ + metamacro_foreach_cxt10(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9) \ + SEP \ + MACRO(10, CONTEXT, _10) + +#define metamacro_foreach_cxt12(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) \ + metamacro_foreach_cxt11(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) \ + SEP \ + MACRO(11, CONTEXT, _11) + +#define metamacro_foreach_cxt13(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) \ + metamacro_foreach_cxt12(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) \ + SEP \ + MACRO(12, CONTEXT, _12) + +#define metamacro_foreach_cxt14(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) \ + metamacro_foreach_cxt13(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) \ + SEP \ + MACRO(13, CONTEXT, _13) + +#define metamacro_foreach_cxt15(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) \ + metamacro_foreach_cxt14(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) \ + SEP \ + MACRO(14, CONTEXT, _14) + +#define metamacro_foreach_cxt16(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) \ + metamacro_foreach_cxt15(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) \ + SEP \ + MACRO(15, CONTEXT, _15) + +#define metamacro_foreach_cxt17(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16) \ + metamacro_foreach_cxt16(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) \ + SEP \ + MACRO(16, CONTEXT, _16) + +#define metamacro_foreach_cxt18(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17) \ + metamacro_foreach_cxt17(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16) \ + SEP \ + MACRO(17, CONTEXT, _17) + +#define metamacro_foreach_cxt19(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18) \ + metamacro_foreach_cxt18(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17) \ + SEP \ + MACRO(18, CONTEXT, _18) + +#define metamacro_foreach_cxt20(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19) \ + metamacro_foreach_cxt19(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18) \ + SEP \ + MACRO(19, CONTEXT, _19) + +#define metamacro_foreach_cxt21(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20) \ + metamacro_foreach_cxt20(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19) \ + SEP \ + MACRO(20, CONTEXT, _20) + +#define metamacro_foreach_cxt22(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21) \ + metamacro_foreach_cxt21(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20) \ + SEP \ + MACRO(21, CONTEXT, _21) + +#define metamacro_foreach_cxt23(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22) \ + metamacro_foreach_cxt22(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21) \ + SEP \ + MACRO(22, CONTEXT, _22) + +#define metamacro_foreach_cxt24(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23) \ + metamacro_foreach_cxt23(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22) \ + SEP \ + MACRO(23, CONTEXT, _23) + +#define metamacro_foreach_cxt25(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24) \ + metamacro_foreach_cxt24(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23) \ + SEP \ + MACRO(24, CONTEXT, _24) + +// metamacro_foreach_cxt_recursive expansions +#define metamacro_foreach_cxt_recursive0(MACRO, SEP, CONTEXT) +#define metamacro_foreach_cxt_recursive1(MACRO, SEP, CONTEXT, _0) MACRO(0, CONTEXT, _0) + +#define metamacro_foreach_cxt_recursive2(MACRO, SEP, CONTEXT, _0, _1) \ + metamacro_foreach_cxt_recursive1(MACRO, SEP, CONTEXT, _0) \ + SEP \ + MACRO(1, CONTEXT, _1) + +#define metamacro_foreach_cxt_recursive3(MACRO, SEP, CONTEXT, _0, _1, _2) \ + metamacro_foreach_cxt_recursive2(MACRO, SEP, CONTEXT, _0, _1) \ + SEP \ + MACRO(2, CONTEXT, _2) + +#define metamacro_foreach_cxt_recursive4(MACRO, SEP, CONTEXT, _0, _1, _2, _3) \ + metamacro_foreach_cxt_recursive3(MACRO, SEP, CONTEXT, _0, _1, _2) \ + SEP \ + MACRO(3, CONTEXT, _3) + +#define metamacro_foreach_cxt_recursive5(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4) \ + metamacro_foreach_cxt_recursive4(MACRO, SEP, CONTEXT, _0, _1, _2, _3) \ + SEP \ + MACRO(4, CONTEXT, _4) + +#define metamacro_foreach_cxt_recursive6(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5) \ + metamacro_foreach_cxt_recursive5(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4) \ + SEP \ + MACRO(5, CONTEXT, _5) + +#define metamacro_foreach_cxt_recursive7(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6) \ + metamacro_foreach_cxt_recursive6(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5) \ + SEP \ + MACRO(6, CONTEXT, _6) + +#define metamacro_foreach_cxt_recursive8(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7) \ + metamacro_foreach_cxt_recursive7(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6) \ + SEP \ + MACRO(7, CONTEXT, _7) + +#define metamacro_foreach_cxt_recursive9(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8) \ + metamacro_foreach_cxt_recursive8(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7) \ + SEP \ + MACRO(8, CONTEXT, _8) + +#define metamacro_foreach_cxt_recursive10(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9) \ + metamacro_foreach_cxt_recursive9(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8) \ + SEP \ + MACRO(9, CONTEXT, _9) + +#define metamacro_foreach_cxt_recursive11(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) \ + metamacro_foreach_cxt_recursive10(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9) \ + SEP \ + MACRO(10, CONTEXT, _10) + +#define metamacro_foreach_cxt_recursive12(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) \ + metamacro_foreach_cxt_recursive11(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) \ + SEP \ + MACRO(11, CONTEXT, _11) + +#define metamacro_foreach_cxt_recursive13(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) \ + metamacro_foreach_cxt_recursive12(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) \ + SEP \ + MACRO(12, CONTEXT, _12) + +#define metamacro_foreach_cxt_recursive14(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) \ + metamacro_foreach_cxt_recursive13(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) \ + SEP \ + MACRO(13, CONTEXT, _13) + +#define metamacro_foreach_cxt_recursive15(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) \ + metamacro_foreach_cxt_recursive14(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) \ + SEP \ + MACRO(14, CONTEXT, _14) + +#define metamacro_foreach_cxt_recursive16(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) \ + metamacro_foreach_cxt_recursive15(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) \ + SEP \ + MACRO(15, CONTEXT, _15) + +#define metamacro_foreach_cxt_recursive17(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16) \ + metamacro_foreach_cxt_recursive16(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) \ + SEP \ + MACRO(16, CONTEXT, _16) + +#define metamacro_foreach_cxt_recursive18(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17) \ + metamacro_foreach_cxt_recursive17(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16) \ + SEP \ + MACRO(17, CONTEXT, _17) + +#define metamacro_foreach_cxt_recursive19(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18) \ + metamacro_foreach_cxt_recursive18(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17) \ + SEP \ + MACRO(18, CONTEXT, _18) + +#define metamacro_foreach_cxt_recursive20(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19) \ + metamacro_foreach_cxt_recursive19(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18) \ + SEP \ + MACRO(19, CONTEXT, _19) + +#define metamacro_foreach_cxt_recursive21(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20) \ + metamacro_foreach_cxt_recursive20(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19) \ + SEP \ + MACRO(20, CONTEXT, _20) +#define metamacro_foreach_cxt_recursive22(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21) \ + metamacro_foreach_cxt_recursive21(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20) \ + SEP \ + MACRO(21, CONTEXT, _21) +#define metamacro_foreach_cxt_recursive23(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22) \ + metamacro_foreach_cxt_recursive22(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21) \ + SEP \ + MACRO(22, CONTEXT, _22) +#define metamacro_foreach_cxt_recursive24(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23) \ + metamacro_foreach_cxt_recursive23(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22) \ + SEP \ + MACRO(23, CONTEXT, _23) +#define metamacro_foreach_cxt_recursive25(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24) \ + metamacro_foreach_cxt_recursive24(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23) \ + SEP \ + MACRO(24, CONTEXT, _24) + +// metamacro_for_cxt expansions +#define metamacro_for_cxt0(MACRO, SEP, CONTEXT) +#define metamacro_for_cxt1(MACRO, SEP, CONTEXT) MACRO(0, CONTEXT) + +#define metamacro_for_cxt2(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt1(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(1, CONTEXT) + +#define metamacro_for_cxt3(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt2(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(2, CONTEXT) + +#define metamacro_for_cxt4(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt3(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(3, CONTEXT) + +#define metamacro_for_cxt5(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt4(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(4, CONTEXT) + +#define metamacro_for_cxt6(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt5(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(5, CONTEXT) + +#define metamacro_for_cxt7(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt6(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(6, CONTEXT) + +#define metamacro_for_cxt8(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt7(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(7, CONTEXT) + +#define metamacro_for_cxt9(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt8(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(8, CONTEXT) + +#define metamacro_for_cxt10(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt9(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(9, CONTEXT) + +#define metamacro_for_cxt11(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt10(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(10, CONTEXT) + +#define metamacro_for_cxt12(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt11(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(11, CONTEXT) + +#define metamacro_for_cxt13(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt12(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(12, CONTEXT) + +#define metamacro_for_cxt14(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt13(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(13, CONTEXT) + +#define metamacro_for_cxt15(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt14(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(14, CONTEXT) + +#define metamacro_for_cxt16(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt15(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(15, CONTEXT) + +#define metamacro_for_cxt17(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt16(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(16, CONTEXT) + +#define metamacro_for_cxt18(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt17(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(17, CONTEXT) + +#define metamacro_for_cxt19(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt18(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(18, CONTEXT) + +#define metamacro_for_cxt20(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt19(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(19, CONTEXT) + +#define metamacro_for_cxt21(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt20(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(20, CONTEXT) +#define metamacro_for_cxt22(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt21(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(21, CONTEXT) +#define metamacro_for_cxt23(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt22(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(22, CONTEXT) +#define metamacro_for_cxt24(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt23(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(23, CONTEXT) +#define metamacro_for_cxt25(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt24(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(24, CONTEXT) + +// metamacro_if_eq expansions +#define metamacro_if_eq0(VALUE) \ + metamacro_concat(metamacro_if_eq0_, VALUE) + +#define metamacro_if_eq0_0(...) __VA_ARGS__ metamacro_consume_ +#define metamacro_if_eq0_1(...) metamacro_expand_ +#define metamacro_if_eq0_2(...) metamacro_expand_ +#define metamacro_if_eq0_3(...) metamacro_expand_ +#define metamacro_if_eq0_4(...) metamacro_expand_ +#define metamacro_if_eq0_5(...) metamacro_expand_ +#define metamacro_if_eq0_6(...) metamacro_expand_ +#define metamacro_if_eq0_7(...) metamacro_expand_ +#define metamacro_if_eq0_8(...) metamacro_expand_ +#define metamacro_if_eq0_9(...) metamacro_expand_ +#define metamacro_if_eq0_10(...) metamacro_expand_ +#define metamacro_if_eq0_11(...) metamacro_expand_ +#define metamacro_if_eq0_12(...) metamacro_expand_ +#define metamacro_if_eq0_13(...) metamacro_expand_ +#define metamacro_if_eq0_14(...) metamacro_expand_ +#define metamacro_if_eq0_15(...) metamacro_expand_ +#define metamacro_if_eq0_16(...) metamacro_expand_ +#define metamacro_if_eq0_17(...) metamacro_expand_ +#define metamacro_if_eq0_18(...) metamacro_expand_ +#define metamacro_if_eq0_19(...) metamacro_expand_ +#define metamacro_if_eq0_20(...) metamacro_expand_ +#define metamacro_if_eq0_21(...) metamacro_expand_ +#define metamacro_if_eq0_22(...) metamacro_expand_ +#define metamacro_if_eq0_23(...) metamacro_expand_ +#define metamacro_if_eq0_24(...) metamacro_expand_ +#define metamacro_if_eq0_25(...) metamacro_expand_ + +#define metamacro_if_eq1(VALUE) metamacro_if_eq0(metamacro_dec(VALUE)) +#define metamacro_if_eq2(VALUE) metamacro_if_eq1(metamacro_dec(VALUE)) +#define metamacro_if_eq3(VALUE) metamacro_if_eq2(metamacro_dec(VALUE)) +#define metamacro_if_eq4(VALUE) metamacro_if_eq3(metamacro_dec(VALUE)) +#define metamacro_if_eq5(VALUE) metamacro_if_eq4(metamacro_dec(VALUE)) +#define metamacro_if_eq6(VALUE) metamacro_if_eq5(metamacro_dec(VALUE)) +#define metamacro_if_eq7(VALUE) metamacro_if_eq6(metamacro_dec(VALUE)) +#define metamacro_if_eq8(VALUE) metamacro_if_eq7(metamacro_dec(VALUE)) +#define metamacro_if_eq9(VALUE) metamacro_if_eq8(metamacro_dec(VALUE)) +#define metamacro_if_eq10(VALUE) metamacro_if_eq9(metamacro_dec(VALUE)) +#define metamacro_if_eq11(VALUE) metamacro_if_eq10(metamacro_dec(VALUE)) +#define metamacro_if_eq12(VALUE) metamacro_if_eq11(metamacro_dec(VALUE)) +#define metamacro_if_eq13(VALUE) metamacro_if_eq12(metamacro_dec(VALUE)) +#define metamacro_if_eq14(VALUE) metamacro_if_eq13(metamacro_dec(VALUE)) +#define metamacro_if_eq15(VALUE) metamacro_if_eq14(metamacro_dec(VALUE)) +#define metamacro_if_eq16(VALUE) metamacro_if_eq15(metamacro_dec(VALUE)) +#define metamacro_if_eq17(VALUE) metamacro_if_eq16(metamacro_dec(VALUE)) +#define metamacro_if_eq18(VALUE) metamacro_if_eq17(metamacro_dec(VALUE)) +#define metamacro_if_eq19(VALUE) metamacro_if_eq18(metamacro_dec(VALUE)) +#define metamacro_if_eq20(VALUE) metamacro_if_eq19(metamacro_dec(VALUE)) +#define metamacro_if_eq21(VALUE) metamacro_if_eq20(metamacro_dec(VALUE)) +#define metamacro_if_eq22(VALUE) metamacro_if_eq21(metamacro_dec(VALUE)) +#define metamacro_if_eq23(VALUE) metamacro_if_eq22(metamacro_dec(VALUE)) +#define metamacro_if_eq24(VALUE) metamacro_if_eq23(metamacro_dec(VALUE)) +#define metamacro_if_eq25(VALUE) metamacro_if_eq24(metamacro_dec(VALUE)) + +// metamacro_if_eq_recursive expansions +#define metamacro_if_eq_recursive0(VALUE) \ + metamacro_concat(metamacro_if_eq_recursive0_, VALUE) + +#define metamacro_if_eq_recursive0_0(...) __VA_ARGS__ metamacro_consume_ +#define metamacro_if_eq_recursive0_1(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_2(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_3(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_4(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_5(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_6(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_7(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_8(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_9(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_10(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_11(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_12(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_13(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_14(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_15(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_16(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_17(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_18(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_19(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_20(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_21(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_22(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_23(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_24(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_25(...) metamacro_expand_ + +#define metamacro_if_eq_recursive1(VALUE) metamacro_if_eq_recursive0(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive2(VALUE) metamacro_if_eq_recursive1(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive3(VALUE) metamacro_if_eq_recursive2(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive4(VALUE) metamacro_if_eq_recursive3(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive5(VALUE) metamacro_if_eq_recursive4(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive6(VALUE) metamacro_if_eq_recursive5(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive7(VALUE) metamacro_if_eq_recursive6(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive8(VALUE) metamacro_if_eq_recursive7(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive9(VALUE) metamacro_if_eq_recursive8(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive10(VALUE) metamacro_if_eq_recursive9(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive11(VALUE) metamacro_if_eq_recursive10(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive12(VALUE) metamacro_if_eq_recursive11(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive13(VALUE) metamacro_if_eq_recursive12(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive14(VALUE) metamacro_if_eq_recursive13(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive15(VALUE) metamacro_if_eq_recursive14(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive16(VALUE) metamacro_if_eq_recursive15(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive17(VALUE) metamacro_if_eq_recursive16(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive18(VALUE) metamacro_if_eq_recursive17(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive19(VALUE) metamacro_if_eq_recursive18(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive20(VALUE) metamacro_if_eq_recursive19(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive21(VALUE) metamacro_if_eq_recursive20(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive22(VALUE) metamacro_if_eq_recursive21(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive23(VALUE) metamacro_if_eq_recursive22(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive24(VALUE) metamacro_if_eq_recursive23(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive25(VALUE) metamacro_if_eq_recursive24(metamacro_dec(VALUE)) + +// metamacro_take expansions +#define metamacro_take0(...) +#define metamacro_take1(...) metamacro_head(__VA_ARGS__) +#define metamacro_take2(...) metamacro_head(__VA_ARGS__), metamacro_take1(metamacro_tail(__VA_ARGS__)) +#define metamacro_take3(...) metamacro_head(__VA_ARGS__), metamacro_take2(metamacro_tail(__VA_ARGS__)) +#define metamacro_take4(...) metamacro_head(__VA_ARGS__), metamacro_take3(metamacro_tail(__VA_ARGS__)) +#define metamacro_take5(...) metamacro_head(__VA_ARGS__), metamacro_take4(metamacro_tail(__VA_ARGS__)) +#define metamacro_take6(...) metamacro_head(__VA_ARGS__), metamacro_take5(metamacro_tail(__VA_ARGS__)) +#define metamacro_take7(...) metamacro_head(__VA_ARGS__), metamacro_take6(metamacro_tail(__VA_ARGS__)) +#define metamacro_take8(...) metamacro_head(__VA_ARGS__), metamacro_take7(metamacro_tail(__VA_ARGS__)) +#define metamacro_take9(...) metamacro_head(__VA_ARGS__), metamacro_take8(metamacro_tail(__VA_ARGS__)) +#define metamacro_take10(...) metamacro_head(__VA_ARGS__), metamacro_take9(metamacro_tail(__VA_ARGS__)) +#define metamacro_take11(...) metamacro_head(__VA_ARGS__), metamacro_take10(metamacro_tail(__VA_ARGS__)) +#define metamacro_take12(...) metamacro_head(__VA_ARGS__), metamacro_take11(metamacro_tail(__VA_ARGS__)) +#define metamacro_take13(...) metamacro_head(__VA_ARGS__), metamacro_take12(metamacro_tail(__VA_ARGS__)) +#define metamacro_take14(...) metamacro_head(__VA_ARGS__), metamacro_take13(metamacro_tail(__VA_ARGS__)) +#define metamacro_take15(...) metamacro_head(__VA_ARGS__), metamacro_take14(metamacro_tail(__VA_ARGS__)) +#define metamacro_take16(...) metamacro_head(__VA_ARGS__), metamacro_take15(metamacro_tail(__VA_ARGS__)) +#define metamacro_take17(...) metamacro_head(__VA_ARGS__), metamacro_take16(metamacro_tail(__VA_ARGS__)) +#define metamacro_take18(...) metamacro_head(__VA_ARGS__), metamacro_take17(metamacro_tail(__VA_ARGS__)) +#define metamacro_take19(...) metamacro_head(__VA_ARGS__), metamacro_take18(metamacro_tail(__VA_ARGS__)) +#define metamacro_take20(...) metamacro_head(__VA_ARGS__), metamacro_take19(metamacro_tail(__VA_ARGS__)) +#define metamacro_take21(...) metamacro_head(__VA_ARGS__), metamacro_take20(metamacro_tail(__VA_ARGS__)) +#define metamacro_take22(...) metamacro_head(__VA_ARGS__), metamacro_take21(metamacro_tail(__VA_ARGS__)) +#define metamacro_take23(...) metamacro_head(__VA_ARGS__), metamacro_take22(metamacro_tail(__VA_ARGS__)) +#define metamacro_take24(...) metamacro_head(__VA_ARGS__), metamacro_take23(metamacro_tail(__VA_ARGS__)) +#define metamacro_take25(...) metamacro_head(__VA_ARGS__), metamacro_take24(metamacro_tail(__VA_ARGS__)) + +// metamacro_drop expansions +#define metamacro_drop0(...) __VA_ARGS__ +#define metamacro_drop1(...) metamacro_tail(__VA_ARGS__) +#define metamacro_drop2(...) metamacro_drop1(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop3(...) metamacro_drop2(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop4(...) metamacro_drop3(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop5(...) metamacro_drop4(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop6(...) metamacro_drop5(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop7(...) metamacro_drop6(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop8(...) metamacro_drop7(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop9(...) metamacro_drop8(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop10(...) metamacro_drop9(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop11(...) metamacro_drop10(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop12(...) metamacro_drop11(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop13(...) metamacro_drop12(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop14(...) metamacro_drop13(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop15(...) metamacro_drop14(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop16(...) metamacro_drop15(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop17(...) metamacro_drop16(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop18(...) metamacro_drop17(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop19(...) metamacro_drop18(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop20(...) metamacro_drop19(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop21(...) metamacro_drop20(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop22(...) metamacro_drop21(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop23(...) metamacro_drop22(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop24(...) metamacro_drop23(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop25(...) metamacro_drop24(metamacro_tail(__VA_ARGS__)) + +#endif diff --git a/FScriptFramework/metamacrosorig.h b/FScriptFramework/metamacrosorig.h new file mode 100644 index 0000000..77a77b5 --- /dev/null +++ b/FScriptFramework/metamacrosorig.h @@ -0,0 +1,666 @@ +/** + * Macros for metaprogramming + * ExtendedC + * + * Copyright (C) 2012 Justin Spahr-Summers + * Released under the MIT license + */ + +#ifndef EXTC_METAMACROS_H +#define EXTC_METAMACROS_H + +/** + * Executes one or more expressions (which may have a void type, such as a call + * to a function that returns no value) and always returns true. + */ +#define metamacro_exprify(...) \ + ((__VA_ARGS__), true) + +/** + * Returns a string representation of VALUE after full macro expansion. + */ +#define metamacro_stringify(VALUE) \ + metamacro_stringify_(VALUE) + +/** + * Returns A and B concatenated after full macro expansion. + */ +#define metamacro_concat(A, B) \ + metamacro_concat_(A, B) + +/** + * Returns the Nth variadic argument (starting from zero). At least + * N + 1 variadic arguments must be given. N must be between zero and twenty, + * inclusive. + */ +#define metamacro_at(N, ...) \ + metamacro_concat(metamacro_at, N)(__VA_ARGS__) + +/** + * Returns the number of arguments (up to twenty) provided to the macro. At + * least one argument must be provided. + * + * Inspired by P99: http://p99.gforge.inria.fr + */ +#define metamacro_argcount(...) \ + metamacro_at(20, __VA_ARGS__, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1) + +/** + * Identical to #metamacro_foreach_cxt, except that no CONTEXT argument is + * given. Only the index and current argument will thus be passed to MACRO. + */ +#define metamacro_foreach(MACRO, SEP, ...) \ + metamacro_foreach_cxt(metamacro_foreach_iter, SEP, MACRO, __VA_ARGS__) + +/** + * For each consecutive variadic argument (up to twenty), MACRO is passed the + * zero-based index of the current argument, CONTEXT, and then the argument + * itself. The results of adjoining invocations of MACRO are then separated by + * SEP. + * + * Inspired by P99: http://p99.gforge.inria.fr + */ +#define metamacro_foreach_cxt(MACRO, SEP, CONTEXT, ...) \ + metamacro_concat(metamacro_foreach_cxt, metamacro_argcount(__VA_ARGS__))(MACRO, SEP, CONTEXT, __VA_ARGS__) + +/** + * Identical to #metamacro_foreach_cxt. This can be used when the former would + * fail due to recursive macro expansion. + */ +#define metamacro_foreach_cxt_recursive(MACRO, SEP, CONTEXT, ...) \ + metamacro_concat(metamacro_foreach_cxt_recursive, metamacro_argcount(__VA_ARGS__))(MACRO, SEP, CONTEXT, __VA_ARGS__) + +/** + * In consecutive order, appends each variadic argument (up to twenty) onto + * BASE. The resulting concatenations are then separated by SEP. + * + * This is primarily useful to manipulate a list of macro invocations into instead + * invoking a different, possibly related macro. + */ +#define metamacro_foreach_concat(BASE, SEP, ...) \ + metamacro_foreach_cxt(metamacro_foreach_concat_iter, SEP, BASE, __VA_ARGS__) + +/** + * Iterates COUNT times, each time invoking MACRO with the current index + * (starting at zero) and CONTEXT. The results of adjoining invocations of MACRO + * are then separated by SEP. + * + * COUNT must be an integer between zero and twenty, inclusive. + */ +#define metamacro_for_cxt(COUNT, MACRO, SEP, CONTEXT) \ + metamacro_concat(metamacro_for_cxt, COUNT)(MACRO, SEP, CONTEXT) + +/** + * Returns the first argument given. At least one argument must be provided. + * + * This is useful when implementing a variadic macro, where you may have only + * one variadic argument, but no way to retrieve it (for example, because \c ... + * always needs to match at least one argument). + * + * @code + +#define varmacro(...) \ + metamacro_head(__VA_ARGS__) + + * @endcode + */ +#define metamacro_head(...) \ + metamacro_head_(__VA_ARGS__, 0) + +/** + * Returns every argument except the first. At least two arguments must be + * provided. + */ +#define metamacro_tail(...) \ + metamacro_tail_(__VA_ARGS__) + +/** + * Returns the first N (up to twenty) variadic arguments as a new argument list. + * At least N variadic arguments must be provided. + */ +#define metamacro_take(N, ...) \ + metamacro_concat(metamacro_take, N)(__VA_ARGS__) + +/** + * Removes the first N (up to twenty) variadic arguments from the given argument + * list. At least N variadic arguments must be provided. + */ +#define metamacro_drop(N, ...) \ + metamacro_concat(metamacro_drop, N)(__VA_ARGS__) + +/** + * Decrements VAL, which must be a number between zero and twenty, inclusive. + * + * This is primarily useful when dealing with indexes and counts in + * metaprogramming. + */ +#define metamacro_dec(VAL) \ + metamacro_at(VAL, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19) + +/** + * Increments VAL, which must be a number between zero and twenty, inclusive. + * + * This is primarily useful when dealing with indexes and counts in + * metaprogramming. + */ +#define metamacro_inc(VAL) \ + metamacro_at(VAL, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21) + +/** + * If A is equal to B, the next argument list is expanded; otherwise, the + * argument list after that is expanded. A and B must be numbers between zero + * and twenty, inclusive. Additionally, B must be greater than or equal to A. + * + * @code + +// expands to true +metamacro_if_eq(0, 0)(true)(false) + +// expands to false +metamacro_if_eq(0, 1)(true)(false) + + * @endcode + * + * This is primarily useful when dealing with indexes and counts in + * metaprogramming. + */ +#define metamacro_if_eq(A, B) \ + metamacro_concat(metamacro_if_eq, A)(B) + +/** + * Identical to #metamacro_if_eq. This can be used when the former would fail + * due to recursive macro expansion. + */ +#define metamacro_if_eq_recursive(A, B) \ + metamacro_concat(metamacro_if_eq_recursive, A)(B) + +/** + * Returns 1 if N is an even number, or 0 otherwise. N must be between zero and + * twenty, inclusive. + * + * For the purposes of this test, zero is considered even. + */ +#define metamacro_is_even(N) \ + metamacro_at(N, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1) + +/** + * Returns the logical NOT of B, which must be the number zero or one. + */ +#define metamacro_not(B) \ + metamacro_at(B, 1, 0) + +// IMPLEMENTATION DETAILS FOLLOW! +// Do not write code that depends on anything below this line. +#define metamacro_stringify_(VALUE) # VALUE +#define metamacro_concat_(A, B) A ## B +#define metamacro_foreach_iter(INDEX, MACRO, ARG) MACRO(INDEX, ARG) +#define metamacro_head_(FIRST, ...) FIRST +#define metamacro_tail_(FIRST, ...) __VA_ARGS__ +#define metamacro_consume_(...) +#define metamacro_expand_(...) __VA_ARGS__ + +// implemented from scratch so that metamacro_concat() doesn't end up nesting +#define metamacro_foreach_concat_iter(INDEX, BASE, ARG) metamacro_foreach_concat_iter_(BASE, ARG) +#define metamacro_foreach_concat_iter_(BASE, ARG) BASE ## ARG + +// metamacro_at expansions +#define metamacro_at0(...) metamacro_head(__VA_ARGS__) +#define metamacro_at1(_0, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at2(_0, _1, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at3(_0, _1, _2, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at4(_0, _1, _2, _3, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at5(_0, _1, _2, _3, _4, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at6(_0, _1, _2, _3, _4, _5, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at7(_0, _1, _2, _3, _4, _5, _6, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at8(_0, _1, _2, _3, _4, _5, _6, _7, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at9(_0, _1, _2, _3, _4, _5, _6, _7, _8, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at10(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at11(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at12(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at13(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at14(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at15(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at16(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at17(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at18(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at19(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, ...) metamacro_head(__VA_ARGS__) +#define metamacro_at20(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, ...) metamacro_head(__VA_ARGS__) + +// metamacro_foreach_cxt expansions +#define metamacro_foreach_cxt0(MACRO, SEP, CONTEXT) +#define metamacro_foreach_cxt1(MACRO, SEP, CONTEXT, _0) MACRO(0, CONTEXT, _0) + +#define metamacro_foreach_cxt2(MACRO, SEP, CONTEXT, _0, _1) \ + metamacro_foreach_cxt1(MACRO, SEP, CONTEXT, _0) \ + SEP \ + MACRO(1, CONTEXT, _1) + +#define metamacro_foreach_cxt3(MACRO, SEP, CONTEXT, _0, _1, _2) \ + metamacro_foreach_cxt2(MACRO, SEP, CONTEXT, _0, _1) \ + SEP \ + MACRO(2, CONTEXT, _2) + +#define metamacro_foreach_cxt4(MACRO, SEP, CONTEXT, _0, _1, _2, _3) \ + metamacro_foreach_cxt3(MACRO, SEP, CONTEXT, _0, _1, _2) \ + SEP \ + MACRO(3, CONTEXT, _3) + +#define metamacro_foreach_cxt5(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4) \ + metamacro_foreach_cxt4(MACRO, SEP, CONTEXT, _0, _1, _2, _3) \ + SEP \ + MACRO(4, CONTEXT, _4) + +#define metamacro_foreach_cxt6(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5) \ + metamacro_foreach_cxt5(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4) \ + SEP \ + MACRO(5, CONTEXT, _5) + +#define metamacro_foreach_cxt7(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6) \ + metamacro_foreach_cxt6(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5) \ + SEP \ + MACRO(6, CONTEXT, _6) + +#define metamacro_foreach_cxt8(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7) \ + metamacro_foreach_cxt7(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6) \ + SEP \ + MACRO(7, CONTEXT, _7) + +#define metamacro_foreach_cxt9(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8) \ + metamacro_foreach_cxt8(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7) \ + SEP \ + MACRO(8, CONTEXT, _8) + +#define metamacro_foreach_cxt10(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9) \ + metamacro_foreach_cxt9(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8) \ + SEP \ + MACRO(9, CONTEXT, _9) + +#define metamacro_foreach_cxt11(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) \ + metamacro_foreach_cxt10(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9) \ + SEP \ + MACRO(10, CONTEXT, _10) + +#define metamacro_foreach_cxt12(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) \ + metamacro_foreach_cxt11(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) \ + SEP \ + MACRO(11, CONTEXT, _11) + +#define metamacro_foreach_cxt13(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) \ + metamacro_foreach_cxt12(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) \ + SEP \ + MACRO(12, CONTEXT, _12) + +#define metamacro_foreach_cxt14(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) \ + metamacro_foreach_cxt13(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) \ + SEP \ + MACRO(13, CONTEXT, _13) + +#define metamacro_foreach_cxt15(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) \ + metamacro_foreach_cxt14(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) \ + SEP \ + MACRO(14, CONTEXT, _14) + +#define metamacro_foreach_cxt16(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) \ + metamacro_foreach_cxt15(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) \ + SEP \ + MACRO(15, CONTEXT, _15) + +#define metamacro_foreach_cxt17(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16) \ + metamacro_foreach_cxt16(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) \ + SEP \ + MACRO(16, CONTEXT, _16) + +#define metamacro_foreach_cxt18(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17) \ + metamacro_foreach_cxt17(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16) \ + SEP \ + MACRO(17, CONTEXT, _17) + +#define metamacro_foreach_cxt19(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18) \ + metamacro_foreach_cxt18(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17) \ + SEP \ + MACRO(18, CONTEXT, _18) + +#define metamacro_foreach_cxt20(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19) \ + metamacro_foreach_cxt19(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18) \ + SEP \ + MACRO(19, CONTEXT, _19) + +// metamacro_foreach_cxt_recursive expansions +#define metamacro_foreach_cxt_recursive0(MACRO, SEP, CONTEXT) +#define metamacro_foreach_cxt_recursive1(MACRO, SEP, CONTEXT, _0) MACRO(0, CONTEXT, _0) + +#define metamacro_foreach_cxt_recursive2(MACRO, SEP, CONTEXT, _0, _1) \ + metamacro_foreach_cxt_recursive1(MACRO, SEP, CONTEXT, _0) \ + SEP \ + MACRO(1, CONTEXT, _1) + +#define metamacro_foreach_cxt_recursive3(MACRO, SEP, CONTEXT, _0, _1, _2) \ + metamacro_foreach_cxt_recursive2(MACRO, SEP, CONTEXT, _0, _1) \ + SEP \ + MACRO(2, CONTEXT, _2) + +#define metamacro_foreach_cxt_recursive4(MACRO, SEP, CONTEXT, _0, _1, _2, _3) \ + metamacro_foreach_cxt_recursive3(MACRO, SEP, CONTEXT, _0, _1, _2) \ + SEP \ + MACRO(3, CONTEXT, _3) + +#define metamacro_foreach_cxt_recursive5(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4) \ + metamacro_foreach_cxt_recursive4(MACRO, SEP, CONTEXT, _0, _1, _2, _3) \ + SEP \ + MACRO(4, CONTEXT, _4) + +#define metamacro_foreach_cxt_recursive6(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5) \ + metamacro_foreach_cxt_recursive5(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4) \ + SEP \ + MACRO(5, CONTEXT, _5) + +#define metamacro_foreach_cxt_recursive7(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6) \ + metamacro_foreach_cxt_recursive6(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5) \ + SEP \ + MACRO(6, CONTEXT, _6) + +#define metamacro_foreach_cxt_recursive8(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7) \ + metamacro_foreach_cxt_recursive7(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6) \ + SEP \ + MACRO(7, CONTEXT, _7) + +#define metamacro_foreach_cxt_recursive9(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8) \ + metamacro_foreach_cxt_recursive8(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7) \ + SEP \ + MACRO(8, CONTEXT, _8) + +#define metamacro_foreach_cxt_recursive10(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9) \ + metamacro_foreach_cxt_recursive9(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8) \ + SEP \ + MACRO(9, CONTEXT, _9) + +#define metamacro_foreach_cxt_recursive11(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) \ + metamacro_foreach_cxt_recursive10(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9) \ + SEP \ + MACRO(10, CONTEXT, _10) + +#define metamacro_foreach_cxt_recursive12(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) \ + metamacro_foreach_cxt_recursive11(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) \ + SEP \ + MACRO(11, CONTEXT, _11) + +#define metamacro_foreach_cxt_recursive13(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) \ + metamacro_foreach_cxt_recursive12(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) \ + SEP \ + MACRO(12, CONTEXT, _12) + +#define metamacro_foreach_cxt_recursive14(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) \ + metamacro_foreach_cxt_recursive13(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) \ + SEP \ + MACRO(13, CONTEXT, _13) + +#define metamacro_foreach_cxt_recursive15(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) \ + metamacro_foreach_cxt_recursive14(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) \ + SEP \ + MACRO(14, CONTEXT, _14) + +#define metamacro_foreach_cxt_recursive16(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) \ + metamacro_foreach_cxt_recursive15(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) \ + SEP \ + MACRO(15, CONTEXT, _15) + +#define metamacro_foreach_cxt_recursive17(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16) \ + metamacro_foreach_cxt_recursive16(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) \ + SEP \ + MACRO(16, CONTEXT, _16) + +#define metamacro_foreach_cxt_recursive18(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17) \ + metamacro_foreach_cxt_recursive17(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16) \ + SEP \ + MACRO(17, CONTEXT, _17) + +#define metamacro_foreach_cxt_recursive19(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18) \ + metamacro_foreach_cxt_recursive18(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17) \ + SEP \ + MACRO(18, CONTEXT, _18) + +#define metamacro_foreach_cxt_recursive20(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19) \ + metamacro_foreach_cxt_recursive19(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18) \ + SEP \ + MACRO(19, CONTEXT, _19) + +// metamacro_for_cxt expansions +#define metamacro_for_cxt0(MACRO, SEP, CONTEXT) +#define metamacro_for_cxt1(MACRO, SEP, CONTEXT) MACRO(0, CONTEXT) + +#define metamacro_for_cxt2(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt1(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(1, CONTEXT) + +#define metamacro_for_cxt3(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt2(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(2, CONTEXT) + +#define metamacro_for_cxt4(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt3(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(3, CONTEXT) + +#define metamacro_for_cxt5(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt4(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(4, CONTEXT) + +#define metamacro_for_cxt6(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt5(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(5, CONTEXT) + +#define metamacro_for_cxt7(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt6(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(6, CONTEXT) + +#define metamacro_for_cxt8(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt7(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(7, CONTEXT) + +#define metamacro_for_cxt9(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt8(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(8, CONTEXT) + +#define metamacro_for_cxt10(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt9(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(9, CONTEXT) + +#define metamacro_for_cxt11(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt10(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(10, CONTEXT) + +#define metamacro_for_cxt12(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt11(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(11, CONTEXT) + +#define metamacro_for_cxt13(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt12(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(12, CONTEXT) + +#define metamacro_for_cxt14(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt13(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(13, CONTEXT) + +#define metamacro_for_cxt15(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt14(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(14, CONTEXT) + +#define metamacro_for_cxt16(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt15(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(15, CONTEXT) + +#define metamacro_for_cxt17(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt16(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(16, CONTEXT) + +#define metamacro_for_cxt18(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt17(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(17, CONTEXT) + +#define metamacro_for_cxt19(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt18(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(18, CONTEXT) + +#define metamacro_for_cxt20(MACRO, SEP, CONTEXT) \ + metamacro_for_cxt19(MACRO, SEP, CONTEXT) \ + SEP \ + MACRO(19, CONTEXT) + +// metamacro_if_eq expansions +#define metamacro_if_eq0(VALUE) \ + metamacro_concat(metamacro_if_eq0_, VALUE) + +#define metamacro_if_eq0_0(...) __VA_ARGS__ metamacro_consume_ +#define metamacro_if_eq0_1(...) metamacro_expand_ +#define metamacro_if_eq0_2(...) metamacro_expand_ +#define metamacro_if_eq0_3(...) metamacro_expand_ +#define metamacro_if_eq0_4(...) metamacro_expand_ +#define metamacro_if_eq0_5(...) metamacro_expand_ +#define metamacro_if_eq0_6(...) metamacro_expand_ +#define metamacro_if_eq0_7(...) metamacro_expand_ +#define metamacro_if_eq0_8(...) metamacro_expand_ +#define metamacro_if_eq0_9(...) metamacro_expand_ +#define metamacro_if_eq0_10(...) metamacro_expand_ +#define metamacro_if_eq0_11(...) metamacro_expand_ +#define metamacro_if_eq0_12(...) metamacro_expand_ +#define metamacro_if_eq0_13(...) metamacro_expand_ +#define metamacro_if_eq0_14(...) metamacro_expand_ +#define metamacro_if_eq0_15(...) metamacro_expand_ +#define metamacro_if_eq0_16(...) metamacro_expand_ +#define metamacro_if_eq0_17(...) metamacro_expand_ +#define metamacro_if_eq0_18(...) metamacro_expand_ +#define metamacro_if_eq0_19(...) metamacro_expand_ +#define metamacro_if_eq0_20(...) metamacro_expand_ + +#define metamacro_if_eq1(VALUE) metamacro_if_eq0(metamacro_dec(VALUE)) +#define metamacro_if_eq2(VALUE) metamacro_if_eq1(metamacro_dec(VALUE)) +#define metamacro_if_eq3(VALUE) metamacro_if_eq2(metamacro_dec(VALUE)) +#define metamacro_if_eq4(VALUE) metamacro_if_eq3(metamacro_dec(VALUE)) +#define metamacro_if_eq5(VALUE) metamacro_if_eq4(metamacro_dec(VALUE)) +#define metamacro_if_eq6(VALUE) metamacro_if_eq5(metamacro_dec(VALUE)) +#define metamacro_if_eq7(VALUE) metamacro_if_eq6(metamacro_dec(VALUE)) +#define metamacro_if_eq8(VALUE) metamacro_if_eq7(metamacro_dec(VALUE)) +#define metamacro_if_eq9(VALUE) metamacro_if_eq8(metamacro_dec(VALUE)) +#define metamacro_if_eq10(VALUE) metamacro_if_eq9(metamacro_dec(VALUE)) +#define metamacro_if_eq11(VALUE) metamacro_if_eq10(metamacro_dec(VALUE)) +#define metamacro_if_eq12(VALUE) metamacro_if_eq11(metamacro_dec(VALUE)) +#define metamacro_if_eq13(VALUE) metamacro_if_eq12(metamacro_dec(VALUE)) +#define metamacro_if_eq14(VALUE) metamacro_if_eq13(metamacro_dec(VALUE)) +#define metamacro_if_eq15(VALUE) metamacro_if_eq14(metamacro_dec(VALUE)) +#define metamacro_if_eq16(VALUE) metamacro_if_eq15(metamacro_dec(VALUE)) +#define metamacro_if_eq17(VALUE) metamacro_if_eq16(metamacro_dec(VALUE)) +#define metamacro_if_eq18(VALUE) metamacro_if_eq17(metamacro_dec(VALUE)) +#define metamacro_if_eq19(VALUE) metamacro_if_eq18(metamacro_dec(VALUE)) +#define metamacro_if_eq20(VALUE) metamacro_if_eq19(metamacro_dec(VALUE)) + +// metamacro_if_eq_recursive expansions +#define metamacro_if_eq_recursive0(VALUE) \ + metamacro_concat(metamacro_if_eq_recursive0_, VALUE) + +#define metamacro_if_eq_recursive0_0(...) __VA_ARGS__ metamacro_consume_ +#define metamacro_if_eq_recursive0_1(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_2(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_3(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_4(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_5(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_6(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_7(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_8(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_9(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_10(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_11(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_12(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_13(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_14(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_15(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_16(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_17(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_18(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_19(...) metamacro_expand_ +#define metamacro_if_eq_recursive0_20(...) metamacro_expand_ + +#define metamacro_if_eq_recursive1(VALUE) metamacro_if_eq_recursive0(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive2(VALUE) metamacro_if_eq_recursive1(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive3(VALUE) metamacro_if_eq_recursive2(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive4(VALUE) metamacro_if_eq_recursive3(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive5(VALUE) metamacro_if_eq_recursive4(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive6(VALUE) metamacro_if_eq_recursive5(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive7(VALUE) metamacro_if_eq_recursive6(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive8(VALUE) metamacro_if_eq_recursive7(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive9(VALUE) metamacro_if_eq_recursive8(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive10(VALUE) metamacro_if_eq_recursive9(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive11(VALUE) metamacro_if_eq_recursive10(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive12(VALUE) metamacro_if_eq_recursive11(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive13(VALUE) metamacro_if_eq_recursive12(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive14(VALUE) metamacro_if_eq_recursive13(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive15(VALUE) metamacro_if_eq_recursive14(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive16(VALUE) metamacro_if_eq_recursive15(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive17(VALUE) metamacro_if_eq_recursive16(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive18(VALUE) metamacro_if_eq_recursive17(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive19(VALUE) metamacro_if_eq_recursive18(metamacro_dec(VALUE)) +#define metamacro_if_eq_recursive20(VALUE) metamacro_if_eq_recursive19(metamacro_dec(VALUE)) + +// metamacro_take expansions +#define metamacro_take0(...) +#define metamacro_take1(...) metamacro_head(__VA_ARGS__) +#define metamacro_take2(...) metamacro_head(__VA_ARGS__), metamacro_take1(metamacro_tail(__VA_ARGS__)) +#define metamacro_take3(...) metamacro_head(__VA_ARGS__), metamacro_take2(metamacro_tail(__VA_ARGS__)) +#define metamacro_take4(...) metamacro_head(__VA_ARGS__), metamacro_take3(metamacro_tail(__VA_ARGS__)) +#define metamacro_take5(...) metamacro_head(__VA_ARGS__), metamacro_take4(metamacro_tail(__VA_ARGS__)) +#define metamacro_take6(...) metamacro_head(__VA_ARGS__), metamacro_take5(metamacro_tail(__VA_ARGS__)) +#define metamacro_take7(...) metamacro_head(__VA_ARGS__), metamacro_take6(metamacro_tail(__VA_ARGS__)) +#define metamacro_take8(...) metamacro_head(__VA_ARGS__), metamacro_take7(metamacro_tail(__VA_ARGS__)) +#define metamacro_take9(...) metamacro_head(__VA_ARGS__), metamacro_take8(metamacro_tail(__VA_ARGS__)) +#define metamacro_take10(...) metamacro_head(__VA_ARGS__), metamacro_take9(metamacro_tail(__VA_ARGS__)) +#define metamacro_take11(...) metamacro_head(__VA_ARGS__), metamacro_take10(metamacro_tail(__VA_ARGS__)) +#define metamacro_take12(...) metamacro_head(__VA_ARGS__), metamacro_take11(metamacro_tail(__VA_ARGS__)) +#define metamacro_take13(...) metamacro_head(__VA_ARGS__), metamacro_take12(metamacro_tail(__VA_ARGS__)) +#define metamacro_take14(...) metamacro_head(__VA_ARGS__), metamacro_take13(metamacro_tail(__VA_ARGS__)) +#define metamacro_take15(...) metamacro_head(__VA_ARGS__), metamacro_take14(metamacro_tail(__VA_ARGS__)) +#define metamacro_take16(...) metamacro_head(__VA_ARGS__), metamacro_take15(metamacro_tail(__VA_ARGS__)) +#define metamacro_take17(...) metamacro_head(__VA_ARGS__), metamacro_take16(metamacro_tail(__VA_ARGS__)) +#define metamacro_take18(...) metamacro_head(__VA_ARGS__), metamacro_take17(metamacro_tail(__VA_ARGS__)) +#define metamacro_take19(...) metamacro_head(__VA_ARGS__), metamacro_take18(metamacro_tail(__VA_ARGS__)) +#define metamacro_take20(...) metamacro_head(__VA_ARGS__), metamacro_take19(metamacro_tail(__VA_ARGS__)) + +// metamacro_drop expansions +#define metamacro_drop0(...) __VA_ARGS__ +#define metamacro_drop1(...) metamacro_tail(__VA_ARGS__) +#define metamacro_drop2(...) metamacro_drop1(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop3(...) metamacro_drop2(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop4(...) metamacro_drop3(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop5(...) metamacro_drop4(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop6(...) metamacro_drop5(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop7(...) metamacro_drop6(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop8(...) metamacro_drop7(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop9(...) metamacro_drop8(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop10(...) metamacro_drop9(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop11(...) metamacro_drop10(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop12(...) metamacro_drop11(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop13(...) metamacro_drop12(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop14(...) metamacro_drop13(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop15(...) metamacro_drop14(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop16(...) metamacro_drop15(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop17(...) metamacro_drop16(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop18(...) metamacro_drop17(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop19(...) metamacro_drop18(metamacro_tail(__VA_ARGS__)) +#define metamacro_drop20(...) metamacro_drop19(metamacro_tail(__VA_ARGS__)) + +#endif diff --git a/FScriptIBPlugin/English.lproj/FScriptIBPluginInspector.xib b/FScriptIBPlugin/English.lproj/FScriptIBPluginInspector.xib new file mode 100644 index 0000000..d4f4891 --- /dev/null +++ b/FScriptIBPlugin/English.lproj/FScriptIBPluginInspector.xib @@ -0,0 +1,1048 @@ + + + + 1060 + 14A379a + 941 + 1343.13 + 755.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 941 + + + YES + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + IBInspector + + + FirstResponder + + + NSApplication + + + + 256 + + YES + + + 268 + {{157, 179}, {15, 22}} + + YES + + 67895328 + 131072 + + .HelveticaNeueDeskInterface-Regular + 11 + 3088 + + + 22 + 10000 + 1 + YES + YES + + NO + + + + 268 + {{84, 273}, {180, 19}} + + YES + + -1804599231 + -1874721792 + + + + YES + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + textColor + + 3 + MAA + + + + NO + 1 + + + + 268 + {{81, 206}, {120, 18}} + + YES + + 67108864 + 131072 + Switch Long Name + + + 1211912448 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + NO + + + + 268 + {{84, 165}, {67, 14}} + + YES + + 67108864 + 138412032 + Minimum + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + + + NO + 1 + + + + 268 + {{175, 226}, {57, 18}} + + YES + + 67108864 + 131072 + Switch + + + 1211912448 + 2 + + + + + 200 + 25 + + NO + + + + 268 + {{81, 246}, {186, 22}} + + YES + + -2076180416 + 133120 + + + 109199360 + 1 + + LucidaGrande + 11 + 16 + + + + 400 + 75 + + + Item1 + + 1048576 + 2147483647 + 1 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + + Item2 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Item3 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 3 + YES + YES + 1 + + NO + + + + 268 + {{8, 183}, {70, 14}} + + YES + + 67108928 + 4326400 + Numbers + + .HelveticaNeueDeskInterface-Bold + 11 + 3344 + + + + + + NO + 1 + + + + 268 + {{178, 165}, {67, 14}} + + YES + + 67108864 + 138412032 + Maximum + + + + + + NO + 1 + + + + 268 + {{81, 226}, {57, 18}} + + YES + + 67108864 + 131072 + Switch + + + 1211912448 + 2 + + + + + 200 + 25 + + NO + + + + 268 + {{84, 181}, {67, 19}} + + YES + + -1804599231 + -2143288320 + + + + + YES + + YES + allowsFloats + attributedStringForZero + formatterBehavior + groupingSeparator + locale + maximum + minimum + negativeFormat + positiveFormat + usesGroupingSeparator + + + YES + + + 0 + + YES + + YES + + + YES + + + + + , + + + + + + -0 + 0 + + + + 0 + -0 + + + + + + + + NaN + + + + + + . + , + NO + NO + YES + + + YES + + + + NO + 1 + + + + 268 + {{178, 181}, {67, 19}} + + YES + + -1804599231 + -2143288320 + + + + + YES + + YES + allowsFloats + attributedStringForZero + formatterBehavior + groupingSeparator + locale + maximum + minimum + negativeFormat + positiveFormat + usesGroupingSeparator + + + YES + + + 0 + + + + , + + + + -0 + 0 + + + + 0 + -0 + + + + + + + + NaN + + + + + + . + , + NO + NO + YES + + + YES + + + + NO + 1 + + + + 268 + {{8, 275}, {70, 14}} + + YES + + 67108928 + 4326400 + Label + + + + + + NO + 1 + + + + 268 + + YES + + YES + NSColor pasteboard type + + + {{84, 130}, {86, 27}} + + YES + NO + YES + + 1 + MC4wNTgxMzA0OTkgMC4wNTU1NDE4OTkgMQA + + + + + 268 + {{251, 179}, {15, 22}} + + YES + + 67895328 + 131072 + + + 22 + 10000 + 1 + YES + YES + + NO + + + {272, 296} + NSView + NSResponder + + + + + YES + + + inspectorView + + + + 36 + + + + + YES + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 21 + + + YES + + + + + + + + + + + + + + + + + Inspector View + + + 51 + + + YES + + + + Stepper-2 + + + 52 + + + YES + + + + + + 53 + + + YES + + + + + + 54 + + + YES + + + + NSTextField1 + + + 55 + + + YES + + + + + + 56 + + + YES + + + + + + 57 + + + YES + + + + + + 58 + + + YES + + + + NSTextField11 + + + 59 + + + YES + + + + + + 60 + + + YES + + + + NSTextField + + + 61 + + + YES + + + + NSTextField2 + + + 62 + + + YES + + + + + + 63 + + + + + 64 + + + YES + + + + Stepper-3 + + + 65 + + + Stepper Cell-3 + + + 66 + + + + + 67 + + + YES + + + + Text Field Cell-5 + + + 68 + + + + + 69 + + + YES + + + + Text Field Cell-1 + + + 70 + + + + + 71 + + + + + 72 + + + Text Field Cell-3 + + + 73 + + + + + 74 + + + YES + + + + + + 75 + + + YES + + + + + + + + 76 + + + + + 77 + + + + + 78 + + + + + 79 + + + + + 80 + + + Text Field Cell-6 + + + 81 + + + + + 82 + + + + + 83 + + + Stepper Cell-2 + + + + + YES + + YES + -3.IBPluginDependency + -3.ImportedFromIB2 + 21.GUserGuides + 21.IBPluginDependency + 21.IBUserGuides + 21.ImportedFromIB2 + 21.WindowOrigin + 21.editorWindowContentRectSynchronizationRect + 51.IBPluginDependency + 51.Palette + 52.IBPluginDependency + 53.IBPluginDependency + 54.IBPluginDependency + 54.ImportedFromIB2 + 55.IBPluginDependency + 56.IBPluginDependency + 57.IBPluginDependency + 58.IBPluginDependency + 58.ImportedFromIB2 + 59.IBPluginDependency + 60.IBPluginDependency + 60.ImportedFromIB2 + 61.IBPluginDependency + 61.ImportedFromIB2 + 62.IBPluginDependency + 63.IBPluginDependency + 64.IBPluginDependency + 64.Palette + 65.IBPluginDependency + 66.IBPluginDependency + 67.IBPluginDependency + 68.IBPluginDependency + 69.IBPluginDependency + 70.IBPluginDependency + 71.IBPluginDependency + 72.IBPluginDependency + 73.IBPluginDependency + 74.IBPluginDependency + 75.IBPluginDependency + 75.editorWindowContentRectSynchronizationRect + 76.IBPluginDependency + 77.IBPluginDependency + 78.IBPluginDependency + 79.IBPluginDependency + 80.IBPluginDependency + 81.IBPluginDependency + 82.IBPluginDependency + 83.IBPluginDependency + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + YES + + + 90 + 0 + + + + 227 + 0 + + + com.apple.InterfaceBuilder.CocoaPlugin + + YES + + + 84 + 0 + + + + 264 + 0 + + + + 178 + 0 + + + + 4 + 3 + + + + 8 + 0 + + + + 4 + 1 + + + + 170 + 0 + + + + {155, 478} + {{474, 671}, {272, 296}} + com.apple.InterfaceBuilder.CocoaPlugin + com.yourcompany.AppKitPalettes + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.yourcompany.AppKitPalettes + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{117, 885}, {186, 54}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + YES + + + YES + + + + + YES + + + YES + + + + 83 + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + + 3 + + YES + + YES + NSMenuCheckmark + NSMenuMixedState + NSSwitch + + + YES + {12, 12} + {10, 2} + {15, 15} + + + + diff --git a/FScriptIBPlugin/English.lproj/FScriptIBPluginLibrary.xib b/FScriptIBPlugin/English.lproj/FScriptIBPluginLibrary.xib new file mode 100644 index 0000000..5f06c33 --- /dev/null +++ b/FScriptIBPlugin/English.lproj/FScriptIBPluginLibrary.xib @@ -0,0 +1,896 @@ + + + + 1050 + 14A379a + 941 + 1343.13 + 755.00 + + YES + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.IBSDKPlugin + org.fscript.FScriptIBPluginFramework + + + YES + 941 + 941 + 2.1 + + + + YES + + + YES + com.apple.InterfaceBuilder.IBSDKPlugin + com.apple.InterfaceBuilder.CocoaPlugin + org.fscript.FScriptIBPluginFramework + + + PluginDependencyRecalculationVersion + + + + YES + + FScriptIBPlugin + + + FirstResponder + + + NSApplication + + + + 268 + + YES + + + 301 + + YES + + + 274 + + YES + + + 274 + + YES + + {88, 66} + + NO + + + + {{2, 14}, {88, 66}} + + + + + NO + + + + YES + + 0 + + sys + + + NO + + + + + + {{20, 198}, {90, 80}} + + 53C781D8-3B5C-4138-B642-034072DEADC0 + FSInterpreter View + 53C781D8-3B5C-4138-B642-034072DEADC0 + Gives access to an F-Script environment through a command line interface. + + The FSInterpreterView class is a view object that contains and provides access to a complete F-Script environment through a command line interface similar to the one found in the F-Script application. + + YES + + YES + NSFont + NSParagraphStyle + + + YES + + LucidaGrande + 12 + 16 + + + 3 + 36 + + YES + + 1 + + + + + + + + + + + 0 + NO + + + + 274 + + YES + + + 274 + + YES + + {233, 141} + + NO + + + + {{136, 137}, {233, 141}} + + + + + NO + + + + YES + + 0 + + sys + + + NO + + + + + + + 256 + + YES + + YES + Apple PDF pasteboard type + Apple PICT pasteboard type + Apple PNG pasteboard type + NSFilenamesPboardType + NeXT Encapsulated PostScript v1.2 pasteboard type + NeXT TIFF v4.0 pasteboard type + + + {{196, 93}, {112, 30}} + + YES + + 536870912 + 33554432 + + NSImage + FScriptMenuItem + + 0 + 0 + 1 + NO + + NO + YES + + + + 268 + + YES + + + 274 + + YES + + YES + Apple PDF pasteboard type + Apple PICT pasteboard type + Apple PNG pasteboard type + NSFilenamesPboardType + NeXT Encapsulated PostScript v1.2 pasteboard type + NeXT TIFF v4.0 pasteboard type + + + {{2, 32}, {109, 30}} + + YES + + 603979776 + 33554432 + + + .HelveticaNeueDeskInterface-Regular + 13 + 1040 + + 0 + 0 + 1 + NO + + NO + YES + + + {{20, 26}, {113, 94}} + + F3DD5E3B-B08A-4E12-924A-1A8E17497AC6 + F-Script Menu Item + F3DD5E3B-B08A-4E12-924A-1A8E17497AC6 + Defines an F-Script menu item and its complete self-contained F-Script environment. + + FScriptMenuItem, a subclass of NSMenuItem, lets you easily embed F-Script into an application. An F-Script menu item contains and gives access to a complete F-Script environment. + + + + + + + + + 2 + NO + + + {379, 305} + NSView + + + F-Script + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + + F-Script + + YES + + + Show Console + + 2147483647 + + + + + + Open Object Browser + + 2147483647 + + + + + + Preferences... + + 2147483647 + + + + + + + + + + YES + + + draggedView + + + + 35 + + + + openObjectBrowser: + + + + 42 + + + + showConsole: + + + + 43 + + + + showPreferencePanel: + + + + 44 + + + + draggedView + + + + 50 + + + + representedObject + + + + 53 + + + + fsMenuItemView + + + + 54 + + + + + YES + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 7 + + + YES + + + + + + + Library Objects + + + 18 + + + YES + + + + + + 32 + + + + + 34 + + + + + 45 + + + YES + + + + + + 46 + + + + + 47 + + + YES + + + + + + 48 + + + YES + + + + + + 49 + + + + + 37 + + + YES + + + + F-Script Menu Item (F-Script) + + + 38 + + + YES + + + + + + + + 41 + + + + + 40 + + + + + 39 + + + + + + + YES + + YES + -3.IBPluginDependency + 18.IBPluginDependency + 18.notes + 18.showNotes + 32.IBPluginDependency + 34.IBPluginDependency + 37.CustomClassName + 37.IBEditorWindowLastContentRect + 37.IBPluginDependency + 37.ImportedFromIB2 + 37.editorWindowContentRectSynchronizationRect + 38.IBEditorWindowLastContentRect + 38.IBPluginDependency + 38.ImportedFromIB2 + 38.editorWindowContentRectSynchronizationRect + 39.IBPluginDependency + 39.ImportedFromIB2 + 40.IBPluginDependency + 40.ImportedFromIB2 + 41.IBPluginDependency + 41.ImportedFromIB2 + 45.IBPluginDependency + 45.ImportedFromIB2 + 46.IBPluginDependency + 47.IBPluginDependency + 48.IBPluginDependency + 48.ImportedFromIB2 + 49.IBPluginDependency + 7.IBEditorWindowLastContentRect + 7.IBPluginDependency + 7.WindowOrigin + 7.editorWindowContentRectSynchronizationRect + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.IBSDKPlugin + + SWYgeW91IHdvdWxkIGxpa2UgeW91ciB2aWV3IHRvIGFuaW1hdGUgZnJvbSBhIHNtYWxsLCBpY29uaWMg +cmVwcmVzZW50YXRpb24sIHRvIGEgZmluYWwgcmVwcmVzZW50YXRpb24sIGNvbm5lY3QgdGhpcyB2aWV3 +J3MgJ2RyYWdnZWRWaWV3JyBvdXRsZXQgYnkgY29udHJvbCBjbGlja2luZyBvbiBpdC4KCklmIHRoZSBv +YmplY3QgeW91IHdvdWxkIGxpa2UgZGVwb3NpdGVkIGFmdGVyIHRoZSBkcmFnLCBpcyBzb21ldGhpbmcg +b3RoZXIgdGhhbiB0aGlzIHZpZXcncyBzdWJ2aWV3LCBvciBkcmFnZ2VkVmlldywgdGhlbiB5b3Ugc2hv +dWxkIGNvbm5lY3QgdGhlIHJlcHJlc2VudGVkT2JqZWN0IG91dGxldCBvZiB0aGlzIHZpZXcgdG8gYW4g +b2JqZWN0IHRvIGRlcG9zaXQuA + + YES + + + YES + + + + + org.fscript.FScriptIBPluginFramework + org.fscript.FScriptIBPluginFramework + FScriptMenuItem + {{139, 652}, {128, 128}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{0, 856}, {128, 128}} + {{0, 921}, {198, 63}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{63, 885}, {198, 63}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.IBSDKPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + {{252, 573}, {379, 305}} + com.apple.InterfaceBuilder.CocoaPlugin + {763, 261} + {{523, 283}, {379, 305}} + + + + YES + + + YES + + + + + YES + + + YES + + + + 54 + + + + YES + + FSInterpreterView + NSView + + IBProjectSource + FScriptFramework/FSInterpreterView.h + + + + FSInterpreterView + NSView + + YES + + YES + object1 + object2 + object3 + object4 + object5 + object6 + object7 + object8 + object9 + + + YES + id + id + id + id + id + id + id + id + id + + + + YES + + YES + object1 + object2 + object3 + object4 + object5 + object6 + object7 + object8 + object9 + + + YES + + object1 + id + + + object2 + id + + + object3 + id + + + object4 + id + + + object5 + id + + + object6 + id + + + object7 + id + + + object8 + id + + + object9 + id + + + + + IBProjectSource + FScriptFramework/FSInterpreterViewIBHeader.h + + + + FSInterpreterView + + IBProjectSource + FScriptFramework/FSInterpreterViewPrivate.h + + + + FScriptIBPlugin + IBPlugin + + IBProjectSource + FScriptIBPlugin/FScriptIBPlugin.h + + + + FScriptMenuItem + NSMenuItem + + YES + + YES + openObjectBrowser: + showConsole: + showPreferencePanel: + updatePreference: + + + YES + id + id + id + id + + + + YES + + YES + openObjectBrowser: + showConsole: + showPreferencePanel: + updatePreference: + + + YES + + openObjectBrowser: + id + + + showConsole: + id + + + showPreferencePanel: + id + + + updatePreference: + id + + + + + YES + + YES + fontSizeUI + interpreterView + + + YES + NSTextField + FSInterpreterView + + + + YES + + YES + fontSizeUI + interpreterView + + + YES + + fontSizeUI + NSTextField + + + interpreterView + FSInterpreterView + + + + + IBProjectSource + FScriptFramework/FScriptMenuItem.h + + + + FScriptMenuItem + NSMenuItem + + IBUserSource + + + + + NSObject + + IBProjectSource + FScriptFramework/FSNSNumber.h + + + + NSObject + + IBProjectSource + FScriptFramework/FSNSObject.h + + + + NSObject + + IBProjectSource + FScriptFramework/FSNSObjectPrivate.h + + + + NSObject + + IBProjectSource + JGAdditions/FSKVCoding.h + + + + NSObject + + IBProjectSource + JGAdditions/JGType.h + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + ../../FScript.xcodeproj + 3 + + YES + + YES + FScriptMenuItem + NSMenuCheckmark + NSMenuMixedState + + + YES + {128, 128} + {12, 12} + {10, 2} + + + + diff --git a/JGAdditions/FSObjectBrowserToolbar.m b/JGAdditions/FSObjectBrowserToolbar.m index a0520f3..749a4a1 100644 --- a/JGAdditions/FSObjectBrowserToolbar.m +++ b/JGAdditions/FSObjectBrowserToolbar.m @@ -247,7 +247,7 @@ - (NSArray *) toolbarDefaultItemIdentifiers:(NSToolbar *) toolbar // Required delegate method Returns the ordered list of items to be shown in the toolbar by default // If during the toolbar's initialization, no overriding values are found in the user defaults, or if the // user chooses to revert to the default items self set will be used - return [NSArray arrayWithObjects: @"Workspace", @"Classes", @"Select View", @"Name", @"Inspect", @"Browse", @"Refresh", @"Filter", nil]; + return [NSArray arrayWithObjects: @"Filter", @"Workspace", @"Classes", @"Select View", @"Name", @"Inspect", @"Browse", @"Refresh", nil]; } - (NSArray *) toolbarAllowedItemIdentifiers: (NSToolbar *) toolbar