This commit is contained in:
2019-04-09 01:13:49 -07:00
parent 01d7489c05
commit 9884d19108
6 changed files with 171 additions and 290 deletions

View File

@@ -52,20 +52,21 @@
</customObject> </customObject>
<window allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="ProgressBarWindow" animationBehavior="default" id="21" userLabel="ProgressWindow"> <window allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="ProgressBarWindow" animationBehavior="default" id="21" userLabel="ProgressWindow">
<windowStyleMask key="styleMask" titled="YES" miniaturizable="YES" resizable="YES"/> <windowStyleMask key="styleMask" titled="YES" miniaturizable="YES" resizable="YES"/>
<rect key="contentRect" x="472" y="537" width="600" height="83"/> <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="472" y="537" width="500" height="83"/>
<rect key="screenRect" x="0.0" y="0.0" width="1440" height="878"/> <rect key="screenRect" x="0.0" y="0.0" width="1440" height="878"/>
<value key="minSize" type="size" width="600" height="83"/> <value key="minSize" type="size" width="500" height="83"/>
<value key="maxSize" type="size" width="1200" height="83"/> <value key="maxSize" type="size" width="1200" height="83"/>
<view key="contentView" id="2"> <view key="contentView" id="2">
<rect key="frame" x="0.0" y="0.0" width="600" height="83"/> <rect key="frame" x="0.0" y="0.0" width="500" height="83"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<progressIndicator wantsLayer="YES" verticalHuggingPriority="750" maxValue="100" bezeled="NO" indeterminate="YES" style="bar" id="204"> <progressIndicator wantsLayer="YES" verticalHuggingPriority="750" maxValue="100" bezeled="NO" indeterminate="YES" style="bar" id="204">
<rect key="frame" x="18" y="27" width="472" height="20"/> <rect key="frame" x="18" y="27" width="372" height="20"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
</progressIndicator> </progressIndicator>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" id="205"> <textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" id="205">
<rect key="frame" x="18" y="55" width="565" height="17"/> <rect key="frame" x="18" y="55" width="465" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="clipping" sendsActionOnEndEditing="YES" baseWritingDirection="leftToRight" alignment="left" id="472"> <textFieldCell key="cell" lineBreakMode="clipping" sendsActionOnEndEditing="YES" baseWritingDirection="leftToRight" alignment="left" id="472">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
@@ -74,7 +75,7 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<button verticalHuggingPriority="750" id="206"> <button verticalHuggingPriority="750" id="206">
<rect key="frame" x="500" y="20" width="86" height="32"/> <rect key="frame" x="400" y="20" width="86" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="push" title="Quit" bezelStyle="rounded" alignment="center" borderStyle="border" inset="2" id="473"> <buttonCell key="cell" type="push" title="Quit" bezelStyle="rounded" alignment="center" borderStyle="border" inset="2" id="473">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
@@ -108,25 +109,25 @@ Gw
</textFieldCell> </textFieldCell>
</textField> </textField>
<scrollView autohidesScrollers="YES" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" id="304"> <scrollView autohidesScrollers="YES" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" id="304">
<rect key="frame" x="20" y="-203" width="555" height="202"/> <rect key="frame" x="20" y="-203" width="455" height="202"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="2mm-QF-kpX"> <clipView key="contentView" copiesOnScroll="NO" id="2mm-QF-kpX">
<rect key="frame" x="1" y="1" width="553" height="200"/> <rect key="frame" x="1" y="1" width="453" height="200"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<textView editable="NO" importsGraphics="NO" richText="NO" verticallyResizable="YES" findStyle="panel" allowsDocumentBackgroundColorChange="YES" linkDetection="YES" id="307"> <textView editable="NO" importsGraphics="NO" richText="NO" verticallyResizable="YES" findStyle="panel" allowsDocumentBackgroundColorChange="YES" linkDetection="YES" id="307">
<rect key="frame" x="0.0" y="0.0" width="553" height="200"/> <rect key="frame" x="0.0" y="0.0" width="453" height="200"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> <size key="minSize" width="453" height="200"/>
<size key="minSize" width="553" height="200"/> <size key="maxSize" width="463" height="10000000"/>
<size key="maxSize" width="553" height="10000000"/> <color key="insertionPointColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
<color key="insertionPointColor" name="textColor" catalog="System" colorSpace="catalog"/>
<connections> <connections>
<outlet property="delegate" destination="207" id="489"/> <outlet property="delegate" destination="207" id="489"/>
</connections> </connections>
</textView> </textView>
</subviews> </subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</clipView> </clipView>
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="YES" id="481"> <scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="YES" id="481">
<rect key="frame" x="-100" y="-100" width="87" height="18"/> <rect key="frame" x="-100" y="-100" width="87" height="18"/>
@@ -142,7 +143,7 @@ Gw
<connections> <connections>
<outlet property="delegate" destination="207" id="377"/> <outlet property="delegate" destination="207" id="377"/>
</connections> </connections>
<point key="canvasLocation" x="87" y="313"/> <point key="canvasLocation" x="67" y="301.5"/>
</window> </window>
<menu title="MainMenu" systemMenu="main" id="29" userLabel="MainMenu"> <menu title="MainMenu" systemMenu="main" id="29" userLabel="MainMenu">
<items> <items>
@@ -158,18 +159,6 @@ Gw
<menuItem isSeparatorItem="YES" id="233"> <menuItem isSeparatorItem="YES" id="233">
<modifierMask key="keyEquivalentModifierMask" command="YES"/> <modifierMask key="keyEquivalentModifierMask" command="YES"/>
</menuItem> </menuItem>
<menuItem title="Preferences..." id="reA-2d-BZ0">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="menuItemSelected:" target="207" id="x6l-Tq-pHp"/>
</connections>
</menuItem>
<menuItem title="Check for updates..." id="jWa-5b-mBK" userLabel="Check for updates...">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="menuItemSelected:" target="207" id="VBb-a8-Cku"/>
</connections>
</menuItem>
<menuItem title="Services" id="235"> <menuItem title="Services" id="235">
<menu key="submenu" title="Services" systemMenu="services" id="234"/> <menu key="submenu" title="Services" systemMenu="services" id="234"/>
</menuItem> </menuItem>
@@ -250,218 +239,77 @@ Gw
</items> </items>
</menu> </menu>
</menuItem> </menuItem>
<menuItem title="Edit" id="OYz-zT-LAM"> <menuItem title="Edit" id="163">
<modifierMask key="keyEquivalentModifierMask"/> <menu key="submenu" title="Edit" id="8AD-nO-Nv5">
<menu key="submenu" title="Edit" id="gbe-PM-Daj">
<items> <items>
<menuItem title="Undo" keyEquivalent="z" id="6BN-ih-O2m"> <menuItem title="Undo" keyEquivalent="z" id="WsN-Bo-RAi">
<connections> <connections>
<action selector="undo:" target="-1" id="oH0-3R-wus"/> <action selector="undo:" target="-1" id="swp-Rd-xai"/>
</connections> </connections>
</menuItem> </menuItem>
<menuItem title="Redo" keyEquivalent="z" id="TgQ-5S-p2w"> <menuItem title="Redo" keyEquivalent="z" id="lwR-9k-Jds">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/> <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections> <connections>
<action selector="redo:" target="-1" id="bxh-7G-6rR"/> <action selector="redo:" target="-1" id="t0d-JF-Jxf"/>
</connections> </connections>
</menuItem> </menuItem>
<menuItem isSeparatorItem="YES" id="ktb-NS-TU3"/> <menuItem isSeparatorItem="YES" id="f7y-jW-w4a">
<menuItem title="Cut" keyEquivalent="x" id="yLq-sd-YR5"> <modifierMask key="keyEquivalentModifierMask" command="YES"/>
</menuItem>
<menuItem title="Cut" keyEquivalent="x" id="gYg-Fm-Vd0">
<connections> <connections>
<action selector="cut:" target="-1" id="46i-iL-VLK"/> <action selector="cut:" target="-1" id="uo1-1q-hcK"/>
</connections> </connections>
</menuItem> </menuItem>
<menuItem title="Copy" keyEquivalent="c" id="s3v-O1-6pA"> <menuItem title="Copy" keyEquivalent="c" id="gPx-QX-E5Y">
<connections> <connections>
<action selector="copy:" target="-1" id="jxG-ij-fh7"/> <action selector="copy:" target="-1" id="dyg-Qh-MrF"/>
</connections> </connections>
</menuItem> </menuItem>
<menuItem title="Paste" keyEquivalent="v" id="6Ld-ut-13f"> <menuItem title="Paste" keyEquivalent="v" id="Onj-KJ-eWD">
<connections> <connections>
<action selector="paste:" target="-1" id="PGw-sA-Gma"/> <action selector="paste:" target="-1" id="ZQo-9c-pWs"/>
</connections> </connections>
</menuItem> </menuItem>
<menuItem title="Paste and Match Style" keyEquivalent="V" id="GyB-HZ-4kH"> <menuItem title="Delete" id="NRV-Nu-dQo">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections> <connections>
<action selector="pasteAsPlainText:" target="-1" id="AlS-iZ-R4l"/> <action selector="delete:" target="-1" id="PJy-am-8nR"/>
</connections> </connections>
</menuItem> </menuItem>
<menuItem title="Delete" id="YkA-TP-1J9"> <menuItem title="Select All" keyEquivalent="a" id="aZ7-KE-7Nh">
<modifierMask key="keyEquivalentModifierMask"/>
<connections> <connections>
<action selector="delete:" target="-1" id="cE3-5v-CP0"/> <action selector="selectAll:" target="-1" id="gnq-iF-2hE"/>
</connections> </connections>
</menuItem> </menuItem>
<menuItem title="Select All" keyEquivalent="a" id="z4j-fk-SUb"> <menuItem isSeparatorItem="YES" id="ckZ-kQ-yF7">
<connections> <modifierMask key="keyEquivalentModifierMask" command="YES"/>
<action selector="selectAll:" target="-1" id="eM9-h9-WVo"/>
</connections>
</menuItem> </menuItem>
<menuItem isSeparatorItem="YES" id="FXg-ZR-vZj"/> <menuItem title="Find" id="EgA-FB-eXQ">
<menuItem title="Find" id="amO-Yt-228"> <menu key="submenu" title="Find" id="xIX-bE-bd8">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Find" id="9XE-hK-Hbc">
<items> <items>
<menuItem title="Find…" tag="1" keyEquivalent="f" id="yA2-y8-dhZ"> <menuItem title="Find…" tag="1" keyEquivalent="f" id="3k0-IU-cL5">
<connections> <connections>
<action selector="performFindPanelAction:" target="-1" id="zqc-0l-nEk"/> <action selector="performFindPanelAction:" target="-1" id="wAh-50-CiI"/>
</connections> </connections>
</menuItem> </menuItem>
<menuItem title="Find and Replace…" tag="12" keyEquivalent="f" id="ceF-be-hip"> <menuItem title="Find Next" tag="2" keyEquivalent="g" id="EAX-qd-XMX">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections> <connections>
<action selector="performFindPanelAction:" target="-1" id="Fno-81-Q2N"/> <action selector="performFindPanelAction:" target="-1" id="LvO-Xz-du1"/>
</connections> </connections>
</menuItem> </menuItem>
<menuItem title="Find Next" tag="2" keyEquivalent="g" id="6FX-CW-rwT"> <menuItem title="Find Previous" tag="3" keyEquivalent="G" id="n5T-AH-BNm">
<connections> <connections>
<action selector="performFindPanelAction:" target="-1" id="AeZ-8e-DSZ"/> <action selector="performFindPanelAction:" target="-1" id="FgQ-Gb-Qnu"/>
</connections> </connections>
</menuItem> </menuItem>
<menuItem title="Find Previous" tag="3" keyEquivalent="G" id="kIR-xV-7pl"> <menuItem title="Use Selection for Find" tag="7" keyEquivalent="e" id="xKU-AA-Gj3">
<connections> <connections>
<action selector="performFindPanelAction:" target="-1" id="ALM-eS-1XU"/> <action selector="performFindPanelAction:" target="-1" id="j7C-hb-eo3"/>
</connections> </connections>
</menuItem> </menuItem>
<menuItem title="Use Selection for Find" tag="7" keyEquivalent="e" id="yTY-2E-Cp9"> <menuItem title="Jump to Selection" keyEquivalent="j" id="mpE-JG-s67">
<connections> <connections>
<action selector="performFindPanelAction:" target="-1" id="Gbj-g6-cYJ"/> <action selector="centerSelectionInVisibleArea:" target="-1" id="H4Z-6R-SO2"/>
</connections>
</menuItem>
<menuItem title="Jump to Selection" keyEquivalent="j" id="80n-rn-d7I">
<connections>
<action selector="centerSelectionInVisibleArea:" target="-1" id="qfH-cs-Cdv"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Spelling and Grammar" id="uWG-xr-cNT">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Spelling" id="Xoa-7u-7zM">
<items>
<menuItem title="Show Spelling and Grammar" keyEquivalent=":" id="rZl-3I-YFV">
<connections>
<action selector="showGuessPanel:" target="-1" id="CSh-4b-cGc"/>
</connections>
</menuItem>
<menuItem title="Check Document Now" keyEquivalent=";" id="tjk-pc-YjK">
<connections>
<action selector="checkSpelling:" target="-1" id="O3S-v5-8Ra"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="ohv-rn-e7b"/>
<menuItem title="Check Spelling While Typing" id="E3o-iC-0NO">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleContinuousSpellChecking:" target="-1" id="k4Q-aZ-O6y"/>
</connections>
</menuItem>
<menuItem title="Check Grammar With Spelling" id="mUP-Jd-Tu1">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleGrammarChecking:" target="-1" id="Ypd-WC-IMS"/>
</connections>
</menuItem>
<menuItem title="Correct Spelling Automatically" id="qq3-jk-TYN">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticSpellingCorrection:" target="-1" id="Ob8-wh-bLR"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Substitutions" id="8Ti-fk-PNH">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Substitutions" id="NeW-07-aln">
<items>
<menuItem title="Show Substitutions" id="DXm-9z-Sle">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="orderFrontSubstitutionsPanel:" target="-1" id="z43-IC-kpA"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="aVP-JA-dKq"/>
<menuItem title="Smart Copy/Paste" id="Pcq-B9-JQ5">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleSmartInsertDelete:" target="-1" id="iu4-Nn-DU4"/>
</connections>
</menuItem>
<menuItem title="Smart Quotes" id="iDT-WP-ISR">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticQuoteSubstitution:" target="-1" id="pnI-ku-LV9"/>
</connections>
</menuItem>
<menuItem title="Smart Dashes" id="QFc-JW-5qE">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticDashSubstitution:" target="-1" id="pY9-lv-EM7"/>
</connections>
</menuItem>
<menuItem title="Smart Links" id="opP-BJ-vhR">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticLinkDetection:" target="-1" id="lfD-XD-tfO"/>
</connections>
</menuItem>
<menuItem title="Data Detectors" id="zWu-P7-fpg">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticDataDetection:" target="-1" id="EAz-S6-L7B"/>
</connections>
</menuItem>
<menuItem title="Text Replacement" id="2R8-fL-H32">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticTextReplacement:" target="-1" id="7Lb-Uz-uJ9"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Transformations" id="v1A-Fi-A5j">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Transformations" id="B0B-bK-IZ3">
<items>
<menuItem title="Make Upper Case" id="1P0-qI-ZAM">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="uppercaseWord:" target="-1" id="cre-Qh-bSZ"/>
</connections>
</menuItem>
<menuItem title="Make Lower Case" id="sK6-Xl-9uz">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="lowercaseWord:" target="-1" id="qid-xu-iAw"/>
</connections>
</menuItem>
<menuItem title="Capitalize" id="zvd-g7-rwM">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="capitalizeWord:" target="-1" id="0tj-lN-nE0"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Speech" id="bsj-0j-07E">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Speech" id="r3p-Q2-qJZ">
<items>
<menuItem title="Start Speaking" id="8Hl-RR-cUq">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="startSpeaking:" target="-1" id="Zbb-Tp-HBE"/>
</connections>
</menuItem>
<menuItem title="Stop Speaking" id="SLa-Tk-XGJ">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="stopSpeaking:" target="-1" id="Oyc-KO-3qC"/>
</connections> </connections>
</menuItem> </menuItem>
</items> </items>
@@ -515,19 +363,20 @@ Gw
<connections> <connections>
<outlet property="delegate" destination="207" id="525"/> <outlet property="delegate" destination="207" id="525"/>
</connections> </connections>
<point key="canvasLocation" x="36" y="0.0"/> <point key="canvasLocation" x="-21" y="164"/>
</menu> </menu>
<window allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="TextWindow" animationBehavior="default" id="216" userLabel="TextOutputWindow"> <window allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" showsToolbarButton="NO" visibleAtLaunch="NO" frameAutosaveName="TextWindow" animationBehavior="default" id="216" userLabel="TextOutputWindow">
<windowStyleMask key="styleMask" titled="YES" miniaturizable="YES" resizable="YES"/> <windowStyleMask key="styleMask" titled="YES" miniaturizable="YES" resizable="YES"/>
<rect key="contentRect" x="297" y="408" width="580" height="420"/> <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="297" y="408" width="508" height="392"/>
<rect key="screenRect" x="0.0" y="0.0" width="1440" height="878"/> <rect key="screenRect" x="0.0" y="0.0" width="1440" height="878"/>
<value key="minSize" type="size" width="400" height="200"/> <value key="minSize" type="size" width="400" height="200"/>
<view key="contentView" id="217"> <view key="contentView" id="217">
<rect key="frame" x="0.0" y="0.0" width="580" height="420"/> <rect key="frame" x="0.0" y="0.0" width="508" height="392"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<button verticalHuggingPriority="750" id="220"> <button verticalHuggingPriority="750" id="220">
<rect key="frame" x="488" y="7" width="86" height="32"/> <rect key="frame" x="416" y="7" width="86" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
<buttonCell key="cell" type="push" title="Quit" bezelStyle="rounded" alignment="center" borderStyle="border" inset="2" id="476"> <buttonCell key="cell" type="push" title="Quit" bezelStyle="rounded" alignment="center" borderStyle="border" inset="2" id="476">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
@@ -541,25 +390,25 @@ Gw
</connections> </connections>
</button> </button>
<scrollView autohidesScrollers="YES" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" id="226"> <scrollView autohidesScrollers="YES" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" id="226">
<rect key="frame" x="9" y="45" width="561" height="367"/> <rect key="frame" x="9" y="45" width="489" height="339"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="Hk1-72-Owa"> <clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="Hk1-72-Owa">
<rect key="frame" x="1" y="1" width="559" height="365"/> <rect key="frame" x="1" y="1" width="487" height="337"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<textView editable="NO" importsGraphics="NO" richText="NO" verticallyResizable="YES" usesFontPanel="YES" findStyle="panel" allowsDocumentBackgroundColorChange="YES" linkDetection="YES" id="225"> <textView editable="NO" importsGraphics="NO" richText="NO" verticallyResizable="YES" usesFontPanel="YES" findStyle="panel" allowsDocumentBackgroundColorChange="YES" linkDetection="YES" id="225">
<rect key="frame" x="0.0" y="0.0" width="559" height="365"/> <rect key="frame" x="0.0" y="0.0" width="487" height="337"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> <size key="minSize" width="487" height="337"/>
<size key="minSize" width="559" height="365"/> <size key="maxSize" width="489" height="10000000"/>
<size key="maxSize" width="561" height="10000000"/> <color key="insertionPointColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
<color key="insertionPointColor" name="textColor" catalog="System" colorSpace="catalog"/>
<connections> <connections>
<outlet property="delegate" destination="207" id="488"/> <outlet property="delegate" destination="207" id="488"/>
</connections> </connections>
</textView> </textView>
</subviews> </subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</clipView> </clipView>
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="YES" id="483"> <scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="YES" id="483">
<rect key="frame" x="-100" y="-100" width="87" height="18"/> <rect key="frame" x="-100" y="-100" width="87" height="18"/>
@@ -575,7 +424,7 @@ Gw
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
</progressIndicator> </progressIndicator>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" id="366"> <textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" id="366">
<rect key="frame" x="43" y="17" width="429" height="17"/> <rect key="frame" x="43" y="17" width="357" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" id="477"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" id="477">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
@@ -590,17 +439,18 @@ Gw
</connections> </connections>
<point key="canvasLocation" x="-478" y="370"/> <point key="canvasLocation" x="-478" y="370"/>
</window> </window>
<window allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="WebViewWindow" animationBehavior="default" id="247" userLabel="WebOutputWindow"> <window allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" showsToolbarButton="NO" visibleAtLaunch="NO" frameAutosaveName="WebViewWindow" animationBehavior="default" id="247" userLabel="WebOutputWindow">
<windowStyleMask key="styleMask" titled="YES" miniaturizable="YES" resizable="YES"/> <windowStyleMask key="styleMask" titled="YES" miniaturizable="YES" resizable="YES"/>
<rect key="contentRect" x="297" y="408" width="580" height="420"/> <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="297" y="408" width="508" height="392"/>
<rect key="screenRect" x="0.0" y="0.0" width="1440" height="878"/> <rect key="screenRect" x="0.0" y="0.0" width="1440" height="878"/>
<value key="minSize" type="size" width="400" height="200"/> <value key="minSize" type="size" width="400" height="200"/>
<view key="contentView" id="248"> <view key="contentView" id="248">
<rect key="frame" x="0.0" y="0.0" width="580" height="420"/> <rect key="frame" x="0.0" y="0.0" width="508" height="392"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<button verticalHuggingPriority="750" id="251"> <button verticalHuggingPriority="750" id="251">
<rect key="frame" x="485" y="6" width="86" height="32"/> <rect key="frame" x="413" y="12" width="86" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
<buttonCell key="cell" type="push" title="Quit" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" inset="2" id="478"> <buttonCell key="cell" type="push" title="Quit" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" inset="2" id="478">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
@@ -614,14 +464,14 @@ Gw
</connections> </connections>
</button> </button>
<box boxType="oldStyle" borderType="line" titlePosition="noTitle" id="257"> <box boxType="oldStyle" borderType="line" titlePosition="noTitle" id="257">
<rect key="frame" x="8" y="45" width="563" height="367"/> <rect key="frame" x="8" y="51" width="491" height="333"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<view key="contentView" id="X4z-hY-QR7"> <view key="contentView" id="X4z-hY-QR7">
<rect key="frame" x="1" y="1" width="561" height="365"/> <rect key="frame" x="1" y="1" width="489" height="331"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<webView maintainsBackForwardList="NO" id="258" customClass="STDragWebView"> <webView maintainsBackForwardList="NO" id="258" customClass="STDragWebView">
<rect key="frame" x="-1" y="0.0" width="562" height="365"/> <rect key="frame" x="-1" y="0.0" width="490" height="331"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<webPreferences key="preferences" defaultFontSize="12" defaultFixedFontSize="12"> <webPreferences key="preferences" defaultFontSize="12" defaultFixedFontSize="12">
<nil key="identifier"/> <nil key="identifier"/>
@@ -639,11 +489,11 @@ Gw
</view> </view>
</box> </box>
<progressIndicator horizontalHuggingPriority="750" verticalHuggingPriority="750" maxValue="100" displayedWhenStopped="NO" bezeled="NO" indeterminate="YES" controlSize="small" style="spinning" id="277"> <progressIndicator horizontalHuggingPriority="750" verticalHuggingPriority="750" maxValue="100" displayedWhenStopped="NO" bezeled="NO" indeterminate="YES" controlSize="small" style="spinning" id="277">
<rect key="frame" x="16" y="15" width="16" height="16"/> <rect key="frame" x="16" y="21" width="16" height="16"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
</progressIndicator> </progressIndicator>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" id="509"> <textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" id="509">
<rect key="frame" x="37" y="14" width="429" height="17"/> <rect key="frame" x="37" y="20" width="357" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" id="510"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" id="510">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
@@ -657,36 +507,28 @@ Gw
<outlet property="delegate" destination="207" id="375"/> <outlet property="delegate" destination="207" id="375"/>
</connections> </connections>
</window> </window>
<window title="Droplet" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" visibleAtLaunch="NO" frameAutosaveName="DropletWindow" animationBehavior="default" id="490" userLabel="DropletWindow"> <window title="Droplet" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" showsToolbarButton="NO" visibleAtLaunch="NO" frameAutosaveName="DropletWindow" animationBehavior="default" id="490" userLabel="DropletWindow">
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/> <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
<rect key="contentRect" x="157" y="273" width="294" height="280"/> <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="157" y="273" width="188" height="188"/>
<rect key="screenRect" x="0.0" y="0.0" width="1440" height="878"/> <rect key="screenRect" x="0.0" y="0.0" width="1440" height="878"/>
<view key="contentView" id="491"> <view key="contentView" id="491">
<rect key="frame" x="0.0" y="0.0" width="294" height="280"/> <rect key="frame" x="0.0" y="0.0" width="188" height="188"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<textField hidden="YES" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" id="519">
<rect key="frame" x="0.0" y="0.0" width="294" height="280"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" enabled="NO" allowsUndo="NO" sendsActionOnEndEditing="YES" drawsBackground="YES" id="520">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<box autoresizesSubviews="NO" borderType="line" titlePosition="noTitle" id="494"> <box autoresizesSubviews="NO" borderType="line" titlePosition="noTitle" id="494">
<rect key="frame" x="17" y="16" width="260" height="246"/> <rect key="frame" x="17" y="16" width="154" height="154"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<view key="contentView" id="q0i-G4-K1a"> <view key="contentView" id="q0i-G4-K1a">
<rect key="frame" x="1" y="1" width="258" height="244"/> <rect key="frame" x="1" y="1" width="152" height="152"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<progressIndicator wantsLayer="YES" horizontalHuggingPriority="750" verticalHuggingPriority="750" maxValue="100" displayedWhenStopped="NO" bezeled="NO" indeterminate="YES" style="spinning" id="496"> <progressIndicator wantsLayer="YES" horizontalHuggingPriority="750" verticalHuggingPriority="750" maxValue="100" displayedWhenStopped="NO" bezeled="NO" indeterminate="YES" style="spinning" id="496">
<rect key="frame" x="112" y="128" width="32" height="32"/> <rect key="frame" x="59" y="75" width="32" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
</progressIndicator> </progressIndicator>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" id="499"> <textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" id="499">
<rect key="frame" x="92" y="112" width="71" height="34"/> <rect key="frame" x="39" y="59" width="71" height="34"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" controlSize="mini" sendsActionOnEndEditing="YES" alignment="center" title="Drop files here" id="500"> <textFieldCell key="cell" controlSize="mini" sendsActionOnEndEditing="YES" alignment="center" title="Drop files here" id="500">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
@@ -695,7 +537,7 @@ Gw
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" id="505"> <textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" id="505">
<rect key="frame" x="18" y="44" width="218" height="76"/> <rect key="frame" x="15" y="31" width="122" height="36"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" alignment="center" id="506"> <textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" alignment="center" id="506">
<font key="font" metaFont="smallSystem"/> <font key="font" metaFont="smallSystem"/>
@@ -706,12 +548,21 @@ Gw
</subviews> </subviews>
</view> </view>
</box> </box>
<textField hidden="YES" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" id="519">
<rect key="frame" x="0.0" y="0.0" width="188" height="188"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" enabled="NO" allowsUndo="NO" sendsActionOnEndEditing="YES" drawsBackground="YES" id="520">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews> </subviews>
</view> </view>
<connections> <connections>
<outlet property="delegate" destination="207" id="RFt-L5-f73"/> <outlet property="delegate" destination="207" id="RFt-L5-f73"/>
</connections> </connections>
<point key="canvasLocation" x="608" y="262"/> <point key="canvasLocation" x="610" y="363"/>
</window> </window>
</objects> </objects>
</document> </document>

Binary file not shown.

View File

@@ -3,7 +3,7 @@
// Yuba // Yuba
// // // //
////////////////////////////////////////// //////////////////////////////////////////
$version = "0.7.9"; $version = "0.7.9.3";
ini_set('memory_limit', '4096M'); ini_set('memory_limit', '4096M');
date_default_timezone_set("America/Los_Angeles"); date_default_timezone_set("America/Los_Angeles");
@@ -18,6 +18,8 @@ $wopt_noprofile = 0;
$wopt_steps = 10; $wopt_steps = 10;
$wopt_currstep = 1; $wopt_currstep = 1;
$parser = new plistParser();
$p = unserialize(file_get_contents("prefs.php")); $p = unserialize(file_get_contents("prefs.php"));
// Path & application variables // Path & application variables
@@ -32,7 +34,7 @@ if (!is_dir($zpath) | !is_dir($bdest)) { echo "Filepath error"; die; }
// Check for bundle // Check for bundle
if ($zpath == "/") { $blabel = "root"; } else { $blabel = preg_replace("/[^A-Za-z0-9\.]/", "_", basename($zpath)); } if ($zpath == "/") { $blabel = "root"; } else { $blabel = preg_replace("/[^A-Za-z0-9\.]/", "_", basename($zpath)); }
if (is_writable($zpath)) { echo "Warning: source is writeable"; } if (is_writable($zpath)) { echo "Warning: source is writeable\n"; }
$bpath = chop($bdest,"/")."/".substr(crc32($zpath),0,3)."_".$blabel.".bundle"; $bpath = chop($bdest,"/")."/".substr(crc32($zpath),0,3)."_".$blabel.".bundle";
if (!is_dir($bpath)) { mkdir($bpath); } if (!is_dir($bpath)) { mkdir($bpath); }
@@ -97,17 +99,6 @@ echo msg($banner."\n".str_repeat("-", strlen($banner)));
echo msg("Gathering system info..."); echo msg("Gathering system info...");
$host = gethostname();
$disks = shell_exec("diskutil list -plist 2>&1");
$df = shell_exec("df 2>&1");
$df_volume = shell_exec("df ".escapeshellarg($zpath)." | tail -n 1 | rev | cut -d' ' -f1 | rev");
$df_device = shell_exec("df ".escapeshellarg($zpath)." | tail -n 1 | cut -d' ' -f1");
$mdutil = shell_exec("mdutil -s ".$df_volume);
if (strpos($mdutil,"disabled")) {
echo msg("Warning: spotlight indexing is disabled");
$p['spotlight'] = false;
}
if (substr($zpath, 0, 9) != "/Volumes/") { if (substr($zpath, 0, 9) != "/Volumes/") {
$zbase = "/"; $zbase = "/";
} else { } else {
@@ -115,14 +106,36 @@ if (substr($zpath, 0, 9) != "/Volumes/") {
$zbase = "/Volumes/".$zparts[2]; $zbase = "/Volumes/".$zparts[2];
} }
$hdiutil = shell_exec("hdiutil info -plist 2>&1"); $host = gethostname();
$disks = shell_exec("diskutil list -plist 2>&1");
$diskutil = shell_exec("diskutil info -plist ".$zbase." 2>&1");
$diskutil_parsed = $parser->parseString(utf8_for_xml($diskutil));
//print_r($diskutil_parsed);
$vdisks = shell_exec("hdiutil info -plist 2>&1");
$vdisks_parsed = $parser->parseString(utf8_for_xml($vdisks));
//print_r($vdisks_parsed);
$df = shell_exec("df 2>&1");
// old method, new method is to parse plist
//$df_volume = trim(shell_exec("df ".escapeshellarg($zpath)." | tail -n 1 | rev | cut -d' ' -f1 | rev"));
//$df_device = trim(shell_exec("df ".escapeshellarg($zpath)." | tail -n 1 | cut -d' ' -f1"));
$df_volume = $diskutil_parsed['MountPoint'];
$df_device = "/dev/".$diskutil_parsed['ParentWholeDisk'];
$mdutil = shell_exec("mdutil -s ".$df_volume);
if (strpos($mdutil,"disabled")) {
echo msg("Warning: spotlight indexing is disabled");
$p['spotlight'] = false;
}
///////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////
// rewrite below to use diskutil info -plist // rewrite below to use diskutil info -plist
// //
// //
// //
$diskutil = shell_exec("diskutil info ".$zbase." 2>&1"); $olddiskutil = shell_exec("diskutil info ".$zbase." 2>&1");
$getdetail = array( "Volume Name", $getdetail = array( "Volume Name",
"Protocol", "Protocol",
"Volume UUID", "Volume UUID",
@@ -132,7 +145,7 @@ $getdetail = array( "Volume Name",
"Level Type" "Level Type"
); );
foreach ($getdetail as $detail) { foreach ($getdetail as $detail) {
preg_match("/(".$detail.":)(.*)(\n)/",$diskutil,$matches); preg_match("/(".$detail.":)(.*)(\n)/",$olddiskutil,$matches);
if (isset($matches[2])) { if (isset($matches[2])) {
if (substr($detail, -5, 5) == "Space") { if (substr($detail, -5, 5) == "Space") {
$pieces = explode(" ", trim($matches[2])); $pieces = explode(" ", trim($matches[2]));
@@ -162,9 +175,22 @@ if ($zpath == "/") {
// //
///////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////
if ($type == "Disk image") {
$hdiutil = shell_exec("hdiutil imageinfo -plist ".$df_device." 2>&1");
foreach ($vdisks_parsed['images'] as $id => $disk) {
if ($disk['system-entities'][0]['dev-entry'] == $df_device) {
$image_file = $disk['image-path'];
}
}
} else {
$hdiutil = false;
$image_file = false;
}
if ($wopt_noprofile) { if ($wopt_noprofile) {
$profile = "disabled"; $profile = "disabled";
} else { } else {
echo msg("system_profiler");
$profile = shell_exec("system_profiler SPHardwareDataType SPStorageDataType SPThunderboltDataType SPUSBDataType 2>&1"); $profile = shell_exec("system_profiler SPHardwareDataType SPStorageDataType SPThunderboltDataType SPUSBDataType 2>&1");
} }
$qlmanage = shell_exec("qlmanage -m 2>&1"); $qlmanage = shell_exec("qlmanage -m 2>&1");
@@ -203,9 +229,11 @@ $dbo->exec("CREATE TABLE _skim (
details TEXT, details TEXT,
qlmanage TEXT, qlmanage TEXT,
sysvers TEXT, sysvers TEXT,
diskutil TEXT,
hdiutil TEXT,
disks TEXT, disks TEXT,
diskutil TEXT,
vdisks TEXT,
hdiutil TEXT,
image_file TEXT,
df TEXT, df TEXT,
df_device TEXT, df_device TEXT,
df_volume TEXT, df_volume TEXT,
@@ -252,7 +280,7 @@ $dbo->exec("CREATE TABLE files (
contents_filename TEXT contents_filename TEXT
)"); )");
$stmt = $dbo->prepare("INSERT INTO _skim VALUES (:version, :opts, :host, :uid, :zpath, :bpath, :type, :passed_file, :passed_dir, :passed_link, :passed_total, :nodescended, :ignored, :dupes, :details, :qlmanage, :sysvers, :diskutil, :hdiutil, :disks, :df, :df_device, :df_volume, :mdutil, :profile, :status)"); $stmt = $dbo->prepare("INSERT INTO _skim VALUES (:version, :opts, :host, :uid, :zpath, :bpath, :type, :passed_file, :passed_dir, :passed_link, :passed_total, :nodescended, :ignored, :dupes, :details, :qlmanage, :sysvers, :disks, :diskutil, :vdisks, :hdiutil, :image_file, :df, :df_device, :df_volume, :mdutil, :profile, :status)");
$stmt->BindValue(":version",$version); $stmt->BindValue(":version",$version);
$stmt->BindValue(":opts",serialize($p)); $stmt->BindValue(":opts",serialize($p));
$stmt->BindValue(":host",$host); $stmt->BindValue(":host",$host);
@@ -263,9 +291,11 @@ $stmt->BindValue(":type",$type);
$stmt->BindValue(":details",$dstring); $stmt->BindValue(":details",$dstring);
$stmt->BindValue(":qlmanage",$qlmanage); $stmt->BindValue(":qlmanage",$qlmanage);
$stmt->BindValue(":sysvers",$sysvers); $stmt->BindValue(":sysvers",$sysvers);
$stmt->BindValue(":diskutil",$diskutil);
$stmt->BindValue(":hdiutil",$hdiutil);
$stmt->BindValue(":disks",$disks); $stmt->BindValue(":disks",$disks);
$stmt->BindValue(":diskutil",$diskutil);
$stmt->BindValue(":vdisks",$vdisks);
$stmt->BindValue(":hdiutil",$hdiutil);
$stmt->BindValue(":image_file",$image_file);
$stmt->BindValue(":df",$df); $stmt->BindValue(":df",$df);
$stmt->BindValue(":df_device",$df_device); $stmt->BindValue(":df_device",$df_device);
$stmt->BindValue(":df_volume",$df_volume); $stmt->BindValue(":df_volume",$df_volume);
@@ -480,6 +510,9 @@ foreach ($family as $key => $item) {
echo ProgressBar::finish(); echo ProgressBar::finish();
// create an index for family db
$dbo->exec("CREATE INDEX family_index ON family (pid)");
unset($dx, $dxo, $dupes); unset($dx, $dxo, $dupes);
// stats // stats
@@ -781,7 +814,6 @@ if ($p['spotlight']) {
$mdls = shell_exec("mdls -plist - ".$shellpath." 2>&1"); $mdls = shell_exec("mdls -plist - ".$shellpath." 2>&1");
if (substr_count(@$mdls,"\n") > 1) { if (substr_count(@$mdls,"\n") > 1) {
$parser = new plistParser();
$spotlight = $parser->parseString(utf8_for_xml($mdls)); $spotlight = $parser->parseString(utf8_for_xml($mdls));
} else { } else {
$spotlight = array(); $spotlight = array();
@@ -939,7 +971,7 @@ foreach ($files as $splFileInfo) {
$stmt->BindValue(":gfi_type",$writegfitype); $stmt->BindValue(":gfi_type",$writegfitype);
$stmt->BindValue(":gfi_attr",@$gfi['attributes']); $stmt->BindValue(":gfi_attr",@$gfi['attributes']);
$stmt->BindValue(":gfi_created",strtotime($gfi['created'])); $stmt->BindValue(":gfi_created",strtotime(@$gfi['created']));
// ------------------------------------------------ // // ------------------------------------------------ //
@@ -1091,7 +1123,7 @@ while ($row_a = $loop->fetch()) {
$m['m']['SkimTrackCount'] = @count($decoded['File']['track']); $m['m']['SkimTrackCount'] = @count($decoded['File']['track']);
@foreach ($decoded['File']['track'] as $track) { foreach (@$decoded['File']['track'] as $track) {
if (!@$m['m']['SkimDims'] && @$track['Width'] && @$track['Height']) { if (!@$m['m']['SkimDims'] && @$track['Width'] && @$track['Height']) {
$m['m']['SkimDims'] = sanitize($track['Width'],"i").$delimiter.sanitize($track['Height'],"i"); $m['m']['SkimDims'] = sanitize($track['Width'],"i").$delimiter.sanitize($track['Height'],"i");
} }
@@ -1174,7 +1206,8 @@ if ($p['rsync_dest']) {
echo ProgressBar::finish(); echo ProgressBar::finish();
} }
echo msg("Finished in ".$seconds." seconds"); $done = "Finished ".$zpath." in ".$seconds." seconds";
echo msg($done); ncenter($done);
unset($dbo, $dbp, $files, $family, $fx); unset($dbo, $dbp, $files, $family, $fx);

View File

@@ -3,13 +3,6 @@
// Filetypes // Filetypes
////////////////////////////////////////// //////////////////////////////////////////
$c_files = array( "txt",
"rtf",
"rtfd",
"xls",
"log",
"webloc" );
$t_files['ffmpeg'] = array( "mkv", $t_files['ffmpeg'] = array( "mkv",
"avi", "avi",
"mpeg", "mpeg",

View File

@@ -155,7 +155,7 @@ function human_filesize($bytes, $decimals = 2) {
return sprintf("%.{$decimals}f", $bytes / pow(1024, $factor)) . @$size[$factor]; return sprintf("%.{$decimals}f", $bytes / pow(1024, $factor)) . @$size[$factor];
} }
function ncenter($string, $title = "DropToPTP") { function ncenter($string, $title = "Skim") {
exec("osascript -e 'display notification \"".$string."\" with title \"".$title."\"'"); exec("osascript -e 'display notification \"".$string."\" with title \"".$title."\"'");
} }

View File

@@ -1,10 +1,10 @@
<? <?
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
// Skim RTC Browser // Yuba RTC Browser
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
$browser_version = "0.7.9"; $browser_version = "0.7.9.2";
require "togggle.php"; require "togggle.php";
require "lib/debug.php"; require "lib/debug.php";
@@ -22,6 +22,8 @@ $pad = 28;
html { font-family: Helvetica; word-wrap: break-word; } html { font-family: Helvetica; word-wrap: break-word; }
div#exectime { position: absolute; right: 8px; top: 8px; }
div.container { display: flex; flex-flow: row wrap; justify-content: center; } div.container { display: flex; flex-flow: row wrap; justify-content: center; }
div.item { width: <?=$icon_size+$pad;?>px; height: <?=$icon_size+$pad;?>px; padding: <?=$pad;?>px; } div.item { width: <?=$icon_size+$pad;?>px; height: <?=$icon_size+$pad;?>px; padding: <?=$pad;?>px; }
div.item { font-size: 11px; } div.item { font-size: 11px; }
@@ -224,13 +226,14 @@ if ($db_file) {
if (!is_readable($db_file)) { echo "can't read db file"; die; } if (!is_readable($db_file)) { echo "can't read db file"; die; }
$dbo = new PDO("sqlite:".$db_file); $dbo = new PDO("sqlite:".$db_file);
$dbx = new PDO("sqlite:".dirname($db_file)."/pool.sqlite3"); $dbp = new PDO("sqlite:".dirname($db_file)."/pool.sqlite3");
$dbo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); $dbo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
$dbx->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); $dbp->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
// Get zpath // Get zpath
$zpath = $dbo->query("SELECT zpath FROM _skim")->fetch()['zpath']; $zpath = $dbo->query("SELECT zpath FROM _skim")->fetch()['zpath'];
$skim_version = $dbo->query("SELECT version FROM _skim")->fetch()['version'];
// Check for initial view // Check for initial view
@@ -322,18 +325,18 @@ if ($db_file) {
// newer version stores rowid rather than 0 or 1 for has_exif etc // newer version stores rowid rather than 0 or 1 for has_exif etc
if (isset($row_a['has_exif'])) { if (isset($row_a['has_exif'])) {
$row_c = $dbx->query("SELECT * FROM exiftool WHERE (rowid='".$row_a['has_exif']."')")->fetch(); $row_c = $dbp->query("SELECT * FROM exiftool WHERE (rowid='".$row_a['has_exif']."')")->fetch();
} }
if (isset($row_a['has_mediainfo'])) { if (isset($row_a['has_mediainfo'])) {
$row_d = $dbx->query("SELECT * FROM mediainfo WHERE (rowid='".$row_a['has_mediainfo']."')")->fetch(); $row_d = $dbp->query("SELECT * FROM mediainfo WHERE (rowid='".$row_a['has_mediainfo']."')")->fetch();
} }
} else { } else {
// fetch exif and mediainfo by slower fid // fetch exif and mediainfo by slower fid
$row_c = $dbx->query("SELECT * FROM exiftool WHERE (fid='".$row_a['fid']."')")->fetch(); $row_c = $dbp->query("SELECT * FROM exiftool WHERE (fid='".$row_a['fid']."')")->fetch();
$row_d = $dbx->query("SELECT * FROM mediainfo WHERE (fid='".$row_a['fid']."')")->fetch(); $row_d = $dbp->query("SELECT * FROM mediainfo WHERE (fid='".$row_a['fid']."')")->fetch();
} }
@@ -583,7 +586,7 @@ if ($db_file) {
echo number_format($info['passed_total'])." files, "; echo number_format($info['passed_total'])." files, ";
if ($info['image_file']) { echo $info['image_file'].", "; } if ($info['image_file']) { echo $info['image_file'].", "; }
echo $status; echo $status;
if (strpos($info['spotlight_status'],"disabled")) { echo " (no spotlight)"; } if (strpos($info['mdutil'],"disabled")) { echo " (no spotlight)"; }
echo "</div>"; echo "</div>";
} }
echo "</div>"; echo "</div>";
@@ -592,7 +595,8 @@ if ($db_file) {
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
echo "<hr><br>".round($time = microtime(true)-$_SERVER["REQUEST_TIME_FLOAT"],2)." seconds"; echo "<hr><div id='exectime'>".round($time = microtime(true)-$_SERVER["REQUEST_TIME_FLOAT"],2)." seconds</div>";
echo "<div>Skim version = ".$skim_version.", RTC Browser Version = ".$browser_version."</div>";
?> ?>