Files
David Richardson dc6bebd7eb AppKit: Add magnification support to CPScrollView and zoom controls to TextEditor
CPScrollView previously lacked magnification support, preventing document
zooming and leaving view scaling infrastructure without practical test coverage.
Additionally, views resetting to a 1.0 scale retained stale CSS transform properties,
and legacy cibs compiled via nib2cib omitted explicit magnification limits,
breaking zoom functionality in older archives.

* AppKit/CPScrollView.j:
  - Implement magnification methods and properties (`magnification`, `setMagnification:`, `setMagnification:centeredAtPoint:`, `allowsMagnification`, `minMagnification`, and `maxMagnification`) modelled on NSScrollView, with keyed archiving.
  - Scale clip view bounds and synchronize resizing document view widths.
  - Define standard Cocoa default limits (0.25 and 4.0) as named constants.
  - Implement robust decoding validation to assign default limits to unset or invalid archive values and reject non-positive magnification inputs, ensuring full compatibility with legacy cibs.

* AppKit/CPView.j:
  - Remove stale CSS scale styling when a view's scale factor returns to 1.0.

* Tests/AppKit/CPScrollViewTest.j:
  - Add comprehensive unit tests covering magnification scaling, archiving, and fallback decoding for unconfigured limits.

* Tests/Manual/TextEditor/DocumentWindowController.j:
  - Implement zoom action handlers (`zoomToLevel:`, `zoomToActualSize:`, `zoomIn:`, and `zoomOut:`) driven by menu item tag values.

* Tests/Manual/TextEditor/Resources/MainMenu.xib, MainMenu.cib:
  - Add View menu options for Actual Size, Zoom In, Zoom Out, and explicit Zoom Levels (25% to 200%).

* Tests/Manual/TextEditor/WORKLIST.md:
  - Mark zoom functionality as tested; log discovered scaling edge cases as open items.

CPScrollView and TextEditor now support robust document magnification from 25% to 200%, validating core view scaling mechanics.
2026-10-24 17:57:21 -06:00

719 lines
50 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="25408" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies>
<deployment version="101000" identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="25408"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
<connections>
<outlet property="delegate" destination="450" id="451"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<menu title="AMainMenu" systemMenu="main" id="29" userLabel="MainMenu">
<items>
<menuItem title="TextEdit by Cappuccino" id="56">
<menu key="submenu" title="TextEdit by Cappuccino" systemMenu="apple" id="57">
<items>
<menuItem title="About TextEdit by Cappuccino" id="58">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="orderFrontStandardAboutPanel:" target="-2" id="142"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="236">
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</menuItem>
<menuItem title="Settings…" keyEquivalent="," id="129"/>
</items>
</menu>
</menuItem>
<menuItem title="File" id="83">
<menu key="submenu" title="File" id="81">
<items>
<menuItem title="New" keyEquivalent="n" id="82">
<connections>
<action selector="newDocument:" target="-1" id="373"/>
</connections>
</menuItem>
<menuItem title="Open…" keyEquivalent="o" id="72">
<connections>
<action selector="openDocument:" target="-1" id="374"/>
</connections>
</menuItem>
<menuItem title="Open Recent" id="124">
<menu key="submenu" title="Open Recent" systemMenu="recentDocuments" id="125">
<items>
<menuItem title="Clear Menu" id="126">
<connections>
<action selector="clearRecentDocuments:" target="-1" id="127"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem isSeparatorItem="YES" id="79">
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</menuItem>
<menuItem title="Close" keyEquivalent="w" id="73">
<connections>
<action selector="performClose:" target="-1" id="193"/>
</connections>
</menuItem>
<menuItem title="Save" keyEquivalent="s" id="75">
<connections>
<action selector="saveDocument:" target="-1" id="362"/>
</connections>
</menuItem>
<menuItem title="Save As…" keyEquivalent="S" id="80">
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
<connections>
<action selector="saveDocumentAs:" target="-1" id="363"/>
</connections>
</menuItem>
<menuItem title="Revert to Saved" id="112">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="revertDocumentToSaved:" target="-1" id="364"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Edit" id="217">
<menu key="submenu" title="Edit" id="205">
<items>
<menuItem title="Undo" keyEquivalent="z" id="207">
<connections>
<action selector="undo:" target="-1" id="223"/>
</connections>
</menuItem>
<menuItem title="Redo" keyEquivalent="Z" id="215">
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
<connections>
<action selector="redo:" target="-1" id="231"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="206">
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</menuItem>
<menuItem title="Allows Undo" id="KpR-5r-W4E">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAllowsUndo:" target="-1" id="zMx-wC-uNv"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="cis-d4-OoI">
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</menuItem>
<menuItem title="Cut" keyEquivalent="x" id="199">
<connections>
<action selector="cut:" target="-1" id="228"/>
</connections>
</menuItem>
<menuItem title="Copy" keyEquivalent="c" id="197">
<connections>
<action selector="copy:" target="-1" id="224"/>
</connections>
</menuItem>
<menuItem title="Paste" keyEquivalent="v" id="203">
<connections>
<action selector="paste:" target="-1" id="226"/>
</connections>
</menuItem>
<menuItem title="Delete" id="202">
<connections>
<action selector="delete:" target="-1" id="235"/>
</connections>
</menuItem>
<menuItem title="Select All" keyEquivalent="a" id="198">
<connections>
<action selector="selectAll:" target="-1" id="232"/>
</connections>
</menuItem>
<menuItem title="Insert Lorem Ipsum" id="FbT-zG-li9">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="insertLoremIpsum:" target="-1" id="KPb-XT-4QY"/>
</connections>
</menuItem>
<menuItem title="Insert Table Example" id="z4w-XM-UpE">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="insertTableExample:" target="-1" id="Zlf-O9-Ry2"/>
</connections>
</menuItem>
<menuItem title="Insert Image…" id="Ew2-J6-C29">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="insertImage:" target="-1" id="DCs-g8-Xuw"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="214">
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</menuItem>
<menuItem title="Find" id="218">
<menu key="submenu" title="Find" id="220">
<items>
<menuItem title="Find…" tag="1" keyEquivalent="f" id="209">
<connections>
<action selector="performFindPanelAction:" target="-1" id="241"/>
</connections>
</menuItem>
<menuItem title="Find Next" tag="2" keyEquivalent="g" id="208"/>
<menuItem title="Find Previous" tag="3" keyEquivalent="G" id="213">
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
</menuItem>
<menuItem title="Use Selection for Find" tag="7" keyEquivalent="e" id="221"/>
<menuItem title="Jump to Selection" keyEquivalent="j" id="210">
<connections>
<action selector="centerSelectionInVisibleArea:" target="-1" id="245"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Spelling and Grammar" id="216">
<menu key="submenu" title="Spelling and Grammar" id="200">
<items>
<menuItem title="Show Spelling…" keyEquivalent=":" id="204">
<connections>
<action selector="showGuessPanel:" target="-1" id="230"/>
</connections>
</menuItem>
<menuItem title="Check Spelling" keyEquivalent=";" id="201">
<connections>
<action selector="checkSpelling:" target="-1" id="225"/>
</connections>
</menuItem>
<menuItem title="Check Spelling While Typing" id="219">
<connections>
<action selector="toggleContinuousSpellChecking:" target="-1" id="222"/>
</connections>
</menuItem>
<menuItem title="Check Grammar With Spelling" id="346">
<connections>
<action selector="toggleGrammarChecking:" target="-1" id="347"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Substitutions" id="348">
<menu key="submenu" title="Substitutions" id="349">
<items>
<menuItem title="Smart Copy/Paste" tag="1" keyEquivalent="f" id="350">
<connections>
<action selector="toggleSmartInsertDelete:" target="-1" id="355"/>
</connections>
</menuItem>
<menuItem title="Smart Quotes" tag="2" keyEquivalent="g" id="351">
<connections>
<action selector="toggleAutomaticQuoteSubstitution:" target="-1" id="356"/>
</connections>
</menuItem>
<menuItem title="Smart Links" tag="3" keyEquivalent="G" id="354">
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
<connections>
<action selector="toggleAutomaticLinkDetection:" target="-1" id="357"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Speech" id="211">
<menu key="submenu" title="Speech" id="212">
<items>
<menuItem title="Start Speaking" id="196">
<connections>
<action selector="startSpeaking:" target="-1" id="233"/>
</connections>
</menuItem>
<menuItem title="Stop Speaking" id="195">
<connections>
<action selector="stopSpeaking:" target="-1" id="227"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Format" id="06i-Fl-D14">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Format" id="PWN-UY-xAw">
<items>
<menuItem title="Font" id="SSb-i6-9Tr">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Font" systemMenu="font" id="8hg-Ov-BWS">
<items>
<menuItem title="Show Fonts" keyEquivalent="t" id="yXB-Ay-8JE">
<connections>
<action selector="orderFrontFontPanel:" target="ApX-Cr-rFJ" id="YNF-ax-2iu"/>
</connections>
</menuItem>
<menuItem title="Bold" tag="2" keyEquivalent="b" id="3mX-Nk-WZw">
<connections>
<action selector="addFontTrait:" target="ApX-Cr-rFJ" id="BPt-T0-UHW"/>
</connections>
</menuItem>
<menuItem title="Italic" tag="1" keyEquivalent="i" id="fVC-JC-fci">
<connections>
<action selector="addFontTrait:" target="ApX-Cr-rFJ" id="oOC-QA-N6B"/>
</connections>
</menuItem>
<menuItem title="Underline" keyEquivalent="u" id="Znk-RD-3JD">
<connections>
<action selector="underline:" target="-1" id="AD5-dI-7ws"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="Ete-nq-SuD"/>
<menuItem title="Bigger" tag="3" keyEquivalent="+" id="Bbl-S3-hQJ">
<connections>
<action selector="modifyFont:" target="ApX-Cr-rFJ" id="QAd-2L-g6Q"/>
</connections>
</menuItem>
<menuItem title="Smaller" tag="4" keyEquivalent="-" id="fPQ-RO-OcS">
<connections>
<action selector="modifyFont:" target="ApX-Cr-rFJ" id="WZD-Wr-PtB"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="ppp-lg-DCT"/>
<menuItem title="Kern" id="2TJ-Ti-dMT">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Kern" id="jIY-SV-tq9">
<items>
<menuItem title="Use Default" id="3wc-Ix-JH8">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="useStandardKerning:" target="-1" id="JZa-lb-dsy"/>
</connections>
</menuItem>
<menuItem title="Use None" id="BjW-9A-uy3">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="turnOffKerning:" target="-1" id="3Wb-P0-Zfo"/>
</connections>
</menuItem>
<menuItem title="Tighten" id="e6S-Vi-yao">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="tightenKerning:" target="-1" id="zCy-N6-Bwk"/>
</connections>
</menuItem>
<menuItem title="Loosen" id="o98-SP-b0f">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="loosenKerning:" target="-1" id="1tI-bM-hZX"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Ligatures" id="B9b-iA-Oj3">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Ligatures" id="Bz5-fY-ER9">
<items>
<menuItem title="Use Default" id="z3s-UN-F19">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="useStandardLigatures:" target="-1" id="nXB-5k-FS1"/>
</connections>
</menuItem>
<menuItem title="Use None" id="Bgh-mM-ow4">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="turnOffLigatures:" target="-1" id="LjV-UM-g8O"/>
</connections>
</menuItem>
<menuItem title="Use All" id="P5Z-nS-bLf">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="useAllLigatures:" target="-1" id="RoC-fy-qqY"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Baseline" id="tLb-El-3fp">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Baseline" id="TEp-xS-3uZ">
<items>
<menuItem title="Use Default" id="78m-wQ-XCv">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="unscript:" target="-1" id="eOc-Vv-giM"/>
</connections>
</menuItem>
<menuItem title="Superscript" id="TTN-9S-71M">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="superscript:" target="-1" id="Dqx-Gk-E5z"/>
</connections>
</menuItem>
<menuItem title="Subscript" id="Wna-MC-aQl">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="subscript:" target="-1" id="4rd-eb-Psq"/>
</connections>
</menuItem>
<menuItem title="Raise" id="m06-o5-2I2">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="raiseBaseline:" target="-1" id="WQJ-Zh-dFY"/>
</connections>
</menuItem>
<menuItem title="Lower" id="Ieb-Ym-zoz">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="lowerBaseline:" target="-1" id="0cm-Bm-aZb"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem isSeparatorItem="YES" id="E1K-3E-m7g"/>
<menuItem title="Show Colors" keyEquivalent="C" id="mpD-Lv-dDp">
<connections>
<action selector="orderFrontColorPanel:" target="-1" id="QiJ-Hu-uvf"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="amY-Jx-pAk"/>
<menuItem title="Copy Style" keyEquivalent="c" id="6ks-ju-YEt">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="copyFont:" target="-1" id="PTP-JO-2Y2"/>
</connections>
</menuItem>
<menuItem title="Paste Style" keyEquivalent="v" id="4MS-gj-GXx">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="pasteFont:" target="-1" id="ngN-IC-0xw"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Text" id="u7T-n4-ngp">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Text" id="1NJ-Te-K8y">
<items>
<menuItem title="Align Left" keyEquivalent="{" id="OB2-9q-iX5">
<connections>
<action selector="alignLeft:" target="-1" id="8He-8g-1I8"/>
</connections>
</menuItem>
<menuItem title="Center" keyEquivalent="|" id="3qV-nS-9Wl">
<connections>
<action selector="alignCenter:" target="-1" id="TQb-Qm-MfI"/>
</connections>
</menuItem>
<menuItem title="Justify" id="5br-rM-Z2E">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="alignJustified:" target="-1" id="LhQ-mS-oV5"/>
</connections>
</menuItem>
<menuItem title="Align Right" keyEquivalent="}" id="YnN-v9-whE">
<connections>
<action selector="alignRight:" target="-1" id="ugn-7x-dax"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="0AS-9R-Ks4"/>
<menuItem title="Writing Direction" id="LWb-IH-ddT">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Writing Direction" id="y6a-eI-F0K">
<items>
<menuItem title="Paragraph" enabled="NO" id="saT-GR-1wg">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem id="dUp-Ym-cmo">
<string key="title"> Default</string>
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="makeBaseWritingDirectionNatural:" target="-1" id="7h5-DA-ufz"/>
</connections>
</menuItem>
<menuItem id="l3a-5q-uet">
<string key="title"> Left to Right</string>
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="makeBaseWritingDirectionLeftToRight:" target="-1" id="s1n-BC-M0Z"/>
</connections>
</menuItem>
<menuItem id="4bf-5o-fQR">
<string key="title"> Right to Left</string>
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="makeBaseWritingDirectionRightToLeft:" target="-1" id="HhA-9Q-Cg9"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="kxt-mF-6xI"/>
<menuItem title="Selection" enabled="NO" id="gUy-XA-LRe">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem id="FDk-MD-Hjw">
<string key="title"> Default</string>
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="makeTextWritingDirectionNatural:" target="-1" id="FQm-A6-Ea9"/>
</connections>
</menuItem>
<menuItem id="FDf-dI-5hh">
<string key="title"> Left to Right</string>
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="makeTextWritingDirectionLeftToRight:" target="-1" id="4w2-n9-cQh"/>
</connections>
</menuItem>
<menuItem id="IEC-wA-VOg">
<string key="title"> Right to Left</string>
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="makeTextWritingDirectionRightToLeft:" target="-1" id="m6b-mQ-OwE"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem isSeparatorItem="YES" id="13Q-4X-bcY"/>
<menuItem title="Show Ruler" id="8a0-fj-nuK">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleRuler:" target="-1" id="O1l-7e-azz"/>
</connections>
</menuItem>
<menuItem title="Copy Ruler" keyEquivalent="c" id="Ljw-Mt-QW4">
<modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
<connections>
<action selector="copyRuler:" target="-1" id="s4Q-RB-1vz"/>
</connections>
</menuItem>
<menuItem title="Paste Ruler" keyEquivalent="v" id="m3s-Ix-5uZ">
<modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
<connections>
<action selector="pasteRuler:" target="-1" id="vTf-hl-mbC"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem isSeparatorItem="YES" id="c67-9o-y2K">
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</menuItem>
<menuItem title="List" id="Rex-O9-TeZ">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="List" id="gKv-RZ-XKr">
<items>
<menuItem title="None" id="lqg-eV-ubr">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="changeTextList:" target="-1" id="aoD-m2-Fxo"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="YqH-ki-hw7"/>
<menuItem title="• Bullet" tag="1" id="OS2-09-IyA">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="changeTextList:" target="-1" id="Czq-4q-hOe"/>
</connections>
</menuItem>
<menuItem title="◦ Circle" tag="2" id="esv-7Z-gZe">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="changeTextList:" target="-1" id="UFt-wO-mDe"/>
</connections>
</menuItem>
<menuItem title="▪ Square" tag="3" id="e5f-jL-ROB">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="changeTextList:" target="-1" id="9tM-O8-Bdg"/>
</connections>
</menuItem>
<menuItem title="⁃ Hyphen" tag="4" id="Avr-zr-dEJ">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="changeTextList:" target="-1" id="wQu-aW-bEz"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="dVV-mi-86E"/>
<menuItem title="1. 2. 3." tag="10" id="Yde-5F-lEI">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="changeTextList:" target="-1" id="6Wi-PE-1Cu"/>
</connections>
</menuItem>
<menuItem title="a. b. c." tag="11" id="O7p-tZ-AKi">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="changeTextList:" target="-1" id="HQg-mn-alg"/>
</connections>
</menuItem>
<menuItem title="A. B. C." tag="12" id="P3D-s3-GxT">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="changeTextList:" target="-1" id="kFB-VA-TwH"/>
</connections>
</menuItem>
<menuItem title="i. ii. iii." tag="13" id="7Lg-rN-dp1">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="changeTextList:" target="-1" id="Zsx-hh-0L4"/>
</connections>
</menuItem>
<menuItem title="I. II. III." tag="14" id="8mi-WT-TnE">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="changeTextList:" target="-1" id="YkH-CV-4ju"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="DXf-Xw-3FD"/>
<menuItem title="1. 1.1. 1.1.1." tag="20" id="Mr8-pa-GEh">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="changeTextList:" target="-1" id="xIq-hL-gcz"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="View" id="295">
<menu key="submenu" title="View" id="296">
<items>
<menuItem title="Show Toolbar" keyEquivalent="t" id="297">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="toggleToolbarShown:" target="-1" id="366"/>
</connections>
</menuItem>
<menuItem title="Customize Toolbar…" id="298">
<connections>
<action selector="runToolbarCustomizationPalette:" target="-1" id="365"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="1rm-Jd-YMr"/>
<menuItem title="Actual Size" keyEquivalent="0" id="jhH-NV-2Ab">
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
<connections>
<action selector="zoomToActualSize:" target="-1" id="VO9-re-O0i"/>
</connections>
</menuItem>
<menuItem title="Zoom In" keyEquivalent="." id="Soa-tt-vUl">
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
<connections>
<action selector="zoomIn:" target="-1" id="cyL-Ic-hJD"/>
</connections>
</menuItem>
<menuItem title="Zoom Out" keyEquivalent="," id="nOn-Xu-5A8">
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
<connections>
<action selector="zoomOut:" target="-1" id="V1I-2e-rSt"/>
</connections>
</menuItem>
<menuItem title="Zoom Level" id="nmn-2j-0ly">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Zoom Level" id="Rh2-Z6-s8v">
<items>
<menuItem title="25%" tag="25" id="Qbl-nV-eU5">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="zoomToLevel:" target="-1" id="ylk-WR-FwV"/>
</connections>
</menuItem>
<menuItem title="50%" tag="50" id="QD5-wT-lnV">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="zoomToLevel:" target="-1" id="lgW-iJ-Xxg"/>
</connections>
</menuItem>
<menuItem title="75%" tag="75" id="nWv-Bb-jZ9">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="zoomToLevel:" target="-1" id="RPR-B7-7W1"/>
</connections>
</menuItem>
<menuItem title="100%" tag="100" id="KwK-D7-kuE">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="zoomToLevel:" target="-1" id="H7q-qa-UGn"/>
</connections>
</menuItem>
<menuItem title="125%" tag="125" id="qR5-be-XPV">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="zoomToLevel:" target="-1" id="eFM-ep-yYw"/>
</connections>
</menuItem>
<menuItem title="150%" tag="150" id="t4r-9t-fgU">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="zoomToLevel:" target="-1" id="raR-xi-9bV"/>
</connections>
</menuItem>
<menuItem title="175%" tag="175" id="v2C-Sa-xkV">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="zoomToLevel:" target="-1" id="vJp-E3-hdZ"/>
</connections>
</menuItem>
<menuItem title="200%" tag="200" id="tB2-Nv-dii">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="zoomToLevel:" target="-1" id="cra-IB-AC3"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Window" id="19">
<menu key="submenu" title="Window" systemMenu="window" id="24">
<items>
<menuItem title="Minimize" keyEquivalent="m" id="23">
<connections>
<action selector="performMiniaturize:" target="-1" id="37"/>
</connections>
</menuItem>
<menuItem title="Zoom" id="239">
<connections>
<action selector="performZoom:" target="-1" id="240"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="92">
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</menuItem>
<menuItem title="Bring All to Front" id="5">
<connections>
<action selector="arrangeInFront:" target="-1" id="39"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Help" id="103">
<menu key="submenu" title="Help" id="106">
<items>
<menuItem title="TextEdit by Cappuccino Help" keyEquivalent="?" id="111">
<connections>
<action selector="showHelp:" target="-1" id="360"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
</items>
<point key="canvasLocation" x="-203" y="129"/>
</menu>
<customObject id="450" customClass="AppController"/>
<customObject id="ApX-Cr-rFJ" customClass="NSFontManager"/>
</objects>
</document>