Make text finder setting UI popover

This commit is contained in:
1024jp 2016-01-21 15:47:11 +09:00
parent 85039b43d5
commit cbf420ac2d
15 changed files with 925 additions and 500 deletions

View File

@ -22,6 +22,7 @@ develop
- Improve text finder:
- Now, “Find All” action also highlights all matched strings in the editor, and thereby “Highlight” action is removed.
- Change advanced find option setting from popup menu to popover.
- On Yosemite and later, a visual feedback is shown when the seach wrapped.
- Keep selected range after “Replace All” with in-selection option.
- Display total number of found in find panel on simple find actions.

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="9531" systemVersion="15C50" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="9531" systemVersion="15D21" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<dependencies>
<deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="9531"/>
@ -7,10 +7,10 @@
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="CEFindPanelController">
<connections>
<outlet property="advancedButton" destination="EY8-gj-fQb" id="KLM-nZ-wRY"/>
<outlet property="disclosureButton" destination="oC1-bN-UeN" id="j2a-5P-Uu1"/>
<outlet property="findHistoryMenu" destination="Zor-um-eIs" id="81b-eT-9Dh"/>
<outlet property="integerFormatter" destination="YLc-PB-3Zc" id="7QI-cl-3y8"/>
<outlet property="preferencesPopover" destination="00C-j6-lNt" id="Wrb-hr-DbZ"/>
<outlet property="regexReferencePopover" destination="aeg-YU-kMW" id="LBF-6V-RfW"/>
<outlet property="replaceButton" destination="7cY-9y-k1i" id="LWp-Pg-0vR"/>
<outlet property="replaceHistoryMenu" destination="xUj-lq-8zt" id="sNr-bZ-1ib"/>
@ -28,7 +28,7 @@
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
<view key="contentView" id="VS9-oi-ter">
<rect key="frame" x="0.0" y="0.0" width="500" height="380"/>
<autoresizingMask key="autoresizingMask"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<splitView dividerStyle="thin" translatesAutoresizingMaskIntoConstraints="NO" id="ZjI-28-T38" customClass="CEFindPanelSplitView">
<rect key="frame" x="0.0" y="0.0" width="500" height="380"/>
@ -38,20 +38,20 @@
<autoresizingMask key="autoresizingMask"/>
<subviews>
<scrollView toolTip="Type the text to search for." focusRingType="exterior" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hxw-DS-gxQ" userLabel="Find Scroll View">
<rect key="frame" x="72" y="84" width="408" height="44"/>
<rect key="frame" x="66" y="84" width="414" height="44"/>
<clipView key="contentView" copiesOnScroll="NO" id="YCX-T1-drQ" customClass="CEFindPanelTextClipView">
<rect key="frame" x="1" y="1" width="406" height="42"/>
<rect key="frame" x="1" y="1" width="412" height="42"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textView importsGraphics="NO" richText="NO" allowsUndo="YES" verticallyResizable="YES" allowsNonContiguousLayout="YES" id="fDB-No-De7" customClass="CEFindPanelTextView">
<rect key="frame" x="0.0" y="0.0" width="406" height="42"/>
<rect key="frame" x="0.0" y="0.0" width="412" height="42"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<size key="minSize" width="406" height="42"/>
<size key="minSize" width="412" height="42"/>
<size key="maxSize" width="10000000" height="10000000"/>
<color key="insertionPointColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<size key="minSize" width="406" height="42"/>
<size key="minSize" width="412" height="42"/>
<size key="maxSize" width="10000000" height="10000000"/>
<connections>
<binding destination="qZS-yd-wpm" name="value" keyPath="findString" id="RMK-P4-pYn">
@ -74,28 +74,28 @@
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="44" id="pES-RH-prG"/>
</constraints>
<scroller key="horizontalScroller" verticalHuggingPriority="750" doubleValue="1" controlSize="small" horizontal="YES" id="r5Z-he-d07">
<rect key="frame" x="1" y="29" width="406" height="14"/>
<rect key="frame" x="1" y="29" width="412" height="14"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
<scroller key="verticalScroller" verticalHuggingPriority="750" doubleValue="1" controlSize="small" horizontal="NO" id="UpI-hP-Ru9">
<rect key="frame" x="393" y="1" width="14" height="42"/>
<rect key="frame" x="399" y="1" width="14" height="42"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
</scrollView>
<scrollView toolTip="Type the text to replace the found text." focusRingType="exterior" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qiQ-tb-XCa" userLabel="Replecement Scroll View">
<rect key="frame" x="72" y="30" width="408" height="44"/>
<rect key="frame" x="66" y="30" width="414" height="44"/>
<clipView key="contentView" copiesOnScroll="NO" id="sC4-EU-bnm" customClass="CEFindPanelTextClipView">
<rect key="frame" x="1" y="1" width="406" height="42"/>
<rect key="frame" x="1" y="1" width="412" height="42"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textView importsGraphics="NO" richText="NO" allowsUndo="YES" verticallyResizable="YES" allowsNonContiguousLayout="YES" id="0XH-tC-fau" customClass="CEFindPanelTextView">
<rect key="frame" x="0.0" y="0.0" width="406" height="42"/>
<rect key="frame" x="0.0" y="0.0" width="412" height="42"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<size key="minSize" width="406" height="42"/>
<size key="minSize" width="412" height="42"/>
<size key="maxSize" width="10000000" height="10000000"/>
<color key="insertionPointColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<size key="minSize" width="406" height="42"/>
<size key="minSize" width="412" height="42"/>
<size key="maxSize" width="10000000" height="10000000"/>
<connections>
<binding destination="qZS-yd-wpm" name="value" keyPath="replacementString" id="MRv-ox-jgD">
@ -113,16 +113,16 @@
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</clipView>
<scroller key="horizontalScroller" verticalHuggingPriority="750" doubleValue="1" controlSize="small" horizontal="YES" id="DHo-wb-6CP">
<rect key="frame" x="1" y="29" width="406" height="14"/>
<rect key="frame" x="1" y="29" width="412" height="14"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
<scroller key="verticalScroller" verticalHuggingPriority="750" doubleValue="1" controlSize="small" horizontal="NO" id="kcQ-as-bev">
<rect key="frame" x="393" y="1" width="14" height="42"/>
<rect key="frame" x="399" y="1" width="14" height="42"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
</scrollView>
<button toolTip="Select to search with regular expression." verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8My-G5-daT">
<rect key="frame" x="69" y="7" width="123" height="18"/>
<rect key="frame" x="63" y="7" width="123" height="18"/>
<buttonCell key="cell" type="check" title="Regular Expression" bezelStyle="regularSquare" imagePosition="left" controlSize="small" state="on" inset="2" id="brT-HP-GVL">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
@ -132,18 +132,17 @@
</connections>
</button>
<button toolTip="Select to ignore character case on search." verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="GvT-tD-Cbk">
<rect key="frame" x="195" y="7" width="85" height="18"/>
<rect key="frame" x="189" y="7" width="85" height="18"/>
<buttonCell key="cell" type="check" title="Ignore Case" bezelStyle="regularSquare" imagePosition="left" controlSize="small" inset="2" id="4wg-Cz-ozb">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<action selector="toggleOption:" target="-2" id="Gii-hY-Kid"/>
<binding destination="-2" name="value" keyPath="ignoreCaseOption" id="29w-tq-8Yy"/>
<binding destination="qZS-yd-wpm" name="value" keyPath="ignoreCaseOption" id="oPb-wi-vgp"/>
</connections>
</button>
<popUpButton translatesAutoresizingMaskIntoConstraints="NO" id="ybT-sQ-Vn5" userLabel="Recent Searches">
<rect key="frame" x="69" y="109" width="35" height="17"/>
<rect key="frame" x="63" y="109" width="35" height="17"/>
<popUpButtonCell key="cell" type="smallSquare" title="DUMMY" bezelStyle="smallSquare" imagePosition="only" alignment="left" lineBreakMode="truncatingTail" inset="2" pullsDown="YES" arrowPosition="noArrow" preferredEdge="minX" autoenablesItems="NO" altersStateOfSelectedItem="NO" selectedItem="vE8-oK-xlC" id="rfC-IT-glr" userLabel="Recent Searches">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
@ -166,7 +165,7 @@
</popUpButtonCell>
</popUpButton>
<popUpButton translatesAutoresizingMaskIntoConstraints="NO" id="gM0-RD-hIC" userLabel="Recent Replacements">
<rect key="frame" x="69" y="55" width="35" height="17"/>
<rect key="frame" x="63" y="55" width="35" height="17"/>
<popUpButtonCell key="cell" type="smallSquare" title="DUMMY" bezelStyle="smallSquare" imagePosition="only" alignment="left" lineBreakMode="truncatingTail" inset="2" pullsDown="YES" arrowPosition="noArrow" preferredEdge="minX" autoenablesItems="NO" altersStateOfSelectedItem="NO" selectedItem="vfK-an-Qnl" id="u5j-P5-Mjd" userLabel="Recent Replacements">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
@ -189,7 +188,7 @@
</popUpButtonCell>
</popUpButton>
<button toolTip="Select to search text only from selection." verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="tu7-IT-dA3">
<rect key="frame" x="283" y="7" width="84" height="18"/>
<rect key="frame" x="277" y="7" width="84" height="18"/>
<buttonCell key="cell" type="check" title="In Selection" bezelStyle="regularSquare" imagePosition="left" controlSize="small" inset="2" id="9bc-9Q-fhd">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
@ -198,174 +197,6 @@
<binding destination="1KP-j4-l6E" name="value" keyPath="values.findInSelection" id="9WX-m7-TxB"/>
</connections>
</button>
<popUpButton toolTip="Set advanced options." translatesAutoresizingMaskIntoConstraints="NO" id="EY8-gj-fQb">
<rect key="frame" x="18" y="104" width="48" height="26"/>
<constraints>
<constraint firstAttribute="width" constant="44" id="9LH-7p-gFL"/>
</constraints>
<popUpButtonCell key="cell" type="bevel" bezelStyle="regularSquare" imagePosition="only" alignment="center" lineBreakMode="truncatingTail" borderStyle="border" inset="2" pullsDown="YES" autoenablesItems="NO" id="sfm-kK-8cs">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<menu key="menu" autoenablesItems="NO" id="oEy-4y-qoZ">
<items>
<menuItem image="NSActionTemplate" hidden="YES" id="SsS-EF-JyP">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Wrap Around" state="on" id="Oqm-Wt-G7B">
<connections>
<binding destination="1KP-j4-l6E" name="value" keyPath="values.findIsWrap" id="oZK-lu-PN8"/>
</connections>
</menuItem>
<menuItem title="Select Next Match after Replace" state="on" id="RfX-XI-iRH">
<connections>
<binding destination="1KP-j4-l6E" name="value" keyPath="values.findsNextAfterReplace" id="Rnm-ba-hDX"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="WaO-Uo-cUX"/>
<menuItem title="Textual Search Options" enabled="NO" id="hX3-jg-Uqc">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Delimit by Whitespace" indentationLevel="1" id="4Pf-nh-75E">
<connections>
<action selector="toggleOption:" target="-2" id="GsS-Pv-XDi"/>
<binding destination="-2" name="value" keyPath="delimitByWhitespaceOption" id="mm4-lp-2RW"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="SnM-9t-FSy"/>
<menuItem title="Regular Expression Options" enabled="NO" id="UZ5-oK-DED">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Syntax" indentationLevel="1" id="Uhr-hw-nIf">
<menu key="submenu" title="Syntax" id="bs2-Tz-po4">
<items>
<menuItem title="Ruby" tag="8" id="NPK-8x-xDg">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="changeSyntax:" target="-2" id="44H-c7-ASv"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="mQv-EX-V07"/>
<menuItem title="POSIX Basic" tag="1" id="y7k-yn-gy6">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="changeSyntax:" target="-2" id="jCk-Vq-T46"/>
</connections>
</menuItem>
<menuItem title="POSIX Extended" tag="2" id="QfE-cX-d9h">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="changeSyntax:" target="-2" id="gIZ-rV-6GE"/>
</connections>
</menuItem>
<menuItem title="Emacs" tag="3" id="IKR-qF-Nqu">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="changeSyntax:" target="-2" id="c1g-T3-7Xl"/>
</connections>
</menuItem>
<menuItem title="Grep" tag="4" id="Nbe-7c-AnJ">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="changeSyntax:" target="-2" id="dv2-5e-lCo"/>
</connections>
</menuItem>
<menuItem title="GNU Regex" tag="5" id="sgn-JJ-gas">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="changeSyntax:" target="-2" id="k3f-58-ZPn"/>
</connections>
</menuItem>
<menuItem title="Java" tag="6" id="heJ-on-iUB">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="changeSyntax:" target="-2" id="xuf-Wp-H2Z"/>
</connections>
</menuItem>
<menuItem title="Perl" tag="7" id="mdl-TK-1fB">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="changeSyntax:" target="-2" id="A4F-xW-Inq"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Single Line" tag="1" indentationLevel="1" id="UQ6-Up-xWI">
<connections>
<action selector="toggleOption:" target="-2" id="Cue-p0-6yH"/>
<binding destination="-2" name="value" keyPath="singleLineOption" id="EAc-Cy-JAi"/>
</connections>
</menuItem>
<menuItem title="Multiline" tag="1" indentationLevel="1" id="kPN-Hy-ym0">
<connections>
<action selector="toggleOption:" target="-2" id="POC-fQ-lHg"/>
<binding destination="-2" name="value" keyPath="multilineOption" id="aDC-vs-srf"/>
</connections>
</menuItem>
<menuItem title="Extend" tag="1" indentationLevel="1" id="14O-E6-7lS">
<connections>
<action selector="toggleOption:" target="-2" id="Ji2-Cb-cLd"/>
<binding destination="-2" name="value" keyPath="extendOption" id="EJT-hL-1XV"/>
</connections>
</menuItem>
<menuItem title="Find Longest" tag="1" indentationLevel="1" id="xBb-Le-i3R">
<connections>
<action selector="toggleOption:" target="-2" id="cbu-yX-aCJ"/>
<binding destination="-2" name="value" keyPath="findLongestOption" id="a9W-eg-L3p"/>
</connections>
</menuItem>
<menuItem title="Find Not Empty" tag="1" indentationLevel="1" id="3D5-4J-V4l">
<connections>
<action selector="toggleOption:" target="-2" id="PPc-zO-kyY"/>
<binding destination="-2" name="value" keyPath="findNotEmptyOption" id="ZTx-eL-CDr"/>
</connections>
</menuItem>
<menuItem title="Find Empty" tag="1" indentationLevel="1" id="amg-LN-hui">
<connections>
<action selector="toggleOption:" target="-2" id="hXt-qI-9Ha"/>
<binding destination="-2" name="value" keyPath="findEmptyOption" id="jFW-y0-DQp"/>
</connections>
</menuItem>
<menuItem title="Negate Single Line" tag="1" indentationLevel="1" id="Sdf-5P-GP1">
<connections>
<action selector="toggleOption:" target="-2" id="8KI-gz-zNh"/>
<binding destination="-2" name="value" keyPath="negateSingleLineOption" id="rH8-13-o6P"/>
</connections>
</menuItem>
<menuItem title="Capture Group" state="on" tag="1" indentationLevel="1" id="LiY-vD-U6B">
<connections>
<action selector="toggleOption:" target="-2" id="pFJ-pd-xo8"/>
<binding destination="-2" name="value" keyPath="captureGroupOption" id="T99-qr-Xdh"/>
</connections>
</menuItem>
<menuItem title="Dont Capture Group" tag="1" indentationLevel="1" id="fQl-sZ-bjK">
<connections>
<action selector="toggleOption:" target="-2" id="mnD-Iu-vwe"/>
<binding destination="-2" name="value" keyPath="dontCaptureGroupOption" id="lXE-sk-wDY"/>
</connections>
</menuItem>
<menuItem title="Not Begin of Line" tag="1" indentationLevel="1" id="AFF-AC-IR9">
<connections>
<action selector="toggleOption:" target="-2" id="g5P-m1-2aZ"/>
<binding destination="-2" name="value" keyPath="notBeginOfLineOption" id="V3z-kk-SZN"/>
</connections>
</menuItem>
<menuItem title="Not End of Line" tag="1" indentationLevel="1" id="kCx-M9-GDk">
<connections>
<action selector="toggleOption:" target="-2" id="unh-LZ-hgx"/>
<binding destination="-2" name="value" keyPath="notEndOfLineOption" id="CB8-oU-nxn"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="X4Y-hC-opX"/>
<menuItem title="Auto-Close Progress Dialog" state="on" id="ONX-V4-H0w">
<connections>
<binding destination="1KP-j4-l6E" name="value" keyPath="values.findClosesIndicatorWhenDone" id="7un-z6-GPy"/>
</connections>
</menuItem>
</items>
</menu>
</popUpButtonCell>
</popUpButton>
<button toolTip="Show quick reference for regular expression syntax." horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="i2l-7Z-Zmf">
<rect key="frame" x="464" y="7" width="19" height="19"/>
<buttonCell key="cell" type="help" bezelStyle="helpButton" alignment="center" controlSize="mini" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="xcc-KP-rT7">
@ -392,9 +223,21 @@
</binding>
</connections>
</textField>
<button toolTip="Set advanced options." verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ESq-ws-6H3">
<rect key="frame" x="14" y="100" width="50" height="32"/>
<constraints>
<constraint firstAttribute="width" constant="38" id="04A-tP-1IZ"/>
</constraints>
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSActionTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Lbb-ia-RZ5">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="showPreferences:" target="-2" id="8jX-cO-171"/>
</connections>
</button>
</subviews>
<constraints>
<constraint firstItem="hxw-DS-gxQ" firstAttribute="leading" secondItem="EY8-gj-fQb" secondAttribute="trailing" constant="8" symbolic="YES" id="2Oh-vm-AAA"/>
<constraint firstItem="8My-G5-daT" firstAttribute="leading" secondItem="hxw-DS-gxQ" secondAttribute="leading" id="2Px-Ls-3RC"/>
<constraint firstItem="tu7-IT-dA3" firstAttribute="top" secondItem="qiQ-tb-XCa" secondAttribute="bottom" constant="8" symbolic="YES" id="3zE-iF-XlX"/>
<constraint firstAttribute="trailing" secondItem="hxw-DS-gxQ" secondAttribute="trailing" constant="20" symbolic="YES" id="56k-C9-YpU"/>
@ -404,14 +247,15 @@
<constraint firstItem="8My-G5-daT" firstAttribute="centerY" secondItem="i2l-7Z-Zmf" secondAttribute="centerY" id="B6G-yH-N5A"/>
<constraint firstItem="BGD-yc-FIZ" firstAttribute="trailing" secondItem="hxw-DS-gxQ" secondAttribute="trailing" constant="-8" id="Eq8-gA-Qnx"/>
<constraint firstItem="i2l-7Z-Zmf" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="tu7-IT-dA3" secondAttribute="trailing" constant="12" symbolic="YES" id="IKi-Zn-5pX"/>
<constraint firstItem="EY8-gj-fQb" firstAttribute="leading" secondItem="lkE-wj-Gi5" secondAttribute="leading" constant="20" symbolic="YES" id="LOY-dv-dZe"/>
<constraint firstAttribute="bottom" secondItem="8My-G5-daT" secondAttribute="bottom" constant="10" id="U9G-t3-7BQ"/>
<constraint firstItem="hxw-DS-gxQ" firstAttribute="height" secondItem="qiQ-tb-XCa" secondAttribute="height" id="U9g-2U-ALP"/>
<constraint firstAttribute="trailing" secondItem="i2l-7Z-Zmf" secondAttribute="trailing" constant="20" symbolic="YES" id="WF4-HF-UDF"/>
<constraint firstItem="hxw-DS-gxQ" firstAttribute="leading" secondItem="ybT-sQ-Vn5" secondAttribute="leading" constant="3" id="Ygo-iO-YvZ"/>
<constraint firstItem="hxw-DS-gxQ" firstAttribute="top" secondItem="EY8-gj-fQb" secondAttribute="top" id="ZnD-4N-pni"/>
<constraint firstItem="ESq-ws-6H3" firstAttribute="leading" secondItem="lkE-wj-Gi5" secondAttribute="leading" constant="20" symbolic="YES" id="akB-Fw-HbO"/>
<constraint firstItem="hxw-DS-gxQ" firstAttribute="leading" secondItem="ESq-ws-6H3" secondAttribute="trailing" constant="8" symbolic="YES" id="cgt-4q-4HS"/>
<constraint firstItem="qiQ-tb-XCa" firstAttribute="leading" secondItem="gM0-RD-hIC" secondAttribute="leading" constant="3" id="duc-IJ-uJo"/>
<constraint firstItem="qiQ-tb-XCa" firstAttribute="top" secondItem="gM0-RD-hIC" secondAttribute="top" constant="-2" id="kM3-sK-QkA"/>
<constraint firstItem="hxw-DS-gxQ" firstAttribute="top" secondItem="ESq-ws-6H3" secondAttribute="top" id="nfT-0q-b00"/>
<constraint firstAttribute="trailing" secondItem="qiQ-tb-XCa" secondAttribute="trailing" constant="20" symbolic="YES" id="p4e-o4-Jfv"/>
<constraint firstItem="8My-G5-daT" firstAttribute="top" secondItem="qiQ-tb-XCa" secondAttribute="bottom" constant="8" symbolic="YES" id="pMc-aZ-JfI"/>
<constraint firstItem="tu7-IT-dA3" firstAttribute="leading" secondItem="GvT-tD-Cbk" secondAttribute="trailing" constant="8" symbolic="YES" id="riZ-4A-Sii"/>
@ -709,6 +553,12 @@
<outlet property="delegate" destination="-2" id="SVT-4d-mbL"/>
</connections>
</popover>
<viewController nibName="" id="49v-VK-h0w" userLabel="Preferences View Controller" customClass="CEFindPreferencesViewController"/>
<popover appearance="aqua" behavior="t" id="00C-j6-lNt">
<connections>
<outlet property="contentViewController" destination="49v-VK-h0w" id="12W-Vg-o60"/>
</connections>
</popover>
<numberFormatter formatterBehavior="default10_4" numberStyle="decimal" minimumIntegerDigits="1" maximumIntegerDigits="2000000000" maximumFractionDigits="3" id="YLc-PB-3Zc"/>
</objects>
<resources>

View File

@ -0,0 +1,328 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="9531" systemVersion="15D21" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<dependencies>
<deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="9531"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="CEFindPreferencesViewController">
<connections>
<outlet property="view" destination="n0x-rs-gOH" id="k84-Mo-zzR"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customView horizontalCompressionResistancePriority="249" id="n0x-rs-gOH">
<rect key="frame" x="0.0" y="0.0" width="282" height="313"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews>
<textField horizontalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="ZxT-dv-zkd">
<rect key="frame" x="18" y="286" width="246" height="17"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="center" title="Advanced Find Options" id="Dl6-kv-hhz">
<font key="font" metaFont="systemBold"/>
<color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button translatesAutoresizingMaskIntoConstraints="NO" id="c11-J5-UXF">
<rect key="frame" x="17" y="107" width="80" height="18"/>
<buttonCell key="cell" type="check" title="Single Line" bezelStyle="regularSquare" imagePosition="left" controlSize="small" inset="2" id="nqr-AM-oJQ">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="BQZ-CS-f7C" name="value" keyPath="singleLineOption" id="bqm-lf-8Td"/>
</connections>
</button>
<button translatesAutoresizingMaskIntoConstraints="NO" id="bji-0S-vRI">
<rect key="frame" x="17" y="71" width="59" height="18"/>
<buttonCell key="cell" type="check" title="Extend" bezelStyle="regularSquare" imagePosition="left" controlSize="small" inset="2" id="iMa-K7-Lhy">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="BQZ-CS-f7C" name="value" keyPath="extendOption" id="bbL-oQ-P9R"/>
</connections>
</button>
<button translatesAutoresizingMaskIntoConstraints="NO" id="VMh-Tq-bq0">
<rect key="frame" x="17" y="53" width="87" height="18"/>
<buttonCell key="cell" type="check" title="Find longest" bezelStyle="regularSquare" imagePosition="left" controlSize="small" inset="2" id="5oj-ch-YiX">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="BQZ-CS-f7C" name="value" keyPath="findLongestOption" id="gws-cF-hhU"/>
</connections>
</button>
<button translatesAutoresizingMaskIntoConstraints="NO" id="dRn-32-poX">
<rect key="frame" x="17" y="35" width="101" height="18"/>
<buttonCell key="cell" type="check" title="Find not empty" bezelStyle="regularSquare" imagePosition="left" controlSize="small" inset="2" id="uZ1-aS-LUd">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="BQZ-CS-f7C" name="value" keyPath="findNotEmptyOption" id="Ntx-JH-Kdn"/>
</connections>
</button>
<button translatesAutoresizingMaskIntoConstraints="NO" id="BKD-9e-coK">
<rect key="frame" x="17" y="17" width="116" height="18"/>
<buttonCell key="cell" type="check" title="Negate single line" bezelStyle="regularSquare" imagePosition="left" controlSize="small" inset="2" id="q8J-xH-8Q3">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="BQZ-CS-f7C" name="value" keyPath="negateSingleLineOption" id="63T-Gd-Jec"/>
</connections>
</button>
<button translatesAutoresizingMaskIntoConstraints="NO" id="4LS-x3-gKX">
<rect key="frame" x="136" y="107" width="100" height="18"/>
<buttonCell key="cell" type="check" title="Capture Group" bezelStyle="regularSquare" imagePosition="left" controlSize="small" state="on" inset="2" id="GMh-gg-UVh">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="BQZ-CS-f7C" name="value" keyPath="captureGroupOption" id="HqF-2F-y1S"/>
</connections>
</button>
<button translatesAutoresizingMaskIntoConstraints="NO" id="qNL-l2-IA2">
<rect key="frame" x="17" y="179" width="138" height="18"/>
<buttonCell key="cell" type="check" title="Delimit by whitespace" bezelStyle="regularSquare" imagePosition="left" controlSize="small" inset="2" id="3mQ-og-LXu">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="BQZ-CS-f7C" name="value" keyPath="delimitByWhitespaceOption" id="pkO-Xm-xRa"/>
</connections>
</button>
<button translatesAutoresizingMaskIntoConstraints="NO" id="Q64-jo-IAs">
<rect key="frame" x="136" y="89" width="128" height="18"/>
<buttonCell key="cell" type="check" title="Dont capture group" bezelStyle="regularSquare" imagePosition="left" controlSize="small" inset="2" id="xqN-fH-Reh">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="BQZ-CS-f7C" name="value" keyPath="dontCaptureGroupOption" id="WT8-wn-AcE"/>
</connections>
</button>
<button translatesAutoresizingMaskIntoConstraints="NO" id="LVp-5D-Zlh">
<rect key="frame" x="136" y="53" width="100" height="18"/>
<buttonCell key="cell" type="check" title="Not end of line" bezelStyle="regularSquare" imagePosition="left" controlSize="small" inset="2" id="rj9-Y8-PMO">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="BQZ-CS-f7C" name="value" keyPath="notEndOfLineOption" id="A3K-p3-L4d"/>
</connections>
</button>
<button translatesAutoresizingMaskIntoConstraints="NO" id="Lhw-9C-lgB">
<rect key="frame" x="17" y="89" width="67" height="18"/>
<buttonCell key="cell" type="check" title="Multiline" bezelStyle="regularSquare" imagePosition="left" controlSize="small" inset="2" id="YXU-NA-BZb">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="BQZ-CS-f7C" name="value" keyPath="multilineOption" id="DQU-i2-PSi"/>
</connections>
</button>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ooj-1C-MVc">
<rect key="frame" x="64" y="127" width="146" height="22"/>
<constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="140" id="Gaf-13-rXq"/>
</constraints>
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" controlSize="small" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="gb7-p0-KKj">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="smallSystem"/>
<menu key="menu" id="hsb-1q-91E">
<items>
<menuItem title="Ruby" tag="8" id="k4a-ql-TV8">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="changeSyntax:" target="-2" id="2XZ-50-TXb"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="xI3-PM-JMd"/>
<menuItem title="POSIX Basic" tag="1" id="XXk-aG-HmM">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="changeSyntax:" target="-2" id="ymx-QA-wyk"/>
</connections>
</menuItem>
<menuItem title="POSIX Extended" tag="2" id="Z5o-Is-Dim">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="changeSyntax:" target="-2" id="Xwg-a0-eEv"/>
</connections>
</menuItem>
<menuItem title="Emacs" tag="3" id="vHs-3L-t8t">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="changeSyntax:" target="-2" id="dyO-ID-8bJ"/>
</connections>
</menuItem>
<menuItem title="Grep" tag="4" id="lI9-hA-FUX">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="changeSyntax:" target="-2" id="VvP-E2-Gk5"/>
</connections>
</menuItem>
<menuItem title="GNU Regex" tag="5" id="7Lh-bm-dFh">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="changeSyntax:" target="-2" id="V23-fF-uGL"/>
</connections>
</menuItem>
<menuItem title="Java" tag="6" id="3oN-JC-4BB">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="changeSyntax:" target="-2" id="frX-Pp-C7k"/>
</connections>
</menuItem>
<menuItem title="Perl" tag="7" id="wpF-X7-PlC">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="changeSyntax:" target="-2" id="dFU-Dy-lPt"/>
</connections>
</menuItem>
</items>
</menu>
</popUpButtonCell>
</popUpButton>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="he5-XI-8i5">
<rect key="frame" x="18" y="132" width="43" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Syntax:" id="MvA-iq-o2S">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="fev-mC-rKB">
<rect key="frame" x="18" y="154" width="112" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Regular Expression" id="Xa9-i4-ELR">
<font key="font" metaFont="smallSystemBold"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="s9v-U5-5ZM">
<rect key="frame" x="18" y="202" width="87" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Textual Search" id="d1L-6X-N8c">
<font key="font" metaFont="smallSystemBold"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button translatesAutoresizingMaskIntoConstraints="NO" id="rmT-GL-9fJ">
<rect key="frame" x="17" y="227" width="164" height="18"/>
<buttonCell key="cell" type="check" title="Auto-close progress dialog" bezelStyle="regularSquare" imagePosition="left" controlSize="small" inset="2" id="KBq-zH-H2M">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="hNo-st-CW5" name="value" keyPath="values.findClosesIndicatorWhenDone" id="y86-ap-tFD"/>
</connections>
</button>
<button translatesAutoresizingMaskIntoConstraints="NO" id="B9b-MW-hnQ">
<rect key="frame" x="17" y="263" width="90" height="18"/>
<buttonCell key="cell" type="check" title="Wrap around" bezelStyle="regularSquare" imagePosition="left" controlSize="small" state="on" inset="2" id="o7S-uI-urg">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="hNo-st-CW5" name="value" keyPath="values.findIsWrap" id="J5W-rE-ois"/>
</connections>
</button>
<button translatesAutoresizingMaskIntoConstraints="NO" id="vSw-Kt-7km">
<rect key="frame" x="17" y="245" width="187" height="18"/>
<buttonCell key="cell" type="check" title="Select next match after replace" bezelStyle="regularSquare" imagePosition="left" controlSize="small" state="on" inset="2" id="XBp-LE-3Ry">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="hNo-st-CW5" name="value" keyPath="values.findsNextAfterReplace" id="e5i-bi-bKv"/>
</connections>
</button>
<button translatesAutoresizingMaskIntoConstraints="NO" id="geb-72-so9">
<rect key="frame" x="136" y="71" width="109" height="18"/>
<buttonCell key="cell" type="check" title="Not begin of line" bezelStyle="regularSquare" imagePosition="left" controlSize="small" inset="2" id="Kj6-NQ-Gk5">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="BQZ-CS-f7C" name="value" keyPath="notBeginOfLineOption" id="jG5-h9-1j6"/>
</connections>
</button>
<button translatesAutoresizingMaskIntoConstraints="NO" id="vLh-xI-xln">
<rect key="frame" x="136" y="35" width="81" height="18"/>
<buttonCell key="cell" type="check" title="Find empty" bezelStyle="regularSquare" imagePosition="left" controlSize="small" inset="2" id="hHc-CR-50Y">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<binding destination="BQZ-CS-f7C" name="value" keyPath="findEmptyOption" id="e1C-CT-tMM"/>
</connections>
</button>
</subviews>
<constraints>
<constraint firstItem="vLh-xI-xln" firstAttribute="leading" secondItem="BKD-9e-coK" secondAttribute="trailing" priority="750" constant="8" symbolic="YES" id="1Dq-cj-5IQ"/>
<constraint firstItem="VMh-Tq-bq0" firstAttribute="top" secondItem="bji-0S-vRI" secondAttribute="bottom" constant="6" symbolic="YES" id="3LD-Da-QJZ"/>
<constraint firstItem="qNL-l2-IA2" firstAttribute="leading" secondItem="n0x-rs-gOH" secondAttribute="leading" constant="20" symbolic="YES" id="3bK-oU-yc4"/>
<constraint firstItem="ooj-1C-MVc" firstAttribute="leading" secondItem="he5-XI-8i5" secondAttribute="trailing" constant="8" symbolic="YES" id="4Gx-fv-Ftd"/>
<constraint firstItem="rmT-GL-9fJ" firstAttribute="leading" secondItem="n0x-rs-gOH" secondAttribute="leading" constant="20" symbolic="YES" id="4ff-on-TgQ"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="qNL-l2-IA2" secondAttribute="trailing" constant="20" symbolic="YES" id="4fy-mH-ct8"/>
<constraint firstItem="LVp-5D-Zlh" firstAttribute="baseline" secondItem="VMh-Tq-bq0" secondAttribute="baseline" id="5xt-oE-w05"/>
<constraint firstItem="B9b-MW-hnQ" firstAttribute="leading" secondItem="n0x-rs-gOH" secondAttribute="leading" constant="20" symbolic="YES" id="6Uy-sY-FEu"/>
<constraint firstItem="LVp-5D-Zlh" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="VMh-Tq-bq0" secondAttribute="trailing" constant="8" symbolic="YES" id="6gE-c7-5Va"/>
<constraint firstItem="vLh-xI-xln" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="dRn-32-poX" secondAttribute="trailing" constant="8" symbolic="YES" id="CC6-r1-Ipb"/>
<constraint firstItem="ooj-1C-MVc" firstAttribute="baseline" secondItem="he5-XI-8i5" secondAttribute="baseline" id="D0v-fC-Xj0"/>
<constraint firstItem="B9b-MW-hnQ" firstAttribute="top" secondItem="ZxT-dv-zkd" secondAttribute="bottom" constant="8" symbolic="YES" id="Db4-KN-MED"/>
<constraint firstItem="s9v-U5-5ZM" firstAttribute="leading" secondItem="n0x-rs-gOH" secondAttribute="leading" constant="20" symbolic="YES" id="FYD-Sf-bxB"/>
<constraint firstItem="vLh-xI-xln" firstAttribute="leading" secondItem="4LS-x3-gKX" secondAttribute="leading" id="G8y-2z-TbT"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="Q64-jo-IAs" secondAttribute="trailing" constant="20" symbolic="YES" id="Ifq-dC-EdG"/>
<constraint firstItem="he5-XI-8i5" firstAttribute="leading" secondItem="n0x-rs-gOH" secondAttribute="leading" constant="20" symbolic="YES" id="JJ2-tB-5dR"/>
<constraint firstItem="LVp-5D-Zlh" firstAttribute="leading" secondItem="4LS-x3-gKX" secondAttribute="leading" id="LT9-xf-TCn"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="B9b-MW-hnQ" secondAttribute="trailing" constant="20" symbolic="YES" id="NNC-zc-g5b"/>
<constraint firstAttribute="trailing" secondItem="ZxT-dv-zkd" secondAttribute="trailing" constant="20" symbolic="YES" id="OSo-17-FNj"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="LVp-5D-Zlh" secondAttribute="trailing" constant="20" symbolic="YES" id="QMk-3F-BVp"/>
<constraint firstItem="c11-J5-UXF" firstAttribute="top" secondItem="ooj-1C-MVc" secondAttribute="bottom" constant="8" symbolic="YES" id="SDg-kt-JCQ"/>
<constraint firstItem="geb-72-so9" firstAttribute="baseline" secondItem="bji-0S-vRI" secondAttribute="baseline" id="TCs-P7-Gvw"/>
<constraint firstItem="he5-XI-8i5" firstAttribute="top" secondItem="fev-mC-rKB" secondAttribute="bottom" constant="8" symbolic="YES" id="TIG-4e-IUC"/>
<constraint firstItem="vSw-Kt-7km" firstAttribute="leading" secondItem="n0x-rs-gOH" secondAttribute="leading" constant="20" symbolic="YES" id="UIY-3b-nGn"/>
<constraint firstItem="fev-mC-rKB" firstAttribute="leading" secondItem="n0x-rs-gOH" secondAttribute="leading" constant="20" symbolic="YES" id="Uv6-dh-A6N"/>
<constraint firstItem="Lhw-9C-lgB" firstAttribute="leading" secondItem="n0x-rs-gOH" secondAttribute="leading" constant="20" symbolic="YES" id="WKp-4g-V9f"/>
<constraint firstItem="dRn-32-poX" firstAttribute="leading" secondItem="n0x-rs-gOH" secondAttribute="leading" constant="20" symbolic="YES" id="Wh1-dN-cJC"/>
<constraint firstItem="rmT-GL-9fJ" firstAttribute="top" secondItem="vSw-Kt-7km" secondAttribute="bottom" constant="6" symbolic="YES" id="XEO-se-Rgf"/>
<constraint firstItem="Q64-jo-IAs" firstAttribute="leading" secondItem="4LS-x3-gKX" secondAttribute="leading" id="XYi-r4-cTq"/>
<constraint firstItem="vSw-Kt-7km" firstAttribute="top" secondItem="B9b-MW-hnQ" secondAttribute="bottom" constant="6" symbolic="YES" id="YDN-5I-jWH"/>
<constraint firstItem="qNL-l2-IA2" firstAttribute="top" secondItem="s9v-U5-5ZM" secondAttribute="bottom" constant="8" symbolic="YES" id="YEw-XV-dst"/>
<constraint firstItem="ZxT-dv-zkd" firstAttribute="leading" secondItem="n0x-rs-gOH" secondAttribute="leading" constant="20" symbolic="YES" id="YFF-Ym-O7f"/>
<constraint firstItem="ZxT-dv-zkd" firstAttribute="top" secondItem="n0x-rs-gOH" secondAttribute="top" constant="10" id="YJ1-gS-f5L"/>
<constraint firstItem="BKD-9e-coK" firstAttribute="leading" secondItem="n0x-rs-gOH" secondAttribute="leading" constant="20" symbolic="YES" id="ZXf-Jv-npy"/>
<constraint firstItem="BKD-9e-coK" firstAttribute="top" secondItem="dRn-32-poX" secondAttribute="bottom" constant="6" symbolic="YES" id="a0v-e6-w2K"/>
<constraint firstItem="s9v-U5-5ZM" firstAttribute="top" secondItem="rmT-GL-9fJ" secondAttribute="bottom" constant="14" id="aBe-mJ-w9p"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="4LS-x3-gKX" secondAttribute="trailing" constant="20" symbolic="YES" id="ay4-WP-i0G"/>
<constraint firstItem="vLh-xI-xln" firstAttribute="baseline" secondItem="dRn-32-poX" secondAttribute="baseline" id="b3u-XW-qsv"/>
<constraint firstItem="geb-72-so9" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="bji-0S-vRI" secondAttribute="trailing" constant="8" symbolic="YES" id="b4K-rL-X40"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="vSw-Kt-7km" secondAttribute="trailing" constant="20" symbolic="YES" id="c1d-6J-L4f"/>
<constraint firstItem="fev-mC-rKB" firstAttribute="top" secondItem="qNL-l2-IA2" secondAttribute="bottom" constant="14" id="d4f-KY-yB2"/>
<constraint firstItem="c11-J5-UXF" firstAttribute="leading" secondItem="n0x-rs-gOH" secondAttribute="leading" constant="20" symbolic="YES" id="dR2-ul-Ob0"/>
<constraint firstItem="bji-0S-vRI" firstAttribute="top" secondItem="Lhw-9C-lgB" secondAttribute="bottom" constant="6" symbolic="YES" id="gEJ-vv-ddv"/>
<constraint firstItem="4LS-x3-gKX" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="c11-J5-UXF" secondAttribute="trailing" constant="8" symbolic="YES" id="hOX-Lh-le0"/>
<constraint firstItem="Lhw-9C-lgB" firstAttribute="top" secondItem="c11-J5-UXF" secondAttribute="bottom" constant="6" symbolic="YES" id="kfl-4t-EtN"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="vLh-xI-xln" secondAttribute="trailing" constant="20" symbolic="YES" id="koN-tB-gQv"/>
<constraint firstItem="geb-72-so9" firstAttribute="leading" secondItem="4LS-x3-gKX" secondAttribute="leading" id="kol-md-7RZ"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="geb-72-so9" secondAttribute="trailing" constant="20" symbolic="YES" id="mRL-mQ-gOR"/>
<constraint firstItem="4LS-x3-gKX" firstAttribute="baseline" secondItem="c11-J5-UXF" secondAttribute="baseline" id="mrd-5C-2GK"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="rmT-GL-9fJ" secondAttribute="trailing" constant="20" symbolic="YES" id="pIx-sM-esg"/>
<constraint firstItem="VMh-Tq-bq0" firstAttribute="leading" secondItem="n0x-rs-gOH" secondAttribute="leading" constant="20" symbolic="YES" id="u5s-Z1-TgX"/>
<constraint firstAttribute="bottom" secondItem="BKD-9e-coK" secondAttribute="bottom" constant="20" symbolic="YES" id="uui-1U-QYm"/>
<constraint firstItem="dRn-32-poX" firstAttribute="top" secondItem="VMh-Tq-bq0" secondAttribute="bottom" constant="6" symbolic="YES" id="vh4-UI-3Oc"/>
<constraint firstItem="Q64-jo-IAs" firstAttribute="baseline" secondItem="Lhw-9C-lgB" secondAttribute="baseline" id="x7d-Tl-ZXf"/>
<constraint firstItem="Q64-jo-IAs" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="Lhw-9C-lgB" secondAttribute="trailing" constant="8" symbolic="YES" id="xbr-z4-bz6"/>
<constraint firstItem="bji-0S-vRI" firstAttribute="leading" secondItem="n0x-rs-gOH" secondAttribute="leading" constant="20" symbolic="YES" id="xx3-6s-xaM"/>
</constraints>
<point key="canvasLocation" x="157" y="385.5"/>
</customView>
<userDefaultsController representsSharedInstance="YES" id="hNo-st-CW5"/>
<customObject id="BQZ-CS-f7C" customClass="CETextFinder"/>
</objects>
</document>

View File

@ -299,10 +299,14 @@
2A7314EE1A0326D300C0EDA9 /* CEWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A7314ED1A0326D300C0EDA9 /* CEWindow.m */; };
2A75ACCB19E86DDB00444894 /* CotEditor.sdef in Resources */ = {isa = PBXBuildFile; fileRef = 2A75ACCA19E86DDB00444894 /* CotEditor.sdef */; };
2A7846DE18FE0C0C006BDF00 /* CETheme.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A7846DD18FE0C0C006BDF00 /* CETheme.m */; };
2A7CF1591C4F569B0015FF2F /* FindPreferencesView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2A7CF1571C4F569B0015FF2F /* FindPreferencesView.xib */; };
2A7CF15A1C4F569B0015FF2F /* FindPreferencesView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2A7CF1571C4F569B0015FF2F /* FindPreferencesView.xib */; };
2A7CF2401A573CEB00D09249 /* FindPanel.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2A7CF23E1A573CEB00D09249 /* FindPanel.xib */; };
2A7CF2431A5747EC00D09249 /* CEFindPanelController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A7CF2421A5747EC00D09249 /* CEFindPanelController.m */; };
2A7FD3481C53EFA800CE8566 /* XattrTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A7FD3471C53EFA800CE8566 /* XattrTests.swift */; };
2A7FD34A1C5497EB00CE8566 /* NSURL+Xattr.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A1068C21A745FCE001DB9AA /* NSURL+Xattr.m */; };
2A7FD34D1C54A6F300CE8566 /* CEFindPreferencesViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A7FD34C1C54A6F300CE8566 /* CEFindPreferencesViewController.m */; };
2A7FD34E1C54A6F300CE8566 /* CEFindPreferencesViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A7FD34C1C54A6F300CE8566 /* CEFindPreferencesViewController.m */; };
2A83E23A1BA1E65A0069CDFE /* libicucore.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 2A83E2391BA1E65A0069CDFE /* libicucore.tbd */; };
2A83E23B1BA1E6750069CDFE /* libicucore.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 2A83E2391BA1E65A0069CDFE /* libicucore.tbd */; };
2A88A7901B8B87C90055B9AE /* NSString+Normalization.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A88A78F1B8B87C90055B9AE /* NSString+Normalization.m */; };
@ -682,10 +686,16 @@
2A7846DD18FE0C0C006BDF00 /* CETheme.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CETheme.m; sourceTree = "<group>"; };
2A7AC3F11A46484B00F38868 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/IntegrationPane.strings; sourceTree = "<group>"; };
2A7AC3F31A46484E00F38868 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/IntegrationPane.strings"; sourceTree = "<group>"; };
2A7CF1581C4F569B0015FF2F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/FindPreferencesView.xib; sourceTree = "<group>"; };
2A7CF23F1A573CEB00D09249 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/FindPanel.xib; sourceTree = "<group>"; };
2A7CF2411A5747EC00D09249 /* CEFindPanelController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = CEFindPanelController.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
2A7CF2421A5747EC00D09249 /* CEFindPanelController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = CEFindPanelController.m; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objc; };
2A7FD3471C53EFA800CE8566 /* XattrTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = XattrTests.swift; sourceTree = "<group>"; };
2A7FD34B1C54A6F300CE8566 /* CEFindPreferencesViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CEFindPreferencesViewController.h; sourceTree = "<group>"; };
2A7FD34C1C54A6F300CE8566 /* CEFindPreferencesViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CEFindPreferencesViewController.m; sourceTree = "<group>"; };
2A7FD3501C54B1AF00CE8566 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/FindPreferencesView.strings; sourceTree = "<group>"; };
2A7FD3541C54B1B400CE8566 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/FindPreferencesView.strings"; sourceTree = "<group>"; };
2A7FD3551C54B87A00CE8566 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/FindPreferencesView.strings; sourceTree = "<group>"; };
2A83E2391BA1E65A0069CDFE /* libicucore.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libicucore.tbd; path = usr/lib/libicucore.tbd; sourceTree = SDKROOT; };
2A88A78E1B8B87C90055B9AE /* NSString+Normalization.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+Normalization.h"; sourceTree = "<group>"; };
2A88A78F1B8B87C90055B9AE /* NSString+Normalization.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+Normalization.m"; sourceTree = "<group>"; };
@ -1228,6 +1238,7 @@
children = (
2A7CF23E1A573CEB00D09249 /* FindPanel.xib */,
2A2D6C171A602D2C002451FF /* RegexReferenceView.xib */,
2A7CF1571C4F569B0015FF2F /* FindPreferencesView.xib */,
);
name = "Text Finder";
sourceTree = "<group>";
@ -1521,6 +1532,8 @@
2A7CF2421A5747EC00D09249 /* CEFindPanelController.m */,
2A009ACF1A58ED1D00C3D542 /* CEFindResultViewController.h */,
2A009AD01A58ED1D00C3D542 /* CEFindResultViewController.m */,
2A7FD34B1C54A6F300CE8566 /* CEFindPreferencesViewController.h */,
2A7FD34C1C54A6F300CE8566 /* CEFindPreferencesViewController.m */,
2AD67C221AA7285F0078BB95 /* CEFindPanelTextView.h */,
2AD67C231AA7285F0078BB95 /* CEFindPanelTextView.m */,
2AD67C2D1AA7651B0078BB95 /* CEFindPanelLayoutManager.h */,
@ -1901,6 +1914,7 @@
2AD9039C1BCE86A3004F2B8A /* SpellCheck.tiff in Resources */,
2A6F0DA11B5500E100C2D03C /* EditColorCode.tiff in Resources */,
2A6F0DA21B5500E100C2D03C /* RecolorAll.tiff in Resources */,
2A7CF15A1C4F569B0015FF2F /* FindPreferencesView.xib in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -1940,6 +1954,7 @@
2A3A75A719E77E87001DAB88 /* SyntaxCompletionsEditView.xib in Resources */,
2A3A75A819E77E87001DAB88 /* SyntaxFileMappingEditView.xib in Resources */,
2A3A75A919E77E87001DAB88 /* SyntaxInfoEditView.xib in Resources */,
2A7CF1591C4F569B0015FF2F /* FindPreferencesView.xib in Resources */,
2A3A75AC19E77E87001DAB88 /* SyntaxValidationView.xib in Resources */,
2588E9CE07C4851C0060021D /* ProgressSheet.xib in Resources */,
8C28CD2E081101A300733DA7 /* ConsolePanel.xib in Resources */,
@ -2156,6 +2171,7 @@
2A6F0DCA1B5500E100C2D03C /* CELineHightPanelController.m in Sources */,
2A6F0DCB1B5500E100C2D03C /* CEKeyBindingsViewController.m in Sources */,
2AA2E0201C007C690087BDD6 /* CECharacterField.m in Sources */,
2A7FD34E1C54A6F300CE8566 /* CEFindPreferencesViewController.m in Sources */,
2A6F0DCC1B5500E100C2D03C /* CEFindResultViewController.m in Sources */,
2A6F0DCD1B5500E100C2D03C /* CEPrintPanelAccessoryController.m in Sources */,
2AAD91871C29B2A300C70AEF /* CEPaddingTextFieldCell.m in Sources */,
@ -2273,6 +2289,7 @@
2A3A1E7A1C45233D00641CE0 /* CEHUDController.m in Sources */,
2AE0C09B1C42306000E52E04 /* CETextView+LineProcessing.m in Sources */,
2A436DDB1A425AE500275FD4 /* CEIncompatibleCharsViewController.m in Sources */,
2A7FD34D1C54A6F300CE8566 /* CEFindPreferencesViewController.m in Sources */,
258700E6077BAD2200E541BB /* CESyntaxManager.m in Sources */,
2A149DC51901885A00A9D6EF /* CEKeyBindingsPaneController.m in Sources */,
8C65C0E807927D0F0028D94A /* CELayoutManager.m in Sources */,
@ -2789,6 +2806,17 @@
name = ThemeView.xib;
sourceTree = "<group>";
};
2A7CF1571C4F569B0015FF2F /* FindPreferencesView.xib */ = {
isa = PBXVariantGroup;
children = (
2A7CF1581C4F569B0015FF2F /* Base */,
2A7FD3501C54B1AF00CE8566 /* ja */,
2A7FD3541C54B1B400CE8566 /* zh-Hans */,
2A7FD3551C54B87A00CE8566 /* de */,
);
name = FindPreferencesView.xib;
sourceTree = "<group>";
};
2A7CF23E1A573CEB00D09249 /* FindPanel.xib */ = {
isa = PBXVariantGroup;
children = (

View File

@ -41,25 +41,11 @@ static const CGFloat kDefaultResultViewHeight = 200.0;
@property (nonatomic, nullable) NSLayoutConstraint *resultHeightConstraint; // for autolayout on OS X 10.8
@property (nonatomic, nullable, copy) NSString *resultMessage; // binding
#pragma mark Options
@property (nonatomic) BOOL ignoreCaseOption;
@property (nonatomic) BOOL singleLineOption;
@property (nonatomic) BOOL multilineOption;
@property (nonatomic) BOOL extendOption;
@property (nonatomic) BOOL findLongestOption;
@property (nonatomic) BOOL findNotEmptyOption;
@property (nonatomic) BOOL findEmptyOption;
@property (nonatomic) BOOL negateSingleLineOption;
@property (nonatomic) BOOL captureGroupOption;
@property (nonatomic) BOOL dontCaptureGroupOption;
@property (nonatomic) BOOL delimitByWhitespaceOption;
@property (nonatomic) BOOL notBeginOfLineOption;
@property (nonatomic) BOOL notEndOfLineOption;
#pragma mark Outlets
@property (nonatomic, nullable, weak) IBOutlet CETextFinder *textFinder;
@property (nonatomic, nullable) IBOutlet CEFindResultViewController *resultViewController;
@property (nonatomic, nullable) IBOutlet NSPopover *regexReferencePopover;
@property (nonatomic, nullable) IBOutlet NSPopover *preferencesPopover;
@property (nonatomic, nullable, weak) IBOutlet NSNumberFormatter *integerFormatter;
@property (nonatomic, nullable, weak) IBOutlet NSPopUpButton *advancedButton;
@property (nonatomic, nullable, weak) IBOutlet NSSplitView *splitView;
@ -88,9 +74,6 @@ static const CGFloat kDefaultResultViewHeight = 200.0;
self = [super init];
if (self) {
// deserialize options setting from defaults
[self loadOptions];
// observe default change for the "Replace" button tooltip
[[NSUserDefaults standardUserDefaults] addObserver:self
forKeyPath:CEDefaultFindNextAfterReplaceKey
@ -164,20 +147,6 @@ static const CGFloat kDefaultResultViewHeight = 200.0;
}
// ------------------------------------------------------
/// add check mark to selectable menus
- (BOOL)validateMenuItem:(nonnull NSMenuItem *)menuItem
// ------------------------------------------------------
{
if ([menuItem action] == @selector(changeSyntax:)) {
OgreSyntax syntax = [[NSUserDefaults standardUserDefaults] integerForKey:CEDefaultFindRegexSyntaxKey];
[menuItem setState:([menuItem tag] == syntax) ? NSOnState : NSOffState];
}
return YES;
}
#pragma mark Protocol
@ -449,30 +418,6 @@ static const CGFloat kDefaultResultViewHeight = 200.0;
}
// ------------------------------------------------------
/// change regex syntax setting via menu item
- (IBAction)changeSyntax:(nullable id)sender
// ------------------------------------------------------
{
[[NSUserDefaults standardUserDefaults] setInteger:[sender tag] forKey:CEDefaultFindRegexSyntaxKey];
}
// ------------------------------------------------------
/// option is toggled
- (IBAction)toggleOption:(nullable id)sender
// ------------------------------------------------------
{
__weak typeof(self) weakSelf = self;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
typeof(self) self = weakSelf; // strong self
if (!self) { return; }
[self saveOptions];
});
}
// ------------------------------------------------------
/// close opening find result view
- (IBAction)closeResultView:(nullable id)sender
@ -484,6 +429,19 @@ static const CGFloat kDefaultResultViewHeight = 200.0;
}
// ------------------------------------------------------
/// show find panel preferences as popover
- (IBAction)showPreferences:(nullable id)sender
// ------------------------------------------------------
{
if ([[self preferencesPopover] isShown]) {
[[self preferencesPopover] close];
} else {
[[self preferencesPopover] showRelativeToRect:[sender bounds] ofView:sender preferredEdge:NSMinYEdge];
}
}
// ------------------------------------------------------
/// show regular expression reference as popover
- (IBAction)showRegexHelp:(nullable id)sender
@ -658,54 +616,6 @@ static const CGFloat kDefaultResultViewHeight = 200.0;
}
// ------------------------------------------------------
/// serialize bit option value from instance booleans
- (void)saveOptions
// ------------------------------------------------------
{
unsigned options = OgreNoneOption;
if ([self singleLineOption]) { options |= OgreSingleLineOption; }
if ([self multilineOption]) { options |= OgreMultilineOption; }
if ([self ignoreCaseOption]) { options |= OgreIgnoreCaseOption; }
if ([self extendOption]) { options |= OgreExtendOption; }
if ([self findLongestOption]) { options |= OgreFindLongestOption; }
if ([self findNotEmptyOption]) { options |= OgreFindNotEmptyOption; }
if ([self findEmptyOption]) { options |= OgreFindEmptyOption; }
if ([self negateSingleLineOption]) { options |= OgreNegateSingleLineOption; }
if ([self captureGroupOption]) { options |= OgreCaptureGroupOption; }
if ([self dontCaptureGroupOption]) { options |= OgreDontCaptureGroupOption; }
if ([self delimitByWhitespaceOption]) { options |= OgreDelimitByWhitespaceOption; }
if ([self notBeginOfLineOption]) { options |= OgreNotBOLOption; }
if ([self notEndOfLineOption]) { options |= OgreNotEOLOption; }
[[NSUserDefaults standardUserDefaults] setInteger:options forKey:CEDefaultFindOptionsKey];
}
// ------------------------------------------------------
/// deserialize bit option value to instance booleans
- (void)loadOptions
// ------------------------------------------------------
{
unsigned options = [[NSUserDefaults standardUserDefaults] integerForKey:CEDefaultFindOptionsKey];
[self setSingleLineOption:((options & OgreSingleLineOption) != 0)];
[self setMultilineOption:((options & OgreMultilineOption) != 0)];
[self setIgnoreCaseOption:((options & OgreIgnoreCaseOption) != 0)];
[self setExtendOption:((options & OgreExtendOption) != 0)];
[self setFindLongestOption:((options & OgreFindLongestOption) != 0)];
[self setFindNotEmptyOption:((options & OgreFindNotEmptyOption) != 0)];
[self setFindEmptyOption:((options & OgreFindEmptyOption) != 0)];
[self setNegateSingleLineOption:((options & OgreNegateSingleLineOption) != 0)];
[self setCaptureGroupOption:((options & OgreCaptureGroupOption) != 0)];
[self setDontCaptureGroupOption:((options & OgreDontCaptureGroupOption) != 0)];
[self setDelimitByWhitespaceOption:((options & OgreDelimitByWhitespaceOption) != 0)];
[self setNotBeginOfLineOption:((options & OgreNotBOLOption) != 0)];
[self setNotEndOfLineOption:((options & OgreNotEOLOption) != 0)];
}
// ------------------------------------------------------
/// toggle replace button behavior and tooltip
- (void)toggleReplaceButtonBehavior

View File

@ -0,0 +1,33 @@
/*
CEFindPreferencesViewController.h
CotEditor
http://coteditor.com
Created by 1024jp on 2016-01-24.
------------------------------------------------------------------------------
© 2016 1024jp
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
@import Cocoa;
@interface CEFindPreferencesViewController : NSViewController
@end

View File

@ -0,0 +1,71 @@
/*
CEFindPreferencesViewController.m
CotEditor
http://coteditor.com
Created by 1024jp on 2016-01-24.
------------------------------------------------------------------------------
© 2016 1024jp
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
#import <OgreKit/OgreKit.h>
#import "CEFindPreferencesViewController.h"
#import "CEDefaults.h"
@implementation CEFindPreferencesViewController
#pragma mark Superclass Methods
// ------------------------------------------------------
/// nib name
- (nullable NSString *)nibName
// ------------------------------------------------------
{
return @"FindPreferencesView";
}
// ------------------------------------------------------
/// add check mark to selectable menus
- (BOOL)validateMenuItem:(nonnull NSMenuItem *)menuItem
// ------------------------------------------------------
{
if ([menuItem action] == @selector(changeSyntax:)) {
OgreSyntax syntax = [[NSUserDefaults standardUserDefaults] integerForKey:CEDefaultFindRegexSyntaxKey];
[menuItem setState:([menuItem tag] == syntax) ? NSOnState : NSOffState];
}
return YES;
}
#pragma Private Action Messages
// ------------------------------------------------------
/// change regex syntax setting via menu item
- (IBAction)changeSyntax:(nullable id)sender
// ------------------------------------------------------
{
[[NSUserDefaults standardUserDefaults] setInteger:[sender tag] forKey:CEDefaultFindRegexSyntaxKey];
}
@end

View File

@ -53,6 +53,21 @@ typedef NS_ENUM(NSInteger, CETextFinderAction) {
@property (readonly, nonatomic, nonnull) NSColor *highlightColor;
// Options
@property (nonatomic) BOOL ignoreCaseOption;
@property (nonatomic) BOOL singleLineOption;
@property (nonatomic) BOOL multilineOption;
@property (nonatomic) BOOL extendOption;
@property (nonatomic) BOOL findLongestOption;
@property (nonatomic) BOOL findNotEmptyOption;
@property (nonatomic) BOOL findEmptyOption;
@property (nonatomic) BOOL negateSingleLineOption;
@property (nonatomic) BOOL captureGroupOption;
@property (nonatomic) BOOL dontCaptureGroupOption;
@property (nonatomic) BOOL delimitByWhitespaceOption;
@property (nonatomic) BOOL notBeginOfLineOption;
@property (nonatomic) BOOL notEndOfLineOption;
+ (nonnull CETextFinder *)sharedTextFinder;

View File

@ -179,6 +179,12 @@ static const NSUInteger kMaxHistorySize = 20;
// It might better when it can be set in theme also for incompatible chars highlight.
// Just because I'm lazy.
// deserialize options setting from defaults
[self loadOptions];
for (NSString *optionPropertyName in [[self class] optionPropertyNames]) {
[self addObserver:self forKeyPath:optionPropertyName options:0 context:nil];
}
// add to responder chain
[NSApp setNextResponder:self];
@ -202,6 +208,10 @@ static const NSUInteger kMaxHistorySize = 20;
- (void)dealloc
// ------------------------------------------------------
{
for (NSString *optionPropertyName in [[self class] optionPropertyNames]) {
[self removeObserver:self forKeyPath:optionPropertyName];
}
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
@ -236,6 +246,24 @@ static const NSUInteger kMaxHistorySize = 20;
#pragma mark Protocol
//=======================================================
// NSKeyValueObserving Protocol
//=======================================================
// ------------------------------------------------------
///
- (void)observeValueForKeyPath:(nullable NSString *)keyPath ofObject:(nullable id)object change:(nullable NSDictionary<NSString *, id> *)change context:(nullable void *)context
// ------------------------------------------------------
{
if ([[[self class] optionPropertyNames] containsObject:keyPath]) {
[self saveOptions];
}
}
#pragma mark Notification
// ------------------------------------------------------
@ -855,6 +883,76 @@ static const NSUInteger kMaxHistorySize = 20;
}
// ------------------------------------------------------
/// serialize bit option value from instance booleans
- (void)saveOptions
// ------------------------------------------------------
{
unsigned options = OgreNoneOption;
if ([self singleLineOption]) { options |= OgreSingleLineOption; }
if ([self multilineOption]) { options |= OgreMultilineOption; }
if ([self ignoreCaseOption]) { options |= OgreIgnoreCaseOption; }
if ([self extendOption]) { options |= OgreExtendOption; }
if ([self findLongestOption]) { options |= OgreFindLongestOption; }
if ([self findNotEmptyOption]) { options |= OgreFindNotEmptyOption; }
if ([self findEmptyOption]) { options |= OgreFindEmptyOption; }
if ([self negateSingleLineOption]) { options |= OgreNegateSingleLineOption; }
if ([self captureGroupOption]) { options |= OgreCaptureGroupOption; }
if ([self dontCaptureGroupOption]) { options |= OgreDontCaptureGroupOption; }
if ([self delimitByWhitespaceOption]) { options |= OgreDelimitByWhitespaceOption; }
if ([self notBeginOfLineOption]) { options |= OgreNotBOLOption; }
if ([self notEndOfLineOption]) { options |= OgreNotEOLOption; }
[[NSUserDefaults standardUserDefaults] setInteger:options forKey:CEDefaultFindOptionsKey];
}
// ------------------------------------------------------
/// deserialize bit option value to instance booleans
- (void)loadOptions
// ------------------------------------------------------
{
unsigned options = [[NSUserDefaults standardUserDefaults] integerForKey:CEDefaultFindOptionsKey];
[self setSingleLineOption:((options & OgreSingleLineOption) != 0)];
[self setMultilineOption:((options & OgreMultilineOption) != 0)];
[self setIgnoreCaseOption:((options & OgreIgnoreCaseOption) != 0)];
[self setExtendOption:((options & OgreExtendOption) != 0)];
[self setFindLongestOption:((options & OgreFindLongestOption) != 0)];
[self setFindNotEmptyOption:((options & OgreFindNotEmptyOption) != 0)];
[self setFindEmptyOption:((options & OgreFindEmptyOption) != 0)];
[self setNegateSingleLineOption:((options & OgreNegateSingleLineOption) != 0)];
[self setCaptureGroupOption:((options & OgreCaptureGroupOption) != 0)];
[self setDontCaptureGroupOption:((options & OgreDontCaptureGroupOption) != 0)];
[self setDelimitByWhitespaceOption:((options & OgreDelimitByWhitespaceOption) != 0)];
[self setNotBeginOfLineOption:((options & OgreNotBOLOption) != 0)];
[self setNotEndOfLineOption:((options & OgreNotEOLOption) != 0)];
}
// ------------------------------------------------------
/// array of OgreKit option property names to observe
+ (nonnull NSArray<NSString *> *)optionPropertyNames
// ------------------------------------------------------
{
return @[NSStringFromSelector(@selector(singleLineOption)),
NSStringFromSelector(@selector(multilineOption)),
NSStringFromSelector(@selector(ignoreCaseOption)),
NSStringFromSelector(@selector(extendOption)),
NSStringFromSelector(@selector(findLongestOption)),
NSStringFromSelector(@selector(findNotEmptyOption)),
NSStringFromSelector(@selector(findEmptyOption)),
NSStringFromSelector(@selector(negateSingleLineOption)),
NSStringFromSelector(@selector(captureGroupOption)),
NSStringFromSelector(@selector(dontCaptureGroupOption)),
NSStringFromSelector(@selector(delimitByWhitespaceOption)),
NSStringFromSelector(@selector(notBeginOfLineOption)),
NSStringFromSelector(@selector(notEndOfLineOption)),
];
}
#pragma mark Private Dynamic Accessors

View File

@ -89,73 +89,8 @@
/* Class = "NSMenuItem"; title = "Clear Recent Replacements"; ObjectID = "vfK-an-Qnl"; */
"vfK-an-Qnl.title" = "Letzte Ersetzungen löschen";
// Advanced Options
/* Class = "NSPopUpButton"; ibShadowedToolTip = "Set advanced options"; ObjectID = "EY8-gj-fQb"; */
"EY8-gj-fQb.ibShadowedToolTip" = "Erweitere Optionen einstellen";
/* Class = "NSMenuItem"; title = "Advanced Options"; ObjectID = "SsS-EF-JyP"; */
"SsS-EF-JyP.title" = "Erweitere Optionen";
/* Class = "NSMenuItem"; title = "Wrap Around"; ObjectID = "Oqm-Wt-G7B"; */
"Oqm-Wt-G7B.title" = "Gesamtes Dokument";
/* Class = "NSMenuItem"; title = "Select Next Match after Replace"; ObjectID = "RfX-XI-iRH"; */
"RfX-XI-iRH.title" = "Nach der Ersetzung nächste Übereinstimmung auswählen";
/* Class = "NSMenuItem"; title = "Auto-Close Progress Dialog"; ObjectID = "ONX-V4-H0w"; */
"ONX-V4-H0w.title" = "Verlaufsanzeige automatisch schließen";
/* Class = "NSMenuItem"; title = "Textual Search Options"; ObjectID = "hX3-jg-Uqc"; */
"hX3-jg-Uqc.title" = "Optionen für textuelles Suchen";
/* Class = "NSMenuItem"; title = "Delimit by Whitespace"; ObjectID = "4Pf-nh-75E"; */
"4Pf-nh-75E.title" = "Mit Leerzeichen trennen";
/* Class = "NSMenuItem"; title = "Regular Expression Options"; ObjectID = "UZ5-oK-DED"; */
"UZ5-oK-DED.title" = "Optionen für regulären Ausdruck";
/* Class = "NSMenuItem"; title = "Syntax"; ObjectID = "Uhr-hw-nIf"; */
"Uhr-hw-nIf.title" = "Syntax";
/* Class = "NSMenu"; title = "Syntax"; ObjectID = "bs2-Tz-po4"; */
"bs2-Tz-po4.title" = "Syntax";
/* Class = "NSMenuItem"; title = "POSIX Basic"; ObjectID = "y7k-yn-gy6"; */
"y7k-yn-gy6.title" = "POSIX Basic";
/* Class = "NSMenuItem"; title = "POSIX Extended"; ObjectID = "QfE-cX-d9h"; */
"QfE-cX-d9h.title" = "POSIX Erweitert";
/* Class = "NSMenuItem"; title = "Emacs"; ObjectID = "IKR-qF-Nqu"; */
"IKR-qF-Nqu.title" = "Emacs";
/* Class = "NSMenuItem"; title = "Grep"; ObjectID = "Nbe-7c-AnJ"; */
"Nbe-7c-AnJ.title" = "Grep";
/* Class = "NSMenuItem"; title = "GNU Regex"; ObjectID = "sgn-JJ-gas"; */
"sgn-JJ-gas.title" = "GNU Regex";
/* Class = "NSMenuItem"; title = "Java"; ObjectID = "heJ-on-iUB"; */
"heJ-on-iUB.title" = "Java";
/* Class = "NSMenuItem"; title = "Perl"; ObjectID = "mdl-TK-1fB"; */
"mdl-TK-1fB.title" = "Perl";
/* Class = "NSMenuItem"; title = "Ruby"; ObjectID = "NPK-8x-xDg"; */
"NPK-8x-xDg.title" = "Ruby";
/* Class = "NSMenuItem"; title = "Single Line"; ObjectID = "UQ6-Up-xWI"; */
"UQ6-Up-xWI.title" = "Eine Zeile";
/* Class = "NSMenuItem"; title = "Multiline"; ObjectID = "kPN-Hy-ym0"; */
"kPN-Hy-ym0.title" = "Mehrere Zeilen";
/* Class = "NSMenuItem"; title = "Extend"; ObjectID = "14O-E6-7lS"; */
"14O-E6-7lS.title" = "Erweitern";
/* Class = "NSMenuItem"; title = "Find Longest"; ObjectID = "xBb-Le-i3R"; */
"xBb-Le-i3R.title" = "Längstes suchen";
/* Class = "NSMenuItem"; title = "Find Empty"; ObjectID = "amg-LN-hui"; */
"amg-LN-hui.title" = "Leere Suche";
/* Class = "NSMenuItem"; title = "Find Not Empty"; ObjectID = "3D5-4J-V4l"; */
"3D5-4J-V4l.title" = "Suche nicht leer";
/* Class = "NSMenuItem"; title = "Negate Single Line"; ObjectID = "Sdf-5P-GP1"; */
"Sdf-5P-GP1.title" = "Eine Zeile ablehnen";
/* Class = "NSMenuItem"; title = "Capture Group"; ObjectID = "LiY-vD-U6B"; */
"LiY-vD-U6B.title" = "In Gruppe sichern";
/* Class = "NSMenuItem"; title = "Dont Capture Group"; ObjectID = "fQl-sZ-bjK"; */
"fQl-sZ-bjK.title" = "Kein Sichern in Gruppe";
/* Class = "NSMenuItem"; title = "Not Begin of Line"; ObjectID = "AFF-AC-IR9"; */
"AFF-AC-IR9.title" = "Nicht Zeilenanfang";
/* Class = "NSMenuItem"; title = "Not End of Line"; ObjectID = "kCx-M9-GDk"; */
"kCx-M9-GDk.title" = "Nicht Zeilenende";
/* Class = "NSButton"; ibShadowedToolTip = "Set advanced options"; ObjectID = "ESq-ws-6H3"; */
"ESq-ws-6H3.ibShadowedToolTip" = "Erweitere Optionen einstellen";
// Find Result

View File

@ -0,0 +1,95 @@
/*
FindPreferencesView.strings (German)
CotEditor
http://coteditor.com
Created by 1024jp on 2016-01-24.
------------------------------------------------------------------------------
© 2015-2016 CotEditor Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
/* Class = "NSTextFieldCell"; title = "Advanced Find Options"; ObjectID = "Dl6-kv-hhz"; */
"Dl6-kv-hhz.title" = "Erweitere Suchoptionen";
/* Class = "NSButtonCell"; title = "Wrap around"; ObjectID = "o7S-uI-urg"; */
"o7S-uI-urg.title" = "Gesamtes Dokument";
/* Class = "NSButtonCell"; title = "Select next match after replace"; ObjectID = "XBp-LE-3Ry"; */
"XBp-LE-3Ry.title" = "Nach der Ersetzung nächste Übereinstimmung auswählen";
/* Class = "NSButtonCell"; title = "Auto-close progress dialog"; ObjectID = "KBq-zH-H2M"; */
"KBq-zH-H2M.title" = "Verlaufsanzeige automatisch schließen";
// Textual Search
/* Class = "NSTextFieldCell"; title = "Textual Search"; ObjectID = "d1L-6X-N8c"; */
"d1L-6X-N8c.title" = "Textuelles Suchen";
/* Class = "NSButtonCell"; title = "Delimit by whitespace"; ObjectID = "3mQ-og-LXu"; */
"3mQ-og-LXu.title" = "Mit Leerzeichen trennen";
// Regular Expression
/* Class = "NSTextFieldCell"; title = "Regular Expression"; ObjectID = "Xa9-i4-ELR"; */
"Xa9-i4-ELR.title" = "Regulären Ausdruck";
/* Class = "NSTextFieldCell"; title = "Syntax:"; ObjectID = "MvA-iq-o2S"; */
"MvA-iq-o2S.title" = "Syntax:";
/* Class = "NSMenuItem"; title = "Ruby"; ObjectID = "k4a-ql-TV8"; */
"k4a-ql-TV8.title" = "Ruby";
/* Class = "NSMenuItem"; title = "POSIX Basic"; ObjectID = "XXk-aG-HmM"; */
"XXk-aG-HmM.title" = "POSIX Basic";
/* Class = "NSMenuItem"; title = "POSIX Extended"; ObjectID = "Z5o-Is-Dim"; */
"Z5o-Is-Dim.title" = "POSIX Erweitert";
/* Class = "NSMenuItem"; title = "Emacs"; ObjectID = "vHs-3L-t8t"; */
"vHs-3L-t8t.title" = "Emacs";
/* Class = "NSMenuItem"; title = "Grep"; ObjectID = "lI9-hA-FUX"; */
"lI9-hA-FUX.title" = "Grep";
/* Class = "NSMenuItem"; title = "GNU Regex"; ObjectID = "7Lh-bm-dFh"; */
"7Lh-bm-dFh.title" = "GNU Regex";
/* Class = "NSMenuItem"; title = "Perl"; ObjectID = "wpF-X7-PlC"; */
"wpF-X7-PlC.title" = "Perl";
/* Class = "NSMenuItem"; title = "Java"; ObjectID = "3oN-JC-4BB"; */
"3oN-JC-4BB.title" = "Java";
/* Class = "NSButtonCell"; title = "Single Line"; ObjectID = "nqr-AM-oJQ"; */
"nqr-AM-oJQ.title" = "Eine Zeile";
/* Class = "NSButtonCell"; title = "Multiline"; ObjectID = "YXU-NA-BZb"; */
"YXU-NA-BZb.title" = "Mehrere Zeilen";
/* Class = "NSButtonCell"; title = "Extend"; ObjectID = "iMa-K7-Lhy"; */
"iMa-K7-Lhy.title" = "Erweitern";
/* Class = "NSButtonCell"; title = "Find longest"; ObjectID = "5oj-ch-YiX"; */
"5oj-ch-YiX.title" = "Längstes suchen";
/* Class = "NSButtonCell"; title = "Find not empty"; ObjectID = "uZ1-aS-LUd"; */
"uZ1-aS-LUd.title" = "Suche nicht leer";
/* Class = "NSButtonCell"; title = "Negate single line"; ObjectID = "q8J-xH-8Q3"; */
"q8J-xH-8Q3.title" = "Eine Zeile ablehnen";
/* Class = "NSButtonCell"; title = "Capture Group"; ObjectID = "GMh-gg-UVh"; */
"GMh-gg-UVh.title" = "In Gruppe sichern";
/* Class = "NSButtonCell"; title = "Dont capture group"; ObjectID = "xqN-fH-Reh"; */
"xqN-fH-Reh.title" = "Kein Sichern in Gruppe";
/* Class = "NSButtonCell"; title = "Not begin of line"; ObjectID = "Kj6-NQ-Gk5"; */
"Kj6-NQ-Gk5.title" = "Nicht Zeilenanfang";
/* Class = "NSButtonCell"; title = "Not end of line"; ObjectID = "rj9-Y8-PMO"; */
"rj9-Y8-PMO.title" = "Nicht Zeilenende";
/* Class = "NSButtonCell"; title = "Find empty"; ObjectID = "hHc-CR-50Y"; */
"hHc-CR-50Y.title" = "Leere Suche";

View File

@ -89,73 +89,8 @@
/* Class = "NSMenuItem"; title = "Clear Recent Replacements"; ObjectID = "vfK-an-Qnl"; */
"vfK-an-Qnl.title" = "置換履歴を消去";
// Advanced Options
/* Class = "NSPopUpButton"; ibShadowedToolTip = "Set advanced options"; ObjectID = "EY8-gj-fQb"; */
"EY8-gj-fQb.ibShadowedToolTip" = "詳細オプションを設定";
/* Class = "NSMenuItem"; title = "Advanced Options"; ObjectID = "SsS-EF-JyP"; */
"SsS-EF-JyP.title" = "詳細オプション";
/* Class = "NSMenuItem"; title = "Wrap Around"; ObjectID = "Oqm-Wt-G7B"; */
"Oqm-Wt-G7B.title" = "折り返す";
/* Class = "NSMenuItem"; title = "Select Next Match after Replace"; ObjectID = "RfX-XI-iRH"; */
"RfX-XI-iRH.title" = "置換後に次のマッチを選択";
/* Class = "NSMenuItem"; title = "Auto-Close Progress Dialog"; ObjectID = "ONX-V4-H0w"; */
"ONX-V4-H0w.title" = "完了後自動的に進捗表示を閉じる";
/* Class = "NSMenuItem"; title = "Textual Search Options"; ObjectID = "hX3-jg-Uqc"; */
"hX3-jg-Uqc.title" = "テキスト検索オプション";
/* Class = "NSMenuItem"; title = "Delimit by Whitespace"; ObjectID = "4Pf-nh-75E"; */
"4Pf-nh-75E.title" = "空白で区切る";
/* Class = "NSMenuItem"; title = "Regular Expression Options"; ObjectID = "UZ5-oK-DED"; */
"UZ5-oK-DED.title" = "正規表現オプション";
/* Class = "NSMenuItem"; title = "Syntax"; ObjectID = "Uhr-hw-nIf"; */
"Uhr-hw-nIf.title" = "正規表現構文";
/* Class = "NSMenu"; title = "Syntax"; ObjectID = "bs2-Tz-po4"; */
"bs2-Tz-po4.title" = "正規表現構文";
/* Class = "NSMenuItem"; title = "POSIX Basic"; ObjectID = "y7k-yn-gy6"; */
"y7k-yn-gy6.title" = "POSIX 基本";
/* Class = "NSMenuItem"; title = "POSIX Extended"; ObjectID = "QfE-cX-d9h"; */
"QfE-cX-d9h.title" = "POSIX 拡張";
/* Class = "NSMenuItem"; title = "Emacs"; ObjectID = "IKR-qF-Nqu"; */
"IKR-qF-Nqu.title" = "Emacs";
/* Class = "NSMenuItem"; title = "Grep"; ObjectID = "Nbe-7c-AnJ"; */
"Nbe-7c-AnJ.title" = "Grep";
/* Class = "NSMenuItem"; title = "GNU Regex"; ObjectID = "sgn-JJ-gas"; */
"sgn-JJ-gas.title" = "GNU Regex";
/* Class = "NSMenuItem"; title = "Java"; ObjectID = "heJ-on-iUB"; */
"heJ-on-iUB.title" = "Java";
/* Class = "NSMenuItem"; title = "Perl"; ObjectID = "mdl-TK-1fB"; */
"mdl-TK-1fB.title" = "Perl";
/* Class = "NSMenuItem"; title = "Ruby"; ObjectID = "NPK-8x-xDg"; */
"NPK-8x-xDg.title" = "Ruby";
/* Class = "NSMenuItem"; title = "Single Line"; ObjectID = "UQ6-Up-xWI"; */
"UQ6-Up-xWI.title" = "単一行";
/* Class = "NSMenuItem"; title = "Multiline"; ObjectID = "kPN-Hy-ym0"; */
"kPN-Hy-ym0.title" = "ドット全文字マッチ";
/* Class = "NSMenuItem"; title = "Extend"; ObjectID = "14O-E6-7lS"; */
"14O-E6-7lS.title" = "拡張式";
/* Class = "NSMenuItem"; title = "Find Longest"; ObjectID = "xBb-Le-i3R"; */
"xBb-Le-i3R.title" = "最長マッチ";
/* Class = "NSMenuItem"; title = "Find Empty"; ObjectID = "amg-LN-hui"; */
"amg-LN-hui.title" = "非空マッチ後に空マッチ";
/* Class = "NSMenuItem"; title = "Find Not Empty"; ObjectID = "3D5-4J-V4l"; */
"3D5-4J-V4l.title" = "空マッチを無視";
/* Class = "NSMenuItem"; title = "Negate Single Line"; ObjectID = "Sdf-5P-GP1"; */
"Sdf-5P-GP1.title" = "“単一行”を無効にする";
/* Class = "NSMenuItem"; title = "Capture Group"; ObjectID = "LiY-vD-U6B"; */
"LiY-vD-U6B.title" = "つねに無名グループを捕獲";
/* Class = "NSMenuItem"; title = "Dont Capture Group"; ObjectID = "fQl-sZ-bjK"; */
"fQl-sZ-bjK.title" = "無名グループを捕獲しない";
/* Class = "NSMenuItem"; title = "Not Begin of Line"; ObjectID = "AFF-AC-IR9"; */
"AFF-AC-IR9.title" = "先頭を行頭とみなさない";
/* Class = "NSMenuItem"; title = "Not End of Line"; ObjectID = "kCx-M9-GDk"; */
"kCx-M9-GDk.title" = "終端を行末とみなさない";
/* Class = "NSButton"; ibShadowedToolTip = "Set advanced options"; ObjectID = "ESq-ws-6H3"; */
"ESq-ws-6H3.ibShadowedToolTip" = "詳細オプションを設定";
// Find Result

View File

@ -0,0 +1,95 @@
/*
FindPreferencesView.strings (Japanese)
CotEditor
http://coteditor.com
Created by 1024jp on 2016-01-24.
------------------------------------------------------------------------------
© 2015-2016 CotEditor Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
/* Class = "NSTextFieldCell"; title = "Advanced Find Options"; ObjectID = "Dl6-kv-hhz"; */
"Dl6-kv-hhz.title" = "詳細検索オプション";
/* Class = "NSButtonCell"; title = "Wrap around"; ObjectID = "o7S-uI-urg"; */
"o7S-uI-urg.title" = "折り返す";
/* Class = "NSButtonCell"; title = "Select next match after replace"; ObjectID = "XBp-LE-3Ry"; */
"XBp-LE-3Ry.title" = "置換後に次のマッチを選択";
/* Class = "NSButtonCell"; title = "Auto-close progress dialog"; ObjectID = "KBq-zH-H2M"; */
"KBq-zH-H2M.title" = "完了後自動的に進捗表示を閉じる";
// Textual Search
/* Class = "NSTextFieldCell"; title = "Textual Search"; ObjectID = "d1L-6X-N8c"; */
"d1L-6X-N8c.title" = "テキスト検索";
/* Class = "NSButtonCell"; title = "Delimit by whitespace"; ObjectID = "3mQ-og-LXu"; */
"3mQ-og-LXu.title" = "空白で区切る";
// Regular Expression
/* Class = "NSTextFieldCell"; title = "Regular Expression"; ObjectID = "Xa9-i4-ELR"; */
"Xa9-i4-ELR.title" = "正規表現";
/* Class = "NSTextFieldCell"; title = "Syntax:"; ObjectID = "MvA-iq-o2S"; */
"MvA-iq-o2S.title" = "シンタックス:";
/* Class = "NSMenuItem"; title = "Ruby"; ObjectID = "k4a-ql-TV8"; */
"k4a-ql-TV8.title" = "Ruby";
/* Class = "NSMenuItem"; title = "POSIX Basic"; ObjectID = "XXk-aG-HmM"; */
"XXk-aG-HmM.title" = "POSIX 基本";
/* Class = "NSMenuItem"; title = "POSIX Extended"; ObjectID = "Z5o-Is-Dim"; */
"Z5o-Is-Dim.title" = "POSIX 拡張";
/* Class = "NSMenuItem"; title = "Emacs"; ObjectID = "vHs-3L-t8t"; */
"vHs-3L-t8t.title" = "Emacs";
/* Class = "NSMenuItem"; title = "Grep"; ObjectID = "lI9-hA-FUX"; */
"lI9-hA-FUX.title" = "Grep";
/* Class = "NSMenuItem"; title = "GNU Regex"; ObjectID = "7Lh-bm-dFh"; */
"7Lh-bm-dFh.title" = "GNU Regex";
/* Class = "NSMenuItem"; title = "Perl"; ObjectID = "wpF-X7-PlC"; */
"wpF-X7-PlC.title" = "Perl";
/* Class = "NSMenuItem"; title = "Java"; ObjectID = "3oN-JC-4BB"; */
"3oN-JC-4BB.title" = "Java";
/* Class = "NSButtonCell"; title = "Single Line"; ObjectID = "nqr-AM-oJQ"; */
"nqr-AM-oJQ.title" = "単一行";
/* Class = "NSButtonCell"; title = "Multiline"; ObjectID = "YXU-NA-BZb"; */
"YXU-NA-BZb.title" = "ドット全文字マッチ";
/* Class = "NSButtonCell"; title = "Extend"; ObjectID = "iMa-K7-Lhy"; */
"iMa-K7-Lhy.title" = "拡張式";
/* Class = "NSButtonCell"; title = "Find longest"; ObjectID = "5oj-ch-YiX"; */
"5oj-ch-YiX.title" = "最長マッチ";
/* Class = "NSButtonCell"; title = "Find not empty"; ObjectID = "uZ1-aS-LUd"; */
"uZ1-aS-LUd.title" = "空マッチを無視";
/* Class = "NSButtonCell"; title = "Negate single line"; ObjectID = "q8J-xH-8Q3"; */
"q8J-xH-8Q3.title" = "“単一行”を無効にする";
/* Class = "NSButtonCell"; title = "Capture Group"; ObjectID = "GMh-gg-UVh"; */
"GMh-gg-UVh.title" = "つねに無名グループを捕獲";
/* Class = "NSButtonCell"; title = "Dont capture group"; ObjectID = "xqN-fH-Reh"; */
"xqN-fH-Reh.title" = "無名グループを捕獲しない";
/* Class = "NSButtonCell"; title = "Not begin of line"; ObjectID = "Kj6-NQ-Gk5"; */
"Kj6-NQ-Gk5.title" = "先頭を行頭とみなさない";
/* Class = "NSButtonCell"; title = "Not end of line"; ObjectID = "rj9-Y8-PMO"; */
"rj9-Y8-PMO.title" = "終端を行末とみなさない";
/* Class = "NSButtonCell"; title = "Find empty"; ObjectID = "hHc-CR-50Y"; */
"hHc-CR-50Y.title" = "非空マッチ後に空マッチ";

View File

@ -90,73 +90,8 @@
/* Class = "NSMenuItem"; title = "Clear Recent Replacements"; ObjectID = "vfK-an-Qnl"; */
"vfK-an-Qnl.title" = "清除最近替换";
// Advanced Options
/* Class = "NSPopUpButton"; ibShadowedToolTip = "Set advanced options"; ObjectID = "EY8-gj-fQb"; */
"EY8-gj-fQb.ibShadowedToolTip" = "设置高级选项";
/* Class = "NSMenuItem"; title = "Advanced Options"; ObjectID = "SsS-EF-JyP"; */
"SsS-EF-JyP.title" = "高级选项";
/* Class = "NSMenuItem"; title = "Wrap Around"; ObjectID = "Oqm-Wt-G7B"; */
"Oqm-Wt-G7B.title" = "折行查找";
/* Class = "NSMenuItem"; title = "Select Next Match after Replace"; ObjectID = "RfX-XI-iRH"; */
"RfX-XI-iRH.title" = "替换后选择下一个匹配";
/* Class = "NSMenuItem"; title = "Auto-Close Progress Dialog"; ObjectID = "ONX-V4-H0w"; */
"ONX-V4-H0w.title" = "自动关闭进度表";
/* Class = "NSMenuItem"; title = "Textual Search Options"; ObjectID = "hX3-jg-Uqc"; */
"hX3-jg-Uqc.title" = "文本查找选项";
/* Class = "NSMenuItem"; title = "Delimit by Whitespace"; ObjectID = "4Pf-nh-75E"; */
"4Pf-nh-75E.title" = "以空格分隔";
/* Class = "NSMenuItem"; title = "Regular Expression Options"; ObjectID = "UZ5-oK-DED"; */
"UZ5-oK-DED.title" = "正则表达式选项";
/* Class = "NSMenuItem"; title = "Syntax"; ObjectID = "Uhr-hw-nIf"; */
"Uhr-hw-nIf.title" = "查找方式";
/* Class = "NSMenu"; title = "Syntax"; ObjectID = "bs2-Tz-po4"; */
"bs2-Tz-po4.title" = "查找方式";
/* Class = "NSMenuItem"; title = "POSIX Basic"; ObjectID = "y7k-yn-gy6"; */
"y7k-yn-gy6.title" = "基本 POSIX";
/* Class = "NSMenuItem"; title = "POSIX Extended"; ObjectID = "QfE-cX-d9h"; */
"QfE-cX-d9h.title" = "扩展 POSIX";
/* Class = "NSMenuItem"; title = "Emacs"; ObjectID = "IKR-qF-Nqu"; */
"IKR-qF-Nqu.title" = "Emacs";
/* Class = "NSMenuItem"; title = "Grep"; ObjectID = "Nbe-7c-AnJ"; */
"Nbe-7c-AnJ.title" = "Grep";
/* Class = "NSMenuItem"; title = "GNU Regex"; ObjectID = "sgn-JJ-gas"; */
"sgn-JJ-gas.title" = "GNU Regex";
/* Class = "NSMenuItem"; title = "Java"; ObjectID = "heJ-on-iUB"; */
"heJ-on-iUB.title" = "Java";
/* Class = "NSMenuItem"; title = "Perl"; ObjectID = "mdl-TK-1fB"; */
"mdl-TK-1fB.title" = "Perl";
/* Class = "NSMenuItem"; title = "Ruby"; ObjectID = "NPK-8x-xDg"; */
"NPK-8x-xDg.title" = "Ruby";
/* Class = "NSMenuItem"; title = "Single Line"; ObjectID = "UQ6-Up-xWI"; */
"UQ6-Up-xWI.title" = "单行";
/* Class = "NSMenuItem"; title = "Multiline"; ObjectID = "kPN-Hy-ym0"; */
"kPN-Hy-ym0.title" = "点代表任意字符";
/* Class = "NSMenuItem"; title = "Extend"; ObjectID = "14O-E6-7lS"; */
"14O-E6-7lS.title" = "扩展名";
/* Class = "NSMenuItem"; title = "Find Longest"; ObjectID = "xBb-Le-i3R"; */
"xBb-Le-i3R.title" = "匹配最长";
/* Class = "NSMenuItem"; title = "Find Empty"; ObjectID = "amg-LN-hui"; */
"amg-LN-hui.title" = "不匹配空字符";
/* Class = "NSMenuItem"; title = "Find Not Empty"; ObjectID = "3D5-4J-V4l"; */
"3D5-4J-V4l.title" = "匹配非空字符后的空字符";
/* Class = "NSMenuItem"; title = "Negate Single Line"; ObjectID = "Sdf-5P-GP1"; */
"Sdf-5P-GP1.title" = "单行无效";
/* Class = "NSMenuItem"; title = "Capture Group"; ObjectID = "LiY-vD-U6B"; */
"LiY-vD-U6B.title" = "按组匹配";
/* Class = "NSMenuItem"; title = "Dont Capture Group"; ObjectID = "fQl-sZ-bjK"; */
"fQl-sZ-bjK.title" = "不匹配组";
/* Class = "NSMenuItem"; title = "Not Begin of Line"; ObjectID = "AFF-AC-IR9"; */
"AFF-AC-IR9.title" = "不匹配行初";
/* Class = "NSMenuItem"; title = "Not End of Line"; ObjectID = "kCx-M9-GDk"; */
"kCx-M9-GDk.title" = "不匹配行末";
/* Class = "NSButton"; ibShadowedToolTip = "Set advanced options"; ObjectID = "ESq-ws-6H3"; */
"ESq-ws-6H3.ibShadowedToolTip" = "设置高级选项";
// Find Result

View File

@ -0,0 +1,96 @@
/*
FindPreferencesView.strings (Simplified Chinese)
CotEditor
http://coteditor.com
Created by 1024jp on 2016-01-24.
Localized by onevcat
------------------------------------------------------------------------------
© 2015-2016 CotEditor Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
/* Class = "NSTextFieldCell"; title = "Advanced Find Options"; ObjectID = "Dl6-kv-hhz"; */
"Dl6-kv-hhz.title" = "高级查找选项";
/* Class = "NSButtonCell"; title = "Wrap around"; ObjectID = "o7S-uI-urg"; */
"o7S-uI-urg.title" = "折行查找";
/* Class = "NSButtonCell"; title = "Select next match after replace"; ObjectID = "XBp-LE-3Ry"; */
"XBp-LE-3Ry.title" = "替换后选择下一个匹配";
/* Class = "NSButtonCell"; title = "Auto-close progress dialog"; ObjectID = "KBq-zH-H2M"; */
"KBq-zH-H2M.title" = "自动关闭进度表";
// Textual Search
/* Class = "NSTextFieldCell"; title = "Textual Search"; ObjectID = "d1L-6X-N8c"; */
"d1L-6X-N8c.title" = "文本查找";
/* Class = "NSButtonCell"; title = "Delimit by whitespace"; ObjectID = "3mQ-og-LXu"; */
"3mQ-og-LXu.title" = "以空格分隔";
// Regular Expression
/* Class = "NSTextFieldCell"; title = "Regular Expression"; ObjectID = "Xa9-i4-ELR"; */
"Xa9-i4-ELR.title" = "正则表达式";
/* Class = "NSTextFieldCell"; title = "Syntax:"; ObjectID = "MvA-iq-o2S"; */
"MvA-iq-o2S.title" = "查找方式:";
/* Class = "NSMenuItem"; title = "Ruby"; ObjectID = "k4a-ql-TV8"; */
"k4a-ql-TV8.title" = "Ruby";
/* Class = "NSMenuItem"; title = "POSIX Basic"; ObjectID = "XXk-aG-HmM"; */
"XXk-aG-HmM.title" = "基本 POSIX";
/* Class = "NSMenuItem"; title = "POSIX Extended"; ObjectID = "Z5o-Is-Dim"; */
"Z5o-Is-Dim.title" = "扩展 POSIX";
/* Class = "NSMenuItem"; title = "Emacs"; ObjectID = "vHs-3L-t8t"; */
"vHs-3L-t8t.title" = "Emacs";
/* Class = "NSMenuItem"; title = "Grep"; ObjectID = "lI9-hA-FUX"; */
"lI9-hA-FUX.title" = "Grep";
/* Class = "NSMenuItem"; title = "GNU Regex"; ObjectID = "7Lh-bm-dFh"; */
"7Lh-bm-dFh.title" = "GNU Regex";
/* Class = "NSMenuItem"; title = "Perl"; ObjectID = "wpF-X7-PlC"; */
"wpF-X7-PlC.title" = "Perl";
/* Class = "NSMenuItem"; title = "Java"; ObjectID = "3oN-JC-4BB"; */
"3oN-JC-4BB.title" = "Java";
/* Class = "NSButtonCell"; title = "Single Line"; ObjectID = "nqr-AM-oJQ"; */
"nqr-AM-oJQ.title" = "单行";
/* Class = "NSButtonCell"; title = "Multiline"; ObjectID = "YXU-NA-BZb"; */
"YXU-NA-BZb.title" = "点代表任意字符";
/* Class = "NSButtonCell"; title = "Extend"; ObjectID = "iMa-K7-Lhy"; */
"iMa-K7-Lhy.title" = "扩展名";
/* Class = "NSButtonCell"; title = "Find longest"; ObjectID = "5oj-ch-YiX"; */
"5oj-ch-YiX.title" = "匹配最长";
/* Class = "NSButtonCell"; title = "Find not empty"; ObjectID = "uZ1-aS-LUd"; */
"uZ1-aS-LUd.title" = "匹配非空字符后的空字符";
/* Class = "NSButtonCell"; title = "Negate single line"; ObjectID = "q8J-xH-8Q3"; */
"q8J-xH-8Q3.title" = "单行无效";
/* Class = "NSButtonCell"; title = "Capture Group"; ObjectID = "GMh-gg-UVh"; */
"GMh-gg-UVh.title" = "按组匹配";
/* Class = "NSButtonCell"; title = "Dont capture group"; ObjectID = "xqN-fH-Reh"; */
"xqN-fH-Reh.title" = "不匹配组";
/* Class = "NSButtonCell"; title = "Not begin of line"; ObjectID = "Kj6-NQ-Gk5"; */
"Kj6-NQ-Gk5.title" = "不匹配行初";
/* Class = "NSButtonCell"; title = "Not end of line"; ObjectID = "rj9-Y8-PMO"; */
"rj9-Y8-PMO.title" = "不匹配行末";
/* Class = "NSButtonCell"; title = "Find empty"; ObjectID = "hHc-CR-50Y"; */
"hHc-CR-50Y.title" = "不匹配空字符";