mirror of https://github.com/AxioDL/amuse.git
Add Sample and SFX tables
This commit is contained in:
parent
168c4d3cfd
commit
85b6f406f1
|
@ -167,7 +167,8 @@ CA
|
|||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Alc-jx-Z3v">
|
||||
<rect key="frame" x="0.0" y="-1" width="30" height="32"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="30" id="kSj-a9-U8v"/>
|
||||
<constraint firstAttribute="width" constant="30" id="4fr-kb-eaI"/>
|
||||
<constraint firstAttribute="height" constant="30" id="Sib-AA-UGB"/>
|
||||
</constraints>
|
||||
<buttonCell key="cell" type="smallSquare" bezelStyle="smallSquare" image="NSAddTemplate" imagePosition="overlaps" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="1BM-r8-8er">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
|
@ -178,9 +179,9 @@ CA
|
|||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="eh8-gl-WoS">
|
||||
<rect key="frame" x="29" y="-1" width="31" height="31"/>
|
||||
<rect key="frame" x="29" y="-1" width="30" height="32"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="31" id="HLy-Rb-n4I"/>
|
||||
<constraint firstAttribute="width" constant="30" id="6ej-Xv-zwY"/>
|
||||
</constraints>
|
||||
<buttonCell key="cell" type="smallSquare" bezelStyle="smallSquare" image="NSRemoveTemplate" imagePosition="overlaps" alignment="center" lineBreakMode="truncatingTail" enabled="NO" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="edx-l4-aHD">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
|
@ -216,7 +217,7 @@ CA
|
|||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||
</tableHeaderCell>
|
||||
<buttonCell key="dataCell" type="check" title="CollectionTitle" bezelStyle="regularSquare" imagePosition="left" alignment="left" lineBreakMode="truncatingTail" allowsMixedState="YES" inset="2" id="Lpp-wh-qX7">
|
||||
<buttonCell key="dataCell" type="check" title="CollectionTitle" bezelStyle="regularSquare" imagePosition="left" alignment="left" lineBreakMode="truncatingTail" refusesFirstResponder="YES" allowsMixedState="YES" inset="2" id="Lpp-wh-qX7" customClass="RestrictedCheckButton">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
|
@ -253,11 +254,8 @@ CA
|
|||
<autoresizingMask key="autoresizingMask"/>
|
||||
</tableHeaderView>
|
||||
</scrollView>
|
||||
<searchField wantsLayer="YES" verticalHuggingPriority="750" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Huk-pR-ayq">
|
||||
<rect key="frame" x="64" y="3" width="476" height="22"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="22" id="uJy-eO-Y8o"/>
|
||||
</constraints>
|
||||
<searchField wantsLayer="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Huk-pR-ayq">
|
||||
<rect key="frame" x="63" y="3" width="477" height="22"/>
|
||||
<searchFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" borderStyle="bezel" usesSingleLineMode="YES" bezelStyle="round" sendsSearchStringImmediately="YES" id="u9E-Ld-d6I">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
|
@ -269,23 +267,22 @@ CA
|
|||
</searchField>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="Alc-jx-Z3v" firstAttribute="centerY" secondItem="eh8-gl-WoS" secondAttribute="centerY" id="0mR-AS-Iw9"/>
|
||||
<constraint firstItem="XHK-NM-ZAP" firstAttribute="top" secondItem="GKx-9K-n29" secondAttribute="top" id="2Gv-Q0-8sj"/>
|
||||
<constraint firstItem="eh8-gl-WoS" firstAttribute="leading" secondItem="GKx-9K-n29" secondAttribute="leading" constant="29" id="5Hp-Mp-Huw"/>
|
||||
<constraint firstItem="mpK-AK-Otf" firstAttribute="centerY" secondItem="Huk-pR-ayq" secondAttribute="centerY" id="92l-eR-8e5"/>
|
||||
<constraint firstItem="eh8-gl-WoS" firstAttribute="baseline" secondItem="mpK-AK-Otf" secondAttribute="baseline" id="EDq-BU-boS"/>
|
||||
<constraint firstAttribute="trailing" secondItem="XHK-NM-ZAP" secondAttribute="trailing" id="H11-09-cl1"/>
|
||||
<constraint firstItem="Huk-pR-ayq" firstAttribute="leading" secondItem="eh8-gl-WoS" secondAttribute="trailing" constant="5" id="KCn-oT-fwW"/>
|
||||
<constraint firstItem="mpK-AK-Otf" firstAttribute="leading" secondItem="Alc-jx-Z3v" secondAttribute="trailing" constant="28" id="Qse-Ec-Pqp"/>
|
||||
<constraint firstItem="Alc-jx-Z3v" firstAttribute="firstBaseline" secondItem="mpK-AK-Otf" secondAttribute="firstBaseline" id="Trd-67-sID"/>
|
||||
<constraint firstAttribute="bottom" secondItem="Alc-jx-Z3v" secondAttribute="bottom" id="UD1-C6-vXP"/>
|
||||
<constraint firstAttribute="trailing" secondItem="Huk-pR-ayq" secondAttribute="trailing" constant="5" id="jeG-bJ-zDw"/>
|
||||
<constraint firstItem="Alc-jx-Z3v" firstAttribute="baseline" secondItem="eh8-gl-WoS" secondAttribute="baseline" id="jo2-gd-6U0"/>
|
||||
<constraint firstItem="XHK-NM-ZAP" firstAttribute="leading" secondItem="GKx-9K-n29" secondAttribute="leading" id="lHj-7d-9KY"/>
|
||||
<constraint firstItem="Huk-pR-ayq" firstAttribute="top" secondItem="XHK-NM-ZAP" secondAttribute="bottom" constant="2" id="lbt-SK-129"/>
|
||||
<constraint firstItem="XHK-NM-ZAP" firstAttribute="trailing" secondItem="mpK-AK-Otf" secondAttribute="trailing" id="q3f-gS-tLA"/>
|
||||
<constraint firstAttribute="bottom" secondItem="Huk-pR-ayq" secondAttribute="bottom" constant="4" id="rW0-CH-0JZ"/>
|
||||
<constraint firstItem="XHK-NM-ZAP" firstAttribute="leading" secondItem="Alc-jx-Z3v" secondAttribute="leading" id="wUx-3P-eJu"/>
|
||||
<constraint firstAttribute="trailing" secondItem="XHK-NM-ZAP" secondAttribute="trailing" id="1pE-DU-h1S"/>
|
||||
<constraint firstItem="eh8-gl-WoS" firstAttribute="firstBaseline" secondItem="mpK-AK-Otf" secondAttribute="firstBaseline" id="3Y4-En-NmZ"/>
|
||||
<constraint firstItem="XHK-NM-ZAP" firstAttribute="leading" secondItem="GKx-9K-n29" secondAttribute="leading" id="B0v-IP-0Ic"/>
|
||||
<constraint firstAttribute="bottom" secondItem="Alc-jx-Z3v" secondAttribute="bottom" id="KIX-cn-mNM"/>
|
||||
<constraint firstItem="Alc-jx-Z3v" firstAttribute="firstBaseline" secondItem="eh8-gl-WoS" secondAttribute="firstBaseline" id="O7r-da-zgD"/>
|
||||
<constraint firstItem="XHK-NM-ZAP" firstAttribute="leading" secondItem="Alc-jx-Z3v" secondAttribute="leading" id="QqG-Ek-LI8"/>
|
||||
<constraint firstAttribute="bottom" secondItem="Huk-pR-ayq" secondAttribute="bottom" constant="3" id="R5r-Tf-sig"/>
|
||||
<constraint firstItem="XHK-NM-ZAP" firstAttribute="trailing" secondItem="mpK-AK-Otf" secondAttribute="trailing" id="Xa6-xa-785"/>
|
||||
<constraint firstItem="Alc-jx-Z3v" firstAttribute="baseline" secondItem="eh8-gl-WoS" secondAttribute="baseline" id="ZPG-ox-LD0"/>
|
||||
<constraint firstItem="eh8-gl-WoS" firstAttribute="baseline" secondItem="mpK-AK-Otf" secondAttribute="baseline" id="ax4-ux-lgm"/>
|
||||
<constraint firstItem="Huk-pR-ayq" firstAttribute="top" secondItem="XHK-NM-ZAP" secondAttribute="bottom" constant="3" id="iG2-ku-8X4"/>
|
||||
<constraint firstItem="XHK-NM-ZAP" firstAttribute="top" secondItem="GKx-9K-n29" secondAttribute="top" id="mp7-MY-xub"/>
|
||||
<constraint firstItem="Huk-pR-ayq" firstAttribute="centerX" secondItem="mpK-AK-Otf" secondAttribute="centerX" id="uB6-uO-1Wh"/>
|
||||
<constraint firstItem="mpK-AK-Otf" firstAttribute="leading" secondItem="Alc-jx-Z3v" secondAttribute="trailing" constant="28" id="vkC-Xs-dXI"/>
|
||||
<constraint firstItem="eh8-gl-WoS" firstAttribute="leading" secondItem="GKx-9K-n29" secondAttribute="leading" constant="29" id="wTd-sN-gen"/>
|
||||
<constraint firstItem="Huk-pR-ayq" firstAttribute="leading" secondItem="eh8-gl-WoS" secondAttribute="trailing" constant="4" id="xpV-H6-3B5"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</tabViewItem>
|
||||
|
@ -294,74 +291,39 @@ CA
|
|||
<rect key="frame" x="0.0" y="0.0" width="544" height="367"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="KBz-ap-rBr">
|
||||
<rect key="frame" x="0.0" y="-1" width="30" height="32"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="30" id="JPF-XW-Zrm"/>
|
||||
</constraints>
|
||||
<buttonCell key="cell" type="smallSquare" bezelStyle="smallSquare" image="NSAddTemplate" imagePosition="overlaps" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="eb5-rf-bFE">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="3Ss-Wh-6dp">
|
||||
<rect key="frame" x="29" y="-1" width="31" height="31"/>
|
||||
<buttonCell key="cell" type="smallSquare" bezelStyle="smallSquare" image="NSRemoveTemplate" imagePosition="overlaps" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="xGw-iM-KTu">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="AnJ-nZ-Zfp">
|
||||
<rect key="frame" x="59" y="-1" width="485" height="32"/>
|
||||
<buttonCell key="cell" type="smallSquare" bezelStyle="smallSquare" imagePosition="overlaps" alignment="center" lineBreakMode="truncatingTail" refusesFirstResponder="YES" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="SjA-P5-3He">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<searchField wantsLayer="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="oAG-fe-WMm">
|
||||
<rect key="frame" x="65" y="4" width="474" height="22"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="22" id="NcP-aU-Wkl"/>
|
||||
</constraints>
|
||||
<searchFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" borderStyle="bezel" usesSingleLineMode="YES" bezelStyle="round" id="gRb-aR-GFw">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</searchFieldCell>
|
||||
</searchField>
|
||||
<scrollView autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4I7-lP-08K">
|
||||
<rect key="frame" x="0.0" y="29" width="544" height="338"/>
|
||||
<clipView key="contentView" id="vf9-4W-0Zi">
|
||||
<rect key="frame" x="1" y="0.0" width="542" height="337"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="544" height="367"/>
|
||||
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="vf9-4W-0Zi">
|
||||
<rect key="frame" x="1" y="0.0" width="542" height="366"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnSelection="YES" multipleSelection="NO" autosaveColumns="NO" rowSizeStyle="automatic" headerView="9pb-bl-sSa" viewBased="YES" id="4nw-rf-Dh4">
|
||||
<rect key="frame" x="0.0" y="0.0" width="542" height="314"/>
|
||||
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" multipleSelection="NO" autosaveColumns="NO" rowSizeStyle="automatic" headerView="9pb-bl-sSa" viewBased="YES" id="4nw-rf-Dh4">
|
||||
<rect key="frame" x="0.0" y="0.0" width="542" height="343"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<size key="intercellSpacing" width="3" height="2"/>
|
||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
|
||||
<tableColumns>
|
||||
<tableColumn width="116" minWidth="40" maxWidth="1000" id="lNw-az-m8v">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
|
||||
<tableColumn identifier="SFXIDColumn" width="116" minWidth="40" maxWidth="1000" id="lNw-az-m8v">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" title="ID">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||
</tableHeaderCell>
|
||||
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="RNG-D2-ueb">
|
||||
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" allowsUndo="NO" title="Text Cell" id="RNG-D2-ueb">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView id="Bld-o1-jXJ">
|
||||
<tableCellView id="XFL-Ls-02w">
|
||||
<rect key="frame" x="1" y="1" width="116" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="ZZj-P8-9ts">
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="2PL-fA-QSc">
|
||||
<rect key="frame" x="0.0" y="0.0" width="100" height="17"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="TAi-Dq-tMT">
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" allowsUndo="NO" sendsActionOnEndEditing="YES" title="Table View Cell" id="xYV-rG-09O">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
|
@ -369,39 +331,39 @@ CA
|
|||
</textField>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="ZZj-P8-9ts" firstAttribute="leading" secondItem="Bld-o1-jXJ" secondAttribute="leading" constant="2" id="AY8-Jl-YdX"/>
|
||||
<constraint firstAttribute="trailing" secondItem="ZZj-P8-9ts" secondAttribute="trailing" constant="18" id="IDi-fM-pVu"/>
|
||||
<constraint firstItem="ZZj-P8-9ts" firstAttribute="centerY" secondItem="Bld-o1-jXJ" secondAttribute="centerY" id="LPm-yn-FQX"/>
|
||||
<constraint firstAttribute="trailing" secondItem="2PL-fA-QSc" secondAttribute="trailing" constant="18" id="6Rm-bD-4WK"/>
|
||||
<constraint firstItem="2PL-fA-QSc" firstAttribute="centerY" secondItem="XFL-Ls-02w" secondAttribute="centerY" id="enx-iG-2oB"/>
|
||||
<constraint firstItem="2PL-fA-QSc" firstAttribute="leading" secondItem="XFL-Ls-02w" secondAttribute="leading" constant="2" id="qeB-0G-dXO"/>
|
||||
</constraints>
|
||||
<connections>
|
||||
<outlet property="textField" destination="ZZj-P8-9ts" id="39a-MV-EbQ"/>
|
||||
<outlet property="textField" destination="2PL-fA-QSc" id="RpZ-Uw-Grp"/>
|
||||
</connections>
|
||||
</tableCellView>
|
||||
</prototypeCellViews>
|
||||
</tableColumn>
|
||||
<tableColumn width="420" minWidth="40" maxWidth="1000" id="cir-wf-zZH">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
|
||||
<tableColumn identifier="SFXDetailsColumn" width="420" minWidth="40" maxWidth="1000" id="cir-wf-zZH">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" title="Details">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||
</tableHeaderCell>
|
||||
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="Emw-gX-CND">
|
||||
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" allowsUndo="NO" title="Text Cell" id="Emw-gX-CND">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView id="MSH-I7-WP0">
|
||||
<tableCellView id="gVd-1Z-stf">
|
||||
<rect key="frame" x="120" y="1" width="420" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="sZh-af-mID">
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="w19-X3-abH">
|
||||
<rect key="frame" x="0.0" y="0.0" width="100" height="17"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="96" id="Olp-J5-pIs"/>
|
||||
<constraint firstAttribute="width" constant="96" id="Gae-0I-VGs"/>
|
||||
</constraints>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="g74-lI-1lW">
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" allowsUndo="NO" sendsActionOnEndEditing="YES" title="Table View Cell" id="PxJ-bH-77o">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
|
@ -409,11 +371,11 @@ CA
|
|||
</textField>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="sZh-af-mID" firstAttribute="centerY" secondItem="MSH-I7-WP0" secondAttribute="centerY" id="TR4-l3-M5x"/>
|
||||
<constraint firstItem="sZh-af-mID" firstAttribute="leading" secondItem="MSH-I7-WP0" secondAttribute="leading" constant="2" id="txo-P4-p8A"/>
|
||||
<constraint firstItem="w19-X3-abH" firstAttribute="centerY" secondItem="gVd-1Z-stf" secondAttribute="centerY" id="71k-IB-NPp"/>
|
||||
<constraint firstItem="w19-X3-abH" firstAttribute="leading" secondItem="gVd-1Z-stf" secondAttribute="leading" constant="2" id="rX3-HS-TGq"/>
|
||||
</constraints>
|
||||
<connections>
|
||||
<outlet property="textField" destination="sZh-af-mID" id="fET-Gy-kz6"/>
|
||||
<outlet property="textField" destination="w19-X3-abH" id="BS3-ol-wil"/>
|
||||
</connections>
|
||||
</tableCellView>
|
||||
</prototypeCellViews>
|
||||
|
@ -421,7 +383,7 @@ CA
|
|||
</tableColumns>
|
||||
</tableView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
<nil key="backgroundColor"/>
|
||||
</clipView>
|
||||
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="uOf-Jb-IVN">
|
||||
<rect key="frame" x="1" y="119" width="223" height="15"/>
|
||||
|
@ -438,24 +400,10 @@ CA
|
|||
</scrollView>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="oAG-fe-WMm" firstAttribute="top" secondItem="4I7-lP-08K" secondAttribute="bottom" constant="3" id="2Ga-AL-Moz"/>
|
||||
<constraint firstItem="AnJ-nZ-Zfp" firstAttribute="leading" secondItem="KBz-ap-rBr" secondAttribute="trailing" constant="29" id="3sF-mo-yXM"/>
|
||||
<constraint firstItem="4I7-lP-08K" firstAttribute="leading" secondItem="KBz-ap-rBr" secondAttribute="leading" id="BHY-wE-9xs"/>
|
||||
<constraint firstItem="KBz-ap-rBr" firstAttribute="centerY" secondItem="3Ss-Wh-6dp" secondAttribute="centerY" id="CqR-JP-dag"/>
|
||||
<constraint firstItem="4I7-lP-08K" firstAttribute="top" secondItem="qIJ-rh-cnU" secondAttribute="top" id="DKu-qi-8Zi"/>
|
||||
<constraint firstItem="3Ss-Wh-6dp" firstAttribute="leading" secondItem="qIJ-rh-cnU" secondAttribute="leading" constant="29" id="GdU-tv-IPD"/>
|
||||
<constraint firstItem="KBz-ap-rBr" firstAttribute="firstBaseline" secondItem="AnJ-nZ-Zfp" secondAttribute="firstBaseline" id="HTn-NF-EgY"/>
|
||||
<constraint firstAttribute="bottom" secondItem="KBz-ap-rBr" secondAttribute="bottom" id="IOx-sd-Ta0"/>
|
||||
<constraint firstItem="3Ss-Wh-6dp" firstAttribute="baseline" secondItem="AnJ-nZ-Zfp" secondAttribute="baseline" id="Ipx-yq-qlA"/>
|
||||
<constraint firstAttribute="trailing" secondItem="oAG-fe-WMm" secondAttribute="trailing" constant="5" id="QMV-Df-EKc"/>
|
||||
<constraint firstItem="3Ss-Wh-6dp" firstAttribute="top" secondItem="4I7-lP-08K" secondAttribute="bottom" id="Qj2-aa-7cc"/>
|
||||
<constraint firstItem="KBz-ap-rBr" firstAttribute="baseline" secondItem="3Ss-Wh-6dp" secondAttribute="baseline" id="W08-Un-JWq"/>
|
||||
<constraint firstItem="4I7-lP-08K" firstAttribute="leading" secondItem="qIJ-rh-cnU" secondAttribute="leading" id="WhF-Wb-PFB"/>
|
||||
<constraint firstItem="AnJ-nZ-Zfp" firstAttribute="centerY" secondItem="oAG-fe-WMm" secondAttribute="centerY" id="Zox-TK-kuL"/>
|
||||
<constraint firstItem="oAG-fe-WMm" firstAttribute="leading" secondItem="3Ss-Wh-6dp" secondAttribute="trailing" constant="5" id="aJS-aa-4eq"/>
|
||||
<constraint firstItem="4I7-lP-08K" firstAttribute="trailing" secondItem="AnJ-nZ-Zfp" secondAttribute="trailing" id="ss6-VM-Yi5"/>
|
||||
<constraint firstItem="oAG-fe-WMm" firstAttribute="centerX" secondItem="AnJ-nZ-Zfp" secondAttribute="centerX" id="z9w-zt-20K"/>
|
||||
<constraint firstAttribute="trailing" secondItem="4I7-lP-08K" secondAttribute="trailing" id="zdJ-hh-V8T"/>
|
||||
<constraint firstItem="4I7-lP-08K" firstAttribute="leading" secondItem="qIJ-rh-cnU" secondAttribute="leading" id="ofT-nM-Uob"/>
|
||||
<constraint firstAttribute="trailing" secondItem="4I7-lP-08K" secondAttribute="trailing" id="weV-m7-oie"/>
|
||||
<constraint firstAttribute="bottom" secondItem="4I7-lP-08K" secondAttribute="bottom" id="yOi-OG-adc"/>
|
||||
<constraint firstItem="4I7-lP-08K" firstAttribute="top" secondItem="qIJ-rh-cnU" secondAttribute="top" id="ykR-eE-XY3"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</tabViewItem>
|
||||
|
@ -464,74 +412,39 @@ CA
|
|||
<rect key="frame" x="0.0" y="0.0" width="544" height="367"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="YfR-tZ-Cqm">
|
||||
<rect key="frame" x="0.0" y="-1" width="30" height="32"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="30" id="LNb-6x-6BN"/>
|
||||
</constraints>
|
||||
<buttonCell key="cell" type="smallSquare" bezelStyle="smallSquare" image="NSAddTemplate" imagePosition="overlaps" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="HJf-MA-3Rg">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="5lG-v1-xlR">
|
||||
<rect key="frame" x="29" y="-1" width="31" height="31"/>
|
||||
<buttonCell key="cell" type="smallSquare" bezelStyle="smallSquare" image="NSRemoveTemplate" imagePosition="overlaps" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Uhf-Ik-kst">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="meL-4m-liG">
|
||||
<rect key="frame" x="59" y="-1" width="485" height="32"/>
|
||||
<buttonCell key="cell" type="smallSquare" bezelStyle="smallSquare" imagePosition="overlaps" alignment="center" lineBreakMode="truncatingTail" refusesFirstResponder="YES" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="LJN-Sj-A70">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<searchField wantsLayer="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8fs-yS-j3u">
|
||||
<rect key="frame" x="65" y="4" width="474" height="22"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="22" id="e8E-TS-Dd8"/>
|
||||
</constraints>
|
||||
<searchFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" borderStyle="bezel" usesSingleLineMode="YES" bezelStyle="round" id="qxx-lO-6Nw">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</searchFieldCell>
|
||||
</searchField>
|
||||
<scrollView autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="aIh-No-CEz">
|
||||
<rect key="frame" x="0.0" y="29" width="544" height="338"/>
|
||||
<clipView key="contentView" id="MzV-rp-Rp8">
|
||||
<rect key="frame" x="1" y="0.0" width="542" height="337"/>
|
||||
<rect key="frame" x="0.0" y="1" width="544" height="366"/>
|
||||
<clipView key="contentView" drawsBackground="NO" id="MzV-rp-Rp8">
|
||||
<rect key="frame" x="1" y="0.0" width="542" height="365"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnSelection="YES" multipleSelection="NO" autosaveColumns="NO" rowSizeStyle="automatic" headerView="fQK-tA-ezw" viewBased="YES" id="Frt-wZ-1ZI">
|
||||
<rect key="frame" x="0.0" y="0.0" width="542" height="314"/>
|
||||
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" multipleSelection="NO" autosaveColumns="NO" rowSizeStyle="automatic" headerView="fQK-tA-ezw" viewBased="YES" id="Frt-wZ-1ZI">
|
||||
<rect key="frame" x="0.0" y="0.0" width="542" height="342"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<size key="intercellSpacing" width="3" height="2"/>
|
||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
|
||||
<tableColumns>
|
||||
<tableColumn width="116" minWidth="40" maxWidth="1000" id="RF7-J2-oFq">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
|
||||
<tableColumn identifier="SampleIDColumn" width="116" minWidth="40" maxWidth="1000" id="RF7-J2-oFq">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" title="ID">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||
</tableHeaderCell>
|
||||
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="O7U-y5-ovx">
|
||||
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" allowsUndo="NO" title="Text Cell" id="O7U-y5-ovx">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView id="ffN-yY-DyX">
|
||||
<tableCellView id="nAU-e4-oze">
|
||||
<rect key="frame" x="1" y="1" width="116" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="DUu-Bo-MP0">
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="tZr-rU-2Pd">
|
||||
<rect key="frame" x="0.0" y="0.0" width="100" height="17"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="N99-9O-D40">
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" allowsUndo="NO" sendsActionOnEndEditing="YES" title="Table View Cell" id="AJI-LY-8Wf">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
|
@ -539,39 +452,39 @@ CA
|
|||
</textField>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="DUu-Bo-MP0" firstAttribute="leading" secondItem="ffN-yY-DyX" secondAttribute="leading" constant="2" id="2he-p0-Rsl"/>
|
||||
<constraint firstItem="DUu-Bo-MP0" firstAttribute="centerY" secondItem="ffN-yY-DyX" secondAttribute="centerY" id="YDQ-Wo-FVN"/>
|
||||
<constraint firstAttribute="trailing" secondItem="DUu-Bo-MP0" secondAttribute="trailing" constant="18" id="zUo-KU-6TP"/>
|
||||
<constraint firstItem="tZr-rU-2Pd" firstAttribute="leading" secondItem="nAU-e4-oze" secondAttribute="leading" constant="2" id="I9j-sV-Ivw"/>
|
||||
<constraint firstAttribute="trailing" secondItem="tZr-rU-2Pd" secondAttribute="trailing" constant="18" id="UmQ-yh-qIc"/>
|
||||
<constraint firstItem="tZr-rU-2Pd" firstAttribute="centerY" secondItem="nAU-e4-oze" secondAttribute="centerY" id="qfU-4d-RVC"/>
|
||||
</constraints>
|
||||
<connections>
|
||||
<outlet property="textField" destination="DUu-Bo-MP0" id="KVw-BO-rFN"/>
|
||||
<outlet property="textField" destination="tZr-rU-2Pd" id="qXZ-eW-rn8"/>
|
||||
</connections>
|
||||
</tableCellView>
|
||||
</prototypeCellViews>
|
||||
</tableColumn>
|
||||
<tableColumn width="420" minWidth="40" maxWidth="1000" id="MqW-cb-qx7">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
|
||||
<tableColumn identifier="SampleDetailsColumn" width="420" minWidth="40" maxWidth="1000" id="MqW-cb-qx7">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" title="Details">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||
</tableHeaderCell>
|
||||
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="FTl-PH-ryo">
|
||||
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" allowsUndo="NO" title="Text Cell" id="FTl-PH-ryo">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView id="Syu-AI-iQO">
|
||||
<tableCellView id="Td7-KD-77Y">
|
||||
<rect key="frame" x="120" y="1" width="420" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="42J-2Q-ggr">
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="aa7-sT-ACB">
|
||||
<rect key="frame" x="0.0" y="0.0" width="100" height="17"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="96" id="0Ia-Hu-xUz"/>
|
||||
<constraint firstAttribute="width" constant="96" id="NiS-2g-Lrp"/>
|
||||
</constraints>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="5ml-w5-V8a">
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" allowsUndo="NO" sendsActionOnEndEditing="YES" title="Table View Cell" id="bTT-92-guS">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
|
@ -579,11 +492,11 @@ CA
|
|||
</textField>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="42J-2Q-ggr" firstAttribute="centerY" secondItem="Syu-AI-iQO" secondAttribute="centerY" id="6ea-XB-hmz"/>
|
||||
<constraint firstItem="42J-2Q-ggr" firstAttribute="leading" secondItem="Syu-AI-iQO" secondAttribute="leading" constant="2" id="9Bv-2m-jNN"/>
|
||||
<constraint firstItem="aa7-sT-ACB" firstAttribute="leading" secondItem="Td7-KD-77Y" secondAttribute="leading" constant="2" id="CMk-N2-FLW"/>
|
||||
<constraint firstItem="aa7-sT-ACB" firstAttribute="centerY" secondItem="Td7-KD-77Y" secondAttribute="centerY" id="Wi6-jL-iGR"/>
|
||||
</constraints>
|
||||
<connections>
|
||||
<outlet property="textField" destination="42J-2Q-ggr" id="pLh-XE-CfB"/>
|
||||
<outlet property="textField" destination="aa7-sT-ACB" id="Cbv-CJ-AQD"/>
|
||||
</connections>
|
||||
</tableCellView>
|
||||
</prototypeCellViews>
|
||||
|
@ -591,7 +504,7 @@ CA
|
|||
</tableColumns>
|
||||
</tableView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
<nil key="backgroundColor"/>
|
||||
</clipView>
|
||||
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="MZB-ZS-SbU">
|
||||
<rect key="frame" x="1" y="119" width="223" height="15"/>
|
||||
|
@ -608,24 +521,10 @@ CA
|
|||
</scrollView>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="YfR-tZ-Cqm" firstAttribute="baseline" secondItem="5lG-v1-xlR" secondAttribute="baseline" id="0yW-5L-6xL"/>
|
||||
<constraint firstItem="aIh-No-CEz" firstAttribute="trailing" secondItem="meL-4m-liG" secondAttribute="trailing" id="1KY-Rr-WjB"/>
|
||||
<constraint firstItem="aIh-No-CEz" firstAttribute="top" secondItem="A6d-Tc-9Ch" secondAttribute="top" id="2o4-JJ-xTa"/>
|
||||
<constraint firstAttribute="trailing" secondItem="aIh-No-CEz" secondAttribute="trailing" id="4cN-48-TIp"/>
|
||||
<constraint firstItem="meL-4m-liG" firstAttribute="leading" secondItem="YfR-tZ-Cqm" secondAttribute="trailing" constant="29" id="B2C-oR-2je"/>
|
||||
<constraint firstItem="aIh-No-CEz" firstAttribute="leading" secondItem="A6d-Tc-9Ch" secondAttribute="leading" id="CgO-aA-i0w"/>
|
||||
<constraint firstAttribute="bottom" secondItem="YfR-tZ-Cqm" secondAttribute="bottom" id="KXP-Wn-AEZ"/>
|
||||
<constraint firstItem="8fs-yS-j3u" firstAttribute="top" secondItem="aIh-No-CEz" secondAttribute="bottom" constant="3" id="Ras-NE-DOd"/>
|
||||
<constraint firstItem="aIh-No-CEz" firstAttribute="leading" secondItem="YfR-tZ-Cqm" secondAttribute="leading" id="WTG-q1-AbI"/>
|
||||
<constraint firstItem="5lG-v1-xlR" firstAttribute="leading" secondItem="A6d-Tc-9Ch" secondAttribute="leading" constant="29" id="Z81-xl-EM4"/>
|
||||
<constraint firstItem="YfR-tZ-Cqm" firstAttribute="centerY" secondItem="5lG-v1-xlR" secondAttribute="centerY" id="hXw-Al-NS4"/>
|
||||
<constraint firstItem="8fs-yS-j3u" firstAttribute="leading" secondItem="5lG-v1-xlR" secondAttribute="trailing" constant="5" id="kCf-4j-RgY"/>
|
||||
<constraint firstItem="YfR-tZ-Cqm" firstAttribute="firstBaseline" secondItem="meL-4m-liG" secondAttribute="firstBaseline" id="kiM-MZ-94m"/>
|
||||
<constraint firstItem="meL-4m-liG" firstAttribute="centerY" secondItem="8fs-yS-j3u" secondAttribute="centerY" id="lO3-6v-BmR"/>
|
||||
<constraint firstItem="5lG-v1-xlR" firstAttribute="baseline" secondItem="meL-4m-liG" secondAttribute="baseline" id="lWj-xA-tcg"/>
|
||||
<constraint firstItem="5lG-v1-xlR" firstAttribute="top" secondItem="aIh-No-CEz" secondAttribute="bottom" id="rwW-Ez-40s"/>
|
||||
<constraint firstItem="8fs-yS-j3u" firstAttribute="centerX" secondItem="meL-4m-liG" secondAttribute="centerX" id="tHD-vu-oEw"/>
|
||||
<constraint firstAttribute="trailing" secondItem="8fs-yS-j3u" secondAttribute="trailing" constant="5" id="vjS-qe-dVe"/>
|
||||
<constraint firstAttribute="trailing" secondItem="aIh-No-CEz" secondAttribute="trailing" id="DYN-OA-95T"/>
|
||||
<constraint firstItem="aIh-No-CEz" firstAttribute="top" secondItem="A6d-Tc-9Ch" secondAttribute="top" id="LVF-DP-KHg"/>
|
||||
<constraint firstItem="aIh-No-CEz" firstAttribute="leading" secondItem="A6d-Tc-9Ch" secondAttribute="leading" id="SF5-ox-STl"/>
|
||||
<constraint firstItem="aIh-No-CEz" firstAttribute="centerY" secondItem="A6d-Tc-9Ch" secondAttribute="centerY" id="xg8-Qp-9kO"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</tabViewItem>
|
||||
|
|
|
@ -3,10 +3,12 @@
|
|||
|
||||
#import <AppKit/AppKit.h>
|
||||
#import "AudioGroupFilePresenter.hpp"
|
||||
#include <amuse/BooBackend.hpp>
|
||||
#include <boo/audiodev/IAudioVoiceEngine.hpp>
|
||||
|
||||
@interface DataOutlineView : NSOutlineView
|
||||
{
|
||||
@public
|
||||
@public
|
||||
IBOutlet NSButton* removeDataButton;
|
||||
IBOutlet NSMenuItem* deleteMenuItem;
|
||||
}
|
||||
|
@ -14,14 +16,16 @@
|
|||
|
||||
@interface SamplesTableController : NSObject <NSTableViewDataSource, NSTableViewDelegate>
|
||||
{
|
||||
|
||||
AudioGroupFilePresenter* presenter;
|
||||
}
|
||||
- (id)initWithAudioGroupPresenter:(AudioGroupFilePresenter*)present;
|
||||
@end
|
||||
|
||||
@interface SFXTableController : NSObject <NSTableViewDataSource, NSTableViewDelegate>
|
||||
{
|
||||
|
||||
AudioGroupFilePresenter* presenter;
|
||||
}
|
||||
- (id)initWithAudioGroupPresenter:(AudioGroupFilePresenter*)present;
|
||||
@end
|
||||
|
||||
@interface AppDelegate : NSObject <NSApplicationDelegate>
|
||||
|
@ -40,9 +44,18 @@
|
|||
|
||||
SamplesTableController* samplesController;
|
||||
SFXTableController* sfxController;
|
||||
|
||||
@public
|
||||
std::unique_ptr<boo::IAudioVoiceEngine> booEngine;
|
||||
std::experimental::optional<amuse::BooBackendVoiceAllocator> amuseAllocator;
|
||||
std::experimental::optional<amuse::Engine> amuseEngine;
|
||||
std::shared_ptr<amuse::Voice> activeSFXVox;
|
||||
}
|
||||
- (BOOL)importURL:(NSURL*)url;
|
||||
- (void)outlineView:(DataOutlineView*)ov selectionChanged:(id)item;
|
||||
- (void)reloadTables;
|
||||
- (void)startSFX:(int)sfxId;
|
||||
- (void)startSample:(int)sampId;
|
||||
@end
|
||||
|
||||
#endif // __AMUSE_AUDIOUNIT_CONTAININGAPP_HPP__
|
|
@ -9,13 +9,27 @@
|
|||
@class SamplesTableController;
|
||||
@class SFXTableController;
|
||||
|
||||
/* Blocks mousedown events */
|
||||
/* Blocks mousedown events (so button may be used as a visual element only) */
|
||||
@interface InactiveButton : NSButton {}
|
||||
@end
|
||||
@implementation InactiveButton
|
||||
- (void)mouseDown:(NSEvent *)theEvent {}
|
||||
@end
|
||||
|
||||
/* Restricts mousedown to checkbox */
|
||||
@interface RestrictedCheckButton : NSButtonCell {}
|
||||
@end
|
||||
@implementation RestrictedCheckButton
|
||||
- (NSCellHitResult)hitTestForEvent:(NSEvent *)event inRect:(NSRect)cellFrame ofView:(NSView *)controlView
|
||||
{
|
||||
NSRect restrictFrame = cellFrame;
|
||||
restrictFrame.size.width = 22;
|
||||
if (NSPointInRect([controlView convertPoint:[event locationInWindow] fromView:nil], restrictFrame))
|
||||
return NSCellHitTrackableArea;
|
||||
return NSCellHitNone;
|
||||
}
|
||||
@end
|
||||
|
||||
@interface MainView : NSView
|
||||
{
|
||||
AudioUnitViewController* amuseVC;
|
||||
|
@ -89,12 +103,49 @@
|
|||
|
||||
- (NSInteger)numberOfRowsInTableView:(NSTableView*)tableView
|
||||
{
|
||||
|
||||
return presenter->m_sampleTableData.size();
|
||||
}
|
||||
|
||||
- (nullable id)tableView:(NSTableView *)tableView objectValueForTableColumn:(nullable NSTableColumn*)tableColumn row:(NSInteger)row
|
||||
- (NSView*)tableView:(NSTableView *)tableView viewForTableColumn:(nullable NSTableColumn *)tableColumn row:(NSInteger)row
|
||||
{
|
||||
|
||||
if (presenter->m_sampleTableData.size() <= row)
|
||||
return nil;
|
||||
NSTableCellView* view = [tableView makeViewWithIdentifier:@"SampleIDColumn" owner:self];
|
||||
AudioGroupSampleToken* sampToken = presenter->m_sampleTableData[row];
|
||||
if ([tableColumn.identifier isEqualToString:@"SampleIDColumn"])
|
||||
view.textField.attributedStringValue = sampToken->m_name;
|
||||
else if ([tableColumn.identifier isEqualToString:@"SampleDetailsColumn"])
|
||||
view.textField.stringValue = @"";
|
||||
else
|
||||
view.textField.attributedStringValue = sampToken->m_name;
|
||||
return view;
|
||||
}
|
||||
|
||||
- (BOOL)tableView:(NSTableView *)tableView isGroupRow:(NSInteger)row
|
||||
{
|
||||
if (presenter->m_sampleTableData.size() <= row)
|
||||
return NO;
|
||||
AudioGroupSampleToken* sampToken = presenter->m_sampleTableData[row];
|
||||
if (!sampToken->m_sample)
|
||||
return YES;
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (BOOL)tableView:(NSTableView *)tableView shouldSelectRow:(NSInteger)row
|
||||
{
|
||||
if (presenter->m_sampleTableData.size() <= row)
|
||||
return NO;
|
||||
AudioGroupSampleToken* sampToken = presenter->m_sampleTableData[row];
|
||||
if (!sampToken->m_sample)
|
||||
return NO;
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (id)initWithAudioGroupPresenter:(AudioGroupFilePresenter*)present
|
||||
{
|
||||
self = [super init];
|
||||
presenter = present;
|
||||
return self;
|
||||
}
|
||||
|
||||
@end
|
||||
|
@ -104,11 +155,60 @@
|
|||
|
||||
- (NSInteger)numberOfRowsInTableView:(NSTableView*)tableView
|
||||
{
|
||||
return presenter->m_sfxTableData.size();
|
||||
}
|
||||
|
||||
- (nullable id)tableView:(NSTableView *)tableView objectValueForTableColumn:(nullable NSTableColumn*)tableColumn row:(NSInteger)row
|
||||
- (NSView*)tableView:(NSTableView *)tableView viewForTableColumn:(nullable NSTableColumn *)tableColumn row:(NSInteger)row
|
||||
{
|
||||
|
||||
if (presenter->m_sfxTableData.size() <= row)
|
||||
return nil;
|
||||
NSTableCellView* view = [tableView makeViewWithIdentifier:@"SFXIDColumn" owner:self];
|
||||
AudioGroupSFXToken* sfxToken = presenter->m_sfxTableData[row];
|
||||
if ([tableColumn.identifier isEqualToString:@"SFXIDColumn"])
|
||||
view.textField.attributedStringValue = sfxToken->m_name;
|
||||
else if ([tableColumn.identifier isEqualToString:@"SFXDetailsColumn"])
|
||||
view.textField.stringValue = @"";
|
||||
else
|
||||
view.textField.attributedStringValue = sfxToken->m_name;
|
||||
return view;
|
||||
}
|
||||
|
||||
- (BOOL)tableView:(NSTableView *)tableView isGroupRow:(NSInteger)row
|
||||
{
|
||||
if (presenter->m_sfxTableData.size() <= row)
|
||||
return NO;
|
||||
AudioGroupSFXToken* sfxToken = presenter->m_sfxTableData[row];
|
||||
if (!sfxToken->m_sfx)
|
||||
return YES;
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (BOOL)tableView:(NSTableView *)tableView shouldSelectRow:(NSInteger)row
|
||||
{
|
||||
if (presenter->m_sfxTableData.size() <= row)
|
||||
return NO;
|
||||
AudioGroupSFXToken* sfxToken = presenter->m_sfxTableData[row];
|
||||
if (!sfxToken->m_sfx)
|
||||
return NO;
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (void)tableViewSelectionDidChange:(NSNotification *)notification
|
||||
{
|
||||
NSTableView* table = notification.object;
|
||||
NSInteger row = table.selectedRow;
|
||||
if (presenter->m_sfxTableData.size() <= row)
|
||||
return;
|
||||
AudioGroupSFXToken* sfxToken = presenter->m_sfxTableData[row];
|
||||
AppDelegate* delegate = NSApp.delegate;
|
||||
[delegate startSFX:sfxToken->m_loadId];
|
||||
}
|
||||
|
||||
- (id)initWithAudioGroupPresenter:(AudioGroupFilePresenter*)present
|
||||
{
|
||||
self = [super init];
|
||||
presenter = present;
|
||||
return self;
|
||||
}
|
||||
|
||||
@end
|
||||
|
@ -117,7 +217,10 @@
|
|||
|
||||
- (void)applicationWillFinishLaunching:(NSNotification*)notification
|
||||
{
|
||||
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"NSConstraintBasedLayoutVisualizeMutuallyExclusiveConstraints"];
|
||||
booEngine = boo::NewAudioVoiceEngine();
|
||||
amuseAllocator.emplace(*booEngine);
|
||||
amuseEngine.emplace(*amuseAllocator);
|
||||
|
||||
[mainWindow.toolbar setSelectedItemIdentifier:@"DataTab"];
|
||||
|
||||
groupFilePresenter = [AudioGroupFilePresenter new];
|
||||
|
@ -126,15 +229,22 @@
|
|||
dataOutline.delegate = groupFilePresenter;
|
||||
[dataOutline reloadItem:nil reloadChildren:YES];
|
||||
|
||||
samplesController = [SamplesTableController new];
|
||||
samplesController = [[SamplesTableController alloc] initWithAudioGroupPresenter:groupFilePresenter];
|
||||
samplesTable.dataSource = samplesController;
|
||||
samplesTable.delegate = samplesController;
|
||||
[samplesTable reloadData];
|
||||
|
||||
sfxController = [SFXTableController new];
|
||||
sfxController = [[SFXTableController alloc] initWithAudioGroupPresenter:groupFilePresenter];
|
||||
sfxTable.dataSource = sfxController;
|
||||
sfxTable.delegate = sfxController;
|
||||
[sfxTable reloadData];
|
||||
|
||||
[NSTimer scheduledTimerWithTimeInterval:1.0 / 60.0 target:self selector:@selector(pumpTimer:) userInfo:nil repeats:YES];
|
||||
}
|
||||
|
||||
- (void)pumpTimer:(NSTimer*)timer
|
||||
{
|
||||
amuseEngine->pumpEngine();
|
||||
}
|
||||
|
||||
- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender
|
||||
|
@ -174,6 +284,23 @@
|
|||
}];
|
||||
}
|
||||
|
||||
- (void)startSFX:(int)sfxId
|
||||
{
|
||||
if (activeSFXVox)
|
||||
activeSFXVox->keyOff();
|
||||
activeSFXVox = amuseEngine->fxStart(sfxId, 1.f, 0.f);
|
||||
}
|
||||
|
||||
- (void)startSample:(int)sampleId
|
||||
{
|
||||
}
|
||||
|
||||
- (void)reloadTables
|
||||
{
|
||||
[sfxTable reloadData];
|
||||
[samplesTable reloadData];
|
||||
}
|
||||
|
||||
- (IBAction)filterDataOutline:(id)sender
|
||||
{
|
||||
[groupFilePresenter setSearchFilter:[sender stringValue]];
|
||||
|
|
|
@ -12,6 +12,8 @@
|
|||
@class AudioGroupFilePresenter;
|
||||
@class AudioGroupDataToken;
|
||||
@class AudioGroupCollectionToken;
|
||||
@class AudioGroupSFXToken;
|
||||
@class AudioGroupSampleToken;
|
||||
|
||||
struct AudioGroupDataCollection
|
||||
{
|
||||
|
@ -42,7 +44,7 @@ struct AudioGroupDataCollection
|
|||
std::experimental::optional<MetaData> m_metaData;
|
||||
|
||||
std::experimental::optional<amuse::AudioGroupData> m_loadedData;
|
||||
std::experimental::optional<amuse::AudioGroupProject> m_loadedProj;
|
||||
const amuse::AudioGroup* m_loadedGroup;
|
||||
|
||||
void moveURL(NSURL* oldUrl, NSURL* newUrl);
|
||||
|
||||
|
@ -72,6 +74,8 @@ struct AudioGroupCollection
|
|||
void addCollection(std::vector<std::pair<std::string, amuse::IntrusiveAudioGroupData>>&& collection);
|
||||
void update(AudioGroupFilePresenter* presenter);
|
||||
bool doSearch(const std::string& str);
|
||||
void addSFX(std::vector<AudioGroupSFXToken*>& vecOut);
|
||||
void addSamples(std::vector<AudioGroupSampleToken*>& vecOut);
|
||||
};
|
||||
|
||||
@interface AudioGroupDataToken : NSObject
|
||||
|
@ -90,6 +94,26 @@ struct AudioGroupCollection
|
|||
- (id)initWithCollection:(AudioGroupCollection*)collection;
|
||||
@end
|
||||
|
||||
@interface AudioGroupSFXToken : NSObject
|
||||
{
|
||||
@public
|
||||
NSAttributedString* m_name;
|
||||
int m_loadId;
|
||||
const amuse::SFXGroupIndex::SFXEntry* m_sfx;
|
||||
}
|
||||
- (id)initWithName:(NSAttributedString*)name loadId:(int)loadId sfx:(const amuse::SFXGroupIndex::SFXEntry*)sfx;
|
||||
@end
|
||||
|
||||
@interface AudioGroupSampleToken : NSObject
|
||||
{
|
||||
@public
|
||||
NSAttributedString* m_name;
|
||||
const std::pair<amuse::AudioGroupSampleDirectory::Entry, amuse::AudioGroupSampleDirectory::ADPCMParms>* m_sample;
|
||||
}
|
||||
- (id)initWithName:(NSAttributedString*)name samp:(const std::pair<amuse::AudioGroupSampleDirectory::Entry,
|
||||
amuse::AudioGroupSampleDirectory::ADPCMParms>*)sample;
|
||||
@end
|
||||
|
||||
@interface AudioGroupFilePresenter : NSObject <NSFilePresenter, NSOutlineViewDataSource, NSOutlineViewDelegate>
|
||||
{
|
||||
NSURL* m_groupURL;
|
||||
|
@ -98,6 +122,10 @@ struct AudioGroupCollection
|
|||
std::vector<std::map<std::string, std::unique_ptr<AudioGroupCollection>>::iterator> m_filterAudioGroupCollections;
|
||||
NSOutlineView* lastOutlineView;
|
||||
NSString* searchStr;
|
||||
|
||||
@public
|
||||
std::vector<AudioGroupSFXToken*> m_sfxTableData;
|
||||
std::vector<AudioGroupSampleToken*> m_sampleTableData;
|
||||
}
|
||||
- (BOOL)addCollectionName:(std::string&&)name items:(std::vector<std::pair<std::string, amuse::IntrusiveAudioGroupData>>&&)collection;
|
||||
- (void)update;
|
||||
|
|
|
@ -28,6 +28,28 @@ static std::string StrToLower(const std::string& str)
|
|||
}
|
||||
@end
|
||||
|
||||
@implementation AudioGroupSFXToken
|
||||
- (id)initWithName:(NSAttributedString*)name loadId:(int)loadId sfx:(const amuse::SFXGroupIndex::SFXEntry*)sfx
|
||||
{
|
||||
self = [super init];
|
||||
m_name = name;
|
||||
m_loadId = loadId;
|
||||
m_sfx = sfx;
|
||||
return self;
|
||||
}
|
||||
@end
|
||||
|
||||
@implementation AudioGroupSampleToken
|
||||
- (id)initWithName:(NSAttributedString*)name samp:(const std::pair<amuse::AudioGroupSampleDirectory::Entry,
|
||||
amuse::AudioGroupSampleDirectory::ADPCMParms>*)sample
|
||||
{
|
||||
self = [super init];
|
||||
m_name = name;
|
||||
m_sample = sample;
|
||||
return self;
|
||||
}
|
||||
@end
|
||||
|
||||
@implementation AudioGroupFilePresenter
|
||||
|
||||
- (NSURL*)presentedItemURL
|
||||
|
@ -130,6 +152,56 @@ bool AudioGroupCollection::doSearch(const std::string& str)
|
|||
return ret;
|
||||
}
|
||||
|
||||
void AudioGroupCollection::addSFX(std::vector<AudioGroupSFXToken*>& vecOut)
|
||||
{
|
||||
for (auto it = m_groups.begin() ; it != m_groups.end() ; ++it)
|
||||
{
|
||||
if (!it->second->m_metaData->active)
|
||||
continue;
|
||||
const auto& sfxGroups = it->second->m_loadedGroup->getProj().sfxGroups();
|
||||
std::map<int, const amuse::SFXGroupIndex*> sortGroups;
|
||||
for (const auto& pair : sfxGroups)
|
||||
sortGroups[pair.first] = &pair.second;
|
||||
for (const auto& pair : sortGroups)
|
||||
{
|
||||
NSMutableAttributedString* name = [[NSMutableAttributedString alloc] initWithString:m_url.lastPathComponent attributes:@{NSForegroundColorAttributeName: [NSColor grayColor]}];
|
||||
[name appendAttributedString:[[NSAttributedString alloc] initWithString:[NSString stringWithFormat:@" %s (%d)", it->first.c_str(), pair.first]]];
|
||||
vecOut.push_back([[AudioGroupSFXToken alloc] initWithName:name loadId:0 sfx:nil]);
|
||||
std::map<int, const amuse::SFXGroupIndex::SFXEntry*> sortSfx;
|
||||
for (const auto& pair : pair.second->m_sfxEntries)
|
||||
sortSfx[pair.first] = pair.second;
|
||||
for (const auto& sfx : sortSfx)
|
||||
{
|
||||
name = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%d", sfx.first]];
|
||||
vecOut.push_back([[AudioGroupSFXToken alloc] initWithName:name loadId:sfx.first sfx:sfx.second]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void AudioGroupCollection::addSamples(std::vector<AudioGroupSampleToken*>& vecOut)
|
||||
{
|
||||
for (auto it = m_groups.begin() ; it != m_groups.end() ; ++it)
|
||||
{
|
||||
if (!it->second->m_metaData->active)
|
||||
continue;
|
||||
const auto& samps = it->second->m_loadedGroup->getSdir().sampleEntries();
|
||||
std::map<int, const std::pair<amuse::AudioGroupSampleDirectory::Entry, amuse::AudioGroupSampleDirectory::ADPCMParms>*> sortSamps;
|
||||
for (const auto& pair : samps)
|
||||
sortSamps[pair.first] = &pair.second;
|
||||
|
||||
NSMutableAttributedString* name = [[NSMutableAttributedString alloc] initWithString:m_url.lastPathComponent attributes:@{NSForegroundColorAttributeName: [NSColor grayColor]}];
|
||||
[name appendAttributedString:[[NSAttributedString alloc] initWithString:[NSString stringWithFormat:@" %s", it->first.c_str()]]];
|
||||
vecOut.push_back([[AudioGroupSampleToken alloc] initWithName:name samp:nil]);
|
||||
|
||||
for (const auto& pair : sortSamps)
|
||||
{
|
||||
name = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%d", pair.first]];
|
||||
vecOut.push_back([[AudioGroupSampleToken alloc] initWithName:name samp:pair.second]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
AudioGroupDataCollection::AudioGroupDataCollection(const std::string& name, NSURL* proj, NSURL* pool,
|
||||
NSURL* sdir, NSURL* samp, NSURL* meta)
|
||||
: m_name(name), m_proj(proj), m_pool(pool), m_sdir(sdir), m_samp(samp), m_meta(meta),
|
||||
|
@ -137,7 +209,9 @@ AudioGroupDataCollection::AudioGroupDataCollection(const std::string& name, NSUR
|
|||
|
||||
bool AudioGroupDataCollection::_attemptLoad(AudioGroupFilePresenter* presenter)
|
||||
{
|
||||
if (m_metaData && m_loadedData && m_loadedProj)
|
||||
amuse::Engine& engine = *((AppDelegate*)NSApp.delegate)->amuseEngine;
|
||||
|
||||
if (m_metaData && m_loadedData && m_loadedGroup)
|
||||
return true;
|
||||
if (!loadProj(presenter))
|
||||
return false;
|
||||
|
@ -176,12 +250,8 @@ bool AudioGroupDataCollection::_attemptLoad(AudioGroupFilePresenter* presenter)
|
|||
break;
|
||||
}
|
||||
|
||||
if (m_metaData && m_loadedData)
|
||||
{
|
||||
m_loadedProj.emplace(amuse::AudioGroupProject::CreateAudioGroupProject(*m_loadedData));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
m_loadedGroup = engine.addAudioGroup(*m_loadedData);
|
||||
return m_loadedData && m_loadedGroup;
|
||||
}
|
||||
|
||||
void AudioGroupDataCollection::enable(AudioGroupFilePresenter* presenter)
|
||||
|
@ -437,22 +507,22 @@ bool AudioGroupDataCollection::loadMeta(AudioGroupFilePresenter* presenter)
|
|||
return [NSNumber numberWithInt:data.m_metaData->active ? NSOnState : NSOffState];
|
||||
else if ([tableColumn.identifier isEqualToString:@"DetailsColumn"])
|
||||
{
|
||||
if (!data.m_loadedProj)
|
||||
if (!data.m_loadedGroup)
|
||||
return @"";
|
||||
if (data.m_loadedProj->songGroups().size() && data.m_loadedProj->sfxGroups().size())
|
||||
if (data.m_loadedGroup->getProj().songGroups().size() && data.m_loadedGroup->getProj().sfxGroups().size())
|
||||
return [NSString stringWithFormat:@"%zu Song Group%s, %zu SFX Group%s",
|
||||
data.m_loadedProj->songGroups().size(),
|
||||
data.m_loadedProj->songGroups().size() > 1 ? "s" : "",
|
||||
data.m_loadedProj->sfxGroups().size(),
|
||||
data.m_loadedProj->sfxGroups().size() > 1 ? "s" : ""];
|
||||
else if (data.m_loadedProj->songGroups().size())
|
||||
data.m_loadedGroup->getProj().songGroups().size(),
|
||||
data.m_loadedGroup->getProj().songGroups().size() > 1 ? "s" : "",
|
||||
data.m_loadedGroup->getProj().sfxGroups().size(),
|
||||
data.m_loadedGroup->getProj().sfxGroups().size() > 1 ? "s" : ""];
|
||||
else if (data.m_loadedGroup->getProj().songGroups().size())
|
||||
return [NSString stringWithFormat:@"%zu Song Group%s",
|
||||
data.m_loadedProj->songGroups().size(),
|
||||
data.m_loadedProj->songGroups().size() > 1 ? "s" : ""];
|
||||
else if (data.m_loadedProj->sfxGroups().size())
|
||||
data.m_loadedGroup->getProj().songGroups().size(),
|
||||
data.m_loadedGroup->getProj().songGroups().size() > 1 ? "s" : ""];
|
||||
else if (data.m_loadedGroup->getProj().sfxGroups().size())
|
||||
return [NSString stringWithFormat:@"%zu SFX Group%s",
|
||||
data.m_loadedProj->sfxGroups().size(),
|
||||
data.m_loadedProj->sfxGroups().size() > 1 ? "s" : ""];
|
||||
data.m_loadedGroup->getProj().sfxGroups().size(),
|
||||
data.m_loadedGroup->getProj().sfxGroups().size() > 1 ? "s" : ""];
|
||||
else
|
||||
return @"";
|
||||
}
|
||||
|
@ -495,7 +565,7 @@ bool AudioGroupDataCollection::loadMeta(AudioGroupFilePresenter* presenter)
|
|||
}
|
||||
|
||||
if (dirty)
|
||||
[outlineView reloadItem:nil reloadChildren:YES];
|
||||
[self resetIterators];
|
||||
}
|
||||
|
||||
- (void)outlineView:(NSOutlineView *)outlineView willDisplayCell:(nonnull id)cell forTableColumn:(nullable NSTableColumn *)tableColumn item:(nonnull id)item
|
||||
|
@ -649,12 +719,19 @@ bool AudioGroupDataCollection::loadMeta(AudioGroupFilePresenter* presenter)
|
|||
if (searchStr)
|
||||
search = searchStr.UTF8String;
|
||||
|
||||
m_sfxTableData.clear();
|
||||
m_sampleTableData.clear();
|
||||
m_filterAudioGroupCollections.clear();
|
||||
m_filterAudioGroupCollections.reserve(m_audioGroupCollections.size());
|
||||
for (auto it = m_audioGroupCollections.begin() ; it != m_audioGroupCollections.end() ; ++it)
|
||||
{
|
||||
it->second->addSFX(m_sfxTableData);
|
||||
it->second->addSamples(m_sampleTableData);
|
||||
if (it->second->doSearch(search) || !searchStr || StrToLower(it->first).find(search) != std::string::npos)
|
||||
m_filterAudioGroupCollections.push_back(it);
|
||||
}
|
||||
[lastOutlineView reloadItem:nil reloadChildren:YES];
|
||||
[(AppDelegate*)NSApp.delegate reloadTables];
|
||||
}
|
||||
|
||||
- (void)setSearchFilter:(NSString*)str
|
||||
|
|
|
@ -31,6 +31,7 @@ public:
|
|||
const unsigned char* getSampleData(uint32_t offset) const;
|
||||
const AudioGroupProject& getProj() const {return m_proj;}
|
||||
const AudioGroupPool& getPool() const {return m_pool;}
|
||||
const AudioGroupSampleDirectory& getSdir() const {return m_sdir;}
|
||||
DataFormat getDataFormat() const {return m_fmt;}
|
||||
};
|
||||
|
||||
|
|
|
@ -51,6 +51,8 @@ public:
|
|||
AudioGroupSampleDirectory(const unsigned char* data, const unsigned char* sampData,
|
||||
bool absOffs, N64DataTag);
|
||||
AudioGroupSampleDirectory(const unsigned char* data, bool absOffs, PCDataTag);
|
||||
|
||||
const std::unordered_map<uint16_t, std::pair<Entry, ADPCMParms>>& sampleEntries() const {return m_entries;}
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -1293,7 +1293,7 @@ static std::vector<std::pair<std::string, IntrusiveAudioGroupData>> LoadRS2(FILE
|
|||
if (head.projLen && head.poolLen && head.sdirLen && head.sampLen)
|
||||
{
|
||||
char name[128];
|
||||
snprintf(name, 128, "GroupFile%u", j);
|
||||
snprintf(name, 128, "GroupFile%02u", j);
|
||||
ret.emplace_back(name, IntrusiveAudioGroupData{proj.release(), head.projLen, pool.release(), head.poolLen,
|
||||
sdir.release(), head.sdirLen, samp.release(), head.sampLen, GCNDataTag{}});
|
||||
}
|
||||
|
@ -1353,7 +1353,7 @@ static std::vector<std::pair<std::string, ContainerRegistry::SongData>> LoadRS2S
|
|||
sonHead.swapBig();
|
||||
|
||||
char name[128];
|
||||
snprintf(name, 128, "GroupFile%u-%u", j, s);
|
||||
snprintf(name, 128, "GroupFile%02u-%u", j, s);
|
||||
std::unique_ptr<uint8_t[]> song(new uint8_t[sonHead.length]);
|
||||
memcpy(song.get(), audData.get() + sonHead.offset, sonHead.length);
|
||||
ret.emplace_back(name, ContainerRegistry::SongData(std::move(song), sonHead.length,
|
||||
|
@ -1466,7 +1466,7 @@ static std::vector<std::pair<std::string, IntrusiveAudioGroupData>> LoadRS3(FILE
|
|||
if (head.projLen && head.poolLen && head.sdirLen && head.sampLen)
|
||||
{
|
||||
char name[128];
|
||||
snprintf(name, 128, "GroupFile%u", j);
|
||||
snprintf(name, 128, "GroupFile%02u", j);
|
||||
ret.emplace_back(name, IntrusiveAudioGroupData{proj.release(), head.projLen, pool.release(), head.poolLen,
|
||||
sdir.release(), head.sdirLen, samp.release(), head.sampLen, GCNDataTag{}});
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue