mirror of
https://github.com/MacPass/MacPass.git
synced 2026-01-30 18:08:17 +00:00
Compare commits
242 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e985d23fa5 | ||
|
|
b690d6051e | ||
|
|
fe7b4e2746 | ||
|
|
5b211bb519 | ||
|
|
0a6ba80f01 | ||
|
|
43e667a157 | ||
|
|
2956a2e7c1 | ||
|
|
af960b0b38 | ||
|
|
c1155bd061 | ||
|
|
9c9f6f0bf5 | ||
|
|
66ad8cee17 | ||
|
|
7376a5c887 | ||
|
|
4bf130232f | ||
|
|
89268ef88e | ||
|
|
59c37e696f | ||
|
|
e2d6a7ddad | ||
|
|
e6a7992084 | ||
|
|
ca31d4638f | ||
|
|
a40049a425 | ||
|
|
2ec0945a51 | ||
|
|
fccc0921b7 | ||
|
|
1e78d3b0ae | ||
|
|
4f2888b759 | ||
|
|
9d032dcbf4 | ||
|
|
07fba98d64 | ||
|
|
95184ed2ec | ||
|
|
5d4d0a626b | ||
|
|
bb38973fa7 | ||
|
|
dc4cbc6777 | ||
|
|
12406bf10f | ||
|
|
096fdc4384 | ||
|
|
29d349a0a0 | ||
|
|
7c9c75e103 | ||
|
|
7198b0cbf7 | ||
|
|
6b7fdc081b | ||
|
|
43bc4d7ae1 | ||
|
|
31b062423a | ||
|
|
6dcd03f6f2 | ||
|
|
eedc804558 | ||
|
|
65f2582e3c | ||
|
|
2e46d7c121 | ||
|
|
59b28b4872 | ||
|
|
d1e99c6bc7 | ||
|
|
2181898acd | ||
|
|
466ca92757 | ||
|
|
3ea8937d11 | ||
|
|
cc0a855712 | ||
|
|
3ea790eeb3 | ||
|
|
f1bf8ab9f6 | ||
|
|
1ee3bc13be | ||
|
|
05d4381045 | ||
|
|
fb27d330d6 | ||
|
|
d83332a92d | ||
|
|
299b48870d | ||
|
|
fc186aaf2c | ||
|
|
98730e7f24 | ||
|
|
8d5006ba34 | ||
|
|
1873032d3c | ||
|
|
3cf0e5644e | ||
|
|
8b9c998ec7 | ||
|
|
f0e530bda5 | ||
|
|
a34c0eed4e | ||
|
|
83f8158b21 | ||
|
|
f28bcb527a | ||
|
|
6cd443278f | ||
|
|
ea2796dd28 | ||
|
|
0b681f8d40 | ||
|
|
d4fc747d72 | ||
|
|
33a4188bba | ||
|
|
16be427a92 | ||
|
|
48fc70018e | ||
|
|
adcf77f1d7 | ||
|
|
32b31a3ea8 | ||
|
|
f1d0d410f1 | ||
|
|
af63b0ec4d | ||
|
|
85e55626b0 | ||
|
|
3c4eac6707 | ||
|
|
84f35d6005 | ||
|
|
9e14e8301d | ||
|
|
1b04e5cfa2 | ||
|
|
8884e61e10 | ||
|
|
781234ef8c | ||
|
|
08a49121b0 | ||
|
|
92592a8049 | ||
|
|
5b6483fdab | ||
|
|
3b4d05f676 | ||
|
|
7d5edd1c98 | ||
|
|
5652abfb1e | ||
|
|
b478b47d3d | ||
|
|
8cc4c2717a | ||
|
|
f3815f7fa4 | ||
|
|
93f6a62bb5 | ||
|
|
174d9c2650 | ||
|
|
0b240d3ade | ||
|
|
b30279e42e | ||
|
|
ef896468bb | ||
|
|
b3ad2df29e | ||
|
|
3cfbbb1f16 | ||
|
|
4addd907d4 | ||
|
|
7ef88b7e88 | ||
|
|
b19a79095a | ||
|
|
cc982f2395 | ||
|
|
fa1094632e | ||
|
|
d0f8c3eafb | ||
|
|
51f3d6627f | ||
|
|
c50598b8a0 | ||
|
|
e7a5eab982 | ||
|
|
5e10d3712e | ||
|
|
04b8e221cb | ||
|
|
059c794b9b | ||
|
|
0078fae707 | ||
|
|
76906972f2 | ||
|
|
98bb204a2f | ||
|
|
fa08e22cf3 | ||
|
|
5457d4dde0 | ||
|
|
e4fadce3d0 | ||
|
|
ea9f41bfef | ||
|
|
e27526b399 | ||
|
|
b58d5179a2 | ||
|
|
399cf44d45 | ||
|
|
797733130f | ||
|
|
bb3df31d4f | ||
|
|
e3b3014084 | ||
|
|
8496ae20cf | ||
|
|
58399d66be | ||
|
|
95da40de44 | ||
|
|
df7b68b019 | ||
|
|
21b0e4c0f2 | ||
|
|
57601798bd | ||
|
|
de0319abae | ||
|
|
fd88b2c506 | ||
|
|
b6df969bf4 | ||
|
|
62032cd7d0 | ||
|
|
8c017e65c2 | ||
|
|
15dce5f0b6 | ||
|
|
d22750fefc | ||
|
|
f25db6b418 | ||
|
|
f010ec057d | ||
|
|
57c3d558f3 | ||
|
|
90093850f9 | ||
|
|
6bd6c65dfa | ||
|
|
ac20664b7a | ||
|
|
7a4d80fd47 | ||
|
|
06413b26df | ||
|
|
53ae6dca84 | ||
|
|
4fabee0213 | ||
|
|
90a0aef2cc | ||
|
|
9fe9c6a41d | ||
|
|
68ccb8e1ad | ||
|
|
acd2e1bc0f | ||
|
|
18e2115119 | ||
|
|
d466c6d026 | ||
|
|
a58766146f | ||
|
|
dc31a81d48 | ||
|
|
48491c0712 | ||
|
|
b98b5635d5 | ||
|
|
fa85da3f82 | ||
|
|
bb73628484 | ||
|
|
baaf10d6f3 | ||
|
|
4caea9080e | ||
|
|
1e43e608ed | ||
|
|
b04c252a69 | ||
|
|
03c1d5ecee | ||
|
|
0f7604ac88 | ||
|
|
784afaee97 | ||
|
|
e99f2e2619 | ||
|
|
1c76e50192 | ||
|
|
9716bfc8e8 | ||
|
|
e08b116aa0 | ||
|
|
7c9460d027 | ||
|
|
3807b0a0b7 | ||
|
|
65626e3b11 | ||
|
|
e2b35c6552 | ||
|
|
501501fce1 | ||
|
|
381d4b1cac | ||
|
|
c4d7025163 | ||
|
|
301ab03266 | ||
|
|
8407186a38 | ||
|
|
c0a64a1bc3 | ||
|
|
8e3bca062b | ||
|
|
927a4bf86e | ||
|
|
e82e2fe4a2 | ||
|
|
499b7fdd6b | ||
|
|
0f2300a981 | ||
|
|
9d153a4397 | ||
|
|
2ad4bd2abc | ||
|
|
bda0a25fe0 | ||
|
|
7095d55670 | ||
|
|
e4946bd91b | ||
|
|
0913aba1cf | ||
|
|
6b10539a3f | ||
|
|
c4d9c10cb8 | ||
|
|
badd22793d | ||
|
|
e03660b184 | ||
|
|
768f49ab0b | ||
|
|
18c7930dba | ||
|
|
f626266fa7 | ||
|
|
171d6e4bdc | ||
|
|
af65d4029b | ||
|
|
4e8e9279d3 | ||
|
|
077d5412a4 | ||
|
|
6f1fcad0ca | ||
|
|
c759aeddd9 | ||
|
|
641ba2a3fd | ||
|
|
be2b5072bf | ||
|
|
c5694293a5 | ||
|
|
1404f9e336 | ||
|
|
f19fd2e3ac | ||
|
|
01f7f2baa0 | ||
|
|
6aef0b198d | ||
|
|
d00048a7d7 | ||
|
|
4ba40b1d77 | ||
|
|
58cc929ad9 | ||
|
|
431f9ce22c | ||
|
|
8f4f3f7053 | ||
|
|
fe7c647bcf | ||
|
|
208c3e6c31 | ||
|
|
da795b52de | ||
|
|
c4fe593e8f | ||
|
|
67eee29fdf | ||
|
|
0617b0e601 | ||
|
|
85ba893724 | ||
|
|
96f6b157c7 | ||
|
|
2d7a01df10 | ||
|
|
0df8eba2b6 | ||
|
|
16ca18623e | ||
|
|
417540d272 | ||
|
|
7b2b17e42a | ||
|
|
e63ea8c110 | ||
|
|
afc0e637f1 | ||
|
|
ee7d1df3c3 | ||
|
|
0662a729a0 | ||
|
|
c5d5b6c787 | ||
|
|
406cb0f6c0 | ||
|
|
e6cb17caf6 | ||
|
|
c277d3f001 | ||
|
|
d6c8674d7b | ||
|
|
d946e80e65 | ||
|
|
55fca262ef | ||
|
|
2f42e1498c | ||
|
|
0e5caab72a | ||
|
|
e3352efe49 |
77
.github/workflows/nightly.yml
vendored
Normal file
77
.github/workflows/nightly.yml
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
name: Nightly
|
||||
|
||||
on:
|
||||
#push:
|
||||
# branches: [ master ]
|
||||
#pull_request:
|
||||
# branches: [ master ]
|
||||
schedule:
|
||||
- cron: '0 23 * * *'
|
||||
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
nightly:
|
||||
runs-on: macos-10.15
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Bootstrap Carthage
|
||||
run: carthage bootstrap --platform macOS
|
||||
|
||||
- name: Install xcpretty
|
||||
run: gem install xcpretty --no-document --quiet
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
set -o pipefail
|
||||
xcodebuild clean
|
||||
xcodebuild build -configuration release -project MacPass.xcodeproj -scheme MacPass CODE_SIGNING_REQUIRED=NO -derivedDataPath ./build | xcpretty -c
|
||||
|
||||
- name: Export Localizations
|
||||
run: |
|
||||
xcodebuild -project MacPass.xcodeproj -exportLocalizations -localizationPath Localisations -exportLanguage de
|
||||
xcodebuild -project MacPass.xcodeproj -exportLocalizations -localizationPath Localisations -exportLanguage en
|
||||
xcodebuild -project MacPass.xcodeproj -exportLocalizations -localizationPath Localisations -exportLanguage es
|
||||
xcodebuild -project MacPass.xcodeproj -exportLocalizations -localizationPath Localisations -exportLanguage fr
|
||||
xcodebuild -project MacPass.xcodeproj -exportLocalizations -localizationPath Localisations -exportLanguage it
|
||||
xcodebuild -project MacPass.xcodeproj -exportLocalizations -localizationPath Localisations -exportLanguage nl
|
||||
xcodebuild -project MacPass.xcodeproj -exportLocalizations -localizationPath Localisations -exportLanguage ru
|
||||
xcodebuild -project MacPass.xcodeproj -exportLocalizations -localizationPath Localisations -exportLanguage sv-SE
|
||||
xcodebuild -project MacPass.xcodeproj -exportLocalizations -localizationPath Localisations -exportLanguage zh-Hans
|
||||
|
||||
- name: Zip Localizations
|
||||
run: zip -9ry Localisations.zip Localisations
|
||||
|
||||
- name: Package Release
|
||||
run: |
|
||||
cd ./build/Build/Products/Release
|
||||
zip -9ry MacPass-continuous.zip MacPass.app
|
||||
|
||||
- name: Create MD5 Hash
|
||||
run: |
|
||||
cd ./build/Build/Products/Release
|
||||
shasum -a 256 MacPass-continuous.zip > MacPass-continuous.zip.sha256
|
||||
|
||||
#- name: Release
|
||||
# uses: eine/tip@master
|
||||
# with:
|
||||
# token: ${{ secrets.GITHUB_TOKEN }}
|
||||
# tag: continuous
|
||||
# files: |
|
||||
# Localisations.zip
|
||||
# ./build/Build/Products/Release/MacPass-continuous.zip
|
||||
# ./build/Build/Products/Release/MacPass-continuous.zip.sha256
|
||||
|
||||
- name: Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
with:
|
||||
tag_name: continuous
|
||||
files: |
|
||||
Localisations.zip
|
||||
./build/Build/Products/Release/MacPass-continuous.zip
|
||||
./build/Build/Products/Release/MacPass-continuous.zip.sha256
|
||||
@@ -1,4 +1,4 @@
|
||||
osx_image: xcode10.2
|
||||
osx_image: xcode12.2
|
||||
xcode_project: MacPass.xcodeproj
|
||||
xcode_scheme: MacPass
|
||||
language: objective-c
|
||||
|
||||
Binary file not shown.
6
Cartfile
6
Cartfile
@@ -1,4 +1,4 @@
|
||||
github "sparkle-project/Sparkle" ~> 1.22
|
||||
github "MacPass/TransformerKit" "b28de3a7de9249dd886979cae4985092523b6dd1"
|
||||
github "MacPass/KeePassKit" ~> 2.4
|
||||
github "mstarke/HNHUi" ~> 3.0
|
||||
github "MacPass/TransformerKit" "a8b5bb73cc327ec6798569b865c32fec5eb2289f"
|
||||
github "MacPass/KeePassKit" ~> 3.2.0
|
||||
github "mstarke/HNHUi" ~> 6.0
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
github "MacPass/KeePassKit" "2.4.7"
|
||||
github "MacPass/TransformerKit" "b28de3a7de9249dd886979cae4985092523b6dd1"
|
||||
github "mstarke/HNHUi" "3.0"
|
||||
github "robbiehanson/KissXML" "5.3.1"
|
||||
github "sparkle-project/Sparkle" "1.22.0"
|
||||
github "MacPass/KeePassKit" "3.2.1"
|
||||
github "MacPass/KissXML" "933f04fe5ad95c2be07ec0c2f801e140007f20fa"
|
||||
github "MacPass/TransformerKit" "a8b5bb73cc327ec6798569b865c32fec5eb2289f"
|
||||
github "mstarke/HNHUi" "6.0"
|
||||
github "sparkle-project/Sparkle" "1.27.1"
|
||||
|
||||
2
DDHotKey
2
DDHotKey
Submodule DDHotKey updated: c7735ee66a...a996a0a398
@@ -1,7 +1,7 @@
|
||||
MacPass, a KeePass compatible Password Manager for OS X
|
||||
MacPass, a KeePass compatible Password Manager for OS X
|
||||
Copyright (C) 2012-2016 Michael Starke, and all MacPass contributors
|
||||
A full list of contributors can be found at
|
||||
<https://github.com/mstarke/MacPass/graphs/contributors>
|
||||
<https://github.com/MacPass/MacPass/graphs/contributors>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "1130"
|
||||
LastUpgradeVersion = "1250"
|
||||
version = "2.0">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="12120" systemVersion="16F73" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="12120"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -15,12 +15,12 @@
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView id="Hz6-mo-xeY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="392" height="210"/>
|
||||
<customView misplaced="YES" id="Hz6-mo-xeY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="392" height="220"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<tokenField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Jzn-UC-Ok8">
|
||||
<rect key="frame" x="20" y="50" width="352" height="66"/>
|
||||
<tokenField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Jzn-UC-Ok8">
|
||||
<rect key="frame" x="20" y="60" width="352" height="66"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="66" id="7rr-fC-NeH"/>
|
||||
</constraints>
|
||||
@@ -31,30 +31,30 @@
|
||||
</tokenFieldCell>
|
||||
</tokenField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="lS4-1R-Bhp">
|
||||
<rect key="frame" x="215" y="18" width="157" height="25"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Set Autotype Sequence" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="aOD-Ih-Sft">
|
||||
<rect key="frame" x="201" y="13" width="178" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Set Autotype Sequence" bezelStyle="rounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="aOD-Ih-Sft">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7xF-eN-vs3">
|
||||
<rect key="frame" x="18" y="176" width="207" height="14"/>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="7xF-eN-vs3">
|
||||
<rect key="frame" x="18" y="186" width="207" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Available Commands and Placeholders" id="lug-97-H9D">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9Kw-lW-ASe">
|
||||
<rect key="frame" x="18" y="124" width="107" height="14"/>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="9Kw-lW-ASe">
|
||||
<rect key="frame" x="18" y="134" width="107" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Autotype Sequence" id="8ny-Qk-Jvo">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<tokenField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="k06-gn-ahB">
|
||||
<rect key="frame" x="20" y="146" width="352" height="22"/>
|
||||
<tokenField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="k06-gn-ahB">
|
||||
<rect key="frame" x="20" y="156" width="352" height="22"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="lessThanOrEqual" constant="400" id="can-wk-8oX"/>
|
||||
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="22" id="nk8-bB-yOg"/>
|
||||
@@ -74,7 +74,7 @@
|
||||
<constraint firstItem="9Kw-lW-ASe" firstAttribute="leading" secondItem="7xF-eN-vs3" secondAttribute="leading" id="Mjz-o8-Vqx"/>
|
||||
<constraint firstAttribute="bottom" secondItem="lS4-1R-Bhp" secondAttribute="bottom" constant="20" symbolic="YES" id="PZa-cL-9DY"/>
|
||||
<constraint firstAttribute="trailing" secondItem="k06-gn-ahB" secondAttribute="trailing" constant="20" symbolic="YES" id="UwG-TO-3PS"/>
|
||||
<constraint firstItem="lS4-1R-Bhp" firstAttribute="top" secondItem="Jzn-UC-Ok8" secondAttribute="bottom" constant="8" symbolic="YES" id="ZCK-9U-M92"/>
|
||||
<constraint firstItem="lS4-1R-Bhp" firstAttribute="top" secondItem="Jzn-UC-Ok8" secondAttribute="bottom" constant="20" symbolic="YES" id="ZCK-9U-M92"/>
|
||||
<constraint firstItem="k06-gn-ahB" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="hJ8-Oo-CDZ"/>
|
||||
<constraint firstItem="Jzn-UC-Ok8" firstAttribute="trailing" secondItem="k06-gn-ahB" secondAttribute="trailing" id="hWO-Ql-W8s"/>
|
||||
<constraint firstItem="9Kw-lW-ASe" firstAttribute="top" secondItem="k06-gn-ahB" secondAttribute="bottom" constant="8" symbolic="YES" id="qdv-SC-dEw"/>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="15705" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17506" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="15705"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17506"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -11,30 +11,85 @@
|
||||
<outlet property="contextTableView" destination="Ih2-lo-t2W" id="8uy-Mz-1vc"/>
|
||||
<outlet property="messageTextField" destination="kDw-2l-7gQ" id="7bW-as-yGU"/>
|
||||
<outlet property="selectAutotypeContextButton" destination="V5B-Qq-GN8" id="mqv-H3-N01"/>
|
||||
<outlet property="targetApplicationImageView" destination="bWJ-Ub-c10" id="vTC-FO-QQO"/>
|
||||
<outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView translatesAutoresizingMaskIntoConstraints="NO" id="Hz6-mo-xeY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="480" height="241"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="480" height="201"/>
|
||||
<subviews>
|
||||
<scrollView wantsLayer="YES" autohidesScrollers="YES" horizontalLineScroll="38" horizontalPageScroll="10" verticalLineScroll="38" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7cB-re-3ys">
|
||||
<rect key="frame" x="20" y="61" width="440" height="120"/>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="zBX-HB-tR7">
|
||||
<rect key="frame" x="236" y="13" width="82" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="60p-7v-Nje">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<string key="keyEquivalent" base64-UTF8="YES">
|
||||
Gw
|
||||
</string>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="cancelSelection:" target="-1" id="EzT-DQ-zhY"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="V5B-Qq-GN8">
|
||||
<rect key="frame" x="318" y="13" width="148" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Perform Autotype" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="w7H-hx-CUF">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<string key="keyEquivalent" base64-UTF8="YES">
|
||||
DQ
|
||||
</string>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="selectAutotypeContext:" target="-2" id="a2F-ID-uOd"/>
|
||||
</connections>
|
||||
</button>
|
||||
<stackView distribution="fill" orientation="vertical" alignment="centerX" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="82Y-g7-4wV">
|
||||
<rect key="frame" x="20" y="109" width="440" height="72"/>
|
||||
<subviews>
|
||||
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="bWJ-Ub-c10">
|
||||
<rect key="frame" x="204" y="40" width="32" height="32"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" relation="lessThanOrEqual" constant="128" id="Rzo-8n-W92"/>
|
||||
<constraint firstAttribute="width" relation="lessThanOrEqual" constant="128" id="uhc-Ce-lb8"/>
|
||||
</constraints>
|
||||
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyUpOrDown" image="NSApplicationIcon" id="d6x-JH-Lw2"/>
|
||||
</imageView>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="kDw-2l-7gQ">
|
||||
<rect key="frame" x="-2" y="0.0" width="444" height="32"/>
|
||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="There are multiple matches for the current window. Please select which match should be used." id="gcf-gb-ZsF">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</subviews>
|
||||
<visibilityPriorities>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
</visibilityPriorities>
|
||||
<customSpacing>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
</customSpacing>
|
||||
</stackView>
|
||||
<scrollView wantsLayer="YES" verticalCompressionResistancePriority="250" autohidesScrollers="YES" horizontalLineScroll="38" horizontalPageScroll="10" verticalLineScroll="38" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7cB-re-3ys">
|
||||
<rect key="frame" x="20" y="61" width="440" height="40"/>
|
||||
<clipView key="contentView" id="WSc-o2-GsZ">
|
||||
<rect key="frame" x="1" y="1" width="438" height="118"/>
|
||||
<rect key="frame" x="1" y="1" width="438" height="38"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<tableView verticalHuggingPriority="750" ambiguous="YES" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" alternatingRowBackgroundColors="YES" columnReordering="NO" multipleSelection="NO" emptySelection="NO" autosaveColumns="NO" typeSelect="NO" rowHeight="36" viewBased="YES" id="Ih2-lo-t2W">
|
||||
<rect key="frame" x="0.0" y="0.0" width="438" height="118"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" alternatingRowBackgroundColors="YES" columnReordering="NO" multipleSelection="NO" emptySelection="NO" autosaveColumns="NO" typeSelect="NO" rowHeight="36" viewBased="YES" id="Ih2-lo-t2W">
|
||||
<rect key="frame" x="0.0" y="0.0" width="438" height="38"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<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="435" minWidth="40" maxWidth="1000" id="wTy-0L-yzY">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||
</tableHeaderCell>
|
||||
@@ -45,8 +100,8 @@
|
||||
</textFieldCell>
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView misplaced="YES" id="vkI-FK-7wg" customClass="MPExtendedTableCellView">
|
||||
<rect key="frame" x="1" y="1" width="435" height="17"/>
|
||||
<tableCellView id="vkI-FK-7wg" customClass="MPExtendedTableCellView">
|
||||
<rect key="frame" x="1" y="1" width="435" height="36"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Utl-Gl-ETE">
|
||||
@@ -111,59 +166,26 @@
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
</scrollView>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" preferredMaxLayoutWidth="330" translatesAutoresizingMaskIntoConstraints="NO" id="kDw-2l-7gQ">
|
||||
<rect key="frame" x="18" y="189" width="444" height="32"/>
|
||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="There are multiple matches for the current window. Please select which match should be used." id="gcf-gb-ZsF">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="zBX-HB-tR7">
|
||||
<rect key="frame" x="236" y="13" width="82" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="60p-7v-Nje">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<string key="keyEquivalent" base64-UTF8="YES">
|
||||
Gw
|
||||
</string>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="cancelSelection:" target="-1" id="EzT-DQ-zhY"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="V5B-Qq-GN8">
|
||||
<rect key="frame" x="318" y="13" width="148" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Perform Autotype" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="w7H-hx-CUF">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<string key="keyEquivalent" base64-UTF8="YES">
|
||||
DQ
|
||||
</string>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="selectAutotypeContext:" target="-2" id="a2F-ID-uOd"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="bottom" secondItem="V5B-Qq-GN8" secondAttribute="bottom" constant="20" id="FMz-e1-hOB"/>
|
||||
<constraint firstItem="kDw-2l-7gQ" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="GcO-tk-i2z"/>
|
||||
<constraint firstItem="kDw-2l-7gQ" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="20" symbolic="YES" id="OHm-6j-uPs"/>
|
||||
<constraint firstAttribute="trailing" secondItem="82Y-g7-4wV" secondAttribute="trailing" constant="20" symbolic="YES" id="Fvf-rw-waQ"/>
|
||||
<constraint firstAttribute="trailing" secondItem="V5B-Qq-GN8" secondAttribute="trailing" constant="20" symbolic="YES" id="SRs-hx-av7"/>
|
||||
<constraint firstItem="V5B-Qq-GN8" firstAttribute="leading" secondItem="zBX-HB-tR7" secondAttribute="trailing" constant="12" symbolic="YES" id="UuF-Ba-HS5"/>
|
||||
<constraint firstItem="zBX-HB-tR7" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="ZNu-po-1u8"/>
|
||||
<constraint firstItem="7cB-re-3ys" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="egY-ml-urP"/>
|
||||
<constraint firstItem="7cB-re-3ys" firstAttribute="top" secondItem="82Y-g7-4wV" secondAttribute="bottom" constant="8" symbolic="YES" id="f0g-kf-N2j"/>
|
||||
<constraint firstItem="82Y-g7-4wV" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="20" symbolic="YES" id="hDi-Va-2Mb"/>
|
||||
<constraint firstAttribute="trailing" secondItem="7cB-re-3ys" secondAttribute="trailing" constant="20" symbolic="YES" id="hqW-Hz-bFN"/>
|
||||
<constraint firstItem="V5B-Qq-GN8" firstAttribute="baseline" secondItem="zBX-HB-tR7" secondAttribute="baseline" id="iAg-1w-h25"/>
|
||||
<constraint firstItem="zBX-HB-tR7" firstAttribute="top" secondItem="7cB-re-3ys" secondAttribute="bottom" constant="20" symbolic="YES" id="onA-YV-ezJ"/>
|
||||
<constraint firstItem="7cB-re-3ys" firstAttribute="top" secondItem="kDw-2l-7gQ" secondAttribute="bottom" constant="8" symbolic="YES" id="ss6-Ku-XPY"/>
|
||||
<constraint firstAttribute="trailing" secondItem="kDw-2l-7gQ" secondAttribute="trailing" constant="20" symbolic="YES" id="zSz-fH-fVn"/>
|
||||
<constraint firstItem="82Y-g7-4wV" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="uoN-Et-pWh"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="176" y="-39.5"/>
|
||||
<point key="canvasLocation" x="-388" y="-2744"/>
|
||||
</customView>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSActionTemplate" width="14" height="14"/>
|
||||
<image name="NSApplicationIcon" width="32" height="32"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="15702" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17156" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="15702"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17156"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -140,7 +140,7 @@
|
||||
<constraint firstItem="d5Z-hD-bpr" firstAttribute="leading" secondItem="6vq-iM-inn" secondAttribute="leading" id="oZ8-mG-RYJ"/>
|
||||
<constraint firstAttribute="trailing" secondItem="BHb-cd-Q0r" secondAttribute="trailing" constant="20" symbolic="YES" id="ryW-3O-g6b"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="-409" y="-112.5"/>
|
||||
<point key="canvasLocation" x="-742" y="-147"/>
|
||||
</customView>
|
||||
</objects>
|
||||
<resources>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{\rtf1\ansi\ansicpg1252\cocoartf1671\cocoasubrtf600
|
||||
{\fonttbl\f0\fswiss\fcharset0 Helvetica-Bold;\f1\fswiss\fcharset0 Helvetica;\f2\fnil\fcharset0 SFProText-Regular;
|
||||
}
|
||||
{\rtf1\ansi\ansicpg1250\cocoartf2636
|
||||
\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica-Bold;\f1\fswiss\fcharset0 Helvetica;\f2\fnil\fcharset0 HelveticaNeue;
|
||||
\f3\fnil\fcharset0 AppleColorEmoji;}
|
||||
{\colortbl;\red255\green255\blue255;\red0\green0\blue0;\red9\green79\blue209;\red69\green60\blue204;
|
||||
\red52\green110\blue183;\red38\green38\blue38;}
|
||||
{\*\expandedcolortbl;;\cssrgb\c0\c0\c0\cname textColor;\cssrgb\c0\c40784\c85490\cname linkColor;\cssrgb\c34510\c33725\c83922;
|
||||
@@ -14,15 +14,15 @@
|
||||
\f1\b0 \cf2 macpassapp.org}}
|
||||
\f1\b0 \cf3 \
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||
{\field{\*\fldinst{HYPERLINK "https://github.com/mstarke/MacPass"}}{\fldrslt \cf3 MacPass}} \cf2 on GitHub.\
|
||||
{\field{\*\fldinst{HYPERLINK "https://github.com/MacPass/MacPass"}}{\fldrslt \cf3 MacPass}} \cf2 on GitHub.\
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||
|
||||
\f0\b \cf2 \
|
||||
License:\
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||
|
||||
\f1\b0 \cf2 MacPass KeePass compatible client for OS X\
|
||||
Copyright (c) 2012-2020 Michael Starke, HicknHack Software GmbH\
|
||||
\f1\b0 \cf2 MacPass KeePass compatible client for macOS\
|
||||
Copyright (c) 2012-2021 Michael Starke, HicknHack Software GmbH\
|
||||
\
|
||||
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by\
|
||||
the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\
|
||||
@@ -37,15 +37,35 @@ You should have received a copy of the GNU General Public License along with thi
|
||||
\
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||
|
||||
\f0\b \cf0 \kerning1\expnd0\expndtw0 Sponsors:
|
||||
\f2\b0\fs52 \
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
|
||||
{\field{\*\fldinst{HYPERLINK "mailto:frank.mittelbach@latex-project.org"}}{\fldrslt
|
||||
\f1\fs24 \cf0 \kerning1\expnd0\expndtw3
|
||||
Frank Mittelbach}}
|
||||
\f1\fs24 \kerning1\expnd0\expndtw3
|
||||
\
|
||||
\pard\pardeftab720\partightenfactor0
|
||||
{\field{\*\fldinst{HYPERLINK "mailto:github@soebes.com"}}{\fldrslt \cf0 \kerning1\expnd0\expndtw3
|
||||
Karl Heinz Marbaise}}\kerning1\expnd0\expndtw3
|
||||
|
||||
\f3 \kerning1\expnd0\expndtw3
|
||||
\uc0\u55356 \u57225
|
||||
\f1 \kerning1\expnd0\expndtw3
|
||||
\
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
|
||||
\cf0 \kerning1\expnd0\expndtw3
|
||||
\
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||
|
||||
\f0\b \cf2 \kerning1\expnd0\expndtw0 Credits:\
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||
|
||||
\f1\b0 \cf2 \
|
||||
Dutch translation: {\field{\*\fldinst{HYPERLINK "https://github.com/FrankKooij"}}{\fldrslt \cf3 Frank Kooij}},
|
||||
\f2 \cf4 \expnd0\expndtw0\kerning0
|
||||
{\field{\*\fldinst{HYPERLINK "https://github.com/clone1612"}}{\fldrslt
|
||||
\f1 \cf3 \kerning1\expnd0\expndtw0 Jannick Hemelhof}}
|
||||
\f1 \cf0 \kerning1\expnd0\expndtw0 \
|
||||
Czech translation:\cf0 {\field{\*\fldinst{HYPERLINK "https://github.com/JiriSko"}}{\fldrslt \cf3 Ji\uc0\u345 \'ed \'8akorpil}}\cf2 \
|
||||
\
|
||||
Dutch translation: {\field{\*\fldinst{HYPERLINK "https://github.com/FrankKooij"}}{\fldrslt \cf3 Frank Kooij}},\cf4 \expnd0\expndtw0\kerning0
|
||||
{\field{\*\fldinst{HYPERLINK "https://github.com/clone1612"}}{\fldrslt \cf3 \kerning1\expnd0\expndtw0 Jannick Hemelhof}}\cf0 \kerning1\expnd0\expndtw0 \
|
||||
\
|
||||
\cf2 French translation:\cf0 {\field{\*\fldinst{HYPERLINK "mailto:gil@panix.com"}}{\fldrslt \cf3 Gil Andr\'e9}}\
|
||||
\
|
||||
|
||||
@@ -1,21 +1,22 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19529" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19529"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="MPDatabaseSettingsWindowController">
|
||||
<connections>
|
||||
<outlet property="Argon2IterationsTextField" destination="39N-8Q-J8b" id="pnH-Mf-x5c"/>
|
||||
<outlet property="Argon2MemoryTextField" destination="eEW-oa-V7U" id="iDH-eW-4TE"/>
|
||||
<outlet property="Argon2ThreadsTextField" destination="178-0f-guB" id="ATl-km-DSX"/>
|
||||
<outlet property="aesEncryptionRoundsTextField" destination="8aq-34-rcd" id="WoJ-Kc-d8q"/>
|
||||
<outlet property="argon2IterationsTextField" destination="39N-8Q-J8b" id="af4-Ft-aDX"/>
|
||||
<outlet property="argon2MemoryStepper" destination="NfL-iP-SRk" id="eAW-kb-cLh"/>
|
||||
<outlet property="argon2MemoryTextField" destination="eEW-oa-V7U" id="Wig-Rk-lm0"/>
|
||||
<outlet property="argon2ThreadsTextField" destination="178-0f-guB" id="dHa-L6-gOs"/>
|
||||
<outlet property="argon2dIterationsTextField" destination="39N-8Q-J8b" id="af4-Ft-aDX"/>
|
||||
<outlet property="argon2dMemoryStepper" destination="NfL-iP-SRk" id="eAW-kb-cLh"/>
|
||||
<outlet property="argon2dMemoryTextField" destination="eEW-oa-V7U" id="Wig-Rk-lm0"/>
|
||||
<outlet property="argon2dThreadsTextField" destination="178-0f-guB" id="dHa-L6-gOs"/>
|
||||
<outlet property="argon2idIterationsTextField" destination="gqS-YX-aBl" id="R5l-uT-9Xh"/>
|
||||
<outlet property="argon2idMemoryStepper" destination="qKz-Ir-3lf" id="GkI-Lv-Wz5"/>
|
||||
<outlet property="argon2idMemoryTextField" destination="edk-MV-ArQ" id="QIz-wh-QxJ"/>
|
||||
<outlet property="argon2idThreadsTextField" destination="aZY-o8-2Dn" id="Bzq-u5-Cnv"/>
|
||||
<outlet property="cipherPopupButton" destination="3ek-Rg-w82" id="LbB-Fd-rqC"/>
|
||||
<outlet property="createKeyDerivationParametersButton" destination="P98-Cu-Tha" id="UQ0-eg-rdx"/>
|
||||
<outlet property="databaseColorColorWell" destination="1439" id="Fqq-2P-vbf"/>
|
||||
@@ -51,13 +52,13 @@
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
|
||||
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
|
||||
<rect key="contentRect" x="196" y="240" width="500" height="360"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
|
||||
<view key="contentView" id="2">
|
||||
<rect key="frame" x="0.0" y="0.0" width="553" height="484"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1415"/>
|
||||
<view key="contentView" misplaced="YES" id="2">
|
||||
<rect key="frame" x="0.0" y="0.0" width="500" height="380"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="288">
|
||||
<rect key="frame" x="480" y="13" width="59" height="32"/>
|
||||
<rect key="frame" x="433" y="13" width="54" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="OK" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="289">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -70,7 +71,7 @@ DQ
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="956">
|
||||
<rect key="frame" x="398" y="13" width="82" height="32"/>
|
||||
<rect key="frame" x="359" y="13" width="76" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="957">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -83,16 +84,16 @@ Gw
|
||||
</connections>
|
||||
</button>
|
||||
<tabView translatesAutoresizingMaskIntoConstraints="NO" id="357">
|
||||
<rect key="frame" x="13" y="41" width="527" height="437"/>
|
||||
<rect key="frame" x="13" y="40" width="474" height="334"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<tabViewItems>
|
||||
<tabViewItem label="General" identifier="1" id="358">
|
||||
<view key="view" id="361">
|
||||
<rect key="frame" x="10" y="33" width="454" height="267"/>
|
||||
<rect key="frame" x="10" y="33" width="454" height="264"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="231">
|
||||
<rect key="frame" x="154" y="225" width="280" height="22"/>
|
||||
<rect key="frame" x="154" y="223" width="280" height="21"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="280" id="cra-uC-nCv"/>
|
||||
</constraints>
|
||||
@@ -103,7 +104,7 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="256">
|
||||
<rect key="frame" x="70" y="201" width="78" height="17"/>
|
||||
<rect key="frame" x="70" y="200" width="78" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Description:" id="257">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -111,7 +112,7 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="189">
|
||||
<rect key="frame" x="46" y="229" width="102" height="17"/>
|
||||
<rect key="frame" x="46" y="227" width="102" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Database name:" id="190">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -119,7 +120,7 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1394">
|
||||
<rect key="frame" x="152" y="73" width="71" height="25"/>
|
||||
<rect key="frame" x="151" y="71" width="72" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="1395">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
@@ -132,7 +133,7 @@ Gw
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1404">
|
||||
<rect key="frame" x="60" y="78" width="88" height="17"/>
|
||||
<rect key="frame" x="60" y="77" width="88" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Compression:" id="1405">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -140,7 +141,7 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1434">
|
||||
<rect key="frame" x="107" y="48" width="41" height="17"/>
|
||||
<rect key="frame" x="107" y="48" width="41" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Color:" id="1435">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -148,7 +149,7 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<colorWell translatesAutoresizingMaskIntoConstraints="NO" id="1439" customClass="HNHUIColorWell">
|
||||
<rect key="frame" x="154" y="45" width="44" height="23"/>
|
||||
<rect key="frame" x="154" y="44" width="44" height="23"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="44" id="XBF-V3-71G"/>
|
||||
<constraint firstAttribute="height" constant="23" id="fgN-h5-Mr8"/>
|
||||
@@ -156,10 +157,10 @@ Gw
|
||||
<color key="color" red="0.05813049898" green="0.055541899059999997" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</colorWell>
|
||||
<scrollView horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1530">
|
||||
<rect key="frame" x="154" y="117" width="280" height="100"/>
|
||||
<rect key="frame" x="154" y="115" width="280" height="100"/>
|
||||
<clipView key="contentView" drawsBackground="NO" id="WOI-1v-RCe">
|
||||
<rect key="frame" x="1" y="1" width="278" height="98"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textView importsGraphics="NO" verticallyResizable="YES" usesFontPanel="YES" findStyle="panel" continuousSpellChecking="YES" allowsUndo="YES" usesRuler="YES" allowsNonContiguousLayout="YES" spellingCorrection="YES" smartInsertDelete="YES" id="1531">
|
||||
<rect key="frame" x="0.0" y="0.0" width="278" height="98"/>
|
||||
@@ -186,7 +187,7 @@ Gw
|
||||
</scroller>
|
||||
</scrollView>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="RhU-5I-S5l">
|
||||
<rect key="frame" x="75" y="20" width="73" height="17"/>
|
||||
<rect key="frame" x="75" y="20" width="73" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="File format:" id="bTk-YZ-x0G">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -194,7 +195,7 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1Ci-0B-yV5">
|
||||
<rect key="frame" x="152" y="20" width="72" height="17"/>
|
||||
<rect key="frame" x="152" y="20" width="72" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="VersionInfo" id="Ush-4r-A1A">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -236,11 +237,11 @@ Gw
|
||||
</tabViewItem>
|
||||
<tabViewItem label="Security" identifier="" id="370">
|
||||
<view key="view" id="371">
|
||||
<rect key="frame" x="10" y="33" width="454" height="243"/>
|
||||
<rect key="frame" x="10" y="33" width="454" height="288"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="3ek-Rg-w82">
|
||||
<rect key="frame" x="150" y="199" width="155" height="25"/>
|
||||
<rect key="frame" x="149" y="244" width="157" height="25"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="150" id="F8Y-Uw-4mL"/>
|
||||
</constraints>
|
||||
@@ -251,7 +252,7 @@ Gw
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="vH7-5a-52C">
|
||||
<rect key="frame" x="73" y="205" width="73" height="17"/>
|
||||
<rect key="frame" x="73" y="251" width="73" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Encryption:" id="gxY-UL-bEG">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -259,29 +260,32 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<box title="Key derivation" translatesAutoresizingMaskIntoConstraints="NO" id="pbl-Mb-r8V">
|
||||
<rect key="frame" x="17" y="16" width="420" height="178"/>
|
||||
<rect key="frame" x="17" y="16" width="420" height="224"/>
|
||||
<view key="contentView" id="hkT-SX-Te1">
|
||||
<rect key="frame" x="3" y="3" width="414" height="160"/>
|
||||
<rect key="frame" x="3" y="3" width="414" height="206"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="P98-Cu-Tha">
|
||||
<rect key="frame" x="251" y="18" width="143" height="23"/>
|
||||
<rect key="frame" x="249" y="17" width="146" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Generate Parameters" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="PoI-Er-Y8P">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="benchmarkParametersForDelay:" target="-2" id="Iyw-Hp-gm2"/>
|
||||
</connections>
|
||||
</button>
|
||||
<tabView drawsBackground="NO" type="noTabsNoBorder" translatesAutoresizingMaskIntoConstraints="NO" id="2MY-PW-kzL">
|
||||
<rect key="frame" x="12" y="49" width="390" height="62"/>
|
||||
<rect key="frame" x="12" y="47" width="390" height="111"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<tabViewItems>
|
||||
<tabViewItem label="Aes" identifier="1" id="ft1-pl-lpO">
|
||||
<view key="view" id="88i-IZ-Yev">
|
||||
<rect key="frame" x="0.0" y="0.0" width="390" height="62"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="390" height="61"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ztz-iY-hWV">
|
||||
<rect key="frame" x="64" y="23" width="50" height="17"/>
|
||||
<rect key="frame" x="64" y="23" width="50" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Rounds" id="uUQ-9s-M5E">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -289,7 +293,7 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8aq-34-rcd">
|
||||
<rect key="frame" x="120" y="20" width="150" height="22"/>
|
||||
<rect key="frame" x="120" y="20" width="150" height="21"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="150" id="cdb-ED-zB3"/>
|
||||
</constraints>
|
||||
@@ -314,13 +318,13 @@ Gw
|
||||
</constraints>
|
||||
</view>
|
||||
</tabViewItem>
|
||||
<tabViewItem label="Argon2" identifier="2" id="6qB-sH-9FI">
|
||||
<tabViewItem label="Argon2d" identifier="2" id="6qB-sH-9FI">
|
||||
<view key="view" id="ORc-Gq-vFd">
|
||||
<rect key="frame" x="0.0" y="0.0" width="348" height="114"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="348" height="111"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="aNy-eF-jKq">
|
||||
<rect key="frame" x="39" y="87" width="54" height="17"/>
|
||||
<rect key="frame" x="39" y="85" width="54" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Threads" id="2QI-ne-N5d">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -328,7 +332,7 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="ml2-wP-EaZ">
|
||||
<rect key="frame" x="32" y="55" width="61" height="17"/>
|
||||
<rect key="frame" x="32" y="54" width="61" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Iterations" id="2ZA-Gc-JdZ">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -336,7 +340,7 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="178-0f-guB">
|
||||
<rect key="frame" x="99" y="84" width="150" height="22"/>
|
||||
<rect key="frame" x="99" y="82" width="150" height="21"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="150" id="IEL-Dn-XFa"/>
|
||||
</constraints>
|
||||
@@ -351,7 +355,7 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="39N-8Q-J8b">
|
||||
<rect key="frame" x="99" y="52" width="150" height="22"/>
|
||||
<rect key="frame" x="99" y="51" width="150" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="9wr-x8-Wtv">
|
||||
<numberFormatter key="formatter" formatterBehavior="default10_4" usesGroupingSeparator="NO" groupingSize="0" minimumIntegerDigits="0" maximumIntegerDigits="42" id="Kim-cZ-JbF">
|
||||
<real key="minimum" value="1"/>
|
||||
@@ -363,7 +367,7 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="eEW-oa-V7U">
|
||||
<rect key="frame" x="99" y="20" width="129" height="22"/>
|
||||
<rect key="frame" x="99" y="20" width="129" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="M1E-89-YVm">
|
||||
<byteCountFormatter key="formatter" countStyle="binary" allowsNonnumericFormatting="NO" id="tSh-D8-DnC"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -372,7 +376,7 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="9kV-19-lm6">
|
||||
<rect key="frame" x="39" y="23" width="54" height="17"/>
|
||||
<rect key="frame" x="39" y="23" width="54" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Memory" id="iRY-If-Kwn">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -380,7 +384,7 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="NfL-iP-SRk">
|
||||
<rect key="frame" x="233" y="18" width="19" height="27"/>
|
||||
<rect key="frame" x="233" y="17" width="19" height="28"/>
|
||||
<stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="dvB-J3-Wmb"/>
|
||||
</stepper>
|
||||
</subviews>
|
||||
@@ -411,10 +415,105 @@ Gw
|
||||
</constraints>
|
||||
</view>
|
||||
</tabViewItem>
|
||||
<tabViewItem label="Argon2id" identifier="" id="xI9-6m-9ju">
|
||||
<view key="view" id="k6k-0V-j7w">
|
||||
<rect key="frame" x="0.0" y="0.0" width="390" height="111"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="qKz-Ir-3lf">
|
||||
<rect key="frame" x="254" y="17" width="19" height="28"/>
|
||||
<stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="vGb-iO-lp5"/>
|
||||
</stepper>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="vRx-5Q-dar">
|
||||
<rect key="frame" x="60" y="23" width="54" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Memory" id="mq2-0M-8jv">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="aZY-o8-2Dn">
|
||||
<rect key="frame" x="120" y="82" width="150" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="FID-Lr-sq8">
|
||||
<numberFormatter key="formatter" formatterBehavior="default10_4" usesGroupingSeparator="NO" groupingSize="0" minimumIntegerDigits="0" maximumIntegerDigits="42" id="y7Q-EY-hcg">
|
||||
<real key="minimum" value="1"/>
|
||||
<real key="maximum" value="4294967295"/>
|
||||
</numberFormatter>
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="oZr-5M-43J">
|
||||
<rect key="frame" x="53" y="54" width="61" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Iterations" id="106-gi-Vnb">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="oXD-uF-jLh">
|
||||
<rect key="frame" x="60" y="85" width="54" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Threads" id="9zh-4T-smL">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="gqS-YX-aBl">
|
||||
<rect key="frame" x="120" y="51" width="150" height="21"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="150" id="ZMa-5V-8j5"/>
|
||||
</constraints>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="dAr-Cz-hg4">
|
||||
<numberFormatter key="formatter" formatterBehavior="default10_4" usesGroupingSeparator="NO" groupingSize="0" minimumIntegerDigits="0" maximumIntegerDigits="42" id="Qas-an-0IT">
|
||||
<real key="minimum" value="1"/>
|
||||
<real key="maximum" value="16777215"/>
|
||||
</numberFormatter>
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="edk-MV-ArQ">
|
||||
<rect key="frame" x="120" y="20" width="129" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="Pqf-ww-JwE">
|
||||
<byteCountFormatter key="formatter" countStyle="binary" allowsNonnumericFormatting="NO" id="WMf-04-Jeb"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="aZY-o8-2Dn" secondAttribute="trailing" constant="8" id="9cI-nd-tyn"/>
|
||||
<constraint firstItem="oZr-5M-43J" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="k6k-0V-j7w" secondAttribute="leading" constant="8" id="9hh-vu-O8k"/>
|
||||
<constraint firstItem="oXD-uF-jLh" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="k6k-0V-j7w" secondAttribute="leading" constant="8" id="AgJ-CV-R5A"/>
|
||||
<constraint firstItem="gqS-YX-aBl" firstAttribute="top" secondItem="aZY-o8-2Dn" secondAttribute="bottom" constant="10" symbolic="YES" id="Ext-M1-ojI"/>
|
||||
<constraint firstItem="gqS-YX-aBl" firstAttribute="width" secondItem="aZY-o8-2Dn" secondAttribute="width" id="IaU-gr-21m"/>
|
||||
<constraint firstItem="gqS-YX-aBl" firstAttribute="leading" secondItem="oZr-5M-43J" secondAttribute="trailing" constant="8" symbolic="YES" id="Mna-7q-x0b"/>
|
||||
<constraint firstItem="aZY-o8-2Dn" firstAttribute="centerX" secondItem="k6k-0V-j7w" secondAttribute="centerX" id="SAt-gT-Bzv"/>
|
||||
<constraint firstItem="oXD-uF-jLh" firstAttribute="firstBaseline" secondItem="aZY-o8-2Dn" secondAttribute="firstBaseline" id="WdW-gk-jZF"/>
|
||||
<constraint firstItem="oZr-5M-43J" firstAttribute="firstBaseline" secondItem="gqS-YX-aBl" secondAttribute="firstBaseline" id="di3-ie-idF"/>
|
||||
<constraint firstItem="edk-MV-ArQ" firstAttribute="top" secondItem="gqS-YX-aBl" secondAttribute="bottom" constant="10" symbolic="YES" id="ee7-xM-yUV"/>
|
||||
<constraint firstItem="gqS-YX-aBl" firstAttribute="leading" secondItem="aZY-o8-2Dn" secondAttribute="leading" id="fX2-vS-LbX"/>
|
||||
<constraint firstItem="vRx-5Q-dar" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="k6k-0V-j7w" secondAttribute="leading" constant="20" symbolic="YES" id="hCE-RO-pFT"/>
|
||||
<constraint firstItem="aZY-o8-2Dn" firstAttribute="leading" secondItem="oXD-uF-jLh" secondAttribute="trailing" constant="8" symbolic="YES" id="iLD-kh-ea0"/>
|
||||
<constraint firstItem="edk-MV-ArQ" firstAttribute="leading" secondItem="vRx-5Q-dar" secondAttribute="trailing" constant="8" symbolic="YES" id="jUP-Qe-l93"/>
|
||||
<constraint firstAttribute="bottom" secondItem="edk-MV-ArQ" secondAttribute="bottom" constant="20" id="knT-Qd-N96"/>
|
||||
<constraint firstItem="qKz-Ir-3lf" firstAttribute="leading" secondItem="edk-MV-ArQ" secondAttribute="trailing" constant="8" symbolic="YES" id="p8X-En-PYk"/>
|
||||
<constraint firstItem="qKz-Ir-3lf" firstAttribute="trailing" secondItem="gqS-YX-aBl" secondAttribute="trailing" id="qe1-0S-kq1"/>
|
||||
<constraint firstItem="vRx-5Q-dar" firstAttribute="firstBaseline" secondItem="edk-MV-ArQ" secondAttribute="firstBaseline" id="qht-hF-KQQ"/>
|
||||
<constraint firstItem="aZY-o8-2Dn" firstAttribute="top" secondItem="k6k-0V-j7w" secondAttribute="top" constant="8" id="t1Z-3T-UXQ"/>
|
||||
<constraint firstItem="qKz-Ir-3lf" firstAttribute="firstBaseline" secondItem="edk-MV-ArQ" secondAttribute="firstBaseline" id="uid-vB-VTE"/>
|
||||
<constraint firstItem="edk-MV-ArQ" firstAttribute="leading" secondItem="gqS-YX-aBl" secondAttribute="leading" id="x0l-y0-NlL"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</tabViewItem>
|
||||
</tabViewItems>
|
||||
</tabView>
|
||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2cq-R3-Ksh">
|
||||
<rect key="frame" x="130" y="116" width="155" height="25"/>
|
||||
<rect key="frame" x="129" y="162" width="157" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="Pb9-YV-rYe">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
@@ -425,7 +524,7 @@ Gw
|
||||
</connections>
|
||||
</popUpButton>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="4el-r1-iRL">
|
||||
<rect key="frame" x="63" y="122" width="63" height="17"/>
|
||||
<rect key="frame" x="63" y="169" width="63" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Algorithm" id="GVd-KH-pHc">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -470,18 +569,18 @@ Gw
|
||||
</tabViewItem>
|
||||
<tabViewItem label="Advanced" identifier="" id="368">
|
||||
<view key="view" id="369">
|
||||
<rect key="frame" x="10" y="33" width="507" height="391"/>
|
||||
<rect key="frame" x="10" y="33" width="513" height="393"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<button verticalHuggingPriority="1000" translatesAutoresizingMaskIntoConstraints="NO" id="531">
|
||||
<rect key="frame" x="184" y="355" width="145" height="18"/>
|
||||
<rect key="frame" x="184" y="356" width="149" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Enable Entry History" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="532">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1273">
|
||||
<rect key="frame" x="186" y="327" width="64" height="22"/>
|
||||
<rect key="frame" x="186" y="328" width="64" height="21"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="64" id="PRg-vx-8QK"/>
|
||||
</constraints>
|
||||
@@ -493,11 +592,11 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1294">
|
||||
<rect key="frame" x="255" y="325" width="19" height="27"/>
|
||||
<rect key="frame" x="255" y="325" width="19" height="28"/>
|
||||
<stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="1295"/>
|
||||
</stepper>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1268">
|
||||
<rect key="frame" x="41" y="330" width="139" height="17"/>
|
||||
<rect key="frame" x="41" y="331" width="139" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" enabled="NO" sendsActionOnEndEditing="YES" title="Maximum history size:" id="1269">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -505,7 +604,7 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="557">
|
||||
<rect key="frame" x="18" y="302" width="162" height="17"/>
|
||||
<rect key="frame" x="18" y="304" width="162" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" enabled="NO" sendsActionOnEndEditing="YES" title="Maximum items in history:" id="558">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -513,7 +612,7 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="593">
|
||||
<rect key="frame" x="186" y="299" width="64" height="22"/>
|
||||
<rect key="frame" x="186" y="301" width="64" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="594">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -521,18 +620,18 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="599">
|
||||
<rect key="frame" x="255" y="297" width="19" height="27"/>
|
||||
<rect key="frame" x="255" y="298" width="19" height="28"/>
|
||||
<stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="600"/>
|
||||
</stepper>
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="535">
|
||||
<rect key="frame" x="184" y="266" width="137" height="18"/>
|
||||
<rect key="frame" x="184" y="268" width="141" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Enable Recycle Bin" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="536">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="678">
|
||||
<rect key="frame" x="184" y="236" width="38" height="25"/>
|
||||
<rect key="frame" x="183" y="237" width="39" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="679">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
@@ -540,10 +639,10 @@ Gw
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
<box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="U7M-MH-EFw">
|
||||
<rect key="frame" x="20" y="288" width="467" height="5"/>
|
||||
<rect key="frame" x="20" y="291" width="473" height="5"/>
|
||||
</box>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1582">
|
||||
<rect key="frame" x="63" y="200" width="117" height="17"/>
|
||||
<rect key="frame" x="63" y="203" width="117" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Default Username:" id="1591">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -551,7 +650,7 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1730">
|
||||
<rect key="frame" x="186" y="197" width="301" height="22"/>
|
||||
<rect key="frame" x="186" y="200" width="307" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="1731">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -559,7 +658,7 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1738">
|
||||
<rect key="frame" x="184" y="153" width="38" height="25"/>
|
||||
<rect key="frame" x="183" y="156" width="39" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="1739">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
@@ -567,7 +666,7 @@ Gw
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="19r-LE-7X5">
|
||||
<rect key="frame" x="186" y="95" width="128" height="22"/>
|
||||
<rect key="frame" x="186" y="98" width="128" height="21"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="128" id="COb-0V-OmT"/>
|
||||
</constraints>
|
||||
@@ -579,25 +678,25 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="GUO-6H-UI2">
|
||||
<rect key="frame" x="319" y="92" width="19" height="27"/>
|
||||
<rect key="frame" x="319" y="94" width="19" height="28"/>
|
||||
<stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="qQV-3d-GpK"/>
|
||||
</stepper>
|
||||
<button verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Hqc-B0-xyz">
|
||||
<rect key="frame" x="184" y="123" width="171" height="18"/>
|
||||
<rect key="frame" x="184" y="126" width="175" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Recommend key change" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="CtU-Eq-dgy">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="upv-b3-vCc">
|
||||
<rect key="frame" x="184" y="71" width="129" height="18"/>
|
||||
<rect key="frame" x="184" y="73" width="133" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Force key change" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="z6u-YT-7LE">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="VYh-cm-fix">
|
||||
<rect key="frame" x="186" y="43" width="128" height="22"/>
|
||||
<rect key="frame" x="186" y="45" width="128" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="M9G-Yy-1s4">
|
||||
<customFormatter key="formatter" id="3Ax-U4-Ofb" customClass="MPDayCountFormatter"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -606,11 +705,11 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="lH4-xp-5QF">
|
||||
<rect key="frame" x="319" y="40" width="19" height="27"/>
|
||||
<rect key="frame" x="319" y="41" width="19" height="28"/>
|
||||
<stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="7Hw-Qf-zWf"/>
|
||||
</stepper>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1584">
|
||||
<rect key="frame" x="75" y="159" width="105" height="17"/>
|
||||
<rect key="frame" x="75" y="163" width="105" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Template Group:" id="1588">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -618,10 +717,10 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="I0d-r2-ySf">
|
||||
<rect key="frame" x="20" y="145" width="467" height="5"/>
|
||||
<rect key="frame" x="20" y="149" width="473" height="5"/>
|
||||
</box>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="NPm-5h-2Mz">
|
||||
<rect key="frame" x="65" y="242" width="115" height="17"/>
|
||||
<rect key="frame" x="65" y="244" width="115" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Recyclebin Group:" id="kI5-Kp-byE">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -629,7 +728,7 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="OmP-GD-2nA">
|
||||
<rect key="frame" x="27" y="98" width="153" height="17"/>
|
||||
<rect key="frame" x="27" y="101" width="153" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Recommend key change" id="Xib-Fn-sqx">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -637,7 +736,7 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="S0c-4E-42z">
|
||||
<rect key="frame" x="56" y="46" width="124" height="17"/>
|
||||
<rect key="frame" x="57" y="48" width="123" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Enforce key change" id="5QH-N1-FHK">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -645,7 +744,7 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="VMc-Qg-eCr">
|
||||
<rect key="frame" x="184" y="19" width="257" height="18"/>
|
||||
<rect key="frame" x="184" y="20" width="261" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Force key change once after unlocking" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="pA1-aL-KjT">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -749,7 +848,7 @@ Gw
|
||||
<constraint firstItem="956" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="2" secondAttribute="leading" constant="20" symbolic="YES" id="Yla-YR-bgz"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<point key="canvasLocation" x="-2020" y="-860"/>
|
||||
<point key="canvasLocation" x="-2020.5" y="-860.5"/>
|
||||
</window>
|
||||
</objects>
|
||||
</document>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="15702" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="15702"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -16,11 +16,11 @@
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView id="1">
|
||||
<rect key="frame" x="0.0" y="0.0" width="180" height="134"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="190" height="132"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<datePicker horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="3">
|
||||
<rect key="frame" x="20" y="91" width="143" height="27"/>
|
||||
<rect key="frame" x="20" y="88" width="153" height="28"/>
|
||||
<datePickerCell key="cell" borderStyle="bezel" alignment="left" id="4">
|
||||
<font key="font" metaFont="system"/>
|
||||
<date key="date" timeIntervalSinceReferenceDate="-595929600">
|
||||
@@ -32,7 +32,7 @@
|
||||
</datePickerCell>
|
||||
</datePicker>
|
||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="15">
|
||||
<rect key="frame" x="18" y="47" width="145" height="25"/>
|
||||
<rect key="frame" x="17" y="44" width="157" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="16">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
@@ -42,9 +42,9 @@
|
||||
<action selector="setDatePreset:" target="-2" id="RzX-je-KSz"/>
|
||||
</connections>
|
||||
</popUpButton>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="25">
|
||||
<rect key="frame" x="90" y="19" width="70" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Use Date" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="26">
|
||||
<button verticalHuggingPriority="750" horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="25">
|
||||
<rect key="frame" x="87" y="13" width="90" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Use Date" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="26">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -52,9 +52,9 @@
|
||||
<action selector="useDate:" target="-2" id="34n-E5-FQq"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="29">
|
||||
<rect key="frame" x="26" y="19" width="56" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Cancel" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="30">
|
||||
<button verticalHuggingPriority="750" horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="29">
|
||||
<rect key="frame" x="13" y="13" width="76" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="30">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -73,7 +73,7 @@
|
||||
<constraint firstAttribute="bottom" secondItem="25" secondAttribute="bottom" constant="20" symbolic="YES" id="36"/>
|
||||
<constraint firstAttribute="trailing" secondItem="3" secondAttribute="trailing" constant="20" id="6Qs-OP-VRr"/>
|
||||
<constraint firstItem="25" firstAttribute="centerY" secondItem="29" secondAttribute="centerY" id="M8N-5g-ClS"/>
|
||||
<constraint firstItem="25" firstAttribute="leading" secondItem="29" secondAttribute="trailing" constant="8" symbolic="YES" id="on5-xg-jcC"/>
|
||||
<constraint firstItem="25" firstAttribute="leading" secondItem="29" secondAttribute="trailing" constant="12" symbolic="YES" id="on5-xg-jcC"/>
|
||||
<constraint firstItem="15" firstAttribute="top" secondItem="3" secondAttribute="bottom" constant="20" symbolic="YES" id="qKB-vi-OAw"/>
|
||||
<constraint firstItem="25" firstAttribute="top" secondItem="15" secondAttribute="bottom" constant="8" symbolic="YES" id="sxX-fk-xaJ"/>
|
||||
</constraints>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19529" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14460.31"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19529"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -19,6 +19,7 @@
|
||||
<outlet property="customFieldsTableView" destination="193" id="266"/>
|
||||
<outlet property="enableAutotypeCheckButton" destination="kdV-Xa-8p3" id="vlC-HP-lBv"/>
|
||||
<outlet property="expiresCheckButton" destination="7" id="286"/>
|
||||
<outlet property="fieldsStackView" destination="dx3-E2-FFt" id="GbY-9q-iEy"/>
|
||||
<outlet property="generalView" destination="4" id="270"/>
|
||||
<outlet property="generatePasswordButton" destination="59" id="282"/>
|
||||
<outlet property="infoTabControl" destination="82" id="264"/>
|
||||
@@ -43,11 +44,11 @@
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<view translatesAutoresizingMaskIntoConstraints="NO" id="3">
|
||||
<rect key="frame" x="0.0" y="0.0" width="293" height="493"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="273" height="493"/>
|
||||
<subviews>
|
||||
<segmentedControl verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="82">
|
||||
<rect key="frame" x="57" y="469" width="179" height="19"/>
|
||||
<segmentedCell key="cell" controlSize="small" borderStyle="border" alignment="left" style="texturedSquare" trackingMode="selectOne" id="238">
|
||||
<rect key="frame" x="62" y="468" width="150" height="21"/>
|
||||
<segmentedCell key="cell" controlSize="small" borderStyle="border" alignment="left" style="rounded" trackingMode="selectOne" id="238">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<segments>
|
||||
<segment label="General" selected="YES"/>
|
||||
@@ -57,26 +58,26 @@
|
||||
</segmentedCell>
|
||||
</segmentedControl>
|
||||
<tabView drawsBackground="NO" type="noTabsNoBorder" initialItem="110" translatesAutoresizingMaskIntoConstraints="NO" id="83">
|
||||
<rect key="frame" x="0.0" y="0.0" width="293" height="467"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="273" height="467"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<tabViewItems>
|
||||
<tabViewItem label="General" identifier="1" id="110">
|
||||
<view key="view" id="111">
|
||||
<rect key="frame" x="0.0" y="0.0" width="293" height="467"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="273" height="467"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
</view>
|
||||
</tabViewItem>
|
||||
<tabViewItem label="Attachments" identifier="" id="109">
|
||||
<view key="view" id="123">
|
||||
<rect key="frame" x="0.0" y="0.0" width="293" height="467"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="273" height="467"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<button focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="124">
|
||||
<rect key="frame" x="241" y="428" width="32" height="23"/>
|
||||
<rect key="frame" x="214" y="423" width="46" height="32"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="32" id="176"/>
|
||||
</constraints>
|
||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSAddTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" focusRingType="none" imageScaling="proportionallyDown" inset="2" id="177">
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSAddTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" focusRingType="none" imageScaling="proportionallyDown" inset="2" id="177">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -93,21 +94,20 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<scrollView autohidesScrollers="YES" horizontalLineScroll="38" horizontalPageScroll="10" verticalLineScroll="38" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="125" customClass="HNHUIScrollView">
|
||||
<rect key="frame" x="20" y="26" width="253" height="396"/>
|
||||
<rect key="frame" x="20" y="26" width="233" height="396"/>
|
||||
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="F3N-QI-Di5">
|
||||
<rect key="frame" x="1" y="1" width="251" height="394"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<rect key="frame" x="1" y="1" width="231" height="394"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" multipleSelection="NO" autosaveColumns="NO" rowHeight="36" rowSizeStyle="automatic" viewBased="YES" id="137">
|
||||
<rect key="frame" x="0.0" y="0.0" width="251" height="394"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="231" height="394"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<size key="intercellSpacing" width="3" height="2"/>
|
||||
<color key="backgroundColor" name="alternateSelectedControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
|
||||
<tableColumns>
|
||||
<tableColumn width="248" minWidth="40" maxWidth="1000" id="140">
|
||||
<tableColumn width="190" minWidth="40" maxWidth="1000" id="140">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" white="0.33333298560000002" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</tableHeaderCell>
|
||||
@@ -119,11 +119,11 @@
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView identifier="NormalCell" id="143">
|
||||
<rect key="frame" x="1" y="1" width="248" height="36"/>
|
||||
<rect key="frame" x="11" y="1" width="199" height="36"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<imageView translatesAutoresizingMaskIntoConstraints="NO" id="144">
|
||||
<rect key="frame" x="3" y="2" width="32" height="32"/>
|
||||
<rect key="frame" x="3" y="-1" width="32" height="38"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="32" id="153"/>
|
||||
<constraint firstAttribute="height" constant="32" id="154"/>
|
||||
@@ -131,7 +131,7 @@
|
||||
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="NSActionTemplate" id="152"/>
|
||||
</imageView>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="145">
|
||||
<rect key="frame" x="41" y="10" width="206" height="17"/>
|
||||
<rect key="frame" x="41" y="10" width="157" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="151">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -152,11 +152,11 @@
|
||||
</connections>
|
||||
</tableCellView>
|
||||
<tableCellView identifier="SelectedCell" id="141" customClass="MPSelectedAttachmentTableCellView">
|
||||
<rect key="frame" x="1" y="39" width="248" height="36"/>
|
||||
<rect key="frame" x="11" y="39" width="199" height="36"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<imageView translatesAutoresizingMaskIntoConstraints="NO" id="167">
|
||||
<rect key="frame" x="3" y="2" width="32" height="32"/>
|
||||
<rect key="frame" x="3" y="-1" width="32" height="38"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="32" id="168"/>
|
||||
<constraint firstAttribute="width" constant="32" id="169"/>
|
||||
@@ -164,7 +164,7 @@
|
||||
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="NSActionTemplate" id="170"/>
|
||||
</imageView>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="166">
|
||||
<rect key="frame" x="41" y="10" width="158" height="17"/>
|
||||
<rect key="frame" x="41" y="10" width="106" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="171">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -172,7 +172,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="42g-QS-XtW">
|
||||
<rect key="frame" x="205" y="6" width="40" height="23"/>
|
||||
<rect key="frame" x="150" y="4" width="50" height="25"/>
|
||||
<popUpButtonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" borderStyle="border" imageScaling="proportionallyDown" inset="2" pullsDown="YES" altersStateOfSelectedItem="NO" id="nJc-UT-cas">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
@@ -218,7 +218,7 @@
|
||||
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="100" id="KFw-Ma-DSd"/>
|
||||
</constraints>
|
||||
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="138">
|
||||
<rect key="frame" x="1" y="147" width="52" height="16"/>
|
||||
<rect key="frame" x="1" y="379" width="231" height="16"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="139">
|
||||
@@ -242,7 +242,7 @@
|
||||
</tabViewItem>
|
||||
<tabViewItem label="Autotype" identifier="" id="hK7-Dx-yjH">
|
||||
<view key="view" id="2py-ab-4ZU">
|
||||
<rect key="frame" x="0.0" y="0.0" width="293" height="467"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="273" height="467"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
</view>
|
||||
</tabViewItem>
|
||||
@@ -259,182 +259,13 @@
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="82" secondAttribute="trailing" constant="20" symbolic="YES" id="4df-0Y-ggz"/>
|
||||
<constraint firstItem="82" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="3" secondAttribute="leading" constant="20" symbolic="YES" id="zU6-5h-Swa"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="391" y="-865"/>
|
||||
<point key="canvasLocation" x="-680" y="-1408"/>
|
||||
</view>
|
||||
<customView translatesAutoresizingMaskIntoConstraints="NO" id="4" customClass="HNHUIScrollDocumentViewAdapter">
|
||||
<rect key="frame" x="0.0" y="0.0" width="291" height="712"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="291" height="484"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="52">
|
||||
<rect key="frame" x="18" y="693" width="27" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Title" id="71">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="53" customClass="HNHUITextField">
|
||||
<rect key="frame" x="20" y="663" width="251" height="22"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="22" id="7Xj-3i-fBY"/>
|
||||
</constraints>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="70">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="-2" id="pQH-Xf-3pz"/>
|
||||
<outlet property="nextKeyView" destination="55" id="FgE-cj-E5Z"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="54">
|
||||
<rect key="frame" x="18" y="637" width="58" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Username" id="69">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="55" customClass="HNHUITextField">
|
||||
<rect key="frame" x="20" y="607" width="251" height="22"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="22" id="0l5-fD-0eW"/>
|
||||
</constraints>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="68">
|
||||
<font key="font" size="13" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="-2" id="22y-I8-aaG"/>
|
||||
<outlet property="nextKeyView" destination="60" id="ZPp-lg-TBS"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="56" customClass="HNHUITextField">
|
||||
<rect key="frame" x="20" y="469" width="251" height="22"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="22" id="SoS-8e-rkN"/>
|
||||
</constraints>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="67">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="-2" id="LzV-u6-mkP"/>
|
||||
<outlet property="nextKeyView" destination="7" id="8Vo-ZR-aWE"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="57">
|
||||
<rect key="frame" x="18" y="499" width="26" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="URL" id="66">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="58">
|
||||
<rect key="frame" x="18" y="581" width="55" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Password" id="65">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="59">
|
||||
<rect key="frame" x="20" y="520" width="251" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Generate" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="64">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="showPasswordGenerator:" target="-2" id="xxV-lD-L1K"/>
|
||||
<outlet property="nextKeyView" destination="56" id="rY0-PH-WBT"/>
|
||||
</connections>
|
||||
</button>
|
||||
<secureTextField verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="60" customClass="HNHUISecureTextField">
|
||||
<rect key="frame" x="20" y="551" width="211" height="22"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="22" id="VFI-jo-tOU"/>
|
||||
</constraints>
|
||||
<secureTextFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="63">
|
||||
<font key="font" size="13" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
<allowedInputSourceLocales>
|
||||
<string>NSAllRomanInputSourcesLocaleIdentifier</string>
|
||||
</allowedInputSourceLocales>
|
||||
</secureTextFieldCell>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="-2" id="RBf-26-U9y"/>
|
||||
<outlet property="nextKeyView" destination="61" id="5yc-GS-oVG"/>
|
||||
</connections>
|
||||
</secureTextField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="61">
|
||||
<rect key="frame" x="239" y="550" width="32" height="23"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="32" id="rSr-fw-11t"/>
|
||||
</constraints>
|
||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSQuickLookTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="62">
|
||||
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<outlet property="nextKeyView" destination="59" id="ZRe-l9-kNq"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="7">
|
||||
<rect key="frame" x="18" y="441" width="67" height="18"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="14" id="vgc-Xu-RJs"/>
|
||||
</constraints>
|
||||
<buttonCell key="cell" type="check" title="Expires" bezelStyle="regularSquare" imagePosition="left" lineBreakMode="truncatingMiddle" state="on" inset="2" id="78">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="toggleExpire:" target="-2" id="EBe-2q-ASh"/>
|
||||
<outlet property="nextKeyView" destination="8" id="SbJ-ZA-mXZ"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8">
|
||||
<rect key="frame" x="239" y="438" width="32" height="23"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="32" id="Ped-nx-uti"/>
|
||||
</constraints>
|
||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSActionTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="77">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="pickExpiryDate:" target="-1" id="DQK-sp-SIL"/>
|
||||
<outlet property="nextKeyView" destination="5" id="cVg-qt-OBX"/>
|
||||
</connections>
|
||||
</button>
|
||||
<tokenField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="5">
|
||||
<rect key="frame" x="20" y="332" width="251" height="77"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="77" id="80"/>
|
||||
</constraints>
|
||||
<tokenFieldCell key="cell" selectable="YES" editable="YES" borderStyle="bezel" alignment="left" drawsBackground="YES" allowsEditingTextAttributes="YES" id="81">
|
||||
<font key="font" metaFont="cellTitle"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</tokenFieldCell>
|
||||
<connections>
|
||||
<outlet property="nextKeyView" destination="193" id="Kb5-0L-Lkd"/>
|
||||
</connections>
|
||||
</tokenField>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6">
|
||||
<rect key="frame" x="18" y="417" width="29" height="14"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Tags" id="79">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="0U8-TS-giU">
|
||||
<rect key="frame" x="18" y="80" width="32" height="14"/>
|
||||
<rect key="frame" x="18" y="77" width="32" height="14"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" title="UUID" id="vTq-N1-5oa">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -442,10 +273,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="IpW-b2-jWu" customClass="HNHUITextField">
|
||||
<rect key="frame" x="20" y="50" width="251" height="22"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="22" id="Zfy-mh-1TF"/>
|
||||
</constraints>
|
||||
<rect key="frame" x="20" y="48" width="251" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="Hml-NR-AeS">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -456,8 +284,8 @@
|
||||
</connections>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="QSX-Xo-tcH">
|
||||
<rect key="frame" x="20" y="19" width="251" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Show Plugin Data" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="X9y-K7-lix">
|
||||
<rect key="frame" x="13" y="13" width="265" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Show Plugin Data" bezelStyle="rounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="X9y-K7-lix">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -467,8 +295,8 @@
|
||||
</connections>
|
||||
</button>
|
||||
<segmentedControl verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="G9J-nn-2bu" customClass="MPContextButton">
|
||||
<rect key="frame" x="216" y="101" width="55" height="23"/>
|
||||
<segmentedCell key="cell" borderStyle="border" alignment="left" style="texturedRounded" trackingMode="selectOne" id="POU-2t-8fl">
|
||||
<rect key="frame" x="219" y="97" width="55" height="24"/>
|
||||
<segmentedCell key="cell" borderStyle="border" alignment="left" style="separated" trackingMode="selectOne" id="POU-2t-8fl">
|
||||
<font key="font" metaFont="system"/>
|
||||
<segments>
|
||||
<segment image="NSAddTemplate" width="32"/>
|
||||
@@ -480,68 +308,238 @@
|
||||
<outlet property="nextKeyView" destination="QSX-Xo-tcH" id="P9m-Wl-V3E"/>
|
||||
</connections>
|
||||
</segmentedControl>
|
||||
<stackView distribution="fill" orientation="vertical" alignment="leading" horizontalStackHuggingPriority="250" verticalStackHuggingPriority="250" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="dx3-E2-FFt">
|
||||
<rect key="frame" x="20" y="135" width="251" height="329"/>
|
||||
<subviews>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="52">
|
||||
<rect key="frame" x="-2" y="315" width="255" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Title" id="71">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="53" customClass="HNHUITextField">
|
||||
<rect key="frame" x="0.0" y="286" width="251" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="70">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="-2" id="pQH-Xf-3pz"/>
|
||||
<outlet property="nextKeyView" destination="55" id="FgE-cj-E5Z"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="54">
|
||||
<rect key="frame" x="-2" y="264" width="255" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Username" id="69">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="55" customClass="HNHUITextField">
|
||||
<rect key="frame" x="0.0" y="236" width="251" height="20"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="68">
|
||||
<font key="font" size="13" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="-2" id="22y-I8-aaG"/>
|
||||
<outlet property="nextKeyView" destination="60" id="ZPp-lg-TBS"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="58">
|
||||
<rect key="frame" x="-2" y="214" width="255" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Password" id="65">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<stackView distribution="fill" orientation="horizontal" alignment="centerY" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" horizontalHuggingPriority="249" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="C4J-K4-QBG">
|
||||
<rect key="frame" x="0.0" y="186" width="251" height="20"/>
|
||||
<subviews>
|
||||
<secureTextField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" contentType="oneTimeCode" translatesAutoresizingMaskIntoConstraints="NO" id="60" customClass="HNHUISecureTextField">
|
||||
<rect key="frame" x="0.0" y="0.0" width="123" height="20"/>
|
||||
<secureTextFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" id="63">
|
||||
<font key="font" size="13" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
<allowedInputSourceLocales>
|
||||
<string>NSAllRomanInputSourcesLocaleIdentifier</string>
|
||||
</allowedInputSourceLocales>
|
||||
</secureTextFieldCell>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="-2" id="RBf-26-U9y"/>
|
||||
<outlet property="nextKeyView" destination="61" id="5yc-GS-oVG"/>
|
||||
</connections>
|
||||
</secureTextField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="61">
|
||||
<rect key="frame" x="124" y="-7" width="50" height="32"/>
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSQuickLookTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="62">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<outlet property="nextKeyView" destination="59" id="ZRe-l9-kNq"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="59">
|
||||
<rect key="frame" x="168" y="-7" width="90" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Generate" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="64">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="showPasswordGenerator:" target="-2" id="xxV-lD-L1K"/>
|
||||
<outlet property="nextKeyView" destination="56" id="rY0-PH-WBT"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<visibilityPriorities>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
</visibilityPriorities>
|
||||
<customSpacing>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
</customSpacing>
|
||||
</stackView>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="57">
|
||||
<rect key="frame" x="-2" y="164" width="255" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="URL" id="66">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="56" customClass="HNHUITextField">
|
||||
<rect key="frame" x="0.0" y="135" width="251" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="67">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="-2" id="LzV-u6-mkP"/>
|
||||
<outlet property="nextKeyView" destination="7" id="8Vo-ZR-aWE"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<stackView distribution="fill" orientation="horizontal" alignment="centerY" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" horizontalHuggingPriority="248" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="buA-UH-XId">
|
||||
<rect key="frame" x="0.0" y="107" width="251" height="20"/>
|
||||
<subviews>
|
||||
<button horizontalHuggingPriority="249" horizontalCompressionResistancePriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="7">
|
||||
<rect key="frame" x="-2" y="1" width="214" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Expires" bezelStyle="regularSquare" imagePosition="left" lineBreakMode="truncatingMiddle" state="on" inset="2" id="78">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="toggleExpire:" target="-2" id="EBe-2q-ASh"/>
|
||||
<outlet property="nextKeyView" destination="8" id="SbJ-ZA-mXZ"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8">
|
||||
<rect key="frame" x="213" y="-7" width="45" height="32"/>
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSActionTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="77">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="pickExpiryDate:" target="-1" id="DQK-sp-SIL"/>
|
||||
<outlet property="nextKeyView" destination="5" id="cVg-qt-OBX"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<visibilityPriorities>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
</visibilityPriorities>
|
||||
<customSpacing>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
</customSpacing>
|
||||
</stackView>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6">
|
||||
<rect key="frame" x="-2" y="85" width="255" height="14"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Tags" id="79">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<tokenField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="5">
|
||||
<rect key="frame" x="0.0" y="0.0" width="251" height="77"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="77" id="80"/>
|
||||
</constraints>
|
||||
<tokenFieldCell key="cell" selectable="YES" editable="YES" borderStyle="bezel" alignment="left" drawsBackground="YES" allowsEditingTextAttributes="YES" id="81">
|
||||
<font key="font" metaFont="cellTitle"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</tokenFieldCell>
|
||||
<connections>
|
||||
<outlet property="nextKeyView" destination="193" id="Kb5-0L-Lkd"/>
|
||||
</connections>
|
||||
</tokenField>
|
||||
</subviews>
|
||||
<visibilityPriorities>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
</visibilityPriorities>
|
||||
<customSpacing>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
</customSpacing>
|
||||
</stackView>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="52" firstAttribute="top" secondItem="4" secondAttribute="top" constant="5" id="11"/>
|
||||
<constraint firstItem="52" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" symbolic="YES" id="12"/>
|
||||
<constraint firstItem="53" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" symbolic="YES" id="13"/>
|
||||
<constraint firstItem="53" firstAttribute="top" secondItem="52" secondAttribute="bottom" constant="8" symbolic="YES" id="14"/>
|
||||
<constraint firstAttribute="trailing" secondItem="53" secondAttribute="trailing" constant="20" symbolic="YES" id="15"/>
|
||||
<constraint firstItem="54" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" symbolic="YES" id="16"/>
|
||||
<constraint firstItem="54" firstAttribute="top" secondItem="53" secondAttribute="bottom" constant="12" id="17"/>
|
||||
<constraint firstItem="55" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" symbolic="YES" id="18"/>
|
||||
<constraint firstItem="55" firstAttribute="top" secondItem="54" secondAttribute="bottom" constant="8" symbolic="YES" id="19"/>
|
||||
<constraint firstAttribute="trailing" secondItem="55" secondAttribute="trailing" constant="20" symbolic="YES" id="20"/>
|
||||
<constraint firstItem="57" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" symbolic="YES" id="21"/>
|
||||
<constraint firstItem="56" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" symbolic="YES" id="23"/>
|
||||
<constraint firstItem="56" firstAttribute="top" secondItem="57" secondAttribute="bottom" constant="8" symbolic="YES" id="24"/>
|
||||
<constraint firstAttribute="trailing" secondItem="56" secondAttribute="trailing" constant="20" symbolic="YES" id="25"/>
|
||||
<constraint firstItem="58" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" symbolic="YES" id="26"/>
|
||||
<constraint firstItem="60" firstAttribute="top" secondItem="58" secondAttribute="bottom" constant="8" symbolic="YES" id="29"/>
|
||||
<constraint firstItem="60" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" symbolic="YES" id="30"/>
|
||||
<constraint firstItem="59" firstAttribute="top" secondItem="61" secondAttribute="bottom" constant="8" symbolic="YES" id="31"/>
|
||||
<constraint firstItem="59" firstAttribute="top" secondItem="60" secondAttribute="bottom" constant="8" symbolic="YES" id="32"/>
|
||||
<constraint firstItem="59" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" symbolic="YES" id="33"/>
|
||||
<constraint firstAttribute="trailing" secondItem="59" secondAttribute="trailing" constant="20" symbolic="YES" id="34"/>
|
||||
<constraint firstItem="61" firstAttribute="leading" secondItem="60" secondAttribute="trailing" constant="8" symbolic="YES" id="40"/>
|
||||
<constraint firstAttribute="trailing" secondItem="61" secondAttribute="trailing" constant="20" symbolic="YES" id="41"/>
|
||||
<constraint firstItem="7" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" symbolic="YES" id="42"/>
|
||||
<constraint firstItem="7" firstAttribute="centerY" secondItem="8" secondAttribute="centerY" id="43"/>
|
||||
<constraint firstItem="6" firstAttribute="top" secondItem="7" secondAttribute="bottom" constant="12" id="44"/>
|
||||
<constraint firstItem="6" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" symbolic="YES" id="45"/>
|
||||
<constraint firstAttribute="trailing" secondItem="8" secondAttribute="trailing" constant="20" symbolic="YES" id="47"/>
|
||||
<constraint firstItem="5" firstAttribute="top" secondItem="6" secondAttribute="bottom" constant="8" symbolic="YES" id="48"/>
|
||||
<constraint firstItem="5" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" symbolic="YES" id="49"/>
|
||||
<constraint firstAttribute="trailing" secondItem="5" secondAttribute="trailing" constant="20" symbolic="YES" id="50"/>
|
||||
<constraint firstItem="QSX-Xo-tcH" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" symbolic="YES" id="2AA-hQ-mL7"/>
|
||||
<constraint firstItem="IpW-b2-jWu" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" id="51R-pR-KLO"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="52" secondAttribute="trailing" constant="20" symbolic="YES" id="6P6-fW-kGx"/>
|
||||
<constraint firstAttribute="trailing" secondItem="IpW-b2-jWu" secondAttribute="trailing" constant="20" id="D0t-s7-2hT"/>
|
||||
<constraint firstItem="7" firstAttribute="top" secondItem="56" secondAttribute="bottom" constant="12" id="Gh9-Lg-kcm"/>
|
||||
<constraint firstAttribute="bottom" secondItem="QSX-Xo-tcH" secondAttribute="bottom" constant="20" symbolic="YES" id="Fpp-iu-smS"/>
|
||||
<constraint firstItem="IpW-b2-jWu" firstAttribute="top" secondItem="0U8-TS-giU" secondAttribute="bottom" constant="8" symbolic="YES" id="HSM-Aj-X9I"/>
|
||||
<constraint firstItem="58" firstAttribute="top" secondItem="55" secondAttribute="bottom" constant="12" id="JiM-Dm-AG8"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="57" secondAttribute="trailing" constant="20" symbolic="YES" id="N4A-wg-PdS"/>
|
||||
<constraint firstItem="QSX-Xo-tcH" firstAttribute="top" secondItem="IpW-b2-jWu" secondAttribute="bottom" constant="8" symbolic="YES" id="TPp-cx-48q"/>
|
||||
<constraint firstItem="8" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="7" secondAttribute="trailing" constant="8" symbolic="YES" id="Xa5-Ir-XNC"/>
|
||||
<constraint firstAttribute="bottom" secondItem="QSX-Xo-tcH" secondAttribute="bottom" constant="20" symbolic="YES" id="ZdF-5c-xDa"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="0U8-TS-giU" secondAttribute="trailing" constant="20" symbolic="YES" id="a5R-eI-VuV"/>
|
||||
<constraint firstItem="0U8-TS-giU" firstAttribute="top" secondItem="G9J-nn-2bu" secondAttribute="bottom" constant="8" symbolic="YES" id="aes-tv-LHA"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="54" secondAttribute="trailing" constant="20" symbolic="YES" id="cYP-oK-dVP"/>
|
||||
<constraint firstAttribute="trailing" secondItem="dx3-E2-FFt" secondAttribute="trailing" constant="20" symbolic="YES" id="esd-fR-ZGC"/>
|
||||
<constraint firstAttribute="trailing" secondItem="G9J-nn-2bu" secondAttribute="trailing" constant="20" symbolic="YES" id="ggu-f5-LtR"/>
|
||||
<constraint firstAttribute="trailing" secondItem="QSX-Xo-tcH" secondAttribute="trailing" constant="20" symbolic="YES" id="hr2-Eb-g24"/>
|
||||
<constraint firstItem="dx3-E2-FFt" firstAttribute="top" secondItem="4" secondAttribute="top" constant="20" symbolic="YES" id="k31-5b-7n6"/>
|
||||
<constraint firstItem="0U8-TS-giU" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" id="kLH-Bj-C5m"/>
|
||||
<constraint firstItem="57" firstAttribute="top" secondItem="59" secondAttribute="bottom" constant="8" symbolic="YES" id="lYe-am-xJx"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="58" secondAttribute="trailing" constant="20" symbolic="YES" id="rbs-i7-bti"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="6" secondAttribute="trailing" constant="20" symbolic="YES" id="uuh-ba-z4h"/>
|
||||
<constraint firstItem="dx3-E2-FFt" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" symbolic="YES" id="sjr-Xo-zxh"/>
|
||||
<constraint firstItem="G9J-nn-2bu" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="4" secondAttribute="leading" constant="20" symbolic="YES" id="z4K-PB-Qfb"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="-679" y="-1054"/>
|
||||
<point key="canvasLocation" x="-310" y="-1413"/>
|
||||
</customView>
|
||||
<view translatesAutoresizingMaskIntoConstraints="NO" id="zv7-wE-Bmg" customClass="HNHUIScrollDocumentViewAdapter">
|
||||
<rect key="frame" x="0.0" y="0.0" width="301" height="424"/>
|
||||
<subviews>
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="kdV-Xa-8p3">
|
||||
<rect key="frame" x="18" y="398" width="265" height="18"/>
|
||||
<rect key="frame" x="18" y="399" width="263" height="16"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="14" id="c9A-Ju-Cj9"/>
|
||||
</constraints>
|
||||
@@ -551,7 +549,7 @@
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="I7L-Am-Qpa">
|
||||
<rect key="frame" x="18" y="378" width="265" height="18"/>
|
||||
<rect key="frame" x="18" y="379" width="263" height="16"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="14" id="KKP-xg-uUu"/>
|
||||
</constraints>
|
||||
@@ -569,10 +567,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="cDK-DM-F5z" customClass="HNHUITextField">
|
||||
<rect key="frame" x="20" y="328" width="221" height="22"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="22" id="2hC-UP-Iie"/>
|
||||
</constraints>
|
||||
<rect key="frame" x="20" y="329" width="222" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="Custom Entry Sequence" drawsBackground="YES" id="R2X-Ex-c6q">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -580,7 +575,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="iR3-FU-MYu">
|
||||
<rect key="frame" x="18" y="306" width="265" height="14"/>
|
||||
<rect key="frame" x="18" y="307" width="265" height="14"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="14" id="xvF-LU-XNu"/>
|
||||
</constraints>
|
||||
@@ -591,21 +586,20 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<scrollView autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2YH-c2-Cwc">
|
||||
<rect key="frame" x="20" y="138" width="261" height="160"/>
|
||||
<rect key="frame" x="20" y="136" width="261" height="163"/>
|
||||
<clipView key="contentView" id="aDE-WT-YIv">
|
||||
<rect key="frame" x="1" y="1" width="259" height="158"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<rect key="frame" x="1" y="1" width="259" height="161"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" alternatingRowBackgroundColors="YES" columnReordering="NO" columnSelection="YES" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" rowSizeStyle="automatic" viewBased="YES" id="caM-L6-UHC">
|
||||
<rect key="frame" x="0.0" y="0.0" width="259" height="158"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="259" height="161"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<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="256" minWidth="40" maxWidth="1000" id="Wdn-k1-39b">
|
||||
<tableColumn width="218" minWidth="40" maxWidth="1000" id="Wdn-k1-39b">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" white="0.33333298560000002" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</tableHeaderCell>
|
||||
@@ -617,12 +611,12 @@
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView identifier="WindowAssociationCell" id="jI3-t8-8bp">
|
||||
<rect key="frame" x="1" y="1" width="256" height="17"/>
|
||||
<rect key="frame" x="11" y="1" width="227" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="JgP-7K-Ugw">
|
||||
<rect key="frame" x="0.0" y="0.0" width="256" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="226" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="dyA-lo-PGa">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -651,10 +645,7 @@
|
||||
</scroller>
|
||||
</scrollView>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Iy9-9L-Aev">
|
||||
<rect key="frame" x="249" y="107" width="32" height="23"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="32" id="mjs-Yf-Cb2"/>
|
||||
</constraints>
|
||||
<rect key="frame" x="256" y="106" width="26" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSAddTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="5J6-uD-iK6">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -664,10 +655,7 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="AAj-Ak-z46">
|
||||
<rect key="frame" x="209" y="107" width="32" height="23"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="32" id="vWY-ez-gy9"/>
|
||||
</constraints>
|
||||
<rect key="frame" x="224" y="106" width="26" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSRemoveTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="86n-d4-lOW">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -677,7 +665,7 @@
|
||||
</connections>
|
||||
</button>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="HQa-of-iwh">
|
||||
<rect key="frame" x="18" y="90" width="265" height="14"/>
|
||||
<rect key="frame" x="18" y="88" width="265" height="14"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="14" id="GF5-sR-zdR"/>
|
||||
</constraints>
|
||||
@@ -688,10 +676,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<comboBox verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="rD3-Wn-ZFX">
|
||||
<rect key="frame" x="20" y="58" width="264" height="26"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="20" id="rXS-QE-6cW"/>
|
||||
</constraints>
|
||||
<rect key="frame" x="20" y="57" width="264" height="25"/>
|
||||
<comboBoxCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" completes="NO" id="VLq-Hn-aei">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -699,7 +684,7 @@
|
||||
</comboBoxCell>
|
||||
</comboBox>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="z03-zW-GN3">
|
||||
<rect key="frame" x="18" y="40" width="265" height="14"/>
|
||||
<rect key="frame" x="18" y="39" width="265" height="14"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="14" id="MPq-gU-72D"/>
|
||||
</constraints>
|
||||
@@ -710,10 +695,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="NjR-ea-Y7k" customClass="HNHUITextField">
|
||||
<rect key="frame" x="20" y="10" width="221" height="22"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="22" id="oIA-8f-Jkf"/>
|
||||
</constraints>
|
||||
<rect key="frame" x="20" y="10" width="222" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="Custom Window Sequence" drawsBackground="YES" id="fW9-9p-wwR">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -721,11 +703,8 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="m1C-m8-BKR">
|
||||
<rect key="frame" x="249" y="9" width="32" height="23"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="32" id="Ek5-IH-qGo"/>
|
||||
</constraints>
|
||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSActionTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="HIC-T9-j9G">
|
||||
<rect key="frame" x="243" y="4" width="45" height="32"/>
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSActionTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="HIC-T9-j9G">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -734,11 +713,8 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="HDS-Bz-jrr">
|
||||
<rect key="frame" x="249" y="326" width="32" height="23"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="32" id="CbR-2P-dZH"/>
|
||||
</constraints>
|
||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSActionTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="V5Z-qf-FVH">
|
||||
<rect key="frame" x="243" y="322" width="45" height="32"/>
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSActionTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="V5Z-qf-FVH">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -788,24 +764,23 @@
|
||||
<constraint firstAttribute="trailing" secondItem="45R-v4-ywl" secondAttribute="trailing" constant="20" symbolic="YES" id="uUm-S5-cxM"/>
|
||||
<constraint firstAttribute="trailing" secondItem="z03-zW-GN3" secondAttribute="trailing" constant="20" symbolic="YES" id="wiq-pY-TG8"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="39" y="-995"/>
|
||||
<point key="canvasLocation" x="145.5" y="-1275"/>
|
||||
</view>
|
||||
<scrollView borderType="line" autohidesScrollers="YES" horizontalLineScroll="56" horizontalPageScroll="10" verticalLineScroll="56" verticalPageScroll="10" usesPredominantAxisScrolling="NO" horizontalScrollElasticity="none" translatesAutoresizingMaskIntoConstraints="NO" id="180" customClass="HNHUIScrollView">
|
||||
<rect key="frame" x="0.0" y="0.0" width="261" height="270"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="290" height="268"/>
|
||||
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="k8G-zp-BXZ">
|
||||
<rect key="frame" x="1" y="1" width="259" height="268"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<rect key="frame" x="1" y="1" width="288" height="266"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<tableView focusRingType="none" verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" selectionHighlightStyle="none" columnSelection="YES" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" rowHeight="54" viewBased="YES" id="193" customClass="MPCustomFieldTableView">
|
||||
<rect key="frame" x="0.0" y="0.0" width="259" height="268"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableView focusRingType="none" verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" tableStyle="fullWidth" selectionHighlightStyle="none" columnSelection="YES" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" rowHeight="54" viewBased="YES" id="193">
|
||||
<rect key="frame" x="0.0" y="0.0" width="288" height="266"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<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="256" minWidth="40" maxWidth="1000000" id="194">
|
||||
<tableColumn width="218" minWidth="40" maxWidth="1000000" id="194">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" white="0.33333298560000002" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</tableHeaderCell>
|
||||
@@ -816,24 +791,22 @@
|
||||
</textFieldCell>
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView identifier="SelectedCell" id="196" customClass="MPCustomFieldTableCellView">
|
||||
<rect key="frame" x="1" y="1" width="256" height="54"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<tableCellView identifier="SelectedCell" translatesAutoresizingMaskIntoConstraints="NO" id="196" customClass="MPCustomFieldTableCellView">
|
||||
<rect key="frame" x="0.0" y="0.0" width="227" height="53"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="199" customClass="HNHUISecureTextField">
|
||||
<rect key="frame" x="3" y="10" width="139" height="22"/>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" contentType="oneTimeCode" translatesAutoresizingMaskIntoConstraints="NO" id="199" customClass="HNHUISecureTextField">
|
||||
<rect key="frame" x="3" y="10" width="114" height="21"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="22" id="212"/>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="50" id="213"/>
|
||||
</constraints>
|
||||
<textFieldCell key="cell" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="Value" drawsBackground="YES" id="214">
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="Value" drawsBackground="YES" id="214" customClass="HNHUISecureTextFieldCell">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="200">
|
||||
<rect key="frame" x="1" y="40" width="223" height="14"/>
|
||||
<rect key="frame" x="1" y="39" width="198" height="14"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="14" id="210"/>
|
||||
</constraints>
|
||||
@@ -844,22 +817,16 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="198">
|
||||
<rect key="frame" x="190" y="9" width="32" height="23"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="32" id="215"/>
|
||||
</constraints>
|
||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSRemoveTemplate" imagePosition="overlaps" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="216">
|
||||
<rect key="frame" x="160" y="4" width="44" height="32"/>
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSRemoveTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="216">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="tDI-EL-JGB">
|
||||
<rect key="frame" x="150" y="9" width="32" height="23"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="32" id="JGO-sl-fdM"/>
|
||||
</constraints>
|
||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="52_EncryptedTemplate" imagePosition="overlaps" alignment="center" lineBreakMode="truncatingTail" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="fat-C5-dS2">
|
||||
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
||||
<rect key="frame" x="118" y="4" width="44" height="32"/>
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSLockLockedTemplate" imagePosition="only" alignment="center" lineBreakMode="truncatingTail" borderStyle="border" inset="2" id="fat-C5-dS2">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
@@ -871,11 +838,11 @@
|
||||
<constraint firstItem="199" firstAttribute="leading" secondItem="196" secondAttribute="leading" constant="3" id="204"/>
|
||||
<constraint firstItem="199" firstAttribute="top" secondItem="200" secondAttribute="bottom" constant="8" symbolic="YES" id="205"/>
|
||||
<constraint firstAttribute="bottom" secondItem="199" secondAttribute="bottom" constant="10" id="206"/>
|
||||
<constraint firstAttribute="trailing" secondItem="198" secondAttribute="trailing" constant="34" id="209"/>
|
||||
<constraint firstAttribute="trailing" secondItem="198" secondAttribute="trailing" constant="30" id="209"/>
|
||||
<constraint firstItem="tDI-EL-JGB" firstAttribute="leading" secondItem="199" secondAttribute="trailing" constant="8" symbolic="YES" id="Wbg-bF-vD7"/>
|
||||
<constraint firstItem="tDI-EL-JGB" firstAttribute="top" secondItem="199" secondAttribute="top" id="bpI-VY-E7b"/>
|
||||
<constraint firstItem="198" firstAttribute="top" secondItem="199" secondAttribute="top" id="lHD-b8-rRG"/>
|
||||
<constraint firstItem="198" firstAttribute="leading" secondItem="tDI-EL-JGB" secondAttribute="trailing" constant="8" symbolic="YES" id="qSi-Hi-kM3"/>
|
||||
<constraint firstItem="198" firstAttribute="leading" secondItem="tDI-EL-JGB" secondAttribute="trailing" constant="12" symbolic="YES" id="qSi-Hi-kM3"/>
|
||||
</constraints>
|
||||
<connections>
|
||||
<outlet property="labelTextField" destination="200" id="242"/>
|
||||
@@ -890,7 +857,9 @@
|
||||
</tableView>
|
||||
</subviews>
|
||||
<nil key="backgroundColor"/>
|
||||
<edgeInsets key="contentInsets" left="0.0" right="0.0" top="0.0" bottom="0.0"/>
|
||||
</clipView>
|
||||
<edgeInsets key="contentInsets" left="0.0" right="0.0" top="0.0" bottom="0.0"/>
|
||||
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="192">
|
||||
<rect key="frame" x="1" y="130" width="259" height="16"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
@@ -902,14 +871,14 @@
|
||||
<connections>
|
||||
<outlet property="nextKeyView" destination="G9J-nn-2bu" id="CZ9-f2-JDQ"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="-1317" y="-1440"/>
|
||||
<point key="canvasLocation" x="-1049" y="-1342"/>
|
||||
</scrollView>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="52_EncryptedTemplate" width="16" height="16"/>
|
||||
<image name="NSActionTemplate" width="14" height="14"/>
|
||||
<image name="NSAddTemplate" width="11" height="11"/>
|
||||
<image name="NSQuickLookTemplate" width="19" height="12"/>
|
||||
<image name="NSRemoveTemplate" width="11" height="11"/>
|
||||
<image name="NSActionTemplate" width="15" height="15"/>
|
||||
<image name="NSAddTemplate" width="14" height="13"/>
|
||||
<image name="NSLockLockedTemplate" width="14" height="15"/>
|
||||
<image name="NSQuickLookTemplate" width="21" height="13"/>
|
||||
<image name="NSRemoveTemplate" width="14" height="4"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="15702" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="15705" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="15702"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="15705"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -11,6 +11,7 @@
|
||||
<outlet property="clearPasteboardOnQuitCheckButton" destination="447" id="520"/>
|
||||
<outlet property="clearPasteboardTimeoutPopup" destination="419" id="521"/>
|
||||
<outlet property="enableAutosaveCheckButton" destination="lz3-4U-UMI" id="L5y-58-IgH"/>
|
||||
<outlet property="faviconDownloadMethodPopup" destination="OfU-6f-oTU" id="OfU-6f-oTU-outlet"/>
|
||||
<outlet property="fileChangeStrategyPopup" destination="wIu-Sh-2a2" id="oJo-dA-lEE"/>
|
||||
<outlet property="idleTimeOutPopup" destination="584" id="809"/>
|
||||
<outlet property="lockOnLogoutCheckButton" destination="5SP-Vi-1sn" id="yaI-LH-R5A"/>
|
||||
@@ -25,12 +26,12 @@
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView translatesAutoresizingMaskIntoConstraints="NO" id="1">
|
||||
<rect key="frame" x="0.0" y="0.0" width="411" height="547"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="406" height="679"/>
|
||||
<subviews>
|
||||
<box autoresizesSubviews="NO" verticalHuggingPriority="500" borderType="line" title="Security" translatesAutoresizingMaskIntoConstraints="NO" id="465">
|
||||
<rect key="frame" x="17" y="16" width="377" height="381"/>
|
||||
<rect key="frame" x="17" y="146" width="372" height="381"/>
|
||||
<view key="contentView" id="mNh-3L-Z6E">
|
||||
<rect key="frame" x="3" y="3" width="371" height="363"/>
|
||||
<rect key="frame" x="3" y="3" width="366" height="363"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="431">
|
||||
@@ -48,7 +49,7 @@
|
||||
<rect key="frame" x="138" y="332" width="143" height="21"/>
|
||||
<popUpButtonCell key="cell" type="push" title="Never" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="429" id="420">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" title="ClipboardClearInterval" id="421">
|
||||
<items>
|
||||
<menuItem title="Never" state="on" id="429">
|
||||
@@ -76,7 +77,7 @@
|
||||
<rect key="frame" x="111" y="192" width="125" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="585">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" title="LockTimes" id="586">
|
||||
<items>
|
||||
<menuItem title="Never" id="804"/>
|
||||
@@ -111,8 +112,8 @@
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="5cV-xX-SUU">
|
||||
<rect key="frame" x="18" y="41" width="335" height="56"/>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="5cV-xX-SUU">
|
||||
<rect key="frame" x="18" y="41" width="330" height="56"/>
|
||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" id="ACh-7H-42N">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<string key="title">Enabling this compromises security. If enabled, your preferences will contain mappings from database to keyfile. Key locations for databases without a password will not be saved.</string>
|
||||
@@ -121,7 +122,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="oQr-FC-HkN">
|
||||
<rect key="frame" x="171" y="5" width="190" height="32"/>
|
||||
<rect key="frame" x="166" y="5" width="190" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Clear all stored locations" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="8Ri-2s-c39">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -144,8 +145,8 @@
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hy4-RL-dAa">
|
||||
<rect key="frame" x="18" y="224" width="335" height="56"/>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="hy4-RL-dAa">
|
||||
<rect key="frame" x="18" y="224" width="330" height="56"/>
|
||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" id="JGX-Tp-KJk">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<string key="title">Disabling this compromises security. If enabled, anything copied to the Clipboard in MacPass will be available on your connected iOS devices. You should clear the clipboard on those devices manually.</string>
|
||||
@@ -208,9 +209,9 @@
|
||||
</constraints>
|
||||
</box>
|
||||
<box autoresizesSubviews="NO" verticalHuggingPriority="500" borderType="line" title="File Handling" translatesAutoresizingMaskIntoConstraints="NO" id="888">
|
||||
<rect key="frame" x="17" y="399" width="377" height="128"/>
|
||||
<rect key="frame" x="17" y="531" width="372" height="128"/>
|
||||
<view key="contentView" id="cpg-tt-SHE">
|
||||
<rect key="frame" x="3" y="3" width="371" height="110"/>
|
||||
<rect key="frame" x="3" y="3" width="366" height="110"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<button verticalHuggingPriority="252" translatesAutoresizingMaskIntoConstraints="NO" id="530">
|
||||
@@ -227,8 +228,8 @@
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="3Bo-Ml-1KB">
|
||||
<rect key="frame" x="18" y="44" width="335" height="14"/>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="3Bo-Ml-1KB">
|
||||
<rect key="frame" x="18" y="44" width="330" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" title="Close and open all documents for changes to take effect" id="ya5-ps-c4W">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -247,7 +248,7 @@
|
||||
<rect key="frame" x="111" y="13" width="38" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="1R2-5t-LWk">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" id="DQY-17-yKP"/>
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
@@ -273,18 +274,71 @@
|
||||
<constraint firstItem="530" firstAttribute="top" secondItem="888" secondAttribute="top" constant="25" id="w7t-Jm-kXg"/>
|
||||
</constraints>
|
||||
</box>
|
||||
<box autoresizesSubviews="NO" verticalHuggingPriority="500" borderType="line" title="Network" translatesAutoresizingMaskIntoConstraints="NO" id="wD1-ag-7V5">
|
||||
<rect key="frame" x="17" y="16" width="372" height="126"/>
|
||||
<view key="contentView" id="bQD-ZX-d0i">
|
||||
<rect key="frame" x="3" y="3" width="366" height="108"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="fl5-Xu-nZP">
|
||||
<rect key="frame" x="14" y="81" width="113" height="16"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="16" id="kK7-bB-zKY"/>
|
||||
</constraints>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Favicon download" id="YGj-dH-duz">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField autoresizesSubviews="NO" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="MWj-9m-uGk">
|
||||
<rect key="frame" x="18" y="13" width="330" height="56"/>
|
||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" id="DaG-1a-SET">
|
||||
<font key="font" metaFont="message" size="11"/>
|
||||
<string key="title">By default web site icon is downloaded directly from entry's host URL. For some websites it doesn't work and you might prefer using 3rdparty APIs. In this case only host from the URL will be used to get the icon from selected service.</string>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<popUpButton verticalHuggingPriority="750" horizontalCompressionResistancePriority="749" translatesAutoresizingMaskIntoConstraints="NO" id="OfU-6f-oTU">
|
||||
<rect key="frame" x="131" y="76" width="38" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="mdi-Go-1bJ">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" id="Xnp-a8-ePw"/>
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="OfU-6f-oTU" secondAttribute="trailing" constant="16" id="0Wl-LS-ePD"/>
|
||||
<constraint firstItem="OfU-6f-oTU" firstAttribute="centerY" secondItem="fl5-Xu-nZP" secondAttribute="centerY" id="R81-Ij-pdy"/>
|
||||
<constraint firstItem="OfU-6f-oTU" firstAttribute="leading" secondItem="fl5-Xu-nZP" secondAttribute="trailing" constant="8" id="XS0-fl-B2Z"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<constraints>
|
||||
<constraint firstItem="MWj-9m-uGk" firstAttribute="leading" secondItem="bQD-ZX-d0i" secondAttribute="leading" constant="20" id="1AE-Eu-ceQ"/>
|
||||
<constraint firstItem="fl5-Xu-nZP" firstAttribute="top" secondItem="wD1-ag-7V5" secondAttribute="top" constant="26" id="OK9-PR-DfC"/>
|
||||
<constraint firstItem="MWj-9m-uGk" firstAttribute="top" secondItem="fl5-Xu-nZP" secondAttribute="bottom" constant="12" id="Udz-22-4O1"/>
|
||||
<constraint firstAttribute="trailing" secondItem="MWj-9m-uGk" secondAttribute="trailing" constant="20" id="hA0-ra-UeU"/>
|
||||
<constraint firstItem="fl5-Xu-nZP" firstAttribute="leading" secondItem="bQD-ZX-d0i" secondAttribute="leading" constant="16" id="hzo-40-wxR"/>
|
||||
<constraint firstAttribute="bottom" secondItem="MWj-9m-uGk" secondAttribute="bottom" constant="12" id="k80-DD-Y5l"/>
|
||||
</constraints>
|
||||
</box>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="465" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="475"/>
|
||||
<constraint firstAttribute="trailing" secondItem="465" secondAttribute="trailing" constant="20" symbolic="YES" id="525"/>
|
||||
<constraint firstItem="888" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="891"/>
|
||||
<constraint firstAttribute="trailing" secondItem="888" secondAttribute="trailing" constant="20" symbolic="YES" id="893"/>
|
||||
<constraint firstItem="888" firstAttribute="top" secondItem="1" secondAttribute="top" constant="20" symbolic="YES" id="903"/>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="400" id="918"/>
|
||||
<constraint firstAttribute="bottom" secondItem="465" secondAttribute="bottom" constant="20" symbolic="YES" id="uwq-az-XwJ"/>
|
||||
<constraint firstItem="465" firstAttribute="top" secondItem="cpg-tt-SHE" secondAttribute="bottom" constant="5" id="wyH-HB-i2U"/>
|
||||
<constraint firstItem="wD1-ag-7V5" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" id="3kp-Uf-fyC"/>
|
||||
<constraint firstItem="wD1-ag-7V5" firstAttribute="bottom" secondItem="1" secondAttribute="bottom" constant="-20" id="EeW-K0-jec"/>
|
||||
<constraint firstItem="wD1-ag-7V5" firstAttribute="top" secondItem="465" secondAttribute="bottom" constant="8" symbolic="YES" id="FsW-LX-Drs"/>
|
||||
<constraint firstItem="888" firstAttribute="top" secondItem="1" secondAttribute="top" constant="20" symbolic="YES" id="ZMP-Lv-rQh"/>
|
||||
<constraint firstAttribute="trailing" secondItem="wD1-ag-7V5" secondAttribute="trailing" constant="20" id="ccK-FL-7Wx"/>
|
||||
<constraint firstItem="465" firstAttribute="top" secondItem="888" secondAttribute="bottom" constant="8" symbolic="YES" id="wyH-HB-i2U"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="-458" y="-295"/>
|
||||
<point key="canvasLocation" x="-535" y="-327.5"/>
|
||||
</customView>
|
||||
</objects>
|
||||
</document>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14313.18" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19455" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14313.18"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19455"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -14,6 +14,7 @@
|
||||
<outlet property="expireDateSelectButton" destination="4" id="W6H-j5-GLf"/>
|
||||
<outlet property="expiresCheckButton" destination="5" id="283"/>
|
||||
<outlet property="searchPopupButton" destination="229" id="284"/>
|
||||
<outlet property="tagsTokenField" destination="5ty-ww-t4q" id="MD7-yb-kgI"/>
|
||||
<outlet property="titleTextField" destination="23" id="35"/>
|
||||
<outlet property="view" destination="37" id="45"/>
|
||||
</connections>
|
||||
@@ -21,182 +22,218 @@
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<scrollView borderType="none" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" hasVerticalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="37" customClass="HNHUIScrollView">
|
||||
<rect key="frame" x="0.0" y="0.0" width="257" height="291"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="291" height="462"/>
|
||||
<clipView key="contentView" id="HjA-kA-fcX">
|
||||
<rect key="frame" x="0.0" y="0.0" width="257" height="291"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="291" height="462"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<view translatesAutoresizingMaskIntoConstraints="NO" id="38" customClass="HNHUIScrollDocumentViewAdapter">
|
||||
<rect key="frame" x="0.0" y="0.0" width="257" height="291"/>
|
||||
<rect key="frame" x="0.0" y="65" width="291" height="397"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="24">
|
||||
<rect key="frame" x="18" y="272" width="35" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Name" id="25">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="23" customClass="HNHUITextField">
|
||||
<rect key="frame" x="20" y="242" width="217" height="22"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="26">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<outlet property="nextKeyView" destination="5" id="KV0-QE-2i4"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<button horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="5">
|
||||
<rect key="frame" x="18" y="214" width="67" height="18"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="14" id="pWR-o1-KI6"/>
|
||||
</constraints>
|
||||
<buttonCell key="cell" type="check" title="Expires" bezelStyle="regularSquare" imagePosition="left" lineBreakMode="truncatingMiddle" state="on" inset="2" id="32">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="toggleExpire:" target="-2" id="t1w-WN-Eud"/>
|
||||
<outlet property="nextKeyView" destination="4" id="Rem-Pk-yFJ"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button focusRingType="exterior" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="4">
|
||||
<rect key="frame" x="205" y="210" width="32" height="25"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="32" id="l5I-EF-dHs"/>
|
||||
</constraints>
|
||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSActionTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" focusRingType="exterior" imageScaling="proportionallyDown" inset="2" id="33">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="pickExpiryDate:" target="-1" id="KIc-p2-zJQ"/>
|
||||
<outlet property="nextKeyView" destination="229" id="12E-SZ-Mtu"/>
|
||||
</connections>
|
||||
</button>
|
||||
<popUpButton verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="229">
|
||||
<rect key="frame" x="18" y="158" width="222" height="26"/>
|
||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="230">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" title="OtherViews" id="231"/>
|
||||
</popUpButtonCell>
|
||||
<connections>
|
||||
<outlet property="nextKeyView" destination="240" id="XsX-U5-uZd"/>
|
||||
</connections>
|
||||
</popUpButton>
|
||||
<popUpButton verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="240">
|
||||
<rect key="frame" x="18" y="103" width="222" height="26"/>
|
||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="242">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" title="OtherViews" id="243"/>
|
||||
</popUpButtonCell>
|
||||
<connections>
|
||||
<outlet property="nextKeyView" destination="Fnw-qz-IZU" id="Q0q-HY-T34"/>
|
||||
</connections>
|
||||
</popUpButton>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="264">
|
||||
<rect key="frame" x="18" y="190" width="41" height="14"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Search" id="265">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="276">
|
||||
<rect key="frame" x="18" y="135" width="52" height="14"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Autotype" id="277">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Fnw-qz-IZU" customClass="HNHUITextField">
|
||||
<rect key="frame" x="20" y="50" width="217" height="22"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="VeF-V7-i2I">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<outlet property="nextKeyView" destination="1Uh-eo-H0j" id="zer-UH-73e"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6Lw-XW-x20">
|
||||
<rect key="frame" x="18" y="80" width="107" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Autotype Sequence" id="6FG-UZ-Adh">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1Uh-eo-H0j">
|
||||
<rect key="frame" x="20" y="18" width="217" height="25"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Show Plugin Data" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="qGr-oT-WjP">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="showPluginData:" target="-1" id="yjJ-Xy-m4c"/>
|
||||
<outlet property="nextKeyView" destination="23" id="x9e-ya-hiK"/>
|
||||
</connections>
|
||||
</button>
|
||||
<stackView distribution="fill" orientation="vertical" alignment="leading" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="GyB-8Z-S3Q">
|
||||
<rect key="frame" x="20" y="20" width="251" height="357"/>
|
||||
<subviews>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="24">
|
||||
<rect key="frame" x="-2" y="343" width="255" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Name" id="25">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="23" customClass="HNHUITextField">
|
||||
<rect key="frame" x="0.0" y="314" width="251" height="21"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="26">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<outlet property="nextKeyView" destination="5" id="KV0-QE-2i4"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<stackView distribution="fill" orientation="horizontal" alignment="top" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="aAt-VU-kLy">
|
||||
<rect key="frame" x="0.0" y="286" width="251" height="20"/>
|
||||
<subviews>
|
||||
<button horizontalHuggingPriority="249" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="5">
|
||||
<rect key="frame" x="-2" y="3" width="213" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Expires" bezelStyle="regularSquare" imagePosition="left" lineBreakMode="truncatingMiddle" state="on" inset="2" id="32">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="toggleExpire:" target="-2" id="t1w-WN-Eud"/>
|
||||
<outlet property="nextKeyView" destination="4" id="Rem-Pk-yFJ"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button focusRingType="exterior" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="4">
|
||||
<rect key="frame" x="218" y="-2" width="34" height="23"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="32" id="l5I-EF-dHs"/>
|
||||
</constraints>
|
||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSActionTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" focusRingType="exterior" imageScaling="proportionallyDown" inset="2" id="33">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="pickExpiryDate:" target="-1" id="KIc-p2-zJQ"/>
|
||||
<outlet property="nextKeyView" destination="229" id="12E-SZ-Mtu"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<visibilityPriorities>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
</visibilityPriorities>
|
||||
<customSpacing>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
</customSpacing>
|
||||
</stackView>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="264">
|
||||
<rect key="frame" x="-2" y="264" width="255" height="14"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Search" id="265">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<popUpButton horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="229">
|
||||
<rect key="frame" x="-3" y="232" width="258" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="230">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" title="OtherViews" id="231"/>
|
||||
</popUpButtonCell>
|
||||
<connections>
|
||||
<outlet property="nextKeyView" destination="240" id="XsX-U5-uZd"/>
|
||||
</connections>
|
||||
</popUpButton>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="276">
|
||||
<rect key="frame" x="-2" y="214" width="255" height="14"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Autotype" id="277">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<popUpButton horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="240">
|
||||
<rect key="frame" x="-3" y="182" width="258" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="242">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" title="OtherViews" id="243"/>
|
||||
</popUpButtonCell>
|
||||
<connections>
|
||||
<outlet property="nextKeyView" destination="Fnw-qz-IZU" id="Q0q-HY-T34"/>
|
||||
</connections>
|
||||
</popUpButton>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6Lw-XW-x20">
|
||||
<rect key="frame" x="-2" y="164" width="255" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Autotype Sequence" id="6FG-UZ-Adh">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Fnw-qz-IZU" customClass="HNHUITextField">
|
||||
<rect key="frame" x="0.0" y="135" width="251" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="VeF-V7-i2I">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<outlet property="nextKeyView" destination="1Uh-eo-H0j" id="zer-UH-73e"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="mpC-tZ-ivx">
|
||||
<rect key="frame" x="-2" y="113" width="255" height="14"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Tags" id="Rbf-K0-kWx">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<tokenField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="5ty-ww-t4q">
|
||||
<rect key="frame" x="0.0" y="28" width="251" height="77"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="77" id="W4K-vz-0pf"/>
|
||||
</constraints>
|
||||
<tokenFieldCell key="cell" selectable="YES" editable="YES" borderStyle="bezel" alignment="left" drawsBackground="YES" allowsEditingTextAttributes="YES" id="FfM-xQ-evx">
|
||||
<font key="font" metaFont="cellTitle"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</tokenFieldCell>
|
||||
</tokenField>
|
||||
<button horizontalHuggingPriority="249" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1Uh-eo-H0j">
|
||||
<rect key="frame" x="-7" y="-7" width="265" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Show Plugin Data" bezelStyle="rounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="qGr-oT-WjP">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="showPluginData:" target="-1" id="yjJ-Xy-m4c"/>
|
||||
<outlet property="nextKeyView" destination="23" id="x9e-ya-hiK"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<visibilityPriorities>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
</visibilityPriorities>
|
||||
<customSpacing>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
</customSpacing>
|
||||
</stackView>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" secondItem="Fnw-qz-IZU" secondAttribute="trailing" constant="20" symbolic="YES" id="3Gx-EC-k0Q"/>
|
||||
<constraint firstItem="240" firstAttribute="top" secondItem="276" secondAttribute="bottom" constant="8" id="6Pu-PB-xxy"/>
|
||||
<constraint firstItem="23" firstAttribute="leading" secondItem="38" secondAttribute="leading" constant="20" id="ABR-Ef-1ss"/>
|
||||
<constraint firstAttribute="trailing" secondItem="229" secondAttribute="trailing" constant="20" symbolic="YES" id="Anv-gp-aTi"/>
|
||||
<constraint firstAttribute="trailing" secondItem="4" secondAttribute="trailing" constant="20" id="D99-L7-ojR"/>
|
||||
<constraint firstItem="240" firstAttribute="leading" secondItem="38" secondAttribute="leading" constant="20" id="E0a-1e-KR9"/>
|
||||
<constraint firstItem="5" firstAttribute="centerY" secondItem="4" secondAttribute="centerY" id="FdF-Pn-yY2"/>
|
||||
<constraint firstItem="5" firstAttribute="top" secondItem="23" secondAttribute="bottom" constant="12" id="GFF-xs-Nuj"/>
|
||||
<constraint firstItem="Fnw-qz-IZU" firstAttribute="top" secondItem="6Lw-XW-x20" secondAttribute="bottom" constant="8" id="Gfr-Tc-ldH"/>
|
||||
<constraint firstItem="4" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="5" secondAttribute="trailing" constant="8" symbolic="YES" id="HDo-Yu-P02"/>
|
||||
<constraint firstItem="1Uh-eo-H0j" firstAttribute="top" secondItem="Fnw-qz-IZU" secondAttribute="bottom" constant="8" symbolic="YES" id="ON2-U6-flt"/>
|
||||
<constraint firstItem="24" firstAttribute="leading" secondItem="38" secondAttribute="leading" constant="20" id="OhC-BP-oPg"/>
|
||||
<constraint firstItem="6Lw-XW-x20" firstAttribute="leading" secondItem="38" secondAttribute="leading" constant="20" id="SVn-Hh-xc6"/>
|
||||
<constraint firstAttribute="trailing" secondItem="240" secondAttribute="trailing" constant="20" symbolic="YES" id="V4d-R9-46P"/>
|
||||
<constraint firstAttribute="trailing" secondItem="23" secondAttribute="trailing" constant="20" id="Vej-zI-z2w"/>
|
||||
<constraint firstItem="24" firstAttribute="top" secondItem="38" secondAttribute="top" constant="5" id="Wk6-kJ-fTY"/>
|
||||
<constraint firstItem="5" firstAttribute="leading" secondItem="38" secondAttribute="leading" constant="20" id="ZaF-lS-pN8"/>
|
||||
<constraint firstAttribute="trailing" secondItem="1Uh-eo-H0j" secondAttribute="trailing" constant="20" symbolic="YES" id="ZzC-4Z-u4x"/>
|
||||
<constraint firstItem="276" firstAttribute="top" secondItem="229" secondAttribute="bottom" constant="12" id="c0H-cE-rnF"/>
|
||||
<constraint firstItem="6Lw-XW-x20" firstAttribute="top" secondItem="240" secondAttribute="bottom" constant="12" id="hDT-8L-2eV"/>
|
||||
<constraint firstItem="23" firstAttribute="top" secondItem="24" secondAttribute="bottom" constant="8" id="kbc-Eb-FPr"/>
|
||||
<constraint firstItem="Fnw-qz-IZU" firstAttribute="leading" secondItem="38" secondAttribute="leading" constant="20" id="lGO-Wz-eF9"/>
|
||||
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="1Uh-eo-H0j" secondAttribute="bottom" constant="20" symbolic="YES" id="owP-KD-Io0"/>
|
||||
<constraint firstItem="229" firstAttribute="top" secondItem="264" secondAttribute="bottom" constant="8" id="pDa-nw-ByQ"/>
|
||||
<constraint firstItem="264" firstAttribute="leading" secondItem="38" secondAttribute="leading" constant="20" id="qnB-Pd-MqU"/>
|
||||
<constraint firstItem="1Uh-eo-H0j" firstAttribute="leading" secondItem="38" secondAttribute="leading" constant="20" symbolic="YES" id="rJf-uc-7me"/>
|
||||
<constraint firstItem="229" firstAttribute="leading" secondItem="38" secondAttribute="leading" constant="20" id="sCg-Na-ouj"/>
|
||||
<constraint firstItem="276" firstAttribute="leading" secondItem="38" secondAttribute="leading" constant="20" id="xLc-Rz-374"/>
|
||||
<constraint firstItem="264" firstAttribute="top" secondItem="5" secondAttribute="bottom" constant="12" id="xe7-ue-Wip"/>
|
||||
<constraint firstItem="GyB-8Z-S3Q" firstAttribute="top" secondItem="38" secondAttribute="top" constant="20" id="BWS-cT-xmR"/>
|
||||
<constraint firstAttribute="bottom" secondItem="GyB-8Z-S3Q" secondAttribute="bottom" constant="20" id="WaU-34-yaM"/>
|
||||
<constraint firstAttribute="trailing" secondItem="GyB-8Z-S3Q" secondAttribute="trailing" constant="20" id="q0p-sG-MEY"/>
|
||||
<constraint firstItem="GyB-8Z-S3Q" firstAttribute="leading" secondItem="38" secondAttribute="leading" constant="20" symbolic="YES" id="zeA-bC-Akz"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="38" firstAttribute="top" secondItem="HjA-kA-fcX" secondAttribute="top" id="Alo-CY-dgK"/>
|
||||
<constraint firstAttribute="bottom" secondItem="38" secondAttribute="bottom" id="FbE-Hu-Y9V"/>
|
||||
<constraint firstAttribute="trailing" secondItem="38" secondAttribute="trailing" id="HP8-rS-ooi"/>
|
||||
<constraint firstItem="38" firstAttribute="leading" secondItem="HjA-kA-fcX" secondAttribute="leading" id="h7m-U5-sA4"/>
|
||||
</constraints>
|
||||
</clipView>
|
||||
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="39">
|
||||
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="39">
|
||||
<rect key="frame" x="-100" y="-100" width="257" height="16"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="40">
|
||||
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="40">
|
||||
<rect key="frame" x="-100" y="-100" width="15" height="201"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<point key="canvasLocation" x="-2" y="132"/>
|
||||
<point key="canvasLocation" x="-805.5" y="-499"/>
|
||||
</scrollView>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSActionTemplate" width="14" height="14"/>
|
||||
<image name="NSActionTemplate" width="15" height="15"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14313.18" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14313.18"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -20,13 +20,13 @@
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<scrollView wantsLayer="YES" focusRingType="none" borderType="none" autohidesScrollers="YES" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="57" customClass="HNHUIScrollView">
|
||||
<rect key="frame" x="10" y="50" width="445" height="330"/>
|
||||
<rect key="frame" x="10" y="60" width="445" height="320"/>
|
||||
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="Gwf-zs-lPT">
|
||||
<rect key="frame" x="0.0" y="0.0" width="445" height="330"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="445" height="320"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<collectionView focusRingType="none" selectable="YES" id="58" customClass="MPCollectionView">
|
||||
<rect key="frame" x="0.0" y="0.0" width="445" height="330"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="445" height="320"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="primaryBackgroundColor" name="windowBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
<connections>
|
||||
@@ -40,13 +40,13 @@
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="60">
|
||||
<rect key="frame" x="364" y="0.0" width="16" height="268"/>
|
||||
<rect key="frame" x="429" y="0.0" width="16" height="320"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
</scrollView>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="101">
|
||||
<rect key="frame" x="330" y="19" width="115" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Use Default Icon" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="102">
|
||||
<rect key="frame" x="316" y="13" width="136" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Use Default Icon" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="102">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -55,8 +55,8 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8kv-BJ-IEk">
|
||||
<rect key="frame" x="214" y="19" width="108" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Download Icon" bezelStyle="texturedRounded" imagePosition="left" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="iaf-XW-XUo">
|
||||
<rect key="frame" x="194" y="13" width="124" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Download Icon" bezelStyle="rounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="iaf-XW-XUo">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -65,8 +65,8 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="His-4A-hcY">
|
||||
<rect key="frame" x="150" y="19" width="56" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Cancel" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="1kM-cI-P1o">
|
||||
<rect key="frame" x="120" y="13" width="76" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="1kM-cI-P1o">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -82,11 +82,11 @@
|
||||
<constraint firstItem="57" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="10" id="111"/>
|
||||
<constraint firstItem="His-4A-hcY" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="69a-Sb-jSj"/>
|
||||
<constraint firstItem="8kv-BJ-IEk" firstAttribute="baseline" secondItem="101" secondAttribute="baseline" id="Knp-g8-7FQ"/>
|
||||
<constraint firstItem="8kv-BJ-IEk" firstAttribute="leading" secondItem="His-4A-hcY" secondAttribute="trailing" constant="8" symbolic="YES" id="MZ0-p6-6MH"/>
|
||||
<constraint firstItem="8kv-BJ-IEk" firstAttribute="leading" secondItem="His-4A-hcY" secondAttribute="trailing" constant="12" symbolic="YES" id="MZ0-p6-6MH"/>
|
||||
<constraint firstItem="57" firstAttribute="top" secondItem="1" secondAttribute="top" constant="20" symbolic="YES" id="N2b-Nx-SZC"/>
|
||||
<constraint firstItem="101" firstAttribute="top" secondItem="57" secondAttribute="bottom" constant="8" symbolic="YES" id="WT3-Nh-FrW"/>
|
||||
<constraint firstItem="101" firstAttribute="top" secondItem="57" secondAttribute="bottom" constant="20" symbolic="YES" id="WT3-Nh-FrW"/>
|
||||
<constraint firstItem="His-4A-hcY" firstAttribute="baseline" secondItem="101" secondAttribute="baseline" id="fq3-rS-gvQ"/>
|
||||
<constraint firstItem="101" firstAttribute="leading" secondItem="8kv-BJ-IEk" secondAttribute="trailing" constant="8" symbolic="YES" id="nvi-CZ-a6L"/>
|
||||
<constraint firstItem="101" firstAttribute="leading" secondItem="8kv-BJ-IEk" secondAttribute="trailing" constant="12" symbolic="YES" id="nvi-CZ-a6L"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="-1175" y="-7"/>
|
||||
</customView>
|
||||
@@ -101,7 +101,7 @@
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="MEC-x9-zrX">
|
||||
<rect key="frame" x="32" y="32" width="16" height="16"/>
|
||||
<rect key="frame" x="32" y="29" width="16" height="22"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="16" id="cau-QV-8TQ"/>
|
||||
<constraint firstAttribute="height" constant="16" id="yHZ-qj-Rcy"/>
|
||||
@@ -126,7 +126,7 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="114">
|
||||
<rect key="frame" x="8" y="8" width="32" height="32"/>
|
||||
<rect key="frame" x="8" y="6.5" width="32.5" height="36"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="32" id="161"/>
|
||||
<constraint firstAttribute="height" constant="32" id="162"/>
|
||||
@@ -161,7 +161,7 @@
|
||||
</customView>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSAddTemplate" width="11" height="11"/>
|
||||
<image name="NSRefreshFreestandingTemplate" width="14" height="14"/>
|
||||
<image name="NSAddTemplate" width="14" height="13"/>
|
||||
<image name="NSRefreshFreestandingTemplate" width="15" height="15"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14313.18" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19455" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14313.18"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19455"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -23,7 +23,7 @@
|
||||
<rect key="frame" x="0.0" y="0.0" width="278" height="662"/>
|
||||
<subviews>
|
||||
<imageView translatesAutoresizingMaskIntoConstraints="NO" id="2998" customClass="MPIconImageView">
|
||||
<rect key="frame" x="20" y="620" width="32" height="32"/>
|
||||
<rect key="frame" x="20" y="617" width="32" height="38"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="32" id="3027"/>
|
||||
<constraint firstAttribute="height" constant="32" id="3028"/>
|
||||
@@ -44,7 +44,7 @@
|
||||
</connections>
|
||||
</imageView>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="3013">
|
||||
<rect key="frame" x="58" y="628" width="202" height="17"/>
|
||||
<rect key="frame" x="58" y="628" width="202" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" truncatesLastVisibleLine="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" title="Label" usesSingleLineMode="YES" id="3014">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -83,7 +83,7 @@
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2985">
|
||||
<rect key="frame" x="82" y="194" width="115" height="24"/>
|
||||
<rect key="frame" x="82" y="194" width="116" height="24"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="No Selection" id="2986">
|
||||
<font key="font" metaFont="system" size="20"/>
|
||||
<color key="textColor" name="controlShadowColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -126,7 +126,7 @@
|
||||
<rect key="frame" x="1" y="1" width="236" height="192"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textView importsGraphics="NO" richText="NO" verticallyResizable="YES" allowsNonContiguousLayout="YES" smartInsertDelete="YES" id="g24-gQ-foD" customClass="HNHUITextView">
|
||||
<textView importsGraphics="NO" richText="NO" verticallyResizable="YES" allowsUndo="YES" allowsNonContiguousLayout="YES" smartInsertDelete="YES" id="g24-gQ-foD" customClass="HNHUITextView">
|
||||
<rect key="frame" x="0.0" y="0.0" width="236" height="192"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -200,10 +200,10 @@
|
||||
<constraint firstItem="3145" firstAttribute="leading" secondItem="2894" secondAttribute="leading" id="3155"/>
|
||||
<constraint firstAttribute="bottom" secondItem="3145" secondAttribute="bottom" id="PjS-Y5-YA6"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="-224" y="-890"/>
|
||||
<point key="canvasLocation" x="-349" y="-997"/>
|
||||
</customView>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSActionTemplate" width="14" height="14"/>
|
||||
<image name="NSActionTemplate" width="15" height="15"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="MPIntegrationPreferencesController">
|
||||
<connections>
|
||||
<outlet property="alwaysShowConfirmationBeforeAutotypeCheckBox" destination="uZQ-Gd-hfu" id="6NL-Tz-7su"/>
|
||||
<outlet property="autotypeStackView" destination="j52-9L-k7c" id="Mxw-aa-elx"/>
|
||||
<outlet property="autotypeWarningTextField" destination="hMJ-Mo-xOM" id="LcH-X2-TAm"/>
|
||||
<outlet property="enableGlobalAutotypeCheckBox" destination="tik-Ar-FJg" id="yVA-bM-sSh"/>
|
||||
@@ -26,19 +27,19 @@
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView translatesAutoresizingMaskIntoConstraints="NO" id="1">
|
||||
<rect key="frame" x="0.0" y="0.0" width="400" height="449"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="411" height="520"/>
|
||||
<subviews>
|
||||
<box autoresizesSubviews="NO" verticalHuggingPriority="500" borderType="line" title="Autotype" translatesAutoresizingMaskIntoConstraints="NO" id="P9N-HM-wER">
|
||||
<rect key="frame" x="17" y="115" width="366" height="314"/>
|
||||
<rect key="frame" x="17" y="115" width="377" height="385"/>
|
||||
<view key="contentView" id="faU-Ok-HJ3">
|
||||
<rect key="frame" x="3" y="3" width="360" height="296"/>
|
||||
<rect key="frame" x="3" y="3" width="371" height="367"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<stackView orientation="vertical" alignment="leading" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" translatesAutoresizingMaskIntoConstraints="NO" id="j52-9L-k7c">
|
||||
<rect key="frame" x="16" y="17" width="328" height="269"/>
|
||||
<beginningViews>
|
||||
<textField verticalHuggingPriority="750" fixedFrame="YES" preferredMaxLayoutWidth="328" translatesAutoresizingMaskIntoConstraints="NO" id="hMJ-Mo-xOM">
|
||||
<rect key="frame" x="-2" y="227" width="332" height="42"/>
|
||||
<stackView distribution="fill" orientation="vertical" alignment="leading" horizontalStackHuggingPriority="250" verticalStackHuggingPriority="250" horizontalHuggingPriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="j52-9L-k7c">
|
||||
<rect key="frame" x="16" y="17" width="339" height="340"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="hMJ-Mo-xOM">
|
||||
<rect key="frame" x="-2" y="298" width="343" height="42"/>
|
||||
<textFieldCell key="cell" controlSize="small" id="H37-ku-aTc">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<string key="title">Autotype might not work properly. Some issues where found that prevent Autotype or Global Autotype to work. Please run the Autotype Doctor to fix those issues.</string>
|
||||
@@ -46,8 +47,8 @@
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="jai-b6-Qv4">
|
||||
<rect key="frame" x="-6" y="191" width="177" height="32"/>
|
||||
<button horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="jai-b6-Qv4">
|
||||
<rect key="frame" x="-6" y="262" width="177" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Run Autotype Doctor…" bezelStyle="rounded" alignment="center" borderStyle="border" inset="2" id="NP0-R3-m6n">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -56,26 +57,26 @@
|
||||
<action selector="runAutotypeDoctor:" target="-2" id="u2q-ab-rQY"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="tik-Ar-FJg">
|
||||
<rect key="frame" x="-2" y="174" width="162" height="18"/>
|
||||
<button horizontalHuggingPriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="tik-Ar-FJg">
|
||||
<rect key="frame" x="-2" y="245" width="343" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Enable global Autotype" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="1qb-Rd-jYu">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<stackView orientation="horizontal" alignment="centerY" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="d6A-Vb-CMt">
|
||||
<rect key="frame" x="0.0" y="146" width="328" height="22"/>
|
||||
<beginningViews>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="buI-Wb-o3V">
|
||||
<rect key="frame" x="-2" y="3" width="57" height="17"/>
|
||||
<stackView distribution="fill" orientation="horizontal" alignment="centerY" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" translatesAutoresizingMaskIntoConstraints="NO" id="d6A-Vb-CMt">
|
||||
<rect key="frame" x="0.0" y="218" width="281" height="21"/>
|
||||
<subviews>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="buI-Wb-o3V">
|
||||
<rect key="frame" x="-2" y="3" width="57" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Shortcut" id="6oN-CH-T0O">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Kvg-he-3c8" customClass="DDHotKeyTextField">
|
||||
<rect key="frame" x="61" y="0.0" width="136" height="22"/>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Kvg-he-3c8" customClass="DDHotKeyTextField">
|
||||
<rect key="frame" x="61" y="0.0" width="89" height="21"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="89" id="Mia-b8-HCZ"/>
|
||||
</constraints>
|
||||
@@ -85,15 +86,15 @@
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="f5q-EW-RHf">
|
||||
<rect key="frame" x="203" y="4" width="127" height="14"/>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="f5q-EW-RHf">
|
||||
<rect key="frame" x="156" y="4" width="127" height="14"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Shortcut is missing Key" id="Lxp-wI-yQy">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</beginningViews>
|
||||
</subviews>
|
||||
<visibilityPriorities>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
@@ -105,50 +106,66 @@
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
</customSpacing>
|
||||
</stackView>
|
||||
<button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="DAX-V8-Say">
|
||||
<rect key="frame" x="-2" y="122" width="208" height="18"/>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="uZQ-Gd-hfu">
|
||||
<rect key="frame" x="-2" y="194" width="343" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Always show confirmation before executing Autotype" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="rrU-70-Ara">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="cUt-aB-oib">
|
||||
<rect key="frame" x="-2" y="146" width="343" height="42"/>
|
||||
<textFieldCell key="cell" controlSize="small" selectable="YES" id="VjU-Hz-cu4">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<string key="title">If enabled, a dialog will show up before Autotype is executed even if only a single match was found to prevent accidental input and wrong matches</string>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button horizontalHuggingPriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="DAX-V8-Say">
|
||||
<rect key="frame" x="-2" y="122" width="343" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Include Entry Title for matches" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="tmL-dT-D0G">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="8Wz-lo-AXG">
|
||||
<rect key="frame" x="-2" y="100" width="206" height="18"/>
|
||||
<button horizontalHuggingPriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="8Wz-lo-AXG">
|
||||
<rect key="frame" x="-2" y="100" width="343" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Include Entry URL for matches" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="TzR-00-Vp3">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="TiO-ah-BlR">
|
||||
<rect key="frame" x="-2" y="78" width="239" height="18"/>
|
||||
<button horizontalHuggingPriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="TiO-ah-BlR">
|
||||
<rect key="frame" x="-2" y="78" width="343" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Include Entry URL Host for matches" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="B1D-j9-L8x">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="9MH-jx-GpG">
|
||||
<rect key="frame" x="-2" y="56" width="210" height="18"/>
|
||||
<button horizontalHuggingPriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="9MH-jx-GpG">
|
||||
<rect key="frame" x="-2" y="56" width="343" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Include Entry Tags for matches" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="rbu-G7-MT8">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="VK8-z4-2ci">
|
||||
<rect key="frame" x="-2" y="34" width="122" height="18"/>
|
||||
<button horizontalHuggingPriority="249" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="VK8-z4-2ci">
|
||||
<rect key="frame" x="-2" y="34" width="343" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Interpret ⌃ as ⌘" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="QfO-yG-l3F">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="wbP-A9-jpw">
|
||||
<rect key="frame" x="-2" y="0.0" width="332" height="28"/>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="wbP-A9-jpw">
|
||||
<rect key="frame" x="-2" y="0.0" width="343" height="28"/>
|
||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="If enabled, every {CONTROL} command will be sent as ⌘. Only disable this if you are sure you need to." id="QRy-CY-ENC">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</beginningViews>
|
||||
</subviews>
|
||||
<visibilityPriorities>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
@@ -160,6 +177,8 @@
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
</visibilityPriorities>
|
||||
<customSpacing>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
@@ -172,6 +191,8 @@
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
</customSpacing>
|
||||
</stackView>
|
||||
</subviews>
|
||||
@@ -184,9 +205,9 @@
|
||||
</constraints>
|
||||
</box>
|
||||
<box autoresizesSubviews="NO" verticalHuggingPriority="500" borderType="line" title="Preview" translatesAutoresizingMaskIntoConstraints="NO" id="VVs-b5-cX9">
|
||||
<rect key="frame" x="17" y="16" width="366" height="95"/>
|
||||
<rect key="frame" x="17" y="16" width="377" height="95"/>
|
||||
<view key="contentView" id="ww4-uR-8gP">
|
||||
<rect key="frame" x="3" y="3" width="360" height="77"/>
|
||||
<rect key="frame" x="3" y="3" width="371" height="77"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="LNw-5t-TS4">
|
||||
@@ -196,8 +217,8 @@
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="V6l-R9-hIj">
|
||||
<rect key="frame" x="14" y="17" width="332" height="28"/>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="V6l-R9-hIj">
|
||||
<rect key="frame" x="14" y="17" width="343" height="28"/>
|
||||
<textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" title="If enabled attached files will be copied to a temporary location for preview and deleted after the preview is closed." id="WmI-IB-Aso">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -220,16 +241,15 @@
|
||||
</box>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="400" id="19"/>
|
||||
<constraint firstItem="P9N-HM-wER" firstAttribute="top" secondItem="1" secondAttribute="top" constant="20" symbolic="YES" id="8fy-q5-VJy"/>
|
||||
<constraint firstAttribute="bottom" secondItem="VVs-b5-cX9" secondAttribute="bottom" constant="20" symbolic="YES" id="TZB-qe-7eg"/>
|
||||
<constraint firstItem="VVs-b5-cX9" firstAttribute="top" secondItem="P9N-HM-wER" secondAttribute="bottom" constant="8" id="VCX-JW-cBe"/>
|
||||
<constraint firstItem="VVs-b5-cX9" firstAttribute="top" secondItem="P9N-HM-wER" secondAttribute="bottom" constant="8" symbolic="YES" id="VCX-JW-cBe"/>
|
||||
<constraint firstItem="VVs-b5-cX9" firstAttribute="trailing" secondItem="P9N-HM-wER" secondAttribute="trailing" id="k9i-4T-WY0"/>
|
||||
<constraint firstAttribute="trailing" secondItem="P9N-HM-wER" secondAttribute="trailing" constant="20" id="n5w-Cw-Bbt"/>
|
||||
<constraint firstItem="P9N-HM-wER" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" id="ulV-xL-ldJ"/>
|
||||
<constraint firstItem="VVs-b5-cX9" firstAttribute="leading" secondItem="P9N-HM-wER" secondAttribute="leading" id="z4a-9C-78h"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="-558" y="-1123"/>
|
||||
<point key="canvasLocation" x="-1204" y="-1287"/>
|
||||
</customView>
|
||||
</objects>
|
||||
</document>
|
||||
|
||||
250
MacPass/Base.lproj/MPTOTPSetupViewController.xib
Normal file
250
MacPass/Base.lproj/MPTOTPSetupViewController.xib
Normal file
@@ -0,0 +1,250 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19455" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment version="101304" identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19455"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="MPTOTPSetupViewController">
|
||||
<connections>
|
||||
<outlet property="algorithmPopUpButton" destination="caF-Au-ey8" id="aZJ-ee-acD"/>
|
||||
<outlet property="digitCountPopUpButton" destination="aa3-XV-Chc" id="Ghc-Mp-R8f"/>
|
||||
<outlet property="gridView" destination="4gl-4p-0WY" id="hvW-TB-Elg"/>
|
||||
<outlet property="qrCodeImageView" destination="yS5-M0-RSB" id="s9E-ID-WQz"/>
|
||||
<outlet property="secretTextField" destination="Bt8-9X-91R" id="mtn-nj-3oO"/>
|
||||
<outlet property="timeStepStepper" destination="CgJ-Qt-NPu" id="JxC-E8-BXY"/>
|
||||
<outlet property="timeStepTextField" destination="AdN-zI-C65" id="ebN-x3-AIN"/>
|
||||
<outlet property="typePopUpButton" destination="ku7-YD-kkV" id="8zT-Y5-6Wa"/>
|
||||
<outlet property="urlTextField" destination="GJN-85-eYH" id="Y1F-zI-hLu"/>
|
||||
<outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView translatesAutoresizingMaskIntoConstraints="NO" id="Hz6-mo-xeY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="324" height="362"/>
|
||||
<subviews>
|
||||
<gridView horizontalHuggingPriority="251" xPlacement="leading" yPlacement="center" rowAlignment="firstBaseline" rowSpacing="8" translatesAutoresizingMaskIntoConstraints="NO" id="4gl-4p-0WY">
|
||||
<rect key="frame" x="20" y="60" width="284" height="282"/>
|
||||
<constraints>
|
||||
<constraint firstItem="GJN-85-eYH" firstAttribute="trailing" secondItem="Bt8-9X-91R" secondAttribute="trailing" id="9fv-9s-YwU"/>
|
||||
<constraint firstItem="AdN-zI-C65" firstAttribute="top" secondItem="caF-Au-ey8" secondAttribute="bottom" constant="8" symbolic="YES" id="GFv-3D-Ejx"/>
|
||||
<constraint firstItem="GJN-85-eYH" firstAttribute="top" secondItem="ku7-YD-kkV" secondAttribute="bottom" constant="8" symbolic="YES" id="kxe-2P-DnD"/>
|
||||
<constraint firstItem="aa3-XV-Chc" firstAttribute="top" secondItem="AdN-zI-C65" secondAttribute="bottom" constant="8" id="lWy-AW-0tB"/>
|
||||
<constraint firstItem="AdN-zI-C65" firstAttribute="trailing" secondItem="Bt8-9X-91R" secondAttribute="trailing" id="xXQ-D9-G21"/>
|
||||
</constraints>
|
||||
<rows>
|
||||
<gridRow topPadding="4" bottomPadding="4" id="T2o-We-WjN"/>
|
||||
<gridRow yPlacement="fill" id="leK-j9-Cah"/>
|
||||
<gridRow id="J7I-Uw-OQv"/>
|
||||
<gridRow id="GmF-7D-t30"/>
|
||||
<gridRow id="hS6-e9-JPg"/>
|
||||
<gridRow id="QY3-TF-Rbs"/>
|
||||
<gridRow id="0Jy-aF-Wst"/>
|
||||
</rows>
|
||||
<columns>
|
||||
<gridColumn xPlacement="trailing" id="Ar1-qh-iHT"/>
|
||||
<gridColumn id="Ecc-pj-MX9"/>
|
||||
<gridColumn id="aZO-dP-SsW"/>
|
||||
</columns>
|
||||
<gridCells>
|
||||
<gridCell row="T2o-We-WjN" column="Ar1-qh-iHT" rowAlignment="lastBaseline" id="19c-m3-M2s">
|
||||
<textField key="contentView" horizontalHuggingPriority="252" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="hh3-nA-yHV">
|
||||
<rect key="frame" x="46" y="222" width="59" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="QR Code" id="PuA-kW-t29">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="T2o-We-WjN" column="Ecc-pj-MX9" rowAlignment="none" id="jgf-mM-CW2">
|
||||
<imageView key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="yS5-M0-RSB">
|
||||
<rect key="frame" x="106" y="195" width="70" height="70"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="64" id="MhV-Ye-bQt"/>
|
||||
<constraint firstAttribute="height" constant="64" id="RRz-CV-k1H"/>
|
||||
</constraints>
|
||||
<imageCell key="cell" selectable="YES" editable="YES" alignment="left" imageScaling="proportionallyDown" imageFrameStyle="grayBezel" id="BXB-xr-hqw"/>
|
||||
<connections>
|
||||
<action selector="parseQRCode:" target="-2" id="5u9-xL-Haj"/>
|
||||
</connections>
|
||||
</imageView>
|
||||
</gridCell>
|
||||
<gridCell row="T2o-We-WjN" column="aZO-dP-SsW" xPlacement="leading" id="0bn-HV-7V1"/>
|
||||
<gridCell row="leK-j9-Cah" column="Ar1-qh-iHT" rowAlignment="none" id="fgi-y3-z17">
|
||||
<textField key="contentView" horizontalHuggingPriority="252" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="e3u-QK-K24">
|
||||
<rect key="frame" x="61" y="148" width="44" height="21"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Secret" id="ufY-IN-5UY">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="leK-j9-Cah" column="Ecc-pj-MX9" yPlacement="center" id="q9e-Zx-LIY">
|
||||
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Bt8-9X-91R">
|
||||
<rect key="frame" x="109" y="148" width="150" height="21"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="150" id="aN6-yG-12x"/>
|
||||
</constraints>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" id="N3a-bO-6va">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="leK-j9-Cah" column="aZO-dP-SsW" id="gOO-ed-C7I"/>
|
||||
<gridCell row="J7I-Uw-OQv" column="Ar1-qh-iHT" id="LYj-ea-Ou9">
|
||||
<textField key="contentView" hidden="YES" horizontalHuggingPriority="252" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="W8L-ah-Kdc">
|
||||
<rect key="frame" x="71" y="121" width="34" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Type" id="fNC-fH-sYi">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="J7I-Uw-OQv" column="Ecc-pj-MX9" id="fOz-RA-6LG">
|
||||
<popUpButton key="contentView" hidden="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ku7-YD-kkV">
|
||||
<rect key="frame" x="106" y="114" width="157" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="WbA-Ie-Txj">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" id="ger-Fr-8BF"/>
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
</gridCell>
|
||||
<gridCell row="J7I-Uw-OQv" column="aZO-dP-SsW" id="mka-sc-dDD"/>
|
||||
<gridCell row="GmF-7D-t30" column="Ar1-qh-iHT" yPlacement="center" id="Isd-CW-srQ">
|
||||
<textField key="contentView" horizontalHuggingPriority="252" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="4Ic-Nt-YlL">
|
||||
<rect key="frame" x="75" y="91" width="30" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="URL" id="Kci-xp-mLu">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="GmF-7D-t30" column="Ecc-pj-MX9" headOfMergedCell="Fpx-eQ-WAY" id="Fpx-eQ-WAY">
|
||||
<textField key="contentView" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="GJN-85-eYH">
|
||||
<rect key="frame" x="109" y="89" width="150" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" id="ZpH-Ks-BBi">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="GmF-7D-t30" column="aZO-dP-SsW" headOfMergedCell="Fpx-eQ-WAY" id="ZXy-HZ-O3a"/>
|
||||
<gridCell row="hS6-e9-JPg" column="Ar1-qh-iHT" id="5hJ-4K-a2d">
|
||||
<textField key="contentView" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="yiW-Wk-6YB">
|
||||
<rect key="frame" x="7" y="61" width="98" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Hash Algorithm" id="g3s-fk-k9Q">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="hS6-e9-JPg" column="Ecc-pj-MX9" id="6MO-n5-2Cu">
|
||||
<popUpButton key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="caF-Au-ey8">
|
||||
<rect key="frame" x="106" y="54" width="157" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="Rxs-11-LRy">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" id="zev-8W-Uhl"/>
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
</gridCell>
|
||||
<gridCell row="hS6-e9-JPg" column="aZO-dP-SsW" id="56r-vv-PhT"/>
|
||||
<gridCell row="QY3-TF-Rbs" column="Ar1-qh-iHT" id="jL5-XH-KYZ">
|
||||
<textField key="contentView" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="JOR-bN-ZYC">
|
||||
<rect key="frame" x="41" y="31" width="64" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Time step" id="hbT-mm-dIn">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="QY3-TF-Rbs" column="Ecc-pj-MX9" xPlacement="fill" id="bvB-9m-g1U">
|
||||
<textField key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="AdN-zI-C65">
|
||||
<rect key="frame" x="109" y="28" width="150" height="22"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" id="bHO-kq-GUf">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="QY3-TF-Rbs" column="aZO-dP-SsW" rowAlignment="none" id="oRW-3a-WxP">
|
||||
<stepper key="contentView" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="CgJ-Qt-NPu">
|
||||
<rect key="frame" x="262" y="25" width="19" height="28"/>
|
||||
<stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="RPy-q9-wKy"/>
|
||||
</stepper>
|
||||
</gridCell>
|
||||
<gridCell row="0Jy-aF-Wst" column="Ar1-qh-iHT" id="hWa-nU-LpX">
|
||||
<textField key="contentView" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="z5V-Af-Kpa">
|
||||
<rect key="frame" x="-2" y="1" width="107" height="18"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Number of Digits" id="iYF-F5-nMb">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="0Jy-aF-Wst" column="Ecc-pj-MX9" id="gil-83-ris">
|
||||
<popUpButton key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="aa3-XV-Chc">
|
||||
<rect key="frame" x="106" y="-4" width="157" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="rzY-5S-dIJ">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" id="XCv-uH-EcW"/>
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
</gridCell>
|
||||
<gridCell row="0Jy-aF-Wst" column="aZO-dP-SsW" id="V48-br-lpl"/>
|
||||
</gridCells>
|
||||
</gridView>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Ppm-aD-yti">
|
||||
<rect key="frame" x="193" y="13" width="118" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Save Settings" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="YGn-qt-RrI">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="save:" target="-2" id="k3D-gK-Tch"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="5a5-df-HAb">
|
||||
<rect key="frame" x="119" y="13" width="76" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Ynh-bE-30s">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<string key="keyEquivalent" base64-UTF8="YES">
|
||||
Gw
|
||||
</string>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="cancel:" target="-2" id="Z99-2L-Le6"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="5a5-df-HAb" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="3Dj-2P-0OT"/>
|
||||
<constraint firstAttribute="trailing" secondItem="4gl-4p-0WY" secondAttribute="trailing" constant="20" symbolic="YES" id="4eg-dj-7eq"/>
|
||||
<constraint firstItem="5a5-df-HAb" firstAttribute="bottom" secondItem="Ppm-aD-yti" secondAttribute="bottom" id="CZ9-Ia-TWV"/>
|
||||
<constraint firstItem="Ppm-aD-yti" firstAttribute="leading" secondItem="5a5-df-HAb" secondAttribute="trailing" constant="12" symbolic="YES" id="EXf-y0-UFR"/>
|
||||
<constraint firstItem="4gl-4p-0WY" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="20" symbolic="YES" id="QNT-yn-O32"/>
|
||||
<constraint firstItem="Ppm-aD-yti" firstAttribute="top" secondItem="4gl-4p-0WY" secondAttribute="bottom" constant="20" symbolic="YES" id="RMh-eo-ItW"/>
|
||||
<constraint firstAttribute="bottom" secondItem="Ppm-aD-yti" secondAttribute="bottom" constant="20" symbolic="YES" id="eBG-Ns-4ur"/>
|
||||
<constraint firstItem="4gl-4p-0WY" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="g3C-GL-weQ"/>
|
||||
<constraint firstAttribute="trailing" secondItem="Ppm-aD-yti" secondAttribute="trailing" constant="20" symbolic="YES" id="gxW-QO-gFu"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="-1402" y="-1030"/>
|
||||
</customView>
|
||||
</objects>
|
||||
</document>
|
||||
103
MacPass/Base.lproj/MPTOTPViewController.xib
Normal file
103
MacPass/Base.lproj/MPTOTPViewController.xib
Normal file
@@ -0,0 +1,103 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19455" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19455"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="MPTOTPViewController">
|
||||
<connections>
|
||||
<outlet property="remainingTimeButton" destination="Hxg-bd-l1O" id="QJf-RB-7JY"/>
|
||||
<outlet property="showSetupButton" destination="xge-Jc-QnB" id="BiU-0e-j2c"/>
|
||||
<outlet property="toptValueTextField" destination="xBL-Jz-VQO" id="QwC-Um-82o"/>
|
||||
<outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView id="Hz6-mo-xeY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="480" height="43"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<stackView distribution="fill" orientation="vertical" alignment="leading" horizontalStackHuggingPriority="250" verticalStackHuggingPriority="250" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Lz5-aM-o4b">
|
||||
<rect key="frame" x="0.0" y="0.0" width="480" height="43"/>
|
||||
<subviews>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="r8F-6m-CG6">
|
||||
<rect key="frame" x="-2" y="29" width="484" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="TOTP" id="mP4-nH-7TA">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<stackView distribution="fill" orientation="horizontal" alignment="centerY" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="avD-My-tnu">
|
||||
<rect key="frame" x="0.0" y="0.0" width="479" height="21"/>
|
||||
<subviews>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="xBL-Jz-VQO" customClass="HNHUITextField">
|
||||
<rect key="frame" x="0.0" y="0.0" width="406" height="21"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" truncatesLastVisibleLine="YES" selectable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="Vuy-HC-UhI">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="-2" id="pfM-gT-aXU"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Hxg-bd-l1O">
|
||||
<rect key="frame" x="414" y="2" width="26" height="18"/>
|
||||
<buttonCell key="cell" type="inline" title="30" bezelStyle="inline" alignment="center" enabled="NO" borderStyle="border" inset="2" id="roW-Uk-ff9">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="smallSystemBold"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="xge-Jc-QnB">
|
||||
<rect key="frame" x="441" y="-6" width="45" height="32"/>
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSActionTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="64a-Tn-vdd">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="showOTPSetup:" target="-2" id="bgd-gi-zp9"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<visibilityPriorities>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
</visibilityPriorities>
|
||||
<customSpacing>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
</customSpacing>
|
||||
</stackView>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" secondItem="avD-My-tnu" secondAttribute="trailing" constant="1" id="nhf-Ld-Bh4"/>
|
||||
</constraints>
|
||||
<visibilityPriorities>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
</visibilityPriorities>
|
||||
<customSpacing>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
</customSpacing>
|
||||
</stackView>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="bottom" secondItem="Lz5-aM-o4b" secondAttribute="bottom" id="JFd-zk-sz4"/>
|
||||
<constraint firstAttribute="trailing" secondItem="Lz5-aM-o4b" secondAttribute="trailing" id="vne-gZ-Ec8"/>
|
||||
<constraint firstItem="Lz5-aM-o4b" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" id="y4i-uB-HlK"/>
|
||||
<constraint firstItem="Lz5-aM-o4b" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="zFP-JZ-Qtu"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="-629" y="-23"/>
|
||||
</customView>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSActionTemplate" width="15" height="15"/>
|
||||
</resources>
|
||||
</document>
|
||||
@@ -1,8 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19455" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19455"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
|
||||
@@ -251,7 +250,7 @@ CA
|
||||
</menuItem>
|
||||
<menuItem title="Find…" tag="1" keyEquivalent="f" id="209">
|
||||
<connections>
|
||||
<action selector="perfromCustomSearch:" target="-1" id="RSR-PQ-TH1"/>
|
||||
<action selector="performCustomSearch:" target="-1" id="RSR-PQ-TH1"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -29,11 +29,11 @@
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView id="1">
|
||||
<rect key="frame" x="0.0" y="0.0" width="351" height="316"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="351" height="330"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="148">
|
||||
<rect key="frame" x="18" y="276" width="66" height="17"/>
|
||||
<rect key="frame" x="18" y="292" width="66" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Password:" id="149">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -41,7 +41,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="152">
|
||||
<rect key="frame" x="90" y="272" width="201" height="24"/>
|
||||
<rect key="frame" x="90" y="290" width="201" height="20"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="200" id="621"/>
|
||||
</constraints>
|
||||
@@ -52,11 +52,11 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<slider verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="173">
|
||||
<rect key="frame" x="88" y="246" width="205" height="19"/>
|
||||
<rect key="frame" x="88" y="256" width="205" height="28"/>
|
||||
<sliderCell key="cell" state="on" alignment="left" maxValue="100" doubleValue="50" tickMarkPosition="above" sliderType="linear" id="174"/>
|
||||
</slider>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="178">
|
||||
<rect key="frame" x="18" y="248" width="66" height="17"/>
|
||||
<rect key="frame" x="18" y="265" width="66" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Length:" id="179">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -64,7 +64,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="182">
|
||||
<rect key="frame" x="299" y="244" width="32" height="22"/>
|
||||
<rect key="frame" x="299" y="261" width="32" height="21"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="32" id="eVc-Kg-bCi"/>
|
||||
</constraints>
|
||||
@@ -76,13 +76,13 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<box autoresizesSubviews="NO" borderType="line" title="Character options" translatesAutoresizingMaskIntoConstraints="NO" id="332">
|
||||
<rect key="frame" x="17" y="88" width="317" height="119"/>
|
||||
<rect key="frame" x="17" y="102" width="317" height="120"/>
|
||||
<view key="contentView" id="f93-Su-hga">
|
||||
<rect key="frame" x="3" y="3" width="311" height="101"/>
|
||||
<rect key="frame" x="3" y="3" width="311" height="102"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="411">
|
||||
<rect key="frame" x="16" y="42" width="279" height="22"/>
|
||||
<rect key="frame" x="16" y="44" width="279" height="21"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="412" customClass="HNHUITextFieldCell">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -90,7 +90,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" tag="1" translatesAutoresizingMaskIntoConstraints="NO" id="452">
|
||||
<rect key="frame" x="16" y="72" width="36" height="19"/>
|
||||
<rect key="frame" x="16" y="73" width="36" height="19"/>
|
||||
<buttonCell key="cell" type="roundRect" title="A-Z" bezelStyle="roundedRect" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="453">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
||||
<font key="font" metaFont="cellTitle"/>
|
||||
@@ -100,7 +100,7 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" tag="2" translatesAutoresizingMaskIntoConstraints="NO" id="456">
|
||||
<rect key="frame" x="60" y="72" width="33" height="19"/>
|
||||
<rect key="frame" x="60" y="73" width="34" height="19"/>
|
||||
<buttonCell key="cell" type="roundRect" title="a-z" bezelStyle="roundedRect" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="457">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
||||
<font key="font" metaFont="cellTitle"/>
|
||||
@@ -110,7 +110,7 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" tag="4" translatesAutoresizingMaskIntoConstraints="NO" id="460">
|
||||
<rect key="frame" x="101" y="72" width="35" height="19"/>
|
||||
<rect key="frame" x="102" y="73" width="36" height="19"/>
|
||||
<buttonCell key="cell" type="roundRect" title="0-9" bezelStyle="roundedRect" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="461">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
||||
<font key="font" metaFont="cellTitle"/>
|
||||
@@ -120,7 +120,7 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" tag="8" translatesAutoresizingMaskIntoConstraints="NO" id="464">
|
||||
<rect key="frame" x="144" y="72" width="32" height="19"/>
|
||||
<rect key="frame" x="146" y="73" width="32" height="19"/>
|
||||
<buttonCell key="cell" type="roundRect" title="#!?" bezelStyle="roundedRect" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="465">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
||||
<font key="font" metaFont="cellTitle"/>
|
||||
@@ -130,7 +130,7 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="468">
|
||||
<rect key="frame" x="184" y="72" width="58" height="19"/>
|
||||
<rect key="frame" x="186" y="73" width="58" height="19"/>
|
||||
<buttonCell key="cell" type="roundRect" title="Custom" bezelStyle="roundedRect" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="469">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
||||
<font key="font" metaFont="cellTitle"/>
|
||||
@@ -140,7 +140,7 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="RDM-JY-oF9">
|
||||
<rect key="frame" x="14" y="18" width="222" height="18"/>
|
||||
<rect key="frame" x="14" y="19" width="226" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Use characters from every group" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="CMc-Uh-Fo5">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -172,8 +172,8 @@
|
||||
</constraints>
|
||||
</box>
|
||||
<button verticalHuggingPriority="750" horizontalCompressionResistancePriority="749" translatesAutoresizingMaskIntoConstraints="NO" id="494">
|
||||
<rect key="frame" x="231" y="19" width="100" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Use Password" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="495">
|
||||
<rect key="frame" x="218" y="13" width="120" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Use Password" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="495">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -182,14 +182,14 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="500">
|
||||
<rect key="frame" x="18" y="68" width="204" height="18"/>
|
||||
<rect key="frame" x="18" y="81" width="208" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Copy password to pasteboard" bezelStyle="regularSquare" imagePosition="left" inset="2" id="501">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="509">
|
||||
<rect key="frame" x="299" y="273" width="32" height="23"/>
|
||||
<rect key="frame" x="298" y="288" width="34" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSRefreshTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="510">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -199,8 +199,8 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="613">
|
||||
<rect key="frame" x="167" y="19" width="56" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Cancel" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="614">
|
||||
<rect key="frame" x="144" y="13" width="76" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="614">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -209,11 +209,11 @@
|
||||
</connections>
|
||||
</button>
|
||||
<levelIndicator verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="635">
|
||||
<rect key="frame" x="90" y="213" width="173" height="18"/>
|
||||
<rect key="frame" x="90" y="228" width="173" height="18"/>
|
||||
<levelIndicatorCell key="cell" alignment="left" doubleValue="10" maxValue="90" warningValue="55" criticalValue="30" levelIndicatorStyle="continuousCapacity" id="636" customClass="HNHUILevelIndicatorCell"/>
|
||||
</levelIndicator>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="646">
|
||||
<rect key="frame" x="18" y="215" width="66" height="17"/>
|
||||
<rect key="frame" x="18" y="230" width="66" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Entropy:" id="647">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -221,7 +221,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="652">
|
||||
<rect key="frame" x="269" y="215" width="64" height="17"/>
|
||||
<rect key="frame" x="269" y="230" width="64" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="25000 bit" id="653">
|
||||
<numberFormatter key="formatter" formatterBehavior="custom10_4" positiveFormat="# bit" negativeFormat="# bit" usesGroupingSeparator="NO" paddingCharacter="*" groupingSize="0" minimumIntegerDigits="0" maximumIntegerDigits="309" decimalSeparator="," groupingSeparator="." currencyDecimalSeparator="," plusSign="+" minusSign="-" notANumberSymbol="NaN" perMillSymbol="‰" percentSymbol="%" exponentSymbol="E" positivePrefix="" positiveSuffix=" bit" negativePrefix="-" negativeSuffix=" bit" id="681"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -230,8 +230,8 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="yil-UB-jtO">
|
||||
<rect key="frame" x="20" y="19" width="82" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Set Default" bezelStyle="texturedRounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Wvs-Md-Ob8">
|
||||
<rect key="frame" x="13" y="13" width="102" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Set Default" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Wvs-Md-Ob8">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<connections>
|
||||
@@ -240,7 +240,7 @@
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="4yb-SC-vau">
|
||||
<rect key="frame" x="18" y="48" width="231" height="18"/>
|
||||
<rect key="frame" x="18" y="59" width="235" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Use default only for selected entry" bezelStyle="regularSquare" imagePosition="left" inset="2" id="cfZ-5F-Nge">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -265,7 +265,7 @@
|
||||
<constraint firstItem="509" firstAttribute="top" secondItem="1" secondAttribute="top" constant="20" symbolic="YES" id="520"/>
|
||||
<constraint firstItem="152" firstAttribute="leading" secondItem="148" secondAttribute="trailing" constant="8" symbolic="YES" id="606"/>
|
||||
<constraint firstAttribute="bottom" secondItem="613" secondAttribute="bottom" constant="20" symbolic="YES" id="617"/>
|
||||
<constraint firstItem="494" firstAttribute="leading" secondItem="613" secondAttribute="trailing" constant="8" symbolic="YES" id="618"/>
|
||||
<constraint firstItem="494" firstAttribute="leading" secondItem="613" secondAttribute="trailing" constant="12" symbolic="YES" id="618"/>
|
||||
<constraint firstItem="173" firstAttribute="leading" secondItem="635" secondAttribute="leading" id="642"/>
|
||||
<constraint firstItem="173" firstAttribute="leading" secondItem="178" secondAttribute="trailing" constant="8" symbolic="YES" id="643"/>
|
||||
<constraint firstItem="646" firstAttribute="top" secondItem="1" secondAttribute="top" constant="84" id="648"/>
|
||||
@@ -279,14 +279,14 @@
|
||||
<constraint firstItem="652" firstAttribute="leading" secondItem="635" secondAttribute="trailing" constant="8" symbolic="YES" id="672"/>
|
||||
<constraint firstAttribute="trailing" secondItem="652" secondAttribute="trailing" constant="20" symbolic="YES" id="679"/>
|
||||
<constraint firstItem="635" firstAttribute="leading" secondItem="152" secondAttribute="leading" id="680"/>
|
||||
<constraint firstItem="613" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="yil-UB-jtO" secondAttribute="trailing" constant="8" symbolic="YES" id="59d-1n-jSa"/>
|
||||
<constraint firstItem="613" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="yil-UB-jtO" secondAttribute="trailing" constant="12" symbolic="YES" id="59d-1n-jSa"/>
|
||||
<constraint firstItem="646" firstAttribute="trailing" secondItem="178" secondAttribute="trailing" id="6kR-jk-E8r"/>
|
||||
<constraint firstItem="yil-UB-jtO" firstAttribute="leading" secondItem="500" secondAttribute="leading" id="Hic-qB-mt4"/>
|
||||
<constraint firstItem="4yb-SC-vau" firstAttribute="top" secondItem="500" secondAttribute="bottom" constant="6" id="IZo-0q-BdQ"/>
|
||||
<constraint firstItem="148" firstAttribute="trailing" secondItem="178" secondAttribute="trailing" id="KpM-xy-ZTB"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="4yb-SC-vau" secondAttribute="trailing" constant="20" symbolic="YES" id="OnS-dH-uyZ"/>
|
||||
<constraint firstItem="509" firstAttribute="leading" secondItem="182" secondAttribute="leading" id="QZ5-Ge-aq8"/>
|
||||
<constraint firstItem="613" firstAttribute="top" relation="greaterThanOrEqual" secondItem="4yb-SC-vau" secondAttribute="bottom" constant="8" symbolic="YES" id="SoR-gh-uhq"/>
|
||||
<constraint firstItem="613" firstAttribute="top" relation="greaterThanOrEqual" secondItem="4yb-SC-vau" secondAttribute="bottom" constant="20" symbolic="YES" id="SoR-gh-uhq"/>
|
||||
<constraint firstAttribute="bottom" secondItem="yil-UB-jtO" secondAttribute="bottom" constant="20" id="eYK-Hw-fyy"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="500" secondAttribute="trailing" constant="20" symbolic="YES" id="iUl-yt-JbV"/>
|
||||
<constraint firstItem="646" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="jPa-QR-GAy"/>
|
||||
@@ -297,6 +297,6 @@
|
||||
</customView>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSRefreshTemplate" width="11" height="15"/>
|
||||
<image name="NSRefreshTemplate" width="14" height="16"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
@@ -1,17 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="15705" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="18122" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="15705"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="18122"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="MPPasswordEditWindowController">
|
||||
<connections>
|
||||
<outlet property="changePasswordButton" destination="68" id="85"/>
|
||||
<outlet property="errorTextField" destination="12" id="79"/>
|
||||
<outlet property="hasPasswordSwitchButton" destination="yKc-I9-uzv" id="aUH-R4-WwP"/>
|
||||
<outlet property="keyErrorTextField" destination="ibK-Px-Fvt" id="l7h-qa-idf"/>
|
||||
<outlet property="keyfilePathControl" destination="4" id="63"/>
|
||||
<outlet property="passwordErrorTextField" destination="12" id="79"/>
|
||||
<outlet property="passwordRepeatTextField" destination="11" id="62"/>
|
||||
<outlet property="passwordTextField" destination="9" id="61"/>
|
||||
<outlet property="togglePasswordButton" destination="7" id="64"/>
|
||||
@@ -23,99 +24,13 @@
|
||||
<window title="Change Password" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="1">
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES"/>
|
||||
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
|
||||
<rect key="contentRect" x="196" y="240" width="403" height="219"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
|
||||
<view key="contentView" id="2">
|
||||
<rect key="frame" x="0.0" y="0.0" width="403" height="210"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<rect key="contentRect" x="1090" y="652" width="446" height="307"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="1680" height="1025"/>
|
||||
<view key="contentView" verticalHuggingPriority="251" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="2">
|
||||
<rect key="frame" x="0.0" y="0.0" width="369" height="217"/>
|
||||
<subviews>
|
||||
<pathControl verticalHuggingPriority="750" allowsExpansionToolTips="YES" translatesAutoresizingMaskIntoConstraints="NO" id="4" customClass="MPPathControl">
|
||||
<rect key="frame" x="105" y="87" width="242" height="25"/>
|
||||
<pathCell key="cell" selectable="YES" editable="YES" alignment="left" pathStyle="popUp" id="23" customClass="MPPathCell">
|
||||
<font key="font" metaFont="system"/>
|
||||
</pathCell>
|
||||
</pathControl>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="5">
|
||||
<rect key="frame" x="53" y="91" width="49" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Keyfile:" id="22">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="6">
|
||||
<rect key="frame" x="108" y="60" width="236" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Generate Keyfile" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="21">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="generateKey:" target="-2" id="66"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="7">
|
||||
<rect key="frame" x="352" y="145" width="31" height="23"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="31" id="59"/>
|
||||
</constraints>
|
||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSQuickLookTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="20">
|
||||
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8">
|
||||
<rect key="frame" x="352" y="89" width="31" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSStopProgressTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="19">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="clearKey:" target="-2" id="65"/>
|
||||
</connections>
|
||||
</button>
|
||||
<secureTextField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="9" customClass="HNHUISecureTextField">
|
||||
<rect key="frame" x="108" y="148" width="236" height="20"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="200" id="Gin-yR-DMk"/>
|
||||
</constraints>
|
||||
<secureTextFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="Enter Password" drawsBackground="YES" usesSingleLineMode="YES" id="18">
|
||||
<font key="font" size="13" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
<allowedInputSourceLocales>
|
||||
<string>NSAllRomanInputSourcesLocaleIdentifier</string>
|
||||
</allowedInputSourceLocales>
|
||||
</secureTextFieldCell>
|
||||
</secureTextField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="10">
|
||||
<rect key="frame" x="51" y="121" width="51" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Repeat:" id="16">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<secureTextField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="11" customClass="HNHUISecureTextField">
|
||||
<rect key="frame" x="108" y="118" width="236" height="20"/>
|
||||
<secureTextFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="Repeat Password" drawsBackground="YES" usesSingleLineMode="YES" id="15">
|
||||
<font key="font" size="13" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
<allowedInputSourceLocales>
|
||||
<string>NSAllRomanInputSourcesLocaleIdentifier</string>
|
||||
</allowedInputSourceLocales>
|
||||
</secureTextFieldCell>
|
||||
</secureTextField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="12">
|
||||
<rect key="frame" x="161" y="176" width="131" height="14"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Mismatching Passwords" id="14">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="68">
|
||||
<rect key="frame" x="240" y="13" width="149" height="32"/>
|
||||
<rect key="frame" x="213" y="13" width="143" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Change Password" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="69">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -125,7 +40,7 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="72">
|
||||
<rect key="frame" x="158" y="13" width="82" height="32"/>
|
||||
<rect key="frame" x="139" y="13" width="76" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="73">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -137,63 +52,172 @@ Gw
|
||||
<action selector="cancel:" target="-2" id="84"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button horizontalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="yKc-I9-uzv">
|
||||
<rect key="frame" x="18" y="150" width="84" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Password:" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="OQz-DA-SoY">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<gridView horizontalHuggingPriority="251" verticalHuggingPriority="750" xPlacement="leading" yPlacement="bottom" rowAlignment="none" translatesAutoresizingMaskIntoConstraints="NO" id="0Iv-td-ACj">
|
||||
<rect key="frame" x="20" y="60" width="329" height="137"/>
|
||||
<rows>
|
||||
<gridRow id="Ljm-xA-9NW"/>
|
||||
<gridRow id="Dv9-ND-6rX"/>
|
||||
<gridRow id="mNb-JP-3YX"/>
|
||||
<gridRow id="vQK-bD-mNH"/>
|
||||
<gridRow id="DIe-Hz-bd0"/>
|
||||
<gridRow id="TQt-iq-lMT"/>
|
||||
</rows>
|
||||
<columns>
|
||||
<gridColumn xPlacement="trailing" id="uaf-ph-2zN"/>
|
||||
<gridColumn xPlacement="fill" id="7oF-Xq-5de"/>
|
||||
<gridColumn xPlacement="fill" id="clB-mU-Eba"/>
|
||||
</columns>
|
||||
<gridCells>
|
||||
<gridCell row="Ljm-xA-9NW" column="uaf-ph-2zN" id="1U3-Im-v9n"/>
|
||||
<gridCell row="Ljm-xA-9NW" column="7oF-Xq-5de" id="2bp-dG-V6t">
|
||||
<textField key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="12">
|
||||
<rect key="frame" x="90" y="123" width="204" height="14"/>
|
||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="PASSWORD_ERROR" id="14">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="Ljm-xA-9NW" column="clB-mU-Eba" id="blk-az-oHS"/>
|
||||
<gridCell row="Dv9-ND-6rX" column="uaf-ph-2zN" id="JUU-XQ-60P">
|
||||
<button key="contentView" horizontalHuggingPriority="252" translatesAutoresizingMaskIntoConstraints="NO" id="yKc-I9-uzv">
|
||||
<rect key="frame" x="-2" y="96" width="88" height="22"/>
|
||||
<buttonCell key="cell" type="check" title="Password:" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="OQz-DA-SoY">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
</gridCell>
|
||||
<gridCell row="Dv9-ND-6rX" column="7oF-Xq-5de" id="cw2-er-epO">
|
||||
<secureTextField key="contentView" horizontalHuggingPriority="253" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="9" customClass="HNHUISecureTextField">
|
||||
<rect key="frame" x="92" y="97" width="200" height="20"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="200" id="gTV-5A-Fyo"/>
|
||||
</constraints>
|
||||
<secureTextFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="Enter Password" drawsBackground="YES" usesSingleLineMode="YES" id="18">
|
||||
<font key="font" size="13" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
<allowedInputSourceLocales>
|
||||
<string>NSAllRomanInputSourcesLocaleIdentifier</string>
|
||||
</allowedInputSourceLocales>
|
||||
</secureTextFieldCell>
|
||||
</secureTextField>
|
||||
</gridCell>
|
||||
<gridCell row="Dv9-ND-6rX" column="clB-mU-Eba" id="ykQ-xV-MfJ">
|
||||
<button key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="7">
|
||||
<rect key="frame" x="291" y="90" width="45" height="32"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="31" id="59"/>
|
||||
</constraints>
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSQuickLookTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="20">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
</gridCell>
|
||||
<gridCell row="mNb-JP-3YX" column="uaf-ph-2zN" id="DTm-fw-duK">
|
||||
<textField key="contentView" horizontalHuggingPriority="252" verticalHuggingPriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="10">
|
||||
<rect key="frame" x="37" y="71" width="51" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Repeat:" id="16">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="mNb-JP-3YX" column="7oF-Xq-5de" id="OBv-b8-DJs">
|
||||
<secureTextField key="contentView" verticalHuggingPriority="750" verticalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="11" customClass="HNHUISecureTextField">
|
||||
<rect key="frame" x="92" y="71" width="200" height="20"/>
|
||||
<secureTextFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="Repeat Password" drawsBackground="YES" usesSingleLineMode="YES" id="15">
|
||||
<font key="font" size="13" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
<allowedInputSourceLocales>
|
||||
<string>NSAllRomanInputSourcesLocaleIdentifier</string>
|
||||
</allowedInputSourceLocales>
|
||||
</secureTextFieldCell>
|
||||
</secureTextField>
|
||||
</gridCell>
|
||||
<gridCell row="mNb-JP-3YX" column="clB-mU-Eba" id="erv-Ur-nvi"/>
|
||||
<gridCell row="vQK-bD-mNH" column="uaf-ph-2zN" id="5U0-j9-rrv"/>
|
||||
<gridCell row="vQK-bD-mNH" column="7oF-Xq-5de" id="8JE-Wh-Sad">
|
||||
<textField key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ibK-Px-Fvt">
|
||||
<rect key="frame" x="90" y="51" width="204" height="14"/>
|
||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="KEY_ERROR" id="EOD-dE-TFa">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="vQK-bD-mNH" column="clB-mU-Eba" id="fyu-1E-DpO"/>
|
||||
<gridCell row="DIe-Hz-bd0" column="uaf-ph-2zN" id="Pjk-hs-Pb5">
|
||||
<textField key="contentView" horizontalHuggingPriority="252" verticalHuggingPriority="749" translatesAutoresizingMaskIntoConstraints="NO" id="5">
|
||||
<rect key="frame" x="39" y="26" width="49" height="19"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Keyfile:" id="22">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="DIe-Hz-bd0" column="7oF-Xq-5de" id="o9J-f7-adq">
|
||||
<pathControl key="contentView" verticalHuggingPriority="750" allowsExpansionToolTips="YES" translatesAutoresizingMaskIntoConstraints="NO" id="4" customClass="MPPathControl">
|
||||
<rect key="frame" x="89" y="22" width="206" height="25"/>
|
||||
<pathCell key="cell" selectable="YES" editable="YES" alignment="left" pathStyle="popUp" id="23" customClass="MPPathCell">
|
||||
<font key="font" metaFont="system"/>
|
||||
</pathCell>
|
||||
</pathControl>
|
||||
</gridCell>
|
||||
<gridCell row="DIe-Hz-bd0" column="clB-mU-Eba" id="miK-hQ-pkN">
|
||||
<button key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8">
|
||||
<rect key="frame" x="291" y="19" width="45" height="31"/>
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSStopProgressTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="19">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="clearKey:" target="-2" id="65"/>
|
||||
</connections>
|
||||
</button>
|
||||
</gridCell>
|
||||
<gridCell row="TQt-iq-lMT" column="uaf-ph-2zN" id="nAI-ge-Vjb"/>
|
||||
<gridCell row="TQt-iq-lMT" column="7oF-Xq-5de" id="dT5-pB-M7d">
|
||||
<button key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="6">
|
||||
<rect key="frame" x="85" y="-7" width="214" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Generate Keyfile" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="21">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="generateKey:" target="-2" id="66"/>
|
||||
</connections>
|
||||
</button>
|
||||
</gridCell>
|
||||
<gridCell row="TQt-iq-lMT" column="clB-mU-Eba" id="zle-AC-ZGd"/>
|
||||
</gridCells>
|
||||
</gridView>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="9" firstAttribute="top" secondItem="12" secondAttribute="bottom" constant="8" symbolic="YES" id="26"/>
|
||||
<constraint firstItem="4" firstAttribute="leading" secondItem="5" secondAttribute="trailing" constant="8" symbolic="YES" id="27"/>
|
||||
<constraint firstItem="10" firstAttribute="baseline" secondItem="11" secondAttribute="baseline" id="29"/>
|
||||
<constraint firstItem="7" firstAttribute="leading" secondItem="9" secondAttribute="trailing" constant="8" symbolic="YES" id="30"/>
|
||||
<constraint firstItem="4" firstAttribute="top" secondItem="11" secondAttribute="bottom" constant="8" symbolic="YES" id="35"/>
|
||||
<constraint firstItem="7" firstAttribute="top" secondItem="9" secondAttribute="top" id="36"/>
|
||||
<constraint firstItem="11" firstAttribute="leading" secondItem="10" secondAttribute="trailing" constant="8" symbolic="YES" id="37"/>
|
||||
<constraint firstItem="6" firstAttribute="top" secondItem="4" secondAttribute="bottom" constant="8" symbolic="YES" id="39"/>
|
||||
<constraint firstItem="12" firstAttribute="centerX" secondItem="9" secondAttribute="centerX" id="40"/>
|
||||
<constraint firstItem="8" firstAttribute="centerY" secondItem="4" secondAttribute="centerY" id="41"/>
|
||||
<constraint firstItem="4" firstAttribute="bottom" secondItem="5" secondAttribute="bottom" id="43"/>
|
||||
<constraint firstItem="12" firstAttribute="top" secondItem="2" secondAttribute="top" constant="20" symbolic="YES" id="53"/>
|
||||
<constraint firstAttribute="trailing" secondItem="8" secondAttribute="trailing" constant="20" symbolic="YES" id="56"/>
|
||||
<constraint firstAttribute="trailing" secondItem="7" secondAttribute="trailing" constant="20" symbolic="YES" id="57"/>
|
||||
<constraint firstAttribute="trailing" secondItem="68" secondAttribute="trailing" constant="20" symbolic="YES" id="71"/>
|
||||
<constraint firstItem="68" firstAttribute="leading" secondItem="72" secondAttribute="trailing" constant="12" symbolic="YES" id="75"/>
|
||||
<constraint firstItem="72" firstAttribute="top" secondItem="6" secondAttribute="bottom" constant="20" symbolic="YES" id="76"/>
|
||||
<constraint firstAttribute="bottom" secondItem="72" secondAttribute="bottom" constant="20" symbolic="YES" id="77"/>
|
||||
<constraint firstAttribute="bottom" secondItem="68" secondAttribute="bottom" constant="20" symbolic="YES" id="78"/>
|
||||
<constraint firstItem="5" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="2" secondAttribute="leading" constant="20" symbolic="YES" id="4Yq-mp-X3O"/>
|
||||
<constraint firstItem="4" firstAttribute="width" secondItem="11" secondAttribute="width" id="55p-Rc-8jw"/>
|
||||
<constraint firstItem="0Iv-td-ACj" firstAttribute="leading" secondItem="2" secondAttribute="leading" constant="20" symbolic="YES" id="4Gf-qW-X3R"/>
|
||||
<constraint firstItem="72" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="2" secondAttribute="leading" constant="20" symbolic="YES" id="5JM-Ve-z5Y"/>
|
||||
<constraint firstItem="8" firstAttribute="leading" secondItem="4" secondAttribute="trailing" constant="8" id="7GY-2X-nJn"/>
|
||||
<constraint firstItem="4" firstAttribute="leading" secondItem="5" secondAttribute="trailing" constant="8" id="7eR-m5-mhQ"/>
|
||||
<constraint firstItem="9" firstAttribute="baseline" secondItem="yKc-I9-uzv" secondAttribute="baseline" id="DrZ-BA-xPv"/>
|
||||
<constraint firstItem="7" firstAttribute="leading" secondItem="9" secondAttribute="trailing" constant="8" id="IqJ-u6-6jk"/>
|
||||
<constraint firstItem="yKc-I9-uzv" firstAttribute="leading" secondItem="2" secondAttribute="leading" constant="20" symbolic="YES" id="OdM-OO-kNS"/>
|
||||
<constraint firstItem="7" firstAttribute="leading" secondItem="9" secondAttribute="trailing" constant="8" symbolic="YES" id="PnG-bb-nYQ"/>
|
||||
<constraint firstItem="11" firstAttribute="top" secondItem="9" secondAttribute="bottom" constant="10" symbolic="YES" id="Qe9-z3-Wa6"/>
|
||||
<constraint firstItem="yKc-I9-uzv" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="2" secondAttribute="leading" constant="20" symbolic="YES" id="R8d-VG-2we"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="6" secondAttribute="trailing" constant="20" symbolic="YES" id="TUn-PZ-fb5"/>
|
||||
<constraint firstItem="10" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="2" secondAttribute="leading" constant="20" symbolic="YES" id="UHJ-Fx-Kkf"/>
|
||||
<constraint firstItem="6" firstAttribute="width" secondItem="11" secondAttribute="width" id="V37-mo-ah1"/>
|
||||
<constraint firstItem="9" firstAttribute="leading" secondItem="yKc-I9-uzv" secondAttribute="trailing" constant="8" symbolic="YES" id="f8B-Dm-rGD"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="12" secondAttribute="trailing" constant="20" symbolic="YES" id="hmt-qe-o3D"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="11" secondAttribute="trailing" constant="20" symbolic="YES" id="nDO-Oh-tGz"/>
|
||||
<constraint firstItem="6" firstAttribute="leading" secondItem="4" secondAttribute="leading" id="tie-Hu-X1C"/>
|
||||
<constraint firstItem="12" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="2" secondAttribute="leading" constant="20" symbolic="YES" id="ukY-Gg-KY2"/>
|
||||
<constraint firstItem="11" firstAttribute="width" secondItem="9" secondAttribute="width" id="wEk-Sj-XCb"/>
|
||||
<constraint firstItem="6" firstAttribute="leading" secondItem="11" secondAttribute="leading" id="xV3-et-ECG"/>
|
||||
<constraint firstItem="6" firstAttribute="leading" secondItem="9" secondAttribute="leading" id="zeJ-6i-fY3"/>
|
||||
<constraint firstItem="0Iv-td-ACj" firstAttribute="top" secondItem="2" secondAttribute="top" constant="20" symbolic="YES" id="FVY-mT-b2G"/>
|
||||
<constraint firstAttribute="width" relation="lessThanOrEqual" constant="400" id="mhj-K7-dob"/>
|
||||
<constraint firstAttribute="trailing" secondItem="0Iv-td-ACj" secondAttribute="trailing" constant="20" symbolic="YES" id="q2z-sU-YCn"/>
|
||||
<constraint firstItem="68" firstAttribute="top" secondItem="0Iv-td-ACj" secondAttribute="bottom" constant="20" symbolic="YES" id="s84-KY-RXX"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<point key="canvasLocation" x="-8" y="-14"/>
|
||||
<point key="canvasLocation" x="-272" y="-447.5"/>
|
||||
</window>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSQuickLookTemplate" width="19" height="12"/>
|
||||
<image name="NSStopProgressTemplate" width="11" height="11"/>
|
||||
<image name="NSQuickLookTemplate" width="21" height="13"/>
|
||||
<image name="NSStopProgressTemplate" width="14" height="13"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="15705" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="15705"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -26,7 +26,7 @@
|
||||
<rect key="frame" x="0.0" y="0.0" width="508" height="526"/>
|
||||
<subviews>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2">
|
||||
<rect key="frame" x="310" y="168" width="83" height="32"/>
|
||||
<rect key="frame" x="323" y="169" width="78" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Unlock" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="3">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -73,7 +73,7 @@ DQ
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="191" id="389"/>
|
||||
</constraints>
|
||||
<secureTextFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="Enter Password" drawsBackground="YES" usesSingleLineMode="YES" id="339">
|
||||
<secureTextFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="Enter Password" drawsBackground="YES" usesSingleLineMode="YES" id="339" customClass="HNHUISecureTextFieldCell">
|
||||
<font key="font" size="13" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -86,15 +86,15 @@ DQ
|
||||
</connections>
|
||||
</secureTextField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="408">
|
||||
<rect key="frame" x="358" y="250" width="29" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSQuickLookTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="409">
|
||||
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
||||
<rect key="frame" x="351" y="246" width="50" height="32"/>
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSQuickLookTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="409">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="486">
|
||||
<rect key="frame" x="358" y="220" width="29" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSStopProgressTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="487">
|
||||
<rect key="frame" x="351" y="216" width="50" height="32"/>
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSStopProgressTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="487">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -103,14 +103,14 @@ DQ
|
||||
</connections>
|
||||
</button>
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="d8O-Ha-rrS">
|
||||
<rect key="frame" x="72" y="254" width="81" height="18"/>
|
||||
<rect key="frame" x="66" y="254" width="85" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Password" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="IU9-5u-jn9">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2pb-ZG-spA">
|
||||
<rect key="frame" x="228" y="168" width="82" height="32"/>
|
||||
<rect key="frame" x="249" y="169" width="76" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="erj-mR-UyO">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -151,7 +151,6 @@ Gw
|
||||
<constraint firstItem="486" firstAttribute="leading" secondItem="408" secondAttribute="leading" id="490"/>
|
||||
<constraint firstItem="408" firstAttribute="trailing" secondItem="486" secondAttribute="trailing" id="492"/>
|
||||
<constraint firstItem="2" firstAttribute="trailing" secondItem="486" secondAttribute="trailing" id="496"/>
|
||||
<constraint firstItem="408" firstAttribute="leading" secondItem="338" secondAttribute="trailing" constant="8" symbolic="YES" id="7qE-8F-QgB"/>
|
||||
<constraint firstItem="2pb-ZG-spA" firstAttribute="baseline" secondItem="2" secondAttribute="baseline" id="9nK-MH-Ozs"/>
|
||||
<constraint firstItem="txI-yI-5nE" firstAttribute="trailing" secondItem="241" secondAttribute="trailing" id="AVL-HO-SMq"/>
|
||||
<constraint firstItem="17" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="EOa-K4-v7J"/>
|
||||
@@ -169,7 +168,7 @@ Gw
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="02_MessageBoxWarningTemplate" width="16" height="16"/>
|
||||
<image name="NSQuickLookTemplate" width="19" height="12"/>
|
||||
<image name="NSStopProgressTemplate" width="11" height="11"/>
|
||||
<image name="NSQuickLookTemplate" width="21" height="13"/>
|
||||
<image name="NSStopProgressTemplate" width="14" height="13"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14460.31"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -20,11 +20,11 @@
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView id="Hz6-mo-xeY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="410" height="220"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="410" height="214"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="KQ1-tZ-qja" customClass="HNHUISecureTextField">
|
||||
<rect key="frame" x="20" y="74" width="278" height="24"/>
|
||||
<rect key="frame" x="20" y="72" width="262" height="20"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" enabled="NO" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="Wi0-xp-KgI">
|
||||
<font key="font" size="13" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -32,28 +32,27 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="hKI-WP-N93">
|
||||
<rect key="frame" x="361.5" y="74" width="29" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSQuickLookTemplate" imagePosition="only" alignment="center" lineBreakMode="truncatingTail" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="95g-dp-50Q">
|
||||
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
||||
<rect key="frame" x="347" y="65" width="50" height="32"/>
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSQuickLookTemplate" imagePosition="only" alignment="center" lineBreakMode="truncatingTail" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="95g-dp-50Q">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<scrollView horizontalLineScroll="26" horizontalPageScroll="10" verticalLineScroll="26" verticalPageScroll="10" hasVerticalScroller="NO" usesPredominantAxisScrolling="NO" verticalScrollElasticity="none" translatesAutoresizingMaskIntoConstraints="NO" id="MVS-ug-wys">
|
||||
<rect key="frame" x="20" y="106" width="370" height="64"/>
|
||||
<rect key="frame" x="20" y="100" width="370" height="64"/>
|
||||
<clipView key="contentView" drawsBackground="NO" id="8aa-cB-mUF">
|
||||
<rect key="frame" x="1" y="0.0" width="368" height="63"/>
|
||||
<rect key="frame" x="1" y="1" width="368" height="62"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" selectionHighlightStyle="none" columnReordering="NO" columnResizing="NO" multipleSelection="NO" emptySelection="NO" autosaveColumns="NO" typeSelect="NO" rowHeight="24" rowSizeStyle="systemDefault" headerView="GRO-H1-N4r" viewBased="YES" id="KJq-FZ-rAE">
|
||||
<rect key="frame" x="0.0" y="0.0" width="368" height="40"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="368" height="39"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<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="365" minWidth="40" maxWidth="1000" id="Q1b-ir-hyW">
|
||||
<tableColumn width="356" minWidth="40" maxWidth="1000" id="Q1b-ir-hyW">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||
</tableHeaderCell>
|
||||
@@ -104,13 +103,13 @@
|
||||
<rect key="frame" x="-100" y="-100" width="15" height="102"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<tableHeaderView key="headerView" id="GRO-H1-N4r">
|
||||
<tableHeaderView key="headerView" wantsLayer="YES" id="GRO-H1-N4r">
|
||||
<rect key="frame" x="0.0" y="0.0" width="368" height="23"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</tableHeaderView>
|
||||
</scrollView>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="k8l-uy-C3l">
|
||||
<rect key="frame" x="313" y="13" width="83" height="32"/>
|
||||
<rect key="frame" x="319" y="13" width="78" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Submit" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="8vP-Ka-vsA">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -120,8 +119,8 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Y8X-Bm-qLt">
|
||||
<rect key="frame" x="305.5" y="74" width="49" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Reset" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Emo-pg-Mfe">
|
||||
<rect key="frame" x="283" y="65" width="70" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Reset" bezelStyle="rounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Emo-pg-Mfe">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -130,7 +129,7 @@
|
||||
</connections>
|
||||
</button>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="e2q-qh-Zlv">
|
||||
<rect key="frame" x="167" y="49" width="76" height="17"/>
|
||||
<rect key="frame" x="167" y="48" width="76" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="StatusLabel" id="M3h-q8-FLO">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -138,7 +137,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="wAr-f2-ZUQ">
|
||||
<rect key="frame" x="18" y="178" width="374" height="22"/>
|
||||
<rect key="frame" x="18" y="172" width="374" height="22"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="MessageLabel" id="sHz-kg-YJQ">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -174,6 +173,6 @@
|
||||
</customView>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSQuickLookTemplate" width="19" height="12"/>
|
||||
<image name="NSQuickLookTemplate" width="21" height="13"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -19,7 +19,7 @@
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="BDL-W9-psF">
|
||||
<rect key="frame" x="18" y="341" width="237" height="17"/>
|
||||
<rect key="frame" x="18" y="342" width="237" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Please pick a field value to be inserted" id="aJS-22-6Va">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -27,7 +27,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="n1E-iQ-yd7">
|
||||
<rect key="frame" x="381" y="13" width="79" height="32"/>
|
||||
<rect key="frame" x="387" y="13" width="74" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Select" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="6Wi-9i-Tcb">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -40,21 +40,20 @@ DQ
|
||||
</connections>
|
||||
</button>
|
||||
<scrollView autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nlF-dy-Ttg">
|
||||
<rect key="frame" x="20" y="61" width="434" height="272"/>
|
||||
<rect key="frame" x="20" y="60" width="434" height="274"/>
|
||||
<clipView key="contentView" id="am4-w0-FSd">
|
||||
<rect key="frame" x="1" y="0.0" width="432" height="271"/>
|
||||
<rect key="frame" x="1" y="1" width="432" height="272"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnReordering="NO" multipleSelection="NO" autosaveColumns="NO" rowSizeStyle="automatic" headerView="jX4-Gp-btT" viewBased="YES" id="5xi-x0-G4W">
|
||||
<rect key="frame" x="0.0" y="0.0" width="436" height="248"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="445" height="249"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<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="118" minWidth="40" maxWidth="1000" id="0H9-DW-Jyj">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" title="Field">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||
</tableHeaderCell>
|
||||
@@ -66,11 +65,11 @@ DQ
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView identifier="DataCell" id="s1C-7e-04S">
|
||||
<rect key="frame" x="1" y="1" width="118" height="17"/>
|
||||
<rect key="frame" x="1" y="1" width="123" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ADN-XZ-Lq7">
|
||||
<rect key="frame" x="0.0" y="0.0" width="118" height="17"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="123" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="e8U-mE-mZh">
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -84,11 +83,11 @@ DQ
|
||||
</connections>
|
||||
</tableCellView>
|
||||
<tableCellView identifier="HeaderCell" id="wpe-VG-m1j">
|
||||
<rect key="frame" x="1" y="20" width="118" height="17"/>
|
||||
<rect key="frame" x="1" y="20" width="123" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6sH-Uk-P1B">
|
||||
<rect key="frame" x="0.0" y="0.0" width="118" height="17"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="123" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Header View Cell" id="kTy-VO-Xlg">
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -105,7 +104,6 @@ DQ
|
||||
</tableColumn>
|
||||
<tableColumn width="312" minWidth="40" maxWidth="1000" id="rVo-ud-5fs">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" title="Value">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||
</tableHeaderCell>
|
||||
@@ -125,15 +123,15 @@ DQ
|
||||
</subviews>
|
||||
</clipView>
|
||||
<scroller key="horizontalScroller" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="RHy-ph-0lP">
|
||||
<rect key="frame" x="1" y="255" width="432" height="16"/>
|
||||
<rect key="frame" x="1" y="257" width="432" height="16"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="b5D-WW-IPI">
|
||||
<rect key="frame" x="224" y="17" width="15" height="102"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<tableHeaderView key="headerView" id="jX4-Gp-btT">
|
||||
<rect key="frame" x="0.0" y="0.0" width="436" height="23"/>
|
||||
<tableHeaderView key="headerView" wantsLayer="YES" id="jX4-Gp-btT">
|
||||
<rect key="frame" x="0.0" y="0.0" width="445" height="23"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</tableHeaderView>
|
||||
</scrollView>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14313.18" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14313.18"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -15,25 +15,24 @@
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView id="Hz6-mo-xeY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="287" height="474"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="287" height="472"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<scrollView borderType="line" autohidesScrollers="YES" horizontalLineScroll="56" horizontalPageScroll="10" verticalLineScroll="56" verticalPageScroll="10" usesPredominantAxisScrolling="NO" horizontalScrollElasticity="none" translatesAutoresizingMaskIntoConstraints="NO" id="eUU-kx-L3U" customClass="HNHUIScrollView">
|
||||
<rect key="frame" x="16" y="50" width="255" height="382"/>
|
||||
<rect key="frame" x="16" y="48" width="255" height="382"/>
|
||||
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="cgV-6Q-xC5">
|
||||
<rect key="frame" x="1" y="1" width="253" height="380"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" selectionHighlightStyle="none" columnSelection="YES" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" rowHeight="54" rowSizeStyle="automatic" viewBased="YES" id="p6e-PR-zyQ">
|
||||
<rect key="frame" x="0.0" y="0.0" width="253" height="380"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<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="250" minWidth="40" maxWidth="1000" id="t3Y-fx-P5b">
|
||||
<tableColumn width="241" minWidth="40" maxWidth="1000" id="t3Y-fx-P5b">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" white="0.33333298560000002" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</tableHeaderCell>
|
||||
@@ -72,11 +71,11 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="K3k-BF-ag9">
|
||||
<rect key="frame" x="217" y="8" width="32" height="25"/>
|
||||
<rect key="frame" x="210" y="4" width="46" height="32"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="32" id="UXw-HR-Aqw"/>
|
||||
</constraints>
|
||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSRemoveTemplate" imagePosition="overlaps" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="11n-xu-gUH">
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSRemoveTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="11n-xu-gUH">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -107,21 +106,22 @@
|
||||
</connections>
|
||||
</tableView>
|
||||
</subviews>
|
||||
<nil key="backgroundColor"/>
|
||||
</clipView>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="200" id="PWI-m3-nSC"/>
|
||||
</constraints>
|
||||
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="x6X-UZ-xSg">
|
||||
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="x6X-UZ-xSg">
|
||||
<rect key="frame" x="1" y="317" width="253" height="16"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="NO" id="YJP-Wl-Ugv">
|
||||
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="YJP-Wl-Ugv">
|
||||
<rect key="frame" x="224" y="17" width="15" height="102"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
</scrollView>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ZhC-nS-vfd">
|
||||
<rect key="frame" x="18" y="440" width="63" height="14"/>
|
||||
<rect key="frame" x="18" y="438" width="63" height="14"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Plugin data" id="unO-bO-8v0">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -129,8 +129,8 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="wUR-gA-36a">
|
||||
<rect key="frame" x="186" y="18" width="81" height="25"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Remove All" bezelStyle="texturedRounded" imagePosition="overlaps" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="6hH-Hc-gf4">
|
||||
<rect key="frame" x="172" y="13" width="102" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Remove All" bezelStyle="rounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="6hH-Hc-gf4">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -154,6 +154,6 @@
|
||||
</customView>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSRemoveTemplate" width="11" height="11"/>
|
||||
<image name="NSRemoveTemplate" width="14" height="4"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="15705" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="15705"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -22,19 +22,19 @@
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView translatesAutoresizingMaskIntoConstraints="NO" id="Hz6-mo-xeY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="607" height="502"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="607" height="542"/>
|
||||
<subviews>
|
||||
<box borderType="line" title="Box" titlePosition="noTitle" translatesAutoresizingMaskIntoConstraints="NO" id="vBs-Ga-aq0">
|
||||
<rect key="frame" x="175" y="46" width="415" height="306"/>
|
||||
<rect key="frame" x="175" y="56" width="415" height="330"/>
|
||||
<view key="contentView" id="tD5-Na-7XI">
|
||||
<rect key="frame" x="3" y="3" width="409" height="300"/>
|
||||
<rect key="frame" x="3" y="3" width="409" height="324"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<customView translatesAutoresizingMaskIntoConstraints="NO" id="wIk-iw-Tcz">
|
||||
<rect key="frame" x="20" y="20" width="369" height="260"/>
|
||||
<rect key="frame" x="20" y="20" width="369" height="284"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="qPL-FR-ky7">
|
||||
<rect key="frame" x="18" y="224" width="333" height="16"/>
|
||||
<rect key="frame" x="18" y="248" width="333" height="16"/>
|
||||
<textFieldCell key="cell" controlSize="mini" sendsActionOnEndEditing="YES" title="Plugin Settings Info" id="OOr-SW-jZb">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -59,14 +59,14 @@
|
||||
</view>
|
||||
</box>
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="CqP-oK-S8k">
|
||||
<rect key="frame" x="18" y="422" width="159" height="18"/>
|
||||
<rect key="frame" x="18" y="459" width="163" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Load unsecure Plugins" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="C4B-6z-ZqX">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="aoG-FD-ds8">
|
||||
<rect key="frame" x="18" y="388" width="571" height="28"/>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="aoG-FD-ds8">
|
||||
<rect key="frame" x="18" y="424" width="571" height="28"/>
|
||||
<textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" id="2bX-8S-9XM">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<string key="title">If enabled, Plugins without proper signatures will be allowed to load. Keep in mind, that Plugins have full access to your data! Changes take affect on restart.</string>
|
||||
@@ -75,21 +75,20 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<scrollView autohidesScrollers="YES" horizontalLineScroll="37" horizontalPageScroll="10" verticalLineScroll="37" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fCk-fL-jU8">
|
||||
<rect key="frame" x="20" y="50" width="150" height="300"/>
|
||||
<rect key="frame" x="20" y="60" width="150" height="324"/>
|
||||
<clipView key="contentView" id="lTL-Q2-k45">
|
||||
<rect key="frame" x="1" y="1" width="148" height="298"/>
|
||||
<rect key="frame" x="1" y="1" width="148" height="322"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<tableView verticalHuggingPriority="750" ambiguous="YES" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnReordering="NO" columnSelection="YES" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" rowHeight="35" usesAutomaticRowHeights="YES" viewBased="YES" id="Ocu-C0-03d">
|
||||
<rect key="frame" x="0.0" y="0.0" width="148" height="298"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnReordering="NO" columnSelection="YES" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" rowHeight="35" usesAutomaticRowHeights="YES" viewBased="YES" id="Ocu-C0-03d">
|
||||
<rect key="frame" x="0.0" y="0.0" width="148" height="322"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<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="145" minWidth="40" maxWidth="1000" id="kNH-wp-Drp">
|
||||
<tableColumn width="136" minWidth="40" maxWidth="1000" id="kNH-wp-Drp">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||
</tableHeaderCell>
|
||||
@@ -154,12 +153,13 @@
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
</scrollView>
|
||||
<segmentedControl verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="B9Q-hq-K4N">
|
||||
<rect key="frame" x="19.5" y="19" width="71" height="23"/>
|
||||
<segmentedCell key="cell" borderStyle="border" alignment="left" style="texturedSquare" trackingMode="momentary" id="cj3-R6-g1E">
|
||||
<segmentedControl verticalHuggingPriority="750" id="B9Q-hq-K4N">
|
||||
<rect key="frame" x="17" y="18" width="63" height="36"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<segmentedCell key="cell" borderStyle="border" alignment="left" style="rounded" trackingMode="momentary" id="cj3-R6-g1E">
|
||||
<font key="font" metaFont="system"/>
|
||||
<segments>
|
||||
<segment image="NSAddTemplate" width="32"/>
|
||||
<segment image="NSAddTemplate" width="24"/>
|
||||
<segment image="NSRemoveTemplate" width="32" tag="1"/>
|
||||
</segments>
|
||||
</segmentedCell>
|
||||
@@ -168,8 +168,8 @@
|
||||
</connections>
|
||||
</segmentedControl>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="SNe-cc-CZs">
|
||||
<rect key="frame" x="413.5" y="19" width="174" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Browse Available Plugins…" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="sqO-8H-n1y">
|
||||
<rect key="frame" x="400" y="13" width="194" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Browse Available Plugins…" bezelStyle="rounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="sqO-8H-n1y">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -178,21 +178,21 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="XIl-03-JZP">
|
||||
<rect key="frame" x="18" y="356" width="250" height="18"/>
|
||||
<rect key="frame" x="18" y="391" width="254" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Force loading of incompatible Plugins" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="yak-fS-jtA">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="K0z-aD-K2P">
|
||||
<rect key="frame" x="18" y="466" width="243" height="18"/>
|
||||
<rect key="frame" x="18" y="505" width="247" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Download current Plugin information" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="uHR-uL-Ddm">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="nrf-Hz-0vB">
|
||||
<rect key="frame" x="18" y="446" width="349" height="14"/>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="nrf-Hz-0vB">
|
||||
<rect key="frame" x="18" y="484" width="349" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" selectable="YES" title="If enabled, a remote connection is established to macpassapp.org" id="i3S-9b-Bpf">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -223,18 +223,18 @@
|
||||
<constraint firstItem="nrf-Hz-0vB" firstAttribute="top" secondItem="K0z-aD-K2P" secondAttribute="bottom" constant="8" symbolic="YES" id="ohE-9y-xO4"/>
|
||||
<constraint firstItem="XIl-03-JZP" firstAttribute="leading" secondItem="CqP-oK-S8k" secondAttribute="leading" id="oqX-wa-jm0"/>
|
||||
<constraint firstItem="K0z-aD-K2P" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="20" symbolic="YES" id="q4N-Jc-F3L"/>
|
||||
<constraint firstItem="SNe-cc-CZs" firstAttribute="top" secondItem="vBs-Ga-aq0" secondAttribute="bottom" constant="8" symbolic="YES" id="r4X-iM-iYU"/>
|
||||
<constraint firstItem="SNe-cc-CZs" firstAttribute="top" secondItem="vBs-Ga-aq0" secondAttribute="bottom" constant="20" symbolic="YES" id="r4X-iM-iYU"/>
|
||||
<constraint firstItem="CqP-oK-S8k" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" id="rN1-3Z-BBi"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="XIl-03-JZP" secondAttribute="trailing" constant="20" symbolic="YES" id="rkN-ew-RtP"/>
|
||||
<constraint firstItem="fCk-fL-jU8" firstAttribute="top" secondItem="XIl-03-JZP" secondAttribute="bottom" constant="8" symbolic="YES" id="vl9-MY-WW1"/>
|
||||
<constraint firstItem="vBs-Ga-aq0" firstAttribute="leading" secondItem="fCk-fL-jU8" secondAttribute="trailing" constant="8" id="xNu-Sj-xQO"/>
|
||||
<constraint firstItem="aoG-FD-ds8" firstAttribute="top" secondItem="CqP-oK-S8k" secondAttribute="bottom" constant="8" symbolic="YES" id="zSW-h3-BrT"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="179" y="115"/>
|
||||
<point key="canvasLocation" x="169" y="6"/>
|
||||
</customView>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSAddTemplate" width="11" height="11"/>
|
||||
<image name="NSRemoveTemplate" width="11" height="11"/>
|
||||
<image name="NSAddTemplate" width="14" height="13"/>
|
||||
<image name="NSRemoveTemplate" width="14" height="4"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -15,26 +15,25 @@
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView id="Hz6-mo-xeY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="638" height="513"/>
|
||||
<customView misplaced="YES" id="Hz6-mo-xeY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="628" height="488"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<scrollView autohidesScrollers="YES" horizontalLineScroll="26" horizontalPageScroll="10" verticalLineScroll="26" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="V1g-KK-vjw">
|
||||
<rect key="frame" x="20" y="74" width="598" height="419"/>
|
||||
<rect key="frame" x="20" y="72" width="573" height="372"/>
|
||||
<clipView key="contentView" id="Sqy-VI-iH4">
|
||||
<rect key="frame" x="1" y="0.0" width="596" height="418"/>
|
||||
<rect key="frame" x="1" y="1" width="571" height="370"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="sequential" alternatingRowBackgroundColors="YES" columnReordering="NO" columnResizing="NO" multipleSelection="NO" emptySelection="NO" autosaveColumns="NO" rowHeight="24" rowSizeStyle="systemDefault" headerView="uVe-04-Now" viewBased="YES" id="gDR-Fx-c0h">
|
||||
<rect key="frame" x="0.0" y="0.0" width="599" height="395"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="608" height="347"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<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="145" minWidth="10" maxWidth="3.4028234663852886e+38" id="Nzo-rR-Hfx">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left" title="Plugin">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</tableHeaderCell>
|
||||
@@ -46,11 +45,11 @@
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView id="Uuc-Kh-oDl">
|
||||
<rect key="frame" x="1" y="1" width="145" height="17"/>
|
||||
<rect key="frame" x="1" y="1" width="150" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6fB-f9-l44">
|
||||
<rect key="frame" x="0.0" y="0.0" width="145" height="17"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="150" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="DRt-Gz-DUm">
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -67,7 +66,6 @@
|
||||
</tableColumn>
|
||||
<tableColumn width="88" minWidth="10" maxWidth="3.4028234663852886e+38" id="hFg-AD-SqD">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left" title="Latest Version">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</tableHeaderCell>
|
||||
@@ -79,7 +77,7 @@
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView id="AKl-7g-maS">
|
||||
<rect key="frame" x="149" y="1" width="88" height="17"/>
|
||||
<rect key="frame" x="154" y="1" width="88" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="gZz-x5-KVH">
|
||||
@@ -100,7 +98,6 @@
|
||||
</tableColumn>
|
||||
<tableColumn width="357" minWidth="10" maxWidth="3.4028234663852886e+38" id="g1Q-BS-vCR">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left" title="Status">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</tableHeaderCell>
|
||||
@@ -112,11 +109,11 @@
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView id="RMm-PO-UNp" customClass="MPPluginStatusTableCellView">
|
||||
<rect key="frame" x="240" y="1" width="357" height="17"/>
|
||||
<rect key="frame" x="245" y="1" width="361" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="RBa-0B-xVt">
|
||||
<rect key="frame" x="0.0" y="0.0" width="96" height="17"/>
|
||||
<rect key="frame" x="0.0" y="1" width="96" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="ZIf-CU-gh7">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -124,7 +121,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="tVV-rz-Aff">
|
||||
<rect key="frame" x="291" y="-1" width="46" height="19"/>
|
||||
<rect key="frame" x="294" y="-1" width="48" height="19"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Action" bezelStyle="texturedRounded" alignment="center" controlSize="small" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="6jQ-Uk-uqD">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
@@ -160,20 +157,20 @@
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="400" id="gYM-eK-y5v"/>
|
||||
</constraints>
|
||||
<scroller key="horizontalScroller" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="ajb-Vb-WhY">
|
||||
<rect key="frame" x="1" y="402" width="596" height="16"/>
|
||||
<rect key="frame" x="1" y="355" width="571" height="16"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="3eJ-oK-GNt">
|
||||
<rect key="frame" x="224" y="17" width="15" height="102"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<tableHeaderView key="headerView" id="uVe-04-Now">
|
||||
<rect key="frame" x="0.0" y="0.0" width="599" height="23"/>
|
||||
<tableHeaderView key="headerView" wantsLayer="YES" id="uVe-04-Now">
|
||||
<rect key="frame" x="0.0" y="0.0" width="608" height="23"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</tableHeaderView>
|
||||
</scrollView>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="bGv-Zc-Vrk">
|
||||
<rect key="frame" x="14" y="13" width="87" height="32"/>
|
||||
<rect key="frame" x="13" y="13" width="82" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Refresh" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="NZw-nO-lZ3">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -183,7 +180,7 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Pkh-la-7FU">
|
||||
<rect key="frame" x="552" y="13" width="72" height="32"/>
|
||||
<rect key="frame" x="514" y="13" width="66" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Done" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="j9a-fn-Pye">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -193,7 +190,7 @@
|
||||
</connections>
|
||||
</button>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="d2Q-7O-ilP">
|
||||
<rect key="frame" x="110" y="49" width="72" height="17"/>
|
||||
<rect key="frame" x="110" y="48" width="72" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Updated at" id="DhR-ED-6gV">
|
||||
<dateFormatter key="formatter" dateStyle="short" timeStyle="medium" doesRelativeDateFormatting="YES" id="0Ll-SA-lFN"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -202,7 +199,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="fjQ-ni-Ayx">
|
||||
<rect key="frame" x="18" y="49" width="88" height="17"/>
|
||||
<rect key="frame" x="18" y="48" width="88" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Last updated:" id="ntD-sJ-NRw">
|
||||
<dateFormatter key="formatter" dateStyle="short" timeStyle="medium" doesRelativeDateFormatting="YES" id="fJu-2Q-skm"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="15702" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="15702"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -18,11 +18,11 @@
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView id="c22-O7-iKe">
|
||||
<rect key="frame" x="0.0" y="0.0" width="207" height="213"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="219" height="209"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="IZP-Gd-jdU">
|
||||
<rect key="frame" x="13" y="151" width="83" height="23"/>
|
||||
<rect key="frame" x="10" y="146" width="96" height="25"/>
|
||||
<popUpButtonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="KPf-xE-gde">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
@@ -37,7 +37,7 @@
|
||||
</connections>
|
||||
</popUpButton>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="IFf-vC-3vk" customClass="HNHUITextField">
|
||||
<rect key="frame" x="13" y="101" width="174" height="21"/>
|
||||
<rect key="frame" x="13" y="99" width="186" height="21"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="100" id="Seu-01-P53"/>
|
||||
</constraints>
|
||||
@@ -48,14 +48,14 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="T2o-aJ-JmD">
|
||||
<rect key="frame" x="149" y="19" width="38" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Use" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Kqx-qm-nMG">
|
||||
<rect key="frame" x="148" y="13" width="58" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Use" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Kqx-qm-nMG">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="VR5-Rx-ueN">
|
||||
<rect key="frame" x="102" y="182" width="24" height="14"/>
|
||||
<rect key="frame" x="108" y="178" width="24" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Key" id="K1t-OZ-ACe">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -63,7 +63,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="sZo-ie-Asw">
|
||||
<rect key="frame" x="11" y="182" width="58" height="14"/>
|
||||
<rect key="frame" x="11" y="178" width="58" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Reference" id="r1V-VE-ngy">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -71,10 +71,10 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<popUpButton horizontalHuggingPriority="249" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="b4e-k2-WPS">
|
||||
<rect key="frame" x="104" y="151" width="83" height="23"/>
|
||||
<rect key="frame" x="107" y="146" width="96" height="25"/>
|
||||
<popUpButtonCell key="cell" type="roundTextured" title="Matching" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" selectedItem="yT1-XL-k6a" id="Aob-tW-bUP">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" id="j2A-qj-k7L">
|
||||
<items>
|
||||
<menuItem title="Matching" state="on" id="yT1-XL-k6a">
|
||||
@@ -88,7 +88,7 @@
|
||||
</connections>
|
||||
</popUpButton>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="WTJ-he-uTu">
|
||||
<rect key="frame" x="11" y="130" width="37" height="14"/>
|
||||
<rect key="frame" x="11" y="128" width="37" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Match" id="9ce-da-syF">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -96,7 +96,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="mcC-bG-cCz">
|
||||
<rect key="frame" x="11" y="79" width="92" height="14"/>
|
||||
<rect key="frame" x="11" y="77" width="92" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Reference String" id="gik-Ha-hRd">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -104,7 +104,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="b36-T7-1tO" customClass="HNHUITextField">
|
||||
<rect key="frame" x="13" y="50" width="174" height="21"/>
|
||||
<rect key="frame" x="13" y="48" width="186" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="Reference" drawsBackground="YES" id="dr9-x8-kKk">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="16097.2" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="16097.2"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -15,17 +15,17 @@
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<view id="9Nv-Zl-Z9p">
|
||||
<rect key="frame" x="0.0" y="0.0" width="571" height="320"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="600" height="302"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<stackView orientation="horizontal" alignment="centerY" spacing="2" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" translatesAutoresizingMaskIntoConstraints="NO" id="ITj-5P-sn9">
|
||||
<rect key="frame" x="20" y="0.0" width="551" height="320"/>
|
||||
<middleViews>
|
||||
<stackView orientation="vertical" alignment="centerX" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="jd3-xw-cZP">
|
||||
<rect key="frame" x="165" y="0.0" width="222" height="320"/>
|
||||
<customView translatesAutoresizingMaskIntoConstraints="NO" id="JV1-lh-OtN" userLabel="Side Buttons Holder">
|
||||
<rect key="frame" x="0.0" y="0.0" width="401" height="302"/>
|
||||
<subviews>
|
||||
<stackView orientation="vertical" alignment="centerX" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" translatesAutoresizingMaskIntoConstraints="NO" id="jd3-xw-cZP">
|
||||
<rect key="frame" x="90" y="40" width="222" height="222"/>
|
||||
<middleViews>
|
||||
<imageView misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="VWi-da-LGh">
|
||||
<rect key="frame" x="47" y="115" width="128" height="128"/>
|
||||
<imageView translatesAutoresizingMaskIntoConstraints="NO" id="VWi-da-LGh">
|
||||
<rect key="frame" x="47" y="94" width="128" height="128"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="128" id="T0d-gp-edr"/>
|
||||
<constraint firstAttribute="width" constant="128" id="Xdf-jE-D9H"/>
|
||||
@@ -33,15 +33,13 @@
|
||||
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="MacPassAppIcon" id="9f2-Co-St2"/>
|
||||
</imageView>
|
||||
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="EEg-rH-sPx">
|
||||
<rect key="frame" x="-2" y="78" width="226" height="29"/>
|
||||
<rect key="frame" x="-2" y="58" width="226" height="28"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Welcome to MacPass" id="zdv-z8-khG">
|
||||
<font key="font" metaFont="system" size="24"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</middleViews>
|
||||
<endViews>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="MmF-PL-dgZ">
|
||||
<rect key="frame" x="39" y="22" width="144" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Open Database…" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Jj3-zy-gaz">
|
||||
@@ -54,7 +52,7 @@
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="IRO-Hz-Zjp">
|
||||
<rect key="frame" x="26" y="-7" width="170" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Create new Database" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Vxx-Ql-eI5">
|
||||
<buttonCell key="cell" type="push" title="Create Database" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Vxx-Ql-eI5">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -62,10 +60,7 @@
|
||||
<action selector="createNewDatabase:" target="-1" id="hbV-Rz-x5g"/>
|
||||
</connections>
|
||||
</button>
|
||||
</endViews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="300" id="f86-vL-FmV"/>
|
||||
</constraints>
|
||||
</middleViews>
|
||||
<visibilityPriorities>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
@@ -79,115 +74,105 @@
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
</customSpacing>
|
||||
</stackView>
|
||||
</middleViews>
|
||||
<endViews>
|
||||
<scrollView misplaced="YES" autohidesScrollers="YES" horizontalLineScroll="40" horizontalPageScroll="10" verticalLineScroll="40" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eUA-6g-T1O">
|
||||
<rect key="frame" x="389" y="0.0" width="162" height="320"/>
|
||||
<clipView key="contentView" id="0Kf-Fq-by2">
|
||||
<rect key="frame" x="1" y="1" width="160" height="318"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnReordering="NO" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" rowHeight="38" rowSizeStyle="automatic" viewBased="YES" id="51b-Ql-3gM">
|
||||
<rect key="frame" x="0.0" y="0.0" width="160" height="318"/>
|
||||
<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="157" minWidth="40" maxWidth="1000" id="oLj-wZ-syY">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
|
||||
<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="Fbl-HT-XIu">
|
||||
<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="6UF-Gr-4nf">
|
||||
<rect key="frame" x="1" y="1" width="157" height="38"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Kko-1G-JNn">
|
||||
<rect key="frame" x="2" y="3" width="32" height="32"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" secondItem="Kko-1G-JNn" secondAttribute="height" multiplier="1:1" id="DCx-UU-29t"/>
|
||||
<constraint firstAttribute="height" constant="32" id="tUG-uX-FuQ"/>
|
||||
</constraints>
|
||||
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="NSActionTemplate" id="9TF-9t-7gd"/>
|
||||
</imageView>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsExpansionToolTips="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Kso-jb-pRH">
|
||||
<rect key="frame" x="39" y="11" width="118" height="17"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="vzM-ly-CYn">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="Kso-jb-pRH" firstAttribute="centerY" secondItem="6UF-Gr-4nf" secondAttribute="centerY" id="EFe-Eu-cwW"/>
|
||||
<constraint firstItem="Kso-jb-pRH" firstAttribute="leading" secondItem="Kko-1G-JNn" secondAttribute="trailing" constant="7" id="Jlp-gO-6rv"/>
|
||||
<constraint firstItem="Kko-1G-JNn" firstAttribute="leading" secondItem="6UF-Gr-4nf" secondAttribute="leading" constant="2" id="RV0-o5-iyA"/>
|
||||
<constraint firstItem="Kko-1G-JNn" firstAttribute="centerY" secondItem="6UF-Gr-4nf" secondAttribute="centerY" id="oFg-c1-o9M"/>
|
||||
<constraint firstAttribute="trailing" secondItem="Kso-jb-pRH" secondAttribute="trailing" constant="2" id="ptI-vC-fK9"/>
|
||||
</constraints>
|
||||
<connections>
|
||||
<outlet property="imageView" destination="Kko-1G-JNn" id="AvW-EL-9Rw"/>
|
||||
<outlet property="textField" destination="Kso-jb-pRH" id="yWg-4p-sFp"/>
|
||||
</connections>
|
||||
</tableCellView>
|
||||
</prototypeCellViews>
|
||||
</tableColumn>
|
||||
</tableColumns>
|
||||
<connections>
|
||||
<action trigger="doubleAction" selector="openRecentURL:" target="-2" id="kTu-60-aYp"/>
|
||||
<outlet property="dataSource" destination="-2" id="pLD-5Q-GVH"/>
|
||||
<outlet property="delegate" destination="-2" id="hO0-G9-RVy"/>
|
||||
</connections>
|
||||
</tableView>
|
||||
</subviews>
|
||||
</clipView>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="200" id="R0Z-La-Y3C"/>
|
||||
</constraints>
|
||||
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="bRy-ef-e76">
|
||||
<rect key="frame" x="1" y="303" width="135" height="16"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="2e9-uR-dY7">
|
||||
<rect key="frame" x="224" y="17" width="15" height="102"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
</scrollView>
|
||||
</endViews>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="bottom" secondItem="jd3-xw-cZP" secondAttribute="bottom" constant="20" id="581-be-EbR"/>
|
||||
<constraint firstItem="jd3-xw-cZP" firstAttribute="top" secondItem="ITj-5P-sn9" secondAttribute="top" constant="20" id="9he-mz-Ciw"/>
|
||||
<constraint firstAttribute="bottom" secondItem="eUA-6g-T1O" secondAttribute="bottom" constant="-1" id="Ejt-qZ-puH"/>
|
||||
<constraint firstAttribute="trailing" secondItem="eUA-6g-T1O" secondAttribute="trailing" constant="-1" id="PEw-In-uMJ"/>
|
||||
<constraint firstItem="eUA-6g-T1O" firstAttribute="top" secondItem="ITj-5P-sn9" secondAttribute="top" constant="-1" id="piI-8Q-zsE"/>
|
||||
<constraint firstItem="jd3-xw-cZP" firstAttribute="centerX" secondItem="JV1-lh-OtN" secondAttribute="centerX" id="8C8-ZW-58v"/>
|
||||
<constraint firstItem="jd3-xw-cZP" firstAttribute="centerY" secondItem="JV1-lh-OtN" secondAttribute="centerY" id="HeM-vT-DHO"/>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="300" id="LaQ-Zq-f9E"/>
|
||||
</constraints>
|
||||
<visibilityPriorities>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
</visibilityPriorities>
|
||||
<customSpacing>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
</customSpacing>
|
||||
</stackView>
|
||||
</customView>
|
||||
<scrollView autohidesScrollers="YES" horizontalLineScroll="40" horizontalPageScroll="10" verticalLineScroll="40" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eUA-6g-T1O">
|
||||
<rect key="frame" x="401" y="-1" width="200" height="304"/>
|
||||
<clipView key="contentView" id="0Kf-Fq-by2">
|
||||
<rect key="frame" x="1" y="1" width="198" height="302"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnReordering="NO" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" rowHeight="38" rowSizeStyle="automatic" viewBased="YES" id="51b-Ql-3gM">
|
||||
<rect key="frame" x="0.0" y="0.0" width="198" height="302"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<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="195" minWidth="40" maxWidth="1000" id="oLj-wZ-syY">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
|
||||
<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="Fbl-HT-XIu">
|
||||
<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="6UF-Gr-4nf">
|
||||
<rect key="frame" x="1" y="1" width="195" height="38"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Kko-1G-JNn">
|
||||
<rect key="frame" x="2" y="3" width="32" height="32"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" secondItem="Kko-1G-JNn" secondAttribute="height" multiplier="1:1" id="DCx-UU-29t"/>
|
||||
<constraint firstAttribute="height" constant="32" id="tUG-uX-FuQ"/>
|
||||
</constraints>
|
||||
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="NSActionTemplate" id="9TF-9t-7gd"/>
|
||||
</imageView>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsExpansionToolTips="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Kso-jb-pRH">
|
||||
<rect key="frame" x="39" y="11" width="156" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="vzM-ly-CYn">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="Kso-jb-pRH" firstAttribute="centerY" secondItem="6UF-Gr-4nf" secondAttribute="centerY" id="EFe-Eu-cwW"/>
|
||||
<constraint firstItem="Kso-jb-pRH" firstAttribute="leading" secondItem="Kko-1G-JNn" secondAttribute="trailing" constant="7" id="Jlp-gO-6rv"/>
|
||||
<constraint firstItem="Kko-1G-JNn" firstAttribute="leading" secondItem="6UF-Gr-4nf" secondAttribute="leading" constant="2" id="RV0-o5-iyA"/>
|
||||
<constraint firstItem="Kko-1G-JNn" firstAttribute="centerY" secondItem="6UF-Gr-4nf" secondAttribute="centerY" id="oFg-c1-o9M"/>
|
||||
<constraint firstAttribute="trailing" secondItem="Kso-jb-pRH" secondAttribute="trailing" constant="2" id="ptI-vC-fK9"/>
|
||||
</constraints>
|
||||
<connections>
|
||||
<outlet property="imageView" destination="Kko-1G-JNn" id="AvW-EL-9Rw"/>
|
||||
<outlet property="textField" destination="Kso-jb-pRH" id="yWg-4p-sFp"/>
|
||||
</connections>
|
||||
</tableCellView>
|
||||
</prototypeCellViews>
|
||||
</tableColumn>
|
||||
</tableColumns>
|
||||
<connections>
|
||||
<action trigger="doubleAction" selector="openRecentURL:" target="-2" id="kTu-60-aYp"/>
|
||||
<outlet property="dataSource" destination="-2" id="pLD-5Q-GVH"/>
|
||||
<outlet property="delegate" destination="-2" id="hO0-G9-RVy"/>
|
||||
</connections>
|
||||
</tableView>
|
||||
</subviews>
|
||||
</clipView>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="200" id="R0Z-La-Y3C"/>
|
||||
</constraints>
|
||||
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="bRy-ef-e76">
|
||||
<rect key="frame" x="1" y="287" width="198" height="16"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="2e9-uR-dY7">
|
||||
<rect key="frame" x="224" y="17" width="15" height="102"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
</scrollView>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" secondItem="ITj-5P-sn9" secondAttribute="trailing" id="7Bo-Jl-7Zu"/>
|
||||
<constraint firstItem="ITj-5P-sn9" firstAttribute="top" secondItem="9Nv-Zl-Z9p" secondAttribute="top" id="lrE-f8-tD5"/>
|
||||
<constraint firstItem="ITj-5P-sn9" firstAttribute="leading" secondItem="9Nv-Zl-Z9p" secondAttribute="leading" constant="20" id="oWL-PJ-VCT"/>
|
||||
<constraint firstAttribute="bottom" secondItem="ITj-5P-sn9" secondAttribute="bottom" id="syW-TO-uwv"/>
|
||||
<constraint firstAttribute="bottom" secondItem="eUA-6g-T1O" secondAttribute="bottom" constant="-1" id="6ri-AE-xpC"/>
|
||||
<constraint firstItem="eUA-6g-T1O" firstAttribute="top" secondItem="9Nv-Zl-Z9p" secondAttribute="top" constant="-1" id="D5N-Fq-0LP"/>
|
||||
<constraint firstItem="JV1-lh-OtN" firstAttribute="top" secondItem="9Nv-Zl-Z9p" secondAttribute="top" id="RPE-bR-zfc"/>
|
||||
<constraint firstAttribute="trailing" secondItem="eUA-6g-T1O" secondAttribute="trailing" constant="-1" id="VMx-Ef-cEG"/>
|
||||
<constraint firstItem="JV1-lh-OtN" firstAttribute="leading" secondItem="9Nv-Zl-Z9p" secondAttribute="leading" id="W2e-Nw-pfi"/>
|
||||
<constraint firstItem="eUA-6g-T1O" firstAttribute="leading" secondItem="JV1-lh-OtN" secondAttribute="trailing" id="Z02-i4-6Jm"/>
|
||||
<constraint firstAttribute="bottom" secondItem="JV1-lh-OtN" secondAttribute="bottom" id="ow6-hF-qkt"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="-680" y="-522"/>
|
||||
<point key="canvasLocation" x="-714" y="-522"/>
|
||||
</view>
|
||||
</objects>
|
||||
<resources>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="15702" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19455" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="15702"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19455"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -11,6 +11,8 @@
|
||||
<outlet property="browserPopup" destination="ehI-gq-lsb" id="YMy-L1-pQw"/>
|
||||
<outlet property="doubleClickTitlePopup" destination="40" id="aKJ-q9-xjb"/>
|
||||
<outlet property="doubleClickURLPopup" destination="13" id="fGP-5I-0XK"/>
|
||||
<outlet property="focusSearchAfterUnlockCheckButton" destination="VIS-db-Y8n" id="xVr-wf-eJg"/>
|
||||
<outlet property="generatePasswordOnEntriesCheckButton" destination="yxq-YK-61i" id="0SK-CT-Wdn"/>
|
||||
<outlet property="hideAfterCopyToClipboardCheckButton" destination="vT4-wF-ned" id="d7e-vc-cAQ"/>
|
||||
<outlet property="updatePasswordOnTemplateEntriesCheckButton" destination="LPY-sM-hjS" id="wav-op-uck"/>
|
||||
<outlet property="view" destination="1" id="52"/>
|
||||
@@ -19,37 +21,24 @@
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView translatesAutoresizingMaskIntoConstraints="NO" id="1">
|
||||
<rect key="frame" x="0.0" y="0.0" width="400" height="314"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="449" height="478"/>
|
||||
<subviews>
|
||||
<box autoresizesSubviews="NO" verticalHuggingPriority="500" borderType="line" title="Entry Table" translatesAutoresizingMaskIntoConstraints="NO" id="2">
|
||||
<rect key="frame" x="17" y="166" width="366" height="99"/>
|
||||
<box autoresizesSubviews="NO" horizontalHuggingPriority="249" verticalHuggingPriority="500" borderType="line" title="Entry Table" translatesAutoresizingMaskIntoConstraints="NO" id="2">
|
||||
<rect key="frame" x="17" y="272" width="415" height="104"/>
|
||||
<view key="contentView" id="cfa-nq-Kzt">
|
||||
<rect key="frame" x="3" y="3" width="360" height="81"/>
|
||||
<rect key="frame" x="3" y="3" width="409" height="86"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="9">
|
||||
<rect key="frame" x="18" y="53" width="134" height="16"/>
|
||||
<rect key="frame" x="18" y="49" width="134" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Double-click on URL:" id="10">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="13">
|
||||
<rect key="frame" x="156" y="47" width="109" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="14">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<menu key="menu" title="OtherViews" id="15">
|
||||
<items>
|
||||
<menuItem title="Copies URL" id="16"/>
|
||||
<menuItem title="Opens URL" id="17"/>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="36">
|
||||
<rect key="frame" x="18" y="22" width="134" height="16"/>
|
||||
<rect key="frame" x="18" y="19" width="134" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" enabled="NO" sendsActionOnEndEditing="YES" title="Double-click on Title:" id="37">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -57,10 +46,10 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="40">
|
||||
<rect key="frame" x="156" y="17" width="139" height="24"/>
|
||||
<rect key="frame" x="155" y="16" width="140" height="21"/>
|
||||
<popUpButtonCell key="cell" type="push" title="Opens Inspector" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="44" id="41">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" title="OtherViews" id="42">
|
||||
<items>
|
||||
<menuItem title="Opens Inspector" state="on" id="44"/>
|
||||
@@ -69,57 +58,55 @@
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
<popUpButton verticalHuggingPriority="750" verticalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="13">
|
||||
<rect key="frame" x="155" y="42" width="110" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="14">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" title="OtherViews" id="15">
|
||||
<items>
|
||||
<menuItem title="Copies URL" id="16"/>
|
||||
<menuItem title="Opens URL" id="17"/>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="13" firstAttribute="top" secondItem="cfa-nq-Kzt" secondAttribute="top" constant="20" symbolic="YES" id="0iU-Bj-QtG"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="40" secondAttribute="trailing" constant="20" symbolic="YES" id="3iK-WD-tbs"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="13" secondAttribute="trailing" constant="20" symbolic="YES" id="EQn-DK-viK"/>
|
||||
<constraint firstItem="9" firstAttribute="leading" secondItem="cfa-nq-Kzt" secondAttribute="leading" constant="20" symbolic="YES" id="FHR-zo-tjR"/>
|
||||
<constraint firstItem="9" firstAttribute="firstBaseline" secondItem="13" secondAttribute="firstBaseline" id="Swb-ay-7G0"/>
|
||||
<constraint firstItem="36" firstAttribute="firstBaseline" secondItem="40" secondAttribute="firstBaseline" id="dWh-SS-Sc4"/>
|
||||
<constraint firstItem="36" firstAttribute="leading" secondItem="cfa-nq-Kzt" secondAttribute="leading" constant="20" symbolic="YES" id="eqy-R2-mpP"/>
|
||||
<constraint firstAttribute="bottom" secondItem="40" secondAttribute="bottom" constant="20" symbolic="YES" id="lle-u8-JWP"/>
|
||||
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="40" secondAttribute="bottom" constant="20" symbolic="YES" id="lle-u8-JWP"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<constraints>
|
||||
<constraint firstItem="13" firstAttribute="leading" secondItem="9" secondAttribute="trailing" constant="8" symbolic="YES" id="1WE-nm-pp2"/>
|
||||
<constraint firstItem="40" firstAttribute="centerY" secondItem="36" secondAttribute="centerY" id="1hi-oU-uNn"/>
|
||||
<constraint firstItem="13" firstAttribute="top" secondItem="2" secondAttribute="top" constant="25" id="Nd9-4H-y8b"/>
|
||||
<constraint firstAttribute="height" constant="100" id="AfY-wN-l34"/>
|
||||
<constraint firstItem="40" firstAttribute="top" secondItem="13" secondAttribute="bottom" constant="10" symbolic="YES" id="YWX-K2-P8C"/>
|
||||
<constraint firstItem="13" firstAttribute="leading" secondItem="40" secondAttribute="leading" id="mih-x6-1K0"/>
|
||||
<constraint firstItem="40" firstAttribute="leading" secondItem="36" secondAttribute="trailing" constant="8" symbolic="YES" id="tsy-wg-saI"/>
|
||||
</constraints>
|
||||
</box>
|
||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ehI-gq-lsb">
|
||||
<rect key="frame" x="113" y="270" width="135" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" title="Default Browser" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="7YX-EA-9KA" id="7Ip-sU-sAK">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<menu key="menu" title="OtherViews" id="XgO-Tj-QjO">
|
||||
<items>
|
||||
<menuItem title="Default Browser" state="on" id="7YX-EA-9KA"/>
|
||||
<menuItem title="Item 2" id="gej-kA-GzQ"/>
|
||||
<menuItem title="Item 3" id="zC2-cM-KDv"/>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="lOo-NI-b07">
|
||||
<rect key="frame" x="18" y="273" width="91" height="19"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" enabled="NO" sendsActionOnEndEditing="YES" title="Open URLs in:" id="soD-wI-YOH">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<box borderType="line" title="Templates" translatesAutoresizingMaskIntoConstraints="NO" id="Xvt-tP-TbR">
|
||||
<rect key="frame" x="17" y="92" width="366" height="72"/>
|
||||
<box horizontalHuggingPriority="249" borderType="line" title="New Entries" translatesAutoresizingMaskIntoConstraints="NO" id="Xvt-tP-TbR">
|
||||
<rect key="frame" x="17" y="172" width="415" height="96"/>
|
||||
<view key="contentView" id="g0i-00-sng">
|
||||
<rect key="frame" x="3" y="3" width="360" height="54"/>
|
||||
<rect key="frame" x="3" y="3" width="409" height="78"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="LPY-sM-hjS">
|
||||
<rect key="frame" x="18" y="18" width="222" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Update password for new entries" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="RaM-t2-DVR">
|
||||
<rect key="frame" x="18" y="41" width="354" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Generate password for entries created from templates" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="RaM-t2-DVR">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="yxq-YK-61i">
|
||||
<rect key="frame" x="18" y="19" width="238" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Generate password for new entries" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="iCq-mG-p81">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -127,20 +114,23 @@
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="LPY-sM-hjS" firstAttribute="top" secondItem="g0i-00-sng" secondAttribute="top" constant="20" symbolic="YES" id="Ip3-vX-0L9"/>
|
||||
<constraint firstItem="yxq-YK-61i" firstAttribute="leading" secondItem="LPY-sM-hjS" secondAttribute="leading" id="LfJ-z5-Q3P"/>
|
||||
<constraint firstItem="LPY-sM-hjS" firstAttribute="leading" secondItem="g0i-00-sng" secondAttribute="leading" constant="20" symbolic="YES" id="RE9-Jf-nFR"/>
|
||||
<constraint firstAttribute="bottom" secondItem="LPY-sM-hjS" secondAttribute="bottom" constant="20" symbolic="YES" id="nGd-XA-Jj9"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="yxq-YK-61i" secondAttribute="trailing" constant="20" symbolic="YES" id="WHR-l8-6ce"/>
|
||||
<constraint firstAttribute="bottom" secondItem="yxq-YK-61i" secondAttribute="bottom" constant="20" symbolic="YES" id="rNE-sZ-z2e"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="LPY-sM-hjS" secondAttribute="trailing" constant="20" symbolic="YES" id="wyU-eZ-BSC"/>
|
||||
<constraint firstItem="yxq-YK-61i" firstAttribute="top" secondItem="LPY-sM-hjS" secondAttribute="bottom" constant="6" symbolic="YES" id="yNh-4f-kMr"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</box>
|
||||
<box title="Clipboard" translatesAutoresizingMaskIntoConstraints="NO" id="Kff-Xp-hAT">
|
||||
<rect key="frame" x="17" y="16" width="366" height="72"/>
|
||||
<box horizontalHuggingPriority="249" title="Clipboard" translatesAutoresizingMaskIntoConstraints="NO" id="Kff-Xp-hAT">
|
||||
<rect key="frame" x="17" y="94" width="415" height="74"/>
|
||||
<view key="contentView" id="Ntf-zj-VZL">
|
||||
<rect key="frame" x="3" y="3" width="360" height="54"/>
|
||||
<rect key="frame" x="3" y="3" width="409" height="56"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="vT4-wF-ned">
|
||||
<rect key="frame" x="18" y="18" width="280" height="18"/>
|
||||
<rect key="frame" x="18" y="19" width="284" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Hide application after copying to clipboard" bezelStyle="regularSquare" imagePosition="left" inset="2" id="1Vr-nY-Ogv">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -155,27 +145,87 @@
|
||||
</constraints>
|
||||
</view>
|
||||
</box>
|
||||
<box title="Search" translatesAutoresizingMaskIntoConstraints="NO" id="CLc-Vg-aWg">
|
||||
<rect key="frame" x="17" y="16" width="415" height="74"/>
|
||||
<view key="contentView" id="KWW-Ss-mhI">
|
||||
<rect key="frame" x="3" y="3" width="409" height="56"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="VIS-db-Y8n">
|
||||
<rect key="frame" x="18" y="19" width="261" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Focus search after unlocking database" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="I0s-iS-0Sc">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="VIS-db-Y8n" firstAttribute="leading" secondItem="KWW-Ss-mhI" secondAttribute="leading" constant="20" symbolic="YES" id="GkT-nF-RKV"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="VIS-db-Y8n" secondAttribute="trailing" constant="20" symbolic="YES" id="XzO-KB-P5X"/>
|
||||
<constraint firstItem="VIS-db-Y8n" firstAttribute="top" secondItem="KWW-Ss-mhI" secondAttribute="top" constant="20" symbolic="YES" id="ciI-U3-HDa"/>
|
||||
<constraint firstAttribute="bottom" secondItem="VIS-db-Y8n" secondAttribute="bottom" constant="20" id="t7Q-vo-yyz"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</box>
|
||||
<box title="URLs" translatesAutoresizingMaskIntoConstraints="NO" id="8Z8-mS-hfg">
|
||||
<rect key="frame" x="17" y="380" width="415" height="78"/>
|
||||
<view key="contentView" id="LD4-oH-eGw">
|
||||
<rect key="frame" x="3" y="3" width="409" height="60"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="lOo-NI-b07">
|
||||
<rect key="frame" x="18" y="23" width="91" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" enabled="NO" sendsActionOnEndEditing="YES" title="Open URLs in:" id="soD-wI-YOH">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ehI-gq-lsb">
|
||||
<rect key="frame" x="112" y="16" width="136" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" title="Default Browser" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="7YX-EA-9KA" id="7Ip-sU-sAK">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" title="OtherViews" id="XgO-Tj-QjO">
|
||||
<items>
|
||||
<menuItem title="Default Browser" state="on" id="7YX-EA-9KA"/>
|
||||
<menuItem title="Item 2" id="gej-kA-GzQ"/>
|
||||
<menuItem title="Item 3" id="zC2-cM-KDv"/>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="bottom" secondItem="ehI-gq-lsb" secondAttribute="bottom" constant="20" symbolic="YES" id="5Pa-Hu-TKL"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="ehI-gq-lsb" secondAttribute="trailing" constant="20" symbolic="YES" id="8Qh-aY-FnV"/>
|
||||
<constraint firstItem="ehI-gq-lsb" firstAttribute="leading" secondItem="lOo-NI-b07" secondAttribute="trailing" constant="8" symbolic="YES" id="94i-HV-mfW"/>
|
||||
<constraint firstItem="lOo-NI-b07" firstAttribute="leading" secondItem="LD4-oH-eGw" secondAttribute="leading" constant="20" symbolic="YES" id="FSg-Id-v0g"/>
|
||||
<constraint firstItem="lOo-NI-b07" firstAttribute="firstBaseline" secondItem="ehI-gq-lsb" secondAttribute="firstBaseline" id="I4D-aA-QaC"/>
|
||||
<constraint firstItem="ehI-gq-lsb" firstAttribute="top" secondItem="LD4-oH-eGw" secondAttribute="top" constant="20" symbolic="YES" id="ciK-1U-UYJ"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</box>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="2" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="5"/>
|
||||
<constraint firstAttribute="trailing" secondItem="2" secondAttribute="trailing" constant="20" symbolic="YES" id="8"/>
|
||||
<constraint firstAttribute="width" constant="400" id="53"/>
|
||||
<constraint firstAttribute="bottom" secondItem="CLc-Vg-aWg" secondAttribute="bottom" constant="20" symbolic="YES" id="1VG-9p-VC6"/>
|
||||
<constraint firstItem="Kff-Xp-hAT" firstAttribute="top" secondItem="Xvt-tP-TbR" secondAttribute="bottom" constant="8" symbolic="YES" id="3RL-tm-4wu"/>
|
||||
<constraint firstAttribute="bottom" secondItem="Kff-Xp-hAT" secondAttribute="bottom" constant="20" symbolic="YES" id="8k6-1d-wPj"/>
|
||||
<constraint firstAttribute="trailing" secondItem="8Z8-mS-hfg" secondAttribute="trailing" constant="20" symbolic="YES" id="5Hg-na-QAc"/>
|
||||
<constraint firstItem="Xvt-tP-TbR" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="BH4-4y-uma"/>
|
||||
<constraint firstItem="2" firstAttribute="top" secondItem="ehI-gq-lsb" secondAttribute="bottom" constant="8" symbolic="YES" id="CnN-aU-Qa1"/>
|
||||
<constraint firstItem="Xvt-tP-TbR" firstAttribute="top" secondItem="cfa-nq-Kzt" secondAttribute="bottom" constant="5" id="FVK-Uf-kLv"/>
|
||||
<constraint firstItem="ehI-gq-lsb" firstAttribute="leading" secondItem="lOo-NI-b07" secondAttribute="trailing" constant="8" symbolic="YES" id="KxB-TG-rH5"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="ehI-gq-lsb" secondAttribute="trailing" constant="20" symbolic="YES" id="Ldw-aO-wuX"/>
|
||||
<constraint firstItem="ehI-gq-lsb" firstAttribute="top" secondItem="1" secondAttribute="top" constant="20" symbolic="YES" id="MAe-l7-8k2"/>
|
||||
<constraint firstItem="Xvt-tP-TbR" firstAttribute="top" secondItem="2" secondAttribute="bottom" constant="8" symbolic="YES" id="FVK-Uf-kLv"/>
|
||||
<constraint firstItem="CLc-Vg-aWg" firstAttribute="top" secondItem="Kff-Xp-hAT" secondAttribute="bottom" constant="8" symbolic="YES" id="MZ9-vN-2za"/>
|
||||
<constraint firstItem="8Z8-mS-hfg" firstAttribute="top" secondItem="1" secondAttribute="top" constant="20" symbolic="YES" id="ScX-YY-rgS"/>
|
||||
<constraint firstAttribute="trailing" secondItem="Kff-Xp-hAT" secondAttribute="trailing" constant="20" symbolic="YES" id="VLC-2A-Vdd"/>
|
||||
<constraint firstItem="Kff-Xp-hAT" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="Vle-Z0-mh8"/>
|
||||
<constraint firstItem="2" firstAttribute="top" secondItem="8Z8-mS-hfg" secondAttribute="bottom" constant="8" symbolic="YES" id="Z6D-RB-aR5"/>
|
||||
<constraint firstAttribute="trailing" secondItem="Xvt-tP-TbR" secondAttribute="trailing" constant="20" id="anU-nC-YAw"/>
|
||||
<constraint firstItem="lOo-NI-b07" firstAttribute="firstBaseline" secondItem="ehI-gq-lsb" secondAttribute="firstBaseline" id="gFK-Ce-Q3b"/>
|
||||
<constraint firstItem="lOo-NI-b07" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="kaP-lB-tDY"/>
|
||||
<constraint firstItem="2" firstAttribute="top" secondItem="lOo-NI-b07" secondAttribute="bottom" constant="8" symbolic="YES" id="xlS-Dj-cOt"/>
|
||||
<constraint firstAttribute="trailing" secondItem="CLc-Vg-aWg" secondAttribute="trailing" constant="20" symbolic="YES" id="fXu-pq-O8Q"/>
|
||||
<constraint firstItem="CLc-Vg-aWg" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="wyw-aC-Vkj"/>
|
||||
<constraint firstItem="8Z8-mS-hfg" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="xdM-IO-cz3"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="-2" y="125"/>
|
||||
<point key="canvasLocation" x="-906.5" y="-199.5"/>
|
||||
</customView>
|
||||
</objects>
|
||||
</document>
|
||||
|
||||
@@ -29,12 +29,10 @@
|
||||
@implementation DDHotKey (MPKeydata)
|
||||
|
||||
+ (NSData *)hotKeyDataWithKeyCode:(unsigned short)keyCode modifierFlags:(NSUInteger)flags {
|
||||
NSMutableData *data = [[NSMutableData alloc] init];
|
||||
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
|
||||
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initRequiringSecureCoding:YES];
|
||||
[archiver encodeInt:keyCode forKey:NSStringFromSelector(@selector(keyCode))];
|
||||
[archiver encodeInteger:flags forKey:NSStringFromSelector(@selector(modifierFlags))];
|
||||
[archiver finishEncoding];
|
||||
return [data copy];
|
||||
return [archiver.encodedData copy];
|
||||
}
|
||||
|
||||
+ (NSData *)defaultHotKeyData {
|
||||
@@ -73,7 +71,13 @@
|
||||
if(keyCode == NULL || modifierFlags == NULL || data == nil) {
|
||||
return NO;
|
||||
}
|
||||
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
|
||||
|
||||
NSError *error;
|
||||
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingFromData:data error:&error];
|
||||
if(error) {
|
||||
NSLog(@"Error while trying to decode DDHotKey %@", error.localizedDescription);
|
||||
return NO;
|
||||
}
|
||||
*keyCode = [unarchiver decodeIntForKey:NSStringFromSelector(@selector(keyCode))];
|
||||
*modifierFlags = [unarchiver decodeIntegerForKey:NSStringFromSelector(@selector(modifierFlags))];
|
||||
return YES;
|
||||
@@ -86,19 +90,19 @@
|
||||
NSEventModifierFlags flags = 0;
|
||||
switch(self.keyCode) {
|
||||
case kVK_Command:
|
||||
flags = NSCommandKeyMask;
|
||||
flags = NSEventModifierFlagCommand;
|
||||
break;
|
||||
case kVK_Shift:
|
||||
case kVK_RightShift:
|
||||
flags = NSShiftKeyMask;
|
||||
flags = NSEventModifierFlagShift;
|
||||
break;
|
||||
case kVK_Option:
|
||||
case kVK_RightOption:
|
||||
flags = NSAlternateKeyMask;
|
||||
flags = NSEventModifierFlagOption;
|
||||
break;
|
||||
case kVK_Control:
|
||||
case kVK_RightControl:
|
||||
flags = NSControlKeyMask;
|
||||
flags = NSEventModifierFlagControl;
|
||||
break;
|
||||
}
|
||||
BOOL missingModifier = self.modifierFlags == 0;
|
||||
|
||||
21
MacPass/DocumentSplitView.xib
Normal file
21
MacPass/DocumentSplitView.xib
Normal file
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="MPDocumentSplitViewController">
|
||||
<connections>
|
||||
<outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView translatesAutoresizingMaskIntoConstraints="NO" id="Hz6-mo-xeY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
|
||||
<point key="canvasLocation" x="141" y="154"/>
|
||||
</customView>
|
||||
</objects>
|
||||
</document>
|
||||
@@ -1,32 +1,28 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="13771" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="15705" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13771"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="15705"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="MPDocumentWindowController">
|
||||
<connections>
|
||||
<outlet property="splitView" destination="697" id="700"/>
|
||||
<outlet property="window" destination="1" id="501"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="DatabaseWindow" animationBehavior="default" tabbingMode="preferred" id="1">
|
||||
<window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="DatabaseWindow" animationBehavior="default" tabbingMode="preferred" id="1">
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
|
||||
<windowCollectionBehavior key="collectionBehavior" fullScreenPrimary="YES"/>
|
||||
<rect key="contentRect" x="196" y="240" width="700" height="500"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
|
||||
<view key="contentView" id="2">
|
||||
<rect key="frame" x="0.0" y="0.0" width="700" height="500"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
</view>
|
||||
<point key="canvasLocation" x="54" y="51"/>
|
||||
<point key="canvasLocation" x="256" y="42"/>
|
||||
</window>
|
||||
<splitView autosaveName="" dividerStyle="thin" vertical="YES" translatesAutoresizingMaskIntoConstraints="NO" id="697">
|
||||
<rect key="frame" x="0.0" y="0.0" width="560" height="194"/>
|
||||
</splitView>
|
||||
</objects>
|
||||
</document>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19455" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19455"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -15,25 +15,24 @@
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView translatesAutoresizingMaskIntoConstraints="NO" id="336">
|
||||
<rect key="frame" x="0.0" y="0.0" width="694" height="594"/>
|
||||
<customView misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="336">
|
||||
<rect key="frame" x="0.0" y="0.0" width="691" height="331"/>
|
||||
<subviews>
|
||||
<scrollView focusRingType="none" borderType="none" autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="54">
|
||||
<rect key="frame" x="0.0" y="0.0" width="694" height="595"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="691" height="308"/>
|
||||
<clipView key="contentView" id="4tt-2K-SPF">
|
||||
<rect key="frame" x="0.0" y="0.0" width="694" height="595"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="691" height="308"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" alternatingRowBackgroundColors="YES" rowSizeStyle="automatic" headerView="676" viewBased="YES" id="55" customClass="MPTableView">
|
||||
<rect key="frame" x="0.0" y="0.0" width="694" height="572"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="691" height="285"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<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 identifier="Group Column" width="104.609375" minWidth="40" maxWidth="3.4028234663852886e+38" id="117">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||
</tableHeaderCell>
|
||||
@@ -45,11 +44,11 @@
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView identifier="StringCell" id="269">
|
||||
<rect key="frame" x="1" y="1" width="105" height="17"/>
|
||||
<rect key="frame" x="11" y="1" width="110" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="270">
|
||||
<rect key="frame" x="1" y="0.0" width="103" height="17"/>
|
||||
<rect key="frame" x="1" y="1" width="108" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="271">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -70,7 +69,6 @@
|
||||
</tableColumn>
|
||||
<tableColumn identifier="Title Column" width="144.1171875" minWidth="40" maxWidth="3.4028234663852886e+38" id="119">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||
</tableHeaderCell>
|
||||
@@ -82,11 +80,11 @@
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView identifier="ImageCell" id="297">
|
||||
<rect key="frame" x="108.5" y="1" width="144" height="17"/>
|
||||
<rect key="frame" x="124" y="1" width="144" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<imageView translatesAutoresizingMaskIntoConstraints="NO" id="298">
|
||||
<rect key="frame" x="3" y="0.0" width="17" height="17"/>
|
||||
<rect key="frame" x="3" y="-3" width="17" height="23"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="17" id="312"/>
|
||||
<constraint firstAttribute="height" constant="17" id="T73-FC-KyN"/>
|
||||
@@ -119,7 +117,6 @@
|
||||
</tableColumn>
|
||||
<tableColumn identifier="Password Column" width="118.73046875" minWidth="10" maxWidth="3.4028234663852886e+38" id="232">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||
</tableHeaderCell>
|
||||
@@ -131,11 +128,11 @@
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView identifier="PasswordCell" id="428">
|
||||
<rect key="frame" x="255.5" y="1" width="118" height="17"/>
|
||||
<rect key="frame" x="271" y="1" width="118" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="429" customClass="NSSecureTextField">
|
||||
<rect key="frame" x="1" y="0.0" width="116" height="17"/>
|
||||
<rect key="frame" x="1" y="1" width="116" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="430">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -156,7 +153,6 @@
|
||||
</tableColumn>
|
||||
<tableColumn identifier="URL Column" width="113.18359375" minWidth="10" maxWidth="3.4028234663852886e+38" id="419">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||
</tableHeaderCell>
|
||||
@@ -168,11 +164,11 @@
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView id="421">
|
||||
<rect key="frame" x="377" y="1" width="113" height="17"/>
|
||||
<rect key="frame" x="393" y="1" width="113" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="422">
|
||||
<rect key="frame" x="1" y="0.0" width="111" height="17"/>
|
||||
<rect key="frame" x="1" y="1" width="111" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="423">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -191,9 +187,8 @@
|
||||
</tableCellView>
|
||||
</prototypeCellViews>
|
||||
</tableColumn>
|
||||
<tableColumn width="199" minWidth="10" maxWidth="3.4028234663852886e+38" id="614">
|
||||
<tableColumn width="165" minWidth="10" maxWidth="3.4028234663852886e+38" id="614">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||
</tableHeaderCell>
|
||||
@@ -204,14 +199,14 @@
|
||||
</textFieldCell>
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView id="616">
|
||||
<rect key="frame" x="493" y="1" width="199" height="17"/>
|
||||
<tableCellView identifier="MonospacedStringCell" id="616">
|
||||
<rect key="frame" x="509" y="1" width="169" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="617">
|
||||
<rect key="frame" x="1" y="0.0" width="197" height="17"/>
|
||||
<rect key="frame" x="1" y="2" width="167" height="14"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="618">
|
||||
<font key="font" metaFont="system"/>
|
||||
<font key="font" size="12" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
@@ -233,15 +228,15 @@
|
||||
</subviews>
|
||||
</clipView>
|
||||
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="56">
|
||||
<rect key="frame" x="0.0" y="579" width="694" height="16"/>
|
||||
<rect key="frame" x="0.0" y="484" width="690" height="16"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="58">
|
||||
<rect key="frame" x="224" y="17" width="15" height="102"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<tableHeaderView key="headerView" id="676">
|
||||
<rect key="frame" x="0.0" y="0.0" width="694" height="23"/>
|
||||
<tableHeaderView key="headerView" wantsLayer="YES" id="676">
|
||||
<rect key="frame" x="0.0" y="0.0" width="691" height="23"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</tableHeaderView>
|
||||
</scrollView>
|
||||
@@ -256,6 +251,6 @@
|
||||
</customView>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSActionTemplate" width="14" height="14"/>
|
||||
<image name="NSActionTemplate" width="15" height="15"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
17
MacPass/KPKBinary+MacPassAddtions.h
Normal file
17
MacPass/KPKBinary+MacPassAddtions.h
Normal file
@@ -0,0 +1,17 @@
|
||||
//
|
||||
// KPKBinary+MacPassAddtions.h
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 09.11.20.
|
||||
// Copyright © 2020 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import <KeePassKit/KeePassKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface KPKBinary (MacPassAddtions) <NSFilePromiseProviderDelegate>
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
23
MacPass/KPKBinary+MacPassAddtions.m
Normal file
23
MacPass/KPKBinary+MacPassAddtions.m
Normal file
@@ -0,0 +1,23 @@
|
||||
//
|
||||
// KPKBinary+MacPassAddtions.m
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 09.11.20.
|
||||
// Copyright © 2020 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import "KPKBinary+MacPassAddtions.h"
|
||||
|
||||
@implementation KPKBinary (MacPassAddtions)
|
||||
|
||||
- (NSString *)filePromiseProvider:(NSFilePromiseProvider *)filePromiseProvider fileNameForType:(NSString *)fileType {
|
||||
return self.name;
|
||||
}
|
||||
|
||||
- (void)filePromiseProvider:(NSFilePromiseProvider *)filePromiseProvider writePromiseToURL:(NSURL *)url completionHandler:(void (^)(NSError * _Nullable))completionHandler {
|
||||
NSError *error;
|
||||
[self saveToLocation:url error:&error];
|
||||
completionHandler(error);
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -30,7 +30,7 @@
|
||||
@end
|
||||
@implementation NSImage (MPTintedImage)
|
||||
- (NSImage *)imageWithTintColor:(NSColor *)tintColor {
|
||||
/* only tint tempated images! */
|
||||
/* only tint templated images! */
|
||||
if(NO == self.template) {
|
||||
return self;
|
||||
}
|
||||
@@ -63,7 +63,7 @@
|
||||
|
||||
if(self.timeInfo.isExpired) {
|
||||
const BOOL isGroup = [self isKindOfClass:[KPKGroup class]];
|
||||
return [MPIconHelper icon:(isGroup ? MPIconExpiredGroup : MPIconExpiredEntry)];
|
||||
return [[MPIconHelper icon:(isGroup ? MPIconExpiredGroup : MPIconExpiredEntry)] imageWithTintColor:NSColor.systemRedColor];
|
||||
}
|
||||
if(self.icon) {
|
||||
return self.icon.image;
|
||||
|
||||
@@ -23,17 +23,16 @@
|
||||
#import "MPAddCustomFieldContextMenuDelegate.h"
|
||||
#import "KeePassKit/KeePassKit.h"
|
||||
|
||||
NSString *const MPHMACOTPSeedAttributeKey = @"HMACOTP-Seed";
|
||||
NSString *const MPHMACOTPConfigAttributeKey = @"HMACOTP-Config";
|
||||
#import "MPEntryInspectorViewController.h"
|
||||
|
||||
/*
|
||||
HmacOtp-Secret (the UTF-8 representation of the value is the secret),
|
||||
HmacOtp-Secret-Hex (secret as hex string),
|
||||
HmacOtp-Secret-Base32 (secret as Base32 string)
|
||||
HmacOtp-Secret-Base64 (secret as Base64 string)
|
||||
HmacOtp-Secret (the UTF-8 representation of the value is the secret),
|
||||
HmacOtp-Secret-Hex (secret as hex string),
|
||||
HmacOtp-Secret-Base32 (secret as Base32 string)
|
||||
HmacOtp-Secret-Base64 (secret as Base64 string)
|
||||
|
||||
HmacOtp-Counter field.
|
||||
*/
|
||||
HmacOtp-Counter field.
|
||||
*/
|
||||
|
||||
@interface MPAddCustomFieldContextMenuDelegate ()
|
||||
@property (readonly, nonatomic) KPKEntry *entry;
|
||||
@@ -51,30 +50,29 @@ HmacOtp-Counter field.
|
||||
|
||||
- (void)menuNeedsUpdate:(NSMenu *)menu {
|
||||
[menu removeAllItems];
|
||||
//[self _setupHOTPMenuItemsToMenu:menu];
|
||||
[self _setupHOTPMenuItemsToMenu:menu];
|
||||
[self _setupTOTPMenuItemsToMenu:menu];
|
||||
}
|
||||
|
||||
/* HMAC OTP */
|
||||
- (void)_setupHOTPMenuItemsToMenu:(NSMenu *)menu {
|
||||
BOOL hasConfigAttribute = nil != [self.entry customAttributeWithKey:MPHMACOTPConfigAttributeKey];
|
||||
if(!hasConfigAttribute) {
|
||||
NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"ADD_CUSTOM_ATTRIBUTE_HMACOTP_CONFIG", @"Menu item title for adding an hmacotp config attribute") action:@selector(_addHMACConfig:) keyEquivalent:@""];
|
||||
item.target = self;
|
||||
[menu addItem:item];
|
||||
}
|
||||
BOOL hasSeedAttribute = nil != [self.entry customAttributeWithKey:MPHMACOTPSeedAttributeKey];
|
||||
if(!hasSeedAttribute) {
|
||||
NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"ADD_CUSTOM_ATTRIBUTE_HMACOTP_SEED", @"Menu item title for adding an hmacotp seed attribute") action:@selector(_addHMACSeed:) keyEquivalent:@""];
|
||||
item.target = self;
|
||||
[menu addItem:item];
|
||||
}
|
||||
|
||||
}
|
||||
- (IBAction)_setupHMACConfig:(id)sender {
|
||||
|
||||
}
|
||||
- (IBAction)_delteHMACConfig:(id)sender {
|
||||
|
||||
}
|
||||
|
||||
- (IBAction)_addHMACConfig:(id)sender {
|
||||
[self.entry addCustomAttribute:[[KPKAttribute alloc] initWithKey:MPHMACOTPConfigAttributeKey value:@"<config>"]];
|
||||
/* Time OPT*/
|
||||
- (void)_setupTOTPMenuItemsToMenu:(NSMenu *)menu {
|
||||
NSMenuItem *setupItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"SETUP_TOTP_SETTINGS", @"Menu item title editing TOTP settings") action:@selector(showOTPSetup:) keyEquivalent:@""];
|
||||
setupItem.target = self.viewController;
|
||||
[menu addItem:setupItem];
|
||||
}
|
||||
|
||||
- (IBAction)_addHMACSeed:(id)sender {
|
||||
[self.entry addCustomAttribute:[[KPKAttribute alloc] initWithKey:MPHMACOTPSeedAttributeKey value:@"<seed>"]];
|
||||
}
|
||||
- (IBAction)_setupTOTPSettings:(id)sender {}
|
||||
- (IBAction)_deleteTOTPSettings:(id)sender {}
|
||||
|
||||
@end
|
||||
|
||||
@@ -21,41 +21,17 @@
|
||||
//
|
||||
|
||||
#import "MPAddEntryContextMenuDelegate.h"
|
||||
#import "MPDocument.h"
|
||||
#import "MPDocumentWindowController.h"
|
||||
#import "MPActionHelper.h"
|
||||
#import "KPKNode+IconImage.h"
|
||||
#import "MPContextMenuHelper.h"
|
||||
|
||||
#import "KeePassKit/KeePassKit.h"
|
||||
|
||||
#define EDIT_TEMPLATES_ITEM_TAG 10;
|
||||
|
||||
@implementation MPAddEntryContextMenuDelegate
|
||||
|
||||
- (void)menuNeedsUpdate:(NSMenu *)menu {
|
||||
/*
|
||||
The Method is rather brute force
|
||||
It's possible nicer to cache the entries and just update
|
||||
the menu entries, that actually need updating
|
||||
*/
|
||||
MPDocument *document = NSDocumentController.sharedDocumentController.currentDocument;
|
||||
[menu removeAllItems];
|
||||
[menu addItemWithTitle:NSLocalizedString(@"EDIT_TEMPLATE_GROUP", "Menu item on the add entry context menu to edit template groups") action:[MPActionHelper actionOfType:MPActionEditTemplateGroup] keyEquivalent:@""];
|
||||
|
||||
[menu addItem:[NSMenuItem separatorItem]];
|
||||
for(KPKEntry *entry in document.templates.childEntries) {
|
||||
NSString *templateMask = NSLocalizedString(@"NEW_ENTRY_WITH_TEMPLATE_%@", "Submenu to add an entry via template");
|
||||
NSMenuItem *templateItem = [[NSMenuItem alloc] initWithTitle:[NSString stringWithFormat:templateMask, entry.title]
|
||||
action:@selector(createEntryFromTemplate:)
|
||||
keyEquivalent:@""];
|
||||
templateItem.image = [entry.iconImage copy];
|
||||
templateItem.image.size = NSMakeSize(14, 14);
|
||||
templateItem.representedObject = entry.uuid;
|
||||
[menu addItem:templateItem];
|
||||
}
|
||||
/* If there are no entries, add a note as disabled menu item */
|
||||
if(menu.itemArray.count == 2) {
|
||||
[menu addItemWithTitle:NSLocalizedString(@"NO_TEMPLATES", "Menu item added to show that no templates are defined") action:NULL keyEquivalent:@""];
|
||||
NSArray<NSMenuItem *> *items = [MPContextMenuHelper contextMenuItemsWithCreateFromTemplateEntriesItems];
|
||||
for(NSMenuItem *item in items) {
|
||||
[menu addItem:item];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
17
MacPass/MPAdvancedDatabaseSettingsViewController.h
Normal file
17
MacPass/MPAdvancedDatabaseSettingsViewController.h
Normal file
@@ -0,0 +1,17 @@
|
||||
//
|
||||
// MPAdvancedDatabaseSettingsViewController.h
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 18.11.21.
|
||||
// Copyright © 2021 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface MPAdvancedDatabaseSettingsViewController : NSViewController
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
22
MacPass/MPAdvancedDatabaseSettingsViewController.m
Normal file
22
MacPass/MPAdvancedDatabaseSettingsViewController.m
Normal file
@@ -0,0 +1,22 @@
|
||||
//
|
||||
// MPAdvancedDatabaseSettingsViewController.m
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 18.11.21.
|
||||
// Copyright © 2021 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import "MPAdvancedDatabaseSettingsViewController.h"
|
||||
|
||||
@interface MPAdvancedDatabaseSettingsViewController ()
|
||||
|
||||
@end
|
||||
|
||||
@implementation MPAdvancedDatabaseSettingsViewController
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
// Do view setup here.
|
||||
}
|
||||
|
||||
@end
|
||||
22
MacPass/MPAdvancedDatabaseSettingsViewController.xib
Normal file
22
MacPass/MPAdvancedDatabaseSettingsViewController.xib
Normal file
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19529" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19529"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="MPAdvancedDatabaseSettingsViewController">
|
||||
<connections>
|
||||
<outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView id="Hz6-mo-xeY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<point key="canvasLocation" x="-229" y="178"/>
|
||||
</customView>
|
||||
</objects>
|
||||
</document>
|
||||
@@ -36,8 +36,9 @@ APPKIT_EXTERN NSString *const MPDidChangeStoredKeyFilesSettings;
|
||||
@property (strong) IBOutlet NSMenu *exportMenu;
|
||||
|
||||
@property (strong, readonly) MPEntryContextMenuDelegate *itemActionMenuDelegate;
|
||||
@property (readonly) BOOL isTerminating;
|
||||
|
||||
@property (nonatomic, assign) BOOL isAllowedToStoreKeyFile;
|
||||
@property (nonatomic) BOOL isAllowedToStoreKeyFile;
|
||||
|
||||
- (IBAction)checkForUpdates:(id)sender;
|
||||
- (IBAction)showPreferences:(id)sender;
|
||||
|
||||
@@ -92,6 +92,7 @@ typedef NS_OPTIONS(NSInteger, MPAppStartupState) {
|
||||
_userNotificationCenterDelegate = [[MPUserNotificationCenterDelegate alloc] init];
|
||||
self.itemActionMenuDelegate = [[MPEntryContextMenuDelegate alloc] init];
|
||||
_shouldOpenFile = NO;
|
||||
_isTerminating = NO;
|
||||
self.startupState = MPAppStartupStateNone;
|
||||
|
||||
[NSNotificationCenter.defaultCenter addObserver:self
|
||||
@@ -100,13 +101,8 @@ typedef NS_OPTIONS(NSInteger, MPAppStartupState) {
|
||||
object:nil];
|
||||
|
||||
/* We know that we do not use the variable after instantiation */
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wunused-variable"
|
||||
MPDocumentController *documentController = [[MPDocumentController alloc] init];
|
||||
#pragma clang diagnostic pop
|
||||
|
||||
|
||||
|
||||
NSAssert(documentController, @"Custom document controller cannot be nil");
|
||||
}
|
||||
return self;
|
||||
}
|
||||
@@ -190,6 +186,7 @@ typedef NS_OPTIONS(NSInteger, MPAppStartupState) {
|
||||
}
|
||||
|
||||
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender {
|
||||
_isTerminating = YES;
|
||||
[self hideWelcomeWindow];
|
||||
if(MPTemporaryFileStorageCenter.defaultCenter.hasPendingStorages) {
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
@@ -224,11 +221,7 @@ typedef NS_OPTIONS(NSInteger, MPAppStartupState) {
|
||||
#endif
|
||||
self.startupState |= MPAppStartupStateFinishedLaunch;
|
||||
// Here we just opt-in for allowing our bar to be customized throughout the app.
|
||||
if([NSApplication.sharedApplication respondsToSelector:@selector(isAutomaticCustomizeTouchBarMenuItemEnabled)]) {
|
||||
if(@available(macOS 10.12.2, *)) {
|
||||
NSApplication.sharedApplication.automaticCustomizeTouchBarMenuItemEnabled = YES;
|
||||
}
|
||||
}
|
||||
NSApplication.sharedApplication.automaticCustomizeTouchBarMenuItemEnabled = YES;
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
@@ -236,12 +229,12 @@ typedef NS_OPTIONS(NSInteger, MPAppStartupState) {
|
||||
- (void)menuNeedsUpdate:(NSMenu *)menu {
|
||||
if(menu == self.saveMenuItem.menu) {
|
||||
MPDocument *document = NSDocumentController.sharedDocumentController.currentDocument;
|
||||
BOOL displayDots = (document.fileURL == nil || !document.compositeKey.hasPasswordOrKeyFile);
|
||||
BOOL displayDots = (document.fileURL == nil || !document.compositeKey.hasKeys);
|
||||
NSString *saveTitle = displayDots ? NSLocalizedString(@"SAVE_WITH_DOTS", "Save file menu item title when save will prompt for a location to save or ask for a password/key") : NSLocalizedString(@"SAVE", "Save file menu item title when save will just save the file");
|
||||
self.saveMenuItem.title = saveTitle;
|
||||
}
|
||||
else if(menu == self.fixAutotypeMenuItem.menu) {
|
||||
self.fixAutotypeMenuItem.hidden = !(NSEvent.modifierFlags & NSAlternateKeyMask);
|
||||
self.fixAutotypeMenuItem.hidden = !(NSEvent.modifierFlags & NSEventModifierFlagOption);
|
||||
}
|
||||
else if(menu == self.importMenu) {
|
||||
NSMenuItem *exportXML = menu.itemArray.firstObject;
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
//
|
||||
|
||||
#import "MPAttachmentTableDataSource.h"
|
||||
#import "KPKBinary+MacPassAddtions.h"
|
||||
#import "MPDocument.h"
|
||||
|
||||
@implementation MPAttachmentTableDataSource
|
||||
@@ -63,59 +64,16 @@
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (BOOL)tableView:(NSTableView *)tableView writeRowsWithIndexes:(NSIndexSet *)rowIndexes toPasteboard:(NSPasteboard *)pboard {
|
||||
[pboard declareTypes:@[NSFilesPromisePboardType] owner:nil];
|
||||
- (id<NSPasteboardWriting>)tableView:(NSTableView *)tableView pasteboardWriterForRow:(NSInteger)row {
|
||||
MPDocument *document = tableView.window.windowController.document;
|
||||
KPKEntry *entry = document.selectedEntries.count == 1 ? document.selectedEntries.lastObject : nil;
|
||||
NSMutableArray *fileNames = [[NSMutableArray alloc] init];
|
||||
for(KPKBinary *binary in [entry.binaries objectsAtIndexes:rowIndexes]) {
|
||||
if(binary.name) {
|
||||
[fileNames addObject:binary.name];
|
||||
}
|
||||
}
|
||||
[pboard setPropertyList:fileNames forType:NSFilesPromisePboardType];
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (NSArray<NSString *> *)tableView:(NSTableView *)tableView namesOfPromisedFilesDroppedAtDestination:(NSURL *)dropDestination forDraggedRowsWithIndexes:(NSIndexSet *)indexSet {
|
||||
MPDocument *document = tableView.window.windowController.document;
|
||||
KPKEntry *entry = document.selectedEntries.count == 1 ? document.selectedEntries.lastObject : nil;
|
||||
NSMutableArray<NSString *> *fileNames = [[NSMutableArray alloc] init];
|
||||
NSArray<KPKBinary *> *draggedBinaries = [entry.binaries objectsAtIndexes:indexSet];
|
||||
for(KPKBinary *binary in draggedBinaries) {
|
||||
if(binary.name) {
|
||||
[fileNames addObject:binary.name];
|
||||
dispatch_queue_t queue = dispatch_get_global_queue(QOS_CLASS_USER_INITIATED, 0);
|
||||
dispatch_async(queue, ^{
|
||||
NSError *error;
|
||||
NSURL *saveLocation = [dropDestination URLByAppendingPathComponent:binary.name];
|
||||
BOOL success = [binary saveToLocation:saveLocation error:&error];
|
||||
if(!success && error) {
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[NSApp presentError:error];
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
return [fileNames copy];
|
||||
}
|
||||
|
||||
/*
|
||||
- (id<NSPasteboardWriting>)tableView:(NSTableView *)tableView pasteboardWriterForRow:(NSInteger)row {
|
||||
MPDocument *document = tableView.window.windowController.document;
|
||||
KPKEntry *entry = document.selectedEntries.count == 1 ? document.selectedEntries.lastObject : nil;
|
||||
|
||||
|
||||
if(!entry) {
|
||||
return nil;
|
||||
}
|
||||
if (@available(macOS 10.12, *)) {
|
||||
KPKBinary *binary = entry.binaries[row];
|
||||
NSFilePromiseProvider *provider = [[NSFilePromiseProvider alloc] initWithFileType:(NSString *)kUTTypeXML delegate:binary];
|
||||
return provider;
|
||||
}
|
||||
return nil;
|
||||
KPKBinary *binary = entry.binaries[row];
|
||||
NSFilePromiseProvider *provider = [[NSFilePromiseProvider alloc] initWithFileType:(NSString *)kUTTypeData delegate:binary];
|
||||
return provider;
|
||||
}
|
||||
*/
|
||||
|
||||
@end
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
@property (strong) IBOutlet NSButton *selectAutotypeContextButton;
|
||||
@property (strong) IBOutlet NSTableView *contextTableView;
|
||||
@property (strong) IBOutlet NSTextField *messageTextField;
|
||||
|
||||
@property (strong) IBOutlet NSImageView *targetApplicationImageView;
|
||||
@end
|
||||
|
||||
@implementation MPAutotypeCandidateSelectionViewController
|
||||
@@ -44,9 +44,27 @@
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
NSString *template = NSLocalizedString(@"AUTOTYPE_CANDIDATE_SELECTION_WINDOW_MESSAGE_%@", "Message text in the autotype selection window. Placeholder is %1 - windowTitle");
|
||||
self.messageTextField.stringValue = [NSString stringWithFormat:template, self.environment.windowTitle];
|
||||
|
||||
self.selectAutotypeContextButton.enabled = NO;
|
||||
|
||||
NSRunningApplication *targetApplication = [NSRunningApplication runningApplicationWithProcessIdentifier:self.environment.pid];
|
||||
if(nil != targetApplication) {
|
||||
self.targetApplicationImageView.image = [self _composeInfoImage];
|
||||
}
|
||||
|
||||
NSString *template = @"";
|
||||
if(self.candidates.count > 1) {
|
||||
template = NSLocalizedString(@"AUTOTYPE_CANDIDATE_SELECTION_WINDOW_MESSAGE_%@_%@", "Message text in the autotype selection window. Placeholder is %1 - applicationName, %2 windowTitle");
|
||||
self.messageTextField.stringValue = [NSString stringWithFormat:template, targetApplication.localizedName, self.environment.windowTitle];
|
||||
NSInteger rows = MIN(self.candidates.count, 5);
|
||||
[self.contextTableView.enclosingScrollView.heightAnchor constraintGreaterThanOrEqualToConstant:39 * rows].active = YES;
|
||||
}
|
||||
else {
|
||||
template = NSLocalizedString(@"AUTOTYPE_CANDIDATE_CONFIRMATION_WINDOW_MESSAGE_%@_%@", "Message text in the autotype confirmation window. Placeholder is %1 - applicationName, %2 windowTitle");
|
||||
self.messageTextField.stringValue = [NSString stringWithFormat:template, targetApplication.localizedName, self.environment.windowTitle];
|
||||
[self.contextTableView.enclosingScrollView.heightAnchor constraintEqualToConstant:39].active = YES;
|
||||
}
|
||||
|
||||
NSNotification *notification = [NSNotification notificationWithName:NSTableViewSelectionDidChangeNotification object:self.contextTableView];
|
||||
[self tableViewSelectionDidChange:notification];
|
||||
}
|
||||
@@ -91,5 +109,41 @@
|
||||
[MPAutotypeDaemon.defaultDaemon cancelAutotypeContextSelectionForEnvironment:self.environment];
|
||||
}
|
||||
|
||||
- (NSImage *)_composeInfoImage {
|
||||
static const uint32_t iconSize = 64;
|
||||
uint32_t imageWidth = 256;
|
||||
uint32_t imageHeight = 256;
|
||||
|
||||
NSRunningApplication *targetApplication = [NSRunningApplication runningApplicationWithProcessIdentifier:self.environment.pid];
|
||||
CGImageRef windowGrab = CGWindowListCreateImage(CGRectNull, kCGWindowListOptionIncludingWindow, self.environment.windowId, kCGWindowImageDefault | kCGWindowImageBestResolution);
|
||||
NSImage *windowImage = [[NSImage alloc] initWithCGImage:windowGrab size:NSZeroSize];
|
||||
CFRelease(windowGrab);
|
||||
|
||||
if(windowImage.size.width > windowImage.size.height) {
|
||||
imageHeight = imageWidth * (windowImage.size.height / windowImage.size.width);
|
||||
}
|
||||
else {
|
||||
imageWidth = imageWidth * (windowImage.size.width / windowImage.size.height);
|
||||
}
|
||||
|
||||
if(!targetApplication.icon) {
|
||||
return windowImage;
|
||||
}
|
||||
|
||||
NSImage *composite = [[NSImage alloc] initWithSize:NSMakeSize(MAX(imageWidth, iconSize), MAX(imageHeight, iconSize))];
|
||||
[composite lockFocus];
|
||||
/* draw the image at the top left */
|
||||
[windowImage drawInRect:NSMakeRect(composite.size.width - imageWidth, composite.size.height - imageHeight, imageWidth, imageHeight)
|
||||
fromRect:NSZeroRect
|
||||
operation:NSCompositingOperationSourceOver
|
||||
fraction:1];
|
||||
/* draw the app icon at the bottom left */
|
||||
[targetApplication.icon drawInRect:NSMakeRect(0, 0, iconSize, iconSize)
|
||||
fromRect:NSZeroRect
|
||||
operation:NSCompositingOperationSourceOver
|
||||
fraction:1];
|
||||
[composite unlockFocus];
|
||||
return composite;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -143,13 +143,13 @@ static MPAutotypeDaemon *_sharedInstance;
|
||||
|
||||
- (void)performAutotypeForEntry:(KPKEntry *)entry overrideSequence:(NSString *)sequence {
|
||||
if(entry) {
|
||||
MPAutotypeEnvironment *env = [MPAutotypeEnvironment environmentWithTargetApplication:self.previousApplication entry:entry];
|
||||
MPAutotypeEnvironment *env = [MPAutotypeEnvironment environmentWithTargetApplication:self.previousApplication entry:entry overrideSequence:sequence];
|
||||
[self _runAutotypeWithEnvironment:env];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)_didPressHotKey {
|
||||
MPAutotypeEnvironment *env = [MPAutotypeEnvironment environmentWithTargetApplication:NSWorkspace.sharedWorkspace.frontmostApplication entry:nil];
|
||||
MPAutotypeEnvironment *env = [MPAutotypeEnvironment environmentWithTargetApplication:NSWorkspace.sharedWorkspace.frontmostApplication entry:nil overrideSequence:nil];
|
||||
[self _runAutotypeWithEnvironment:env];
|
||||
}
|
||||
|
||||
@@ -278,10 +278,6 @@ static MPAutotypeDaemon *_sharedInstance;
|
||||
}
|
||||
|
||||
- (MPAutotypeContext *)_autotypeContextForDocuments:(NSArray<MPDocument *> *)documents withEnvironment:(MPAutotypeEnvironment *)environment {
|
||||
/*
|
||||
Query the document to generate a autotype command list for the window title
|
||||
We do not care where this came form, just get the autotype commands
|
||||
*/
|
||||
NSMutableArray *autotypeCandidates = [[NSMutableArray alloc] init];
|
||||
for(MPDocument *document in documents) {
|
||||
NSArray *contexts = [document autotypContextsForWindowTitle:environment.windowTitle preferredEntry:environment.preferredEntry];
|
||||
@@ -289,17 +285,31 @@ static MPAutotypeDaemon *_sharedInstance;
|
||||
[autotypeCandidates addObjectsFromArray:contexts];
|
||||
}
|
||||
}
|
||||
|
||||
if(autotypeCandidates.count <= 1) {
|
||||
return autotypeCandidates.lastObject;
|
||||
|
||||
if(autotypeCandidates.count == 0) {
|
||||
return nil; // we do not have found anything
|
||||
}
|
||||
[self _presentCandiadates:autotypeCandidates forEnvironment:environment];
|
||||
return nil; // Nothing to do, we get called back by the window
|
||||
/* present selection and return if more than one hit */
|
||||
if(autotypeCandidates.count > 1) {
|
||||
[self _presentCandiadates:autotypeCandidates forEnvironment:environment];
|
||||
return nil;
|
||||
}
|
||||
|
||||
BOOL isGlobalAutotype = (environment.preferredEntry == nil);
|
||||
BOOL alwaysShowCandidateSelection = [NSUserDefaults.standardUserDefaults boolForKey:kMPSettingsKeyGloablAutotypeAlwaysShowCandidateSelection];
|
||||
|
||||
/* present confirmation if set on global autotype */
|
||||
if(isGlobalAutotype && alwaysShowCandidateSelection) {
|
||||
[self _presentCandiadates:autotypeCandidates forEnvironment:environment];
|
||||
return nil;
|
||||
}
|
||||
/* return single hit */
|
||||
return autotypeCandidates.firstObject;
|
||||
}
|
||||
|
||||
- (void)_runAutotypeWithEnvironment:(MPAutotypeEnvironment *)environment forContext:(MPAutotypeContext *)context {
|
||||
if(nil == environment) {
|
||||
return; // no Environment to work in
|
||||
return; // no environment to work in
|
||||
}
|
||||
if(nil == context) {
|
||||
return; // No context to work with
|
||||
@@ -309,7 +319,7 @@ static MPAutotypeDaemon *_sharedInstance;
|
||||
[welf _runAutotypeWithEnvironment:environment forContext:context];
|
||||
}];
|
||||
if(!appIsFrontmost) {
|
||||
return; // We will get called back when the application is in front - hopfully
|
||||
return; // We will get called back when the application is in front
|
||||
}
|
||||
|
||||
useconds_t globalDelay = 0;
|
||||
@@ -363,8 +373,8 @@ static MPAutotypeDaemon *_sharedInstance;
|
||||
- (void)_presentCandiadates:(NSArray *)candidates forEnvironment:(MPAutotypeEnvironment *)environment {
|
||||
if(!self.matchSelectionWindow) {
|
||||
self.matchSelectionWindow = [[NSPanel alloc] initWithContentRect:NSMakeRect(0, 0, 100, 100)
|
||||
styleMask:NSWindowStyleMaskNonactivatingPanel|NSWindowStyleMaskTitled
|
||||
backing:NSBackingStoreRetained
|
||||
styleMask:NSWindowStyleMaskResizable|NSWindowStyleMaskNonactivatingPanel|NSWindowStyleMaskTitled
|
||||
backing:NSBackingStoreBuffered
|
||||
defer:YES];
|
||||
self.matchSelectionWindow.level = kCGAssistiveTechHighWindowLevel;
|
||||
MPAutotypeCandidateSelectionViewController *vc = [[MPAutotypeCandidateSelectionViewController alloc] init];
|
||||
|
||||
@@ -21,12 +21,14 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
*/
|
||||
@property (readonly, weak, nullable) KPKEntry *preferredEntry;
|
||||
@property (readonly) pid_t pid; // the PID of the target application to which the key strokes should be sent
|
||||
@property (readonly, copy) NSString *windowTitle; /// The window title of the target application.
|
||||
@property (readonly) CGWindowID windowId; // the windowID of the target window of the target application
|
||||
@property (readonly, copy) NSString *windowTitle; /// The title of the target window of the target application.
|
||||
@property (readonly) BOOL hidden; /// If set to YES, MacPass was hidden when autotype was initiated
|
||||
@property (readonly) BOOL isSelfTargeting; /// If MacPass should autotype to itself, YES, otherwise NO
|
||||
@property (readonly) NSString *overrideSequence; /// If set, this sequence is used for running the command regardless of the matched one
|
||||
|
||||
+ (instancetype)environmentWithTargetApplication:(NSRunningApplication *)targetApplication entry:(KPKEntry * _Nullable)entry;
|
||||
- (instancetype)initWithTargetApplication:(NSRunningApplication *)targetApplication entry:(KPKEntry * _Nullable)entry NS_DESIGNATED_INITIALIZER;
|
||||
+ (instancetype)environmentWithTargetApplication:(NSRunningApplication *)targetApplication entry:(KPKEntry * _Nullable)entry overrideSequence:(NSString * _Nullable)overrideSequence;
|
||||
- (instancetype)initWithTargetApplication:(NSRunningApplication *)targetApplication entry:(KPKEntry * _Nullable)entry overrideSequence:(NSString * _Nullable)overrdieSequence NS_DESIGNATED_INITIALIZER;
|
||||
- (instancetype)init NS_UNAVAILABLE;
|
||||
|
||||
@end
|
||||
|
||||
@@ -13,23 +13,27 @@
|
||||
|
||||
@implementation MPAutotypeEnvironment
|
||||
|
||||
+ (instancetype)environmentWithTargetApplication:(NSRunningApplication *)targetApplication entry:(KPKEntry *)entry {
|
||||
return [[MPAutotypeEnvironment alloc] initWithTargetApplication:targetApplication entry:entry];
|
||||
+ (instancetype)environmentWithTargetApplication:(NSRunningApplication *)targetApplication entry:(KPKEntry *)entry overrideSequence:(NSString *)overrideSequence {
|
||||
return [[MPAutotypeEnvironment alloc] initWithTargetApplication:targetApplication entry:entry overrideSequence:overrideSequence];
|
||||
}
|
||||
|
||||
- (instancetype)initWithTargetApplication:(NSRunningApplication *)targetApplication entry:(KPKEntry *)entry {
|
||||
- (instancetype)initWithTargetApplication:(NSRunningApplication *)targetApplication entry:(KPKEntry *)entry overrideSequence:(NSString *)overrdieSequence {
|
||||
self = [super init];
|
||||
if(self) {
|
||||
_preferredEntry = entry;
|
||||
_hidden = NSRunningApplication.currentApplication.isHidden;
|
||||
_overrideSequence = [overrdieSequence copy];
|
||||
if(!targetApplication) {
|
||||
_pid = -1;
|
||||
_windowTitle = @"";
|
||||
_windowId = -1;
|
||||
}
|
||||
else {
|
||||
NSDictionary *frontApplicationInfoDict = targetApplication.mp_infoDictionary;
|
||||
|
||||
_pid = [frontApplicationInfoDict[MPProcessIdentifierKey] intValue];
|
||||
_windowTitle = frontApplicationInfoDict[MPWindowTitleKey];
|
||||
_windowId = (CGWindowID)[frontApplicationInfoDict[MPWindowIDKey] integerValue];
|
||||
|
||||
/* if we have any resolvers, let them provide the window title */
|
||||
NSArray *resolvers = [MPPluginHost.sharedHost windowTitleResolverForRunningApplication:targetApplication];
|
||||
@@ -41,7 +45,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
_hidden = NSRunningApplication.currentApplication.isHidden;
|
||||
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
@@ -51,9 +51,9 @@
|
||||
}
|
||||
|
||||
- (void)execute {
|
||||
if([self.pasteData length] > 0) {
|
||||
if(self.pasteData.length > 0) {
|
||||
[MPPasteBoardController.defaultController stashObjects];
|
||||
[MPPasteBoardController.defaultController copyObjectsWithoutTimeout:@[self.pasteData]];
|
||||
[MPPasteBoardController.defaultController copyObjectWithoutTimeout:self.pasteData];
|
||||
[MPKeyTyper sendPaste];
|
||||
usleep(0.2 * NSEC_PER_MSEC); // on 10.10 we need to wait a bit before restoring the pasteboard contents
|
||||
[MPPasteBoardController.defaultController restoreObjects];
|
||||
|
||||
@@ -31,7 +31,6 @@ typedef NS_ENUM(NSUInteger, MPContextButtonSegment) {
|
||||
};
|
||||
|
||||
@property (nonatomic, strong) NSMenu *contextMenu;
|
||||
|
||||
- (void)setImage:(NSImage *)image;
|
||||
@property (nonatomic, strong) NSImage *image;
|
||||
|
||||
@end
|
||||
|
||||
@@ -52,7 +52,12 @@
|
||||
self.cell = cell;
|
||||
|
||||
self.focusRingType = NSFocusRingTypeNone;
|
||||
self.segmentStyle = NSSegmentStyleTexturedSquare;
|
||||
if (@available(macOS 11.0, *)) {
|
||||
self.segmentStyle = NSSegmentStyleSeparated;
|
||||
}
|
||||
else {
|
||||
self.segmentStyle = NSSegmentStyleTexturedSquare;
|
||||
}
|
||||
self.segmentCount = MPContextButtonSegmentCount;
|
||||
cell.trackingMode = NSSegmentSwitchTrackingMomentary;
|
||||
[cell setWidth:31 forSegment:MPContextButtonSegmentButton];
|
||||
@@ -91,6 +96,10 @@
|
||||
[self setImage:image forSegment:MPContextButtonSegmentButton];
|
||||
}
|
||||
|
||||
- (NSImage *)image {
|
||||
return [self imageForSegment:MPContextButtonSegmentButton];
|
||||
}
|
||||
|
||||
- (void)showContextMenu:(id)sender {
|
||||
NSPoint point = self.frame.origin;
|
||||
point.x = [self.cell widthForSegment:MPContextButtonSegmentButton];
|
||||
@@ -102,15 +111,15 @@
|
||||
NSImageRep *rep = [[self imageForSegment:MPContextButtonSegmentButton] bestRepresentationForRect:NSMakeRect(0, 0, 100, 100) context:nil hints:nil];
|
||||
CGFloat scale = rep.size.width / rep.size.height;
|
||||
switch (controlSize) {
|
||||
case NSRegularControlSize:
|
||||
case NSControlSizeRegular:
|
||||
[self imageForSegment:MPContextButtonSegmentButton].size = NSMakeSize(16 * scale, 16);
|
||||
break;
|
||||
|
||||
case NSSmallControlSize:
|
||||
case NSControlSizeSmall:
|
||||
[self imageForSegment:MPContextButtonSegmentButton].size = NSMakeSize(14 * scale, 14);
|
||||
break;
|
||||
|
||||
case NSMiniControlSize:
|
||||
case NSControlSizeMini:
|
||||
[self imageForSegment:MPContextButtonSegmentButton].size = NSMakeSize(8 * scale, 8);
|
||||
|
||||
default:
|
||||
|
||||
@@ -37,11 +37,11 @@ typedef NS_OPTIONS(NSUInteger, MPContextMenuItemsFlags) {
|
||||
};
|
||||
|
||||
@interface MPContextMenuHelper : NSTableCellView
|
||||
|
||||
/*
|
||||
Creates an array of menuitems to be used as a menu
|
||||
Automatically sets up actions, so you need to take care of the responder chain
|
||||
*/
|
||||
+ (NSArray <NSMenuItem *> *)contextMenuItemsWithItems:(MPContextMenuItemsFlags)flags;
|
||||
+ (NSArray <NSMenuItem *> *)contextMenuItemsWithCreateFromTemplateEntriesItems;
|
||||
|
||||
@end
|
||||
|
||||
@@ -22,9 +22,13 @@
|
||||
|
||||
#import "MPContextMenuHelper.h"
|
||||
#import "MPActionHelper.h"
|
||||
|
||||
#import "MPDocument.h"
|
||||
#import "MPFlagsHelper.h"
|
||||
|
||||
#import "KPKNode+IconImage.h"
|
||||
|
||||
#import <KeePassKit/KeePassKit.h>
|
||||
|
||||
static void MPContextmenuHelperBeginSection(NSMutableArray *items) {
|
||||
if(items.count > 0) {
|
||||
[items addObject:[NSMenuItem separatorItem]];
|
||||
@@ -33,6 +37,38 @@ static void MPContextmenuHelperBeginSection(NSMutableArray *items) {
|
||||
|
||||
@implementation MPContextMenuHelper
|
||||
|
||||
+ (NSArray<NSMenuItem *> *)contextMenuItemsWithCreateFromTemplateEntriesItems {
|
||||
/*
|
||||
The Method is rather brute force
|
||||
It's possible nicer to cache the entries and just update
|
||||
the menu entries, that actually need updating
|
||||
*/
|
||||
|
||||
NSMutableArray *items = [[NSMutableArray alloc] init];
|
||||
NSMenuItem *editItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"EDIT_TEMPLATE_GROUP", "Menu item on the add entry context menu to edit template groups") action:[MPActionHelper actionOfType:MPActionEditTemplateGroup] keyEquivalent:@""];
|
||||
|
||||
[items addObject:editItem];
|
||||
MPContextmenuHelperBeginSection(items);
|
||||
|
||||
MPDocument *document = NSDocumentController.sharedDocumentController.currentDocument;
|
||||
for(KPKEntry *entry in document.templates.childEntries) {
|
||||
NSString *templateMask = NSLocalizedString(@"NEW_ENTRY_WITH_TEMPLATE_%@", "Submenu to add an entry via template");
|
||||
NSMenuItem *templateItem = [[NSMenuItem alloc] initWithTitle:[NSString stringWithFormat:templateMask, entry.title]
|
||||
action:@selector(createEntryFromTemplate:)
|
||||
keyEquivalent:@""];
|
||||
templateItem.image = [entry.iconImage copy];
|
||||
templateItem.image.size = NSMakeSize(14, 14);
|
||||
templateItem.representedObject = entry.uuid;
|
||||
[items addObject:templateItem];
|
||||
}
|
||||
/* If there are no entries, add a note as disabled menu item */
|
||||
if(items.count == 2) {
|
||||
NSMenuItem *noItemsItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"NO_TEMPLATES", "Menu item added to show that no templates are defined") action:NULL keyEquivalent:@""];
|
||||
[items addObject:noItemsItem];
|
||||
}
|
||||
return [items copy];
|
||||
}
|
||||
|
||||
+ (NSArray<NSMenuItem *> *)contextMenuItemsWithItems:(MPContextMenuItemsFlags)flags {
|
||||
|
||||
BOOL const insertCreate = MPIsFlagSetInOptions(MPContextMenuCreate, flags);
|
||||
@@ -44,7 +80,7 @@ static void MPContextmenuHelperBeginSection(NSMutableArray *items) {
|
||||
BOOL const insertHistory = MPIsFlagSetInOptions(MPContextMenuHistory, flags);
|
||||
BOOL const insertShowGroupInOutline = MPIsFlagSetInOptions(MPContextMenuShowGroupInOutline, flags);
|
||||
|
||||
NSMutableArray *items = [NSMutableArray arrayWithCapacity:10];
|
||||
NSMutableArray *items = [NSMutableArray arrayWithCapacity:15];
|
||||
if(insertCreate) {
|
||||
|
||||
NSMenuItem *newGroup = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"NEW_GROUP", @"Menu item to create a new group")
|
||||
@@ -54,7 +90,20 @@ static void MPContextmenuHelperBeginSection(NSMutableArray *items) {
|
||||
action:[MPActionHelper actionOfType:MPActionAddEntry]
|
||||
keyEquivalent:@"n"];
|
||||
|
||||
|
||||
[items addObjectsFromArray:@[ newGroup, newEntry ]];
|
||||
/*
|
||||
NSMenuItem *newEntryFromTemplate = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"NEW_ENTRY_FROM_TEMPLATE", @"Submen to create entries from tempaltes")
|
||||
action:NULL
|
||||
keyEquivalent:@""];
|
||||
newEntryFromTemplate.submenu = [[NSMenu alloc] init];
|
||||
NSArray *templateItems = [self contextMenuItemsWithCreateFromTemplateEntriesItems];
|
||||
for(NSMenuItem *item in templateItems) {
|
||||
[newEntryFromTemplate.submenu addItem:item];
|
||||
}
|
||||
[items addObjectsFromArray:@[ newGroup, newEntry, newEntryFromTemplate ]];
|
||||
*/
|
||||
|
||||
}
|
||||
if(insertDuplicate) {
|
||||
MPContextmenuHelperBeginSection(items);
|
||||
@@ -84,7 +133,7 @@ static void MPContextmenuHelperBeginSection(NSMutableArray *items) {
|
||||
NSMenuItem *emptyTrash = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"EMPTY_TRASH", @"Menu item to empty the trash")
|
||||
action:[MPActionHelper actionOfType:MPActionEmptyTrash]
|
||||
keyEquivalent:@""];
|
||||
emptyTrash.keyEquivalentModifierMask = (NSShiftKeyMask | NSCommandKeyMask);
|
||||
emptyTrash.keyEquivalentModifierMask = (NSEventModifierFlagShift | NSEventModifierFlagCommand);
|
||||
unichar backSpace = NSBackspaceCharacter;
|
||||
emptyTrash.keyEquivalent = [NSString stringWithCharacters:&backSpace length:1];
|
||||
[items addObject:emptyTrash];
|
||||
@@ -99,7 +148,7 @@ static void MPContextmenuHelperBeginSection(NSMutableArray *items) {
|
||||
NSMenuItem *copyPassword = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"COPY_PASSWORD", @"Menu item to copy the password of an entry")
|
||||
action:[MPActionHelper actionOfType:MPActionCopyPassword]
|
||||
keyEquivalent:@"c"];
|
||||
copyPassword.keyEquivalentModifierMask = (copyPassword.keyEquivalentModifierMask | NSAlternateKeyMask);
|
||||
copyPassword.keyEquivalentModifierMask = (copyPassword.keyEquivalentModifierMask | NSEventModifierFlagOption);
|
||||
NSMenu *urlMenu = [[NSMenu alloc] init];
|
||||
NSMenuItem *urlItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"URL", @"Submenu with options what to do with the URL of an entry")
|
||||
action:0
|
||||
@@ -129,7 +178,7 @@ static void MPContextmenuHelperBeginSection(NSMutableArray *items) {
|
||||
NSMenuItem *showHistory = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"SHOW_HISTORY", @"Menu item to show the history of the selected entry")
|
||||
action:[MPActionHelper actionOfType:MPActionShowEntryHistory]
|
||||
keyEquivalent:@"h"];
|
||||
showHistory.keyEquivalentModifierMask = (showHistory.keyEquivalentModifierMask | NSCommandKeyMask | NSControlKeyMask);
|
||||
showHistory.keyEquivalentModifierMask = (showHistory.keyEquivalentModifierMask | NSEventModifierFlagCommand | NSEventModifierFlagControl);
|
||||
[items addObject:showHistory];
|
||||
}
|
||||
if(insertShowGroupInOutline) {
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
//
|
||||
// MPCustomFieldTableView.h
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 11.09.18.
|
||||
// Copyright © 2018 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
//
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
@interface MPCustomFieldTableView : NSTableView
|
||||
|
||||
@end
|
||||
@@ -1,40 +0,0 @@
|
||||
//
|
||||
// MPCustomFieldTableView.m
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 11.09.18.
|
||||
// Copyright © 2018 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
//
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
|
||||
#import "MPCustomFieldTableView.h"
|
||||
|
||||
@implementation MPCustomFieldTableView
|
||||
|
||||
/*
|
||||
on macOS 10.11 and lower, the height is not calculated correctly
|
||||
*/
|
||||
- (NSSize)intrinsicContentSize {
|
||||
if(@available(macOS 10.12, *)) {
|
||||
return [super intrinsicContentSize];
|
||||
}
|
||||
if(self.numberOfRows > 0) {
|
||||
return NSMakeSize(-1, self.numberOfRows * self.rowHeight);
|
||||
}
|
||||
return NSMakeSize(-1, -1);
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -38,25 +38,6 @@ NSInteger MPCustomFieldTagFromIndex(NSInteger index) {
|
||||
|
||||
@implementation MPCustomFieldTableViewDelegate
|
||||
|
||||
|
||||
- (void)tableView:(NSTableView *)tableView didRemoveRowView:(NSTableRowView *)rowView forRow:(NSInteger)row {
|
||||
if(@available(macOS 10.12, *)) {
|
||||
// 10.12 and higher are working correctly
|
||||
}
|
||||
else {
|
||||
[tableView invalidateIntrinsicContentSize];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)tableView:(NSTableView *)tableView didAddRowView:(NSTableRowView *)rowView forRow:(NSInteger)row {
|
||||
if(@available(macOS 10.12, *)) {
|
||||
// 10.12 and higher are working correctly
|
||||
}
|
||||
else {
|
||||
[tableView invalidateIntrinsicContentSize];
|
||||
}
|
||||
}
|
||||
|
||||
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
|
||||
MPCustomFieldTableCellView *view = [tableView makeViewWithIdentifier:@"SelectedCell" owner:tableView];
|
||||
|
||||
|
||||
@@ -51,11 +51,16 @@ typedef NS_ENUM(NSUInteger, MPDatabaseSettingsTab) {
|
||||
|
||||
/* AES */
|
||||
@property (weak) IBOutlet NSTextField *aesEncryptionRoundsTextField;
|
||||
/* Argon2 */
|
||||
@property (weak) IBOutlet NSTextField *argon2ThreadsTextField;
|
||||
@property (weak) IBOutlet NSTextField *argon2IterationsTextField;
|
||||
@property (weak) IBOutlet NSTextField *argon2MemoryTextField;
|
||||
@property (weak) IBOutlet NSStepper *argon2MemoryStepper;
|
||||
/* Argon2d */
|
||||
@property (weak) IBOutlet NSTextField *argon2dThreadsTextField;
|
||||
@property (weak) IBOutlet NSTextField *argon2dIterationsTextField;
|
||||
@property (weak) IBOutlet NSTextField *argon2dMemoryTextField;
|
||||
@property (weak) IBOutlet NSStepper *argon2dMemoryStepper;
|
||||
/* Argon2id */
|
||||
@property (weak) IBOutlet NSTextField *argon2idThreadsTextField;
|
||||
@property (weak) IBOutlet NSTextField *argon2idIterationsTextField;
|
||||
@property (weak) IBOutlet NSTextField *argon2idMemoryTextField;
|
||||
@property (weak) IBOutlet NSStepper *argon2idMemoryStepper;
|
||||
|
||||
/* Advanced Tab*/
|
||||
@property (weak) IBOutlet NSButton *enableHistoryCheckButton;
|
||||
|
||||
@@ -39,7 +39,8 @@
|
||||
NSString *_missingFeature;
|
||||
}
|
||||
|
||||
@property (assign) NSInteger argon2Memory;
|
||||
@property (assign) NSInteger argon2dMemory;
|
||||
@property (assign) NSInteger argon2idMemory;
|
||||
|
||||
@property (assign) BOOL enableHistory;
|
||||
@property (assign) NSInteger maxiumHistoryItems;
|
||||
@@ -92,7 +93,8 @@
|
||||
}
|
||||
self.cipherPopupButton.menu = cipherMenu;
|
||||
self.keyDerivationSettingsTabView.tabViewItems[0].identifier = [KPKAESKeyDerivation uuid];
|
||||
self.keyDerivationSettingsTabView.tabViewItems[1].identifier = [KPKArgon2KeyDerivation uuid];
|
||||
self.keyDerivationSettingsTabView.tabViewItems[1].identifier = [KPKArgon2DKeyDerivation uuid];
|
||||
self.keyDerivationSettingsTabView.tabViewItems[2].identifier = [KPKArgon2IDKeyDerivation uuid];
|
||||
}
|
||||
|
||||
#pragma mark Actions
|
||||
@@ -106,7 +108,6 @@
|
||||
/* General */
|
||||
KPKMetaData *metaData = ((MPDocument *)self.document).tree.metaData;
|
||||
/* TODO move settingsChanged updates to KeePassKit as it's the models responsibility */
|
||||
metaData.settingsChanged = NSDate.date;
|
||||
metaData.databaseDescription = self.databaseDescriptionTextView.string;
|
||||
metaData.databaseName = self.databaseNameTextField.stringValue;
|
||||
|
||||
@@ -163,20 +164,28 @@
|
||||
/* Security */
|
||||
metaData.cipherUUID = self.cipherPopupButton.selectedItem.representedObject;
|
||||
|
||||
KPKAESKeyDerivation *aesKdf = [[KPKAESKeyDerivation alloc] initWithParameters:[KPKAESKeyDerivation defaultParameters]];
|
||||
KPKArgon2KeyDerivation *argon2Kdf = [[KPKArgon2KeyDerivation alloc] initWithParameters:[KPKArgon2KeyDerivation defaultParameters]];
|
||||
|
||||
NSUUID *selectedKdfUUID = self.keyDerivationSettingsTabView.selectedTabViewItem.identifier;
|
||||
KPKAESKeyDerivation *aesKdf = [[KPKAESKeyDerivation alloc] initWithParameters:[KPKAESKeyDerivation defaultParameters]];
|
||||
KPKArgon2DKeyDerivation *argon2dKdf = [[KPKArgon2DKeyDerivation alloc] initWithParameters:[KPKArgon2DKeyDerivation defaultParameters]];
|
||||
KPKArgon2IDKeyDerivation *argon2idKdf = [[KPKArgon2IDKeyDerivation alloc] initWithParameters:[KPKArgon2IDKeyDerivation defaultParameters]];
|
||||
|
||||
if([selectedKdfUUID isEqual:aesKdf.uuid]) {
|
||||
|
||||
aesKdf.rounds = self.aesEncryptionRoundsTextField.integerValue;
|
||||
metaData.keyDerivationParameters = aesKdf.parameters;
|
||||
}
|
||||
else if([selectedKdfUUID isEqual:argon2Kdf.uuid]) {
|
||||
argon2Kdf.iterations = self.argon2IterationsTextField.integerValue;
|
||||
argon2Kdf.memory = self.argon2Memory;
|
||||
argon2Kdf.threads = self.argon2ThreadsTextField.intValue;
|
||||
metaData.keyDerivationParameters = argon2Kdf.parameters;
|
||||
else if([selectedKdfUUID isEqual:argon2dKdf.uuid]) {
|
||||
|
||||
argon2dKdf.iterations = self.argon2dIterationsTextField.integerValue;
|
||||
argon2dKdf.memory = self.argon2dMemory;
|
||||
argon2dKdf.threads = self.argon2dThreadsTextField.intValue;
|
||||
metaData.keyDerivationParameters = argon2dKdf.parameters;
|
||||
}
|
||||
else if([selectedKdfUUID isEqual:argon2idKdf.uuid]) {
|
||||
argon2idKdf.iterations = self.argon2idIterationsTextField.integerValue;
|
||||
argon2idKdf.memory = self.argon2idMemory;
|
||||
argon2idKdf.threads = self.argon2idThreadsTextField.intValue;
|
||||
metaData.keyDerivationParameters = argon2idKdf.parameters;
|
||||
}
|
||||
|
||||
/* Changes to metadata aren't backed by undomanager, thus we need to manually set the document dirty */
|
||||
@@ -188,12 +197,21 @@
|
||||
[self dismissSheet:0];
|
||||
}
|
||||
|
||||
- (IBAction)benchmarkRounds:(id)sender {
|
||||
self.createKeyDerivationParametersButton.enabled = NO;
|
||||
[KPKAESKeyDerivation parametersForDelay:1 completionHandler:^(NSDictionary * _Nonnull options) {
|
||||
self.aesEncryptionRoundsTextField.integerValue = [options[KPKAESRoundsOption] unsignedInteger64Value];
|
||||
self.createKeyDerivationParametersButton.enabled = YES;
|
||||
}];
|
||||
- (IBAction)benchmarkParametersForDelay:(id)sender {
|
||||
NSUUID *selectedKdfUUID = self.keyDerivationSettingsTabView.selectedTabViewItem.identifier;
|
||||
if([selectedKdfUUID isEqual:[KPKAESKeyDerivation uuid]]) {
|
||||
self.createKeyDerivationParametersButton.enabled = NO;
|
||||
[KPKAESKeyDerivation parametersForDelay:1 completionHandler:^(NSDictionary * _Nonnull options) {
|
||||
self.aesEncryptionRoundsTextField.integerValue = [options[KPKAESRoundsOption] unsignedInteger64Value];
|
||||
self.createKeyDerivationParametersButton.enabled = YES;
|
||||
}];
|
||||
}
|
||||
else if([selectedKdfUUID isEqual:[KPKArgon2DKeyDerivation uuid]]) {
|
||||
// TODO: add benchmark
|
||||
}
|
||||
else if([selectedKdfUUID isEqual:[KPKArgon2IDKeyDerivation uuid]]) {
|
||||
// TODO: add benchmark
|
||||
}
|
||||
}
|
||||
|
||||
- (void)updateView {
|
||||
@@ -273,37 +291,57 @@
|
||||
[self.keyDerivationPopupButton selectItemAtIndex:kdfIndex];
|
||||
[self.keyDerivationSettingsTabView selectTabViewItemWithIdentifier:keyDerivation.uuid];
|
||||
|
||||
if([keyDerivation isKindOfClass:[KPKAESKeyDerivation class]]) {
|
||||
/* fill defaults for AES */
|
||||
KPKAESKeyDerivation *aesKdf = [[KPKAESKeyDerivation alloc] initWithParameters:[KPKAESKeyDerivation defaultParameters]];
|
||||
self.aesEncryptionRoundsTextField.integerValue = aesKdf.rounds;
|
||||
|
||||
/* fill defaults for Argon2d */
|
||||
KPKArgon2DKeyDerivation *argon2dKdf = [[KPKArgon2DKeyDerivation alloc] initWithParameters:[KPKArgon2DKeyDerivation defaultParameters]];
|
||||
self.argon2dIterationsTextField.integerValue = argon2dKdf.iterations;
|
||||
self.argon2dMemory = argon2dKdf.memory;
|
||||
self.argon2dThreadsTextField.integerValue = argon2dKdf.threads;
|
||||
|
||||
/* fill defaults for Argon2id */
|
||||
KPKArgon2IDKeyDerivation *argon2idKdf = [[KPKArgon2IDKeyDerivation alloc] initWithParameters:[KPKArgon2IDKeyDerivation defaultParameters]];
|
||||
self.argon2idIterationsTextField.integerValue = argon2idKdf.iterations;
|
||||
self.argon2idMemory = argon2idKdf.memory;
|
||||
self.argon2idThreadsTextField.integerValue = argon2idKdf.threads;
|
||||
|
||||
if([keyDerivation isMemberOfClass:KPKAESKeyDerivation.class]) {
|
||||
/* set to database values */
|
||||
KPKAESKeyDerivation *aesKdf = (KPKAESKeyDerivation *)keyDerivation;
|
||||
self.aesEncryptionRoundsTextField.integerValue = aesKdf.rounds;
|
||||
self.createKeyDerivationParametersButton.enabled = YES;
|
||||
|
||||
/* fill defaults for Argon2 */
|
||||
KPKArgon2KeyDerivation *argon2Kdf = [[KPKArgon2KeyDerivation alloc] initWithParameters:[KPKArgon2KeyDerivation defaultParameters]];
|
||||
self.argon2IterationsTextField.integerValue = argon2Kdf.iterations;
|
||||
self.argon2Memory = argon2Kdf.memory;
|
||||
self.argon2ThreadsTextField.integerValue = argon2Kdf.threads;
|
||||
}
|
||||
else if([keyDerivation isKindOfClass:[KPKArgon2KeyDerivation class]]) {
|
||||
KPKArgon2KeyDerivation *argon2Kdf = (KPKArgon2KeyDerivation *)keyDerivation;
|
||||
self.argon2Memory = argon2Kdf.memory;
|
||||
self.argon2ThreadsTextField.integerValue = argon2Kdf.threads;
|
||||
self.argon2IterationsTextField.integerValue = argon2Kdf.iterations;
|
||||
|
||||
/* fill defaults for AES */
|
||||
KPKAESKeyDerivation *aesKdf = [[KPKAESKeyDerivation alloc] initWithParameters:[KPKAESKeyDerivation defaultParameters]];
|
||||
self.aesEncryptionRoundsTextField.integerValue = aesKdf.rounds;
|
||||
else if([keyDerivation isMemberOfClass:KPKArgon2DKeyDerivation.class]) {
|
||||
/* set to database value */
|
||||
KPKArgon2DKeyDerivation *argon2dKdf = (KPKArgon2DKeyDerivation *)keyDerivation;
|
||||
self.argon2dMemory = argon2dKdf.memory;
|
||||
self.argon2dThreadsTextField.integerValue = argon2dKdf.threads;
|
||||
self.argon2dIterationsTextField.integerValue = argon2dKdf.iterations;
|
||||
}
|
||||
else if([keyDerivation isMemberOfClass:KPKArgon2IDKeyDerivation.class]) {
|
||||
/* set to database value */
|
||||
KPKArgon2IDKeyDerivation *argon2idKdf = (KPKArgon2IDKeyDerivation *)keyDerivation;
|
||||
self.argon2idMemory = argon2idKdf.memory;
|
||||
self.argon2idThreadsTextField.integerValue = argon2idKdf.threads;
|
||||
self.argon2idIterationsTextField.integerValue = argon2idKdf.iterations;
|
||||
}
|
||||
else {
|
||||
NSAssert(NO, @"Unkown key derivation");
|
||||
}
|
||||
|
||||
self.argon2MemoryStepper.minValue = 8*1024; // 8KB minimum
|
||||
self.argon2MemoryStepper.maxValue = NSIntegerMax;
|
||||
self.argon2MemoryStepper.increment = 1024*1024; // 1 megabytes steps
|
||||
[self.argon2MemoryTextField bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(argon2Memory)) options:nil];
|
||||
[self.argon2MemoryStepper bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(argon2Memory)) options:nil];
|
||||
|
||||
self.argon2dMemoryStepper.minValue = 8*1024; // 8KB minimum
|
||||
self.argon2dMemoryStepper.maxValue = NSIntegerMax;
|
||||
self.argon2dMemoryStepper.increment = 1024*1024; // 1 megabytes steps
|
||||
[self.argon2dMemoryTextField bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(argon2dMemory)) options:nil];
|
||||
[self.argon2dMemoryStepper bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(argon2dMemory)) options:nil];
|
||||
|
||||
self.argon2idMemoryStepper.minValue = 8*1024; // 8KB minimum
|
||||
self.argon2idMemoryStepper.maxValue = NSIntegerMax;
|
||||
self.argon2idMemoryStepper.increment = 1024*1024; // 1 megabytes steps
|
||||
[self.argon2idMemoryTextField bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(argon2idMemory)) options:nil];
|
||||
[self.argon2idMemoryStepper bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(argon2idMemory)) options:nil];
|
||||
|
||||
NSUInteger cipherIndex = [self.cipherPopupButton.menu indexOfItemWithRepresentedObject:metaData.cipherUUID];
|
||||
[self.cipherPopupButton selectItemAtIndex:cipherIndex];
|
||||
|
||||
@@ -42,15 +42,20 @@ NSString *const kMPDocumentSearchResultsKey = @"kMPDocumentSearchResul
|
||||
- (void)enterSearchWithContext:(MPEntrySearchContext *)context {
|
||||
/* the search context is loaded via defaults */
|
||||
self.searchContext = context;
|
||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(updateSearch:) name:NSUndoManagerDidRedoChangeNotification object:self.undoManager];
|
||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(updateSearch:) name:NSUndoManagerDidUndoChangeNotification object:self.undoManager];
|
||||
//[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(updateSearch:) name:NSUndoManagerDidCloseUndoGroupNotification object:self.undoManager];
|
||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(updateSearch:) name:KPKTreeDidAddEntryNotification object:self.tree];
|
||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(updateSearch:) name:KPKTreeDidAddGroupNotification object:self.tree];
|
||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(updateSearch:) name:KPKTreeDidRemoveEntryNotification object:self.tree];
|
||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(updateSearch:) name:KPKTreeDidRemoveGroupNotification object:self.tree];
|
||||
|
||||
[NSNotificationCenter.defaultCenter postNotificationName:MPDocumentDidEnterSearchNotification object:self];
|
||||
[self updateSearch:self];
|
||||
/* clear selection */
|
||||
self.selectedGroups = nil;
|
||||
self.selectedEntries = nil;
|
||||
}
|
||||
|
||||
#pragma mark Actions
|
||||
- (IBAction)perfromCustomSearch:(id)sender {
|
||||
- (IBAction)performCustomSearch:(id)sender {
|
||||
[self enterSearchWithContext:[MPEntrySearchContext userContext]];
|
||||
}
|
||||
|
||||
@@ -72,9 +77,12 @@ NSString *const kMPDocumentSearchResultsKey = @"kMPDocumentSearchResul
|
||||
}
|
||||
|
||||
- (void)exitSearch:(id)sender {
|
||||
[NSNotificationCenter.defaultCenter removeObserver:self name:NSUndoManagerDidUndoChangeNotification object:self.undoManager];
|
||||
[NSNotificationCenter.defaultCenter removeObserver:self name:NSUndoManagerDidRedoChangeNotification object:self.undoManager];
|
||||
//[NSNotificationCenter.defaultCenter removeObserver:self name:NSUndoManagerDidCloseUndoGroupNotification object:self.undoManager];
|
||||
|
||||
[NSNotificationCenter.defaultCenter removeObserver:self name:KPKTreeDidAddEntryNotification object:self.tree];
|
||||
[NSNotificationCenter.defaultCenter removeObserver:self name:KPKTreeDidAddGroupNotification object:self.tree];
|
||||
[NSNotificationCenter.defaultCenter removeObserver:self name:KPKTreeDidRemoveEntryNotification object:self.tree];
|
||||
[NSNotificationCenter.defaultCenter removeObserver:self name:KPKTreeDidRemoveGroupNotification object:self.tree];
|
||||
|
||||
self.searchContext = nil;
|
||||
[NSNotificationCenter.defaultCenter postNotificationName:MPDocumentDidExitSearchNotification object:self];
|
||||
}
|
||||
@@ -98,15 +106,15 @@ NSString *const kMPDocumentSearchResultsKey = @"kMPDocumentSearchResul
|
||||
NSAssert([sender isKindOfClass:NSMenuItem.class], @"Internal inconsitency. Did expect NSMenuItem expected, but got %@", [sender class]);
|
||||
state = ((NSMenuItem *)sender).state;
|
||||
/* Manually toggle the state since the popupbuttoncell doesn't do it like we want it to */
|
||||
state = state == NSOnState ? NSOffState : NSOnState;
|
||||
state = state == NSControlStateValueOn ? NSControlStateValueOff : NSControlStateValueOn;
|
||||
}
|
||||
|
||||
switch(state) {
|
||||
case NSOffState:
|
||||
case NSControlStateValueOff:
|
||||
toggleFlag ^= MPEntrySearchAllCombineableFlags;
|
||||
newFlags = isSingleFlag ? MPEntrySearchNone : (self.searchContext.searchFlags & toggleFlag);
|
||||
break;
|
||||
case NSOnState:
|
||||
case NSControlStateValueOn:
|
||||
if(isSingleFlag ) {
|
||||
newFlags = toggleFlag; // This has to be either expired or double passwords
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ FOUNDATION_EXPORT NSString *const MPDocumentDidAddGroupNotification;
|
||||
* The userInfo dictionary contains the added entry at MPDocumentEntryKey
|
||||
*/
|
||||
FOUNDATION_EXPORT NSString *const MPDocumentDidAddEntryNotification;
|
||||
FOUNDATION_EXPORT NSString *const MPDocumentDidRevertNotifiation;
|
||||
FOUNDATION_EXPORT NSString *const MPDocumentDidRevertNotification;
|
||||
|
||||
FOUNDATION_EXPORT NSString *const MPDocumentDidLockDatabaseNotification;
|
||||
FOUNDATION_EXPORT NSString *const MPDocumentDidUnlockDatabaseNotification;
|
||||
@@ -259,7 +259,7 @@ FOUNDATION_EXTERN NSString *const MPDocumentDidChangeSearchResults;
|
||||
FOUNDATION_EXTERN NSString *const kMPDocumentSearchResultsKey;
|
||||
|
||||
@interface MPDocument (Search)
|
||||
- (IBAction)perfromCustomSearch:(id)sender;
|
||||
- (IBAction)performCustomSearch:(id)sender;
|
||||
- (void)enterSearchWithContext:(MPEntrySearchContext *)context;
|
||||
|
||||
/* Should be called by the NSSearchTextField to update the search string */
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
NSString *const MPDocumentDidAddGroupNotification = @"com.hicknhack.macpass.MPDocumentDidAddGroupNotification";
|
||||
NSString *const MPDocumentDidAddEntryNotification = @"com.hicknhack.macpass.MPDocumentDidAddEntryNotification";
|
||||
|
||||
NSString *const MPDocumentDidRevertNotifiation = @"com.hicknhack.macpass.MPDocumentDidRevertNotifiation";
|
||||
NSString *const MPDocumentDidRevertNotification = @"com.hicknhack.macpass.MPDocumentDidRevertNotification";
|
||||
|
||||
NSString *const MPDocumentDidLockDatabaseNotification = @"com.hicknhack.macpass.MPDocumentDidLockDatabaseNotification";
|
||||
NSString *const MPDocumentDidUnlockDatabaseNotification = @"com.hicknhack.macpass.MPDocumentDidUnlockDatabaseNotification";
|
||||
@@ -147,6 +147,10 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
||||
[self addWindowController:windowController];
|
||||
}
|
||||
|
||||
- (BOOL)canAsynchronouslyWriteToURL:(NSURL *)url ofType:(NSString *)typeName forSaveOperation:(NSSaveOperationType)saveOperation {
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (BOOL)checkAutosavingSafetyAndReturnError:(NSError **)outError {
|
||||
if(![super checkAutosavingSafetyAndReturnError:outError]) {
|
||||
return NO; // default checking has found an error!
|
||||
@@ -155,7 +159,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
||||
if(self.encryptedData) {
|
||||
return YES;
|
||||
}
|
||||
if(self.compositeKey.hasPasswordOrKeyFile) {
|
||||
if(self.compositeKey.hasKeys) {
|
||||
return YES; // key is set, so autosave should be save
|
||||
}
|
||||
|
||||
@@ -166,7 +170,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
||||
NSLocalizedRecoverySuggestionErrorKey : NSLocalizedString(@"WARNING_ON_SAVE_NO_PASSWORD_OR_KEY_SET_SUGGESTION", ""),
|
||||
NSLocalizedRecoveryOptionsErrorKey : @[ NSLocalizedString(@"CHANGE_PASSWORD_WITH_DOTS", ""), NSLocalizedString(@"CANCEL", "") ],
|
||||
NSRecoveryAttempterErrorKey : recovery
|
||||
};
|
||||
};
|
||||
if(outError != NULL) {
|
||||
*outError = [NSError errorWithDomain:MPDefaultErrorDomain code:MPErrorNoPasswordOrKeyFile userInfo:userInfo];
|
||||
}
|
||||
@@ -186,7 +190,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
||||
NSLog(@"%@ should not be called on locked databases!", NSStringFromSelector(_cmd));
|
||||
return self.encryptedData;
|
||||
}
|
||||
if(!self.compositeKey.hasPasswordOrKeyFile) {
|
||||
if(!self.compositeKey.hasKeys) {
|
||||
if(outError != NULL) {
|
||||
NSDictionary *userInfo = @{ NSLocalizedDescriptionKey: NSLocalizedString(@"WARNING_ON_SAVE_NO_PASSWORD_OR_KEY_SET", "") };
|
||||
*outError = [NSError errorWithDomain:MPDefaultErrorDomain code:0 userInfo:userInfo];
|
||||
@@ -202,7 +206,15 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
||||
}
|
||||
return nil; // We do not know what version to save!
|
||||
}
|
||||
return [self.tree encryptWithKey:self.compositeKey format:format error:outError];
|
||||
// create a copy to allow for unblocking user interaction
|
||||
NSLog(@"Copying tree to save…");
|
||||
KPKTree *copy = [self.tree copy];
|
||||
NSLog(@"Created copy…");
|
||||
[self unblockUserInteraction];
|
||||
NSLog(@"Starting encryption…");
|
||||
NSData *data = [copy encryptWithKey:self.compositeKey format:format error:outError];
|
||||
NSLog(@"Finished encryption…");
|
||||
return data;
|
||||
}
|
||||
|
||||
- (BOOL)readFromURL:(NSURL *)url ofType:(NSString *)typeName error:(NSError **)outError {
|
||||
@@ -216,7 +228,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
||||
|
||||
- (BOOL)revertToContentsOfURL:(NSURL *)absoluteURL ofType:(NSString *)typeName error:(NSError **)outError {
|
||||
if([super revertToContentsOfURL:absoluteURL ofType:typeName error:outError]) {
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:MPDocumentDidRevertNotifiation object:self];
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:MPDocumentDidRevertNotification object:self];
|
||||
return YES;
|
||||
}
|
||||
return NO;
|
||||
@@ -228,13 +240,6 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
||||
|
||||
- (void)close {
|
||||
[self _cleanupLock];
|
||||
/*
|
||||
We store the last url. Restored windows are automatically handled.
|
||||
If closeAllDocuments is set, all docs get this message
|
||||
*/
|
||||
if(self.fileURL.isFileURL) {
|
||||
[[NSUserDefaults standardUserDefaults] setObject:self.fileURL.absoluteString forKey:kMPSettingsKeyLastDatabasePath];
|
||||
}
|
||||
self.tree = nil;
|
||||
[super close];
|
||||
}
|
||||
@@ -295,7 +300,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
||||
return;
|
||||
}
|
||||
NSAlert *alert = [[NSAlert alloc] init];
|
||||
alert.alertStyle = NSWarningAlertStyle;
|
||||
alert.alertStyle = NSAlertStyleWarning;
|
||||
alert.messageText = NSLocalizedString(@"FILE_CHANGED_BY_OTHERS_MESSAGE_TEXT", @"Message displayed when an open file was changed from another application");
|
||||
alert.informativeText = NSLocalizedString(@"FILE_CHANGED_BY_OTHERS_INFO_TEXT", @"Informative text displayed when the file was change from another application");
|
||||
alert.showsSuppressionButton = YES;
|
||||
@@ -369,7 +374,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
||||
|
||||
if(mergeKDB) {
|
||||
NSAlert *alert = [[NSAlert alloc] init];
|
||||
alert.alertStyle = NSWarningAlertStyle;
|
||||
alert.alertStyle = NSAlertStyleWarning;
|
||||
alert.messageText = NSLocalizedString(@"ALERT_MERGE_KDB_FILE_MESSAGE", @"Alert message warning user about KDB file merge");
|
||||
alert.informativeText = NSLocalizedString(@"ALERT_MERGE_KDB_FILE_INFO_TEXT", @"Informative text displayed when merging KDB files");
|
||||
[alert addButtonWithTitle:NSLocalizedString(@"ALERT_MERGE_CONTINUE", @"Button in dialog to merge KDB changes into file!")];
|
||||
@@ -418,15 +423,17 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
||||
[passwordInputController requestPasswordWithMessage:NSLocalizedString(@"EXTERN_CHANGE_OF_MASTERKEY", @"The master key was changed by an external program!")
|
||||
cancelLabel:NSLocalizedString(@"ABORT_MERGE_KEEP_MINE", @"Button label to abort a merge on a file with changed master key!")
|
||||
completionHandler:^BOOL(NSString *password, NSURL *keyURL, BOOL didCancel, NSError *__autoreleasing *error) {
|
||||
[self.windowForSheet endSheet:sheet returnCode:(didCancel ? NSModalResponseCancel : NSModalResponseOK)];
|
||||
if(!didCancel) {
|
||||
NSData *keyFileData = keyURL ? [NSData dataWithContentsOfURL:keyURL] : nil;
|
||||
KPKCompositeKey *compositeKey = [[KPKCompositeKey alloc] initWithPassword:password keyFileData:keyFileData];
|
||||
[self _mergeWithContentsFromURL:url key:compositeKey options:options];
|
||||
}
|
||||
// just return yes regardless since we will display the sheet again if needed!
|
||||
return YES;
|
||||
}];
|
||||
[self.windowForSheet endSheet:sheet returnCode:(didCancel ? NSModalResponseCancel : NSModalResponseOK)];
|
||||
if(!didCancel) {
|
||||
NSData *keyFileData = keyURL ? [NSData dataWithContentsOfURL:keyURL] : nil;
|
||||
KPKCompositeKey *compositeKey = [[KPKCompositeKey alloc] init];
|
||||
[compositeKey addKey:[KPKKey keyWithPassword:password]];
|
||||
[compositeKey addKey:[KPKKey keyWithKeyFileData:keyFileData]];
|
||||
[self _mergeWithContentsFromURL:url key:compositeKey options:options];
|
||||
}
|
||||
// just return yes regardless since we will display the sheet again if needed!
|
||||
return YES;
|
||||
}];
|
||||
sheet.contentViewController = passwordInputController;
|
||||
[self.windowForSheet beginSheet:sheet completionHandler:^(NSModalResponse returnCode) { /* nothing to do, rest is done in other handler! */ }];
|
||||
}
|
||||
@@ -487,10 +494,13 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
||||
}
|
||||
|
||||
|
||||
- (BOOL)unlockWithPassword:(NSString *)password keyFileURL:(NSURL *)keyFileURL error:(NSError *__autoreleasing*)error{
|
||||
- (BOOL)unlockWithPassword:(NSString *)password keyFileURL:(NSURL *)keyFileURL error:(NSError *__autoreleasing*)error {
|
||||
// TODO: Make this API asynchronous
|
||||
NSData *keyFileData = keyFileURL ? [NSData dataWithContentsOfURL:keyFileURL] : nil;
|
||||
self.compositeKey = [[KPKCompositeKey alloc] initWithPassword:password keyFileData:keyFileData];
|
||||
|
||||
self.compositeKey = [[KPKCompositeKey alloc] init];
|
||||
[self.compositeKey addKey:[KPKKey keyWithPassword:password]];
|
||||
[self.compositeKey addKey:[KPKKey keyWithKeyFileData:keyFileData]];
|
||||
self.tree = [[KPKTree alloc] initWithData:self.encryptedData key:self.compositeKey error:error];
|
||||
|
||||
BOOL isUnlocked = (nil != self.tree);
|
||||
@@ -510,17 +520,15 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
||||
|
||||
- (BOOL)changePassword:(NSString *)password keyFileURL:(NSURL *)keyFileURL {
|
||||
/* sanity check? */
|
||||
if([password length] == 0 && keyFileURL == nil) {
|
||||
if(password.length == 0 && keyFileURL == nil) {
|
||||
return NO;
|
||||
}
|
||||
NSData *keyFileData = keyFileURL ? [NSData dataWithContentsOfURL:keyFileURL] : nil;
|
||||
if(!self.compositeKey) {
|
||||
self.compositeKey = [[KPKCompositeKey alloc] initWithPassword:password keyFileData:keyFileData];
|
||||
}
|
||||
else {
|
||||
[self.compositeKey setPassword:password andKeyFileData:keyFileData];
|
||||
}
|
||||
self.tree.metaData.masterKeyChanged = [NSDate date];
|
||||
self.compositeKey = [[KPKCompositeKey alloc] init];
|
||||
[self.compositeKey addKey:[KPKKey keyWithPassword:password]];
|
||||
[self.compositeKey addKey:[KPKKey keyWithKeyFileData:keyFileData]];
|
||||
|
||||
self.tree.metaData.masterKeyChanged = NSDate.date;
|
||||
/* Key change is not undoable so just recored the change as done */
|
||||
[self updateChangeCount:NSChangeDone];
|
||||
/*
|
||||
@@ -666,20 +674,25 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
||||
|
||||
KPKEntry *newEntry = [self.tree createEntry:parent];
|
||||
/* setting properties on entries is undoable, but we do not want to record this so disable on creation */
|
||||
BOOL wasUndoEnabeld = self.undoManager.isUndoRegistrationEnabled;
|
||||
[self.undoManager disableUndoRegistration];
|
||||
|
||||
KPK_SCOPED_DISABLE_UNDO_BEGIN(self.undoManager)
|
||||
|
||||
newEntry.title = NSLocalizedString(@"DEFAULT_ENTRY_TITLE", @"Title for a newly created entry");
|
||||
if([self.tree.metaData.defaultUserName length] > 0) {
|
||||
newEntry.username = self.tree.metaData.defaultUserName;
|
||||
}
|
||||
NSString *defaultPassword = [NSString passwordWithDefaultSettings];
|
||||
if(defaultPassword) {
|
||||
newEntry.password = defaultPassword;
|
||||
}
|
||||
/* re-enable undo/redo if we did turn it off */
|
||||
if(wasUndoEnabeld) {
|
||||
[self.undoManager enableUndoRegistration];
|
||||
|
||||
/* only generate passwords for new entries, if set */
|
||||
BOOL generatePassword = [NSUserDefaults.standardUserDefaults boolForKey:kMPSettingsKeyGeneratePasswordForNewEntires];
|
||||
if(generatePassword) {
|
||||
NSString *defaultPassword = [NSString passwordWithDefaultSettings];
|
||||
if(defaultPassword) {
|
||||
newEntry.password = defaultPassword;
|
||||
}
|
||||
}
|
||||
|
||||
KPK_SCOPED_DISABLE_UNDO_END
|
||||
|
||||
[newEntry addToGroup:parent];
|
||||
[newEntry.undoManager setActionName:NSLocalizedString(@"NEW_ENTRY", "Action name for a newly created entry")];
|
||||
[NSNotificationCenter.defaultCenter postNotificationName:MPDocumentDidAddEntryNotification
|
||||
@@ -697,14 +710,13 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
||||
}
|
||||
KPKGroup *newGroup = [self.tree createGroup:parent];
|
||||
/* setting properties on entries is undoable, but we do not want to record this so disable on creation */
|
||||
BOOL wasUndoEnabeld = self.undoManager.isUndoRegistrationEnabled;
|
||||
[self.undoManager disableUndoRegistration];
|
||||
KPK_SCOPED_DISABLE_UNDO_BEGIN(self.undoManager);
|
||||
|
||||
newGroup.title = NSLocalizedString(@"DEFAULT_GROUP_NAME", @"Title for a newly created group");
|
||||
newGroup.iconId = MPIconFolder;
|
||||
/* re-enable undo/redo if we did turn it off */
|
||||
if(wasUndoEnabeld) {
|
||||
[self.undoManager enableUndoRegistration];
|
||||
}
|
||||
|
||||
KPK_SCOPED_DISABLE_UNDO_END;
|
||||
|
||||
[newGroup addToGroup:parent];
|
||||
[newGroup.undoManager setActionName:NSLocalizedString(@"NEW_GROUP", "Action name for a newly created group")];
|
||||
[NSNotificationCenter.defaultCenter postNotificationName:MPDocumentDidAddGroupNotification
|
||||
@@ -751,7 +763,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
||||
#pragma mark Actions
|
||||
- (void)emptyTrash:(id)sender {
|
||||
NSAlert *alert = [[NSAlert alloc] init];
|
||||
alert.alertStyle = NSWarningAlertStyle;
|
||||
alert.alertStyle = NSAlertStyleWarning;
|
||||
alert.messageText = NSLocalizedString(@"WARNING_ON_EMPTY_TRASH_TITLE", "Message text for the alert displayed when clearing the Trash");
|
||||
alert.informativeText = NSLocalizedString(@"WARNING_ON_EMPTY_TRASH_DESCRIPTION", "Informative Text displayed when clearing the Trash");
|
||||
|
||||
@@ -770,7 +782,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
||||
KPKEntry *entry = node.asEntry;
|
||||
|
||||
NSAlert *alert = [[NSAlert alloc] init];
|
||||
alert.alertStyle = NSWarningAlertStyle;
|
||||
alert.alertStyle = NSAlertStyleWarning;
|
||||
alert.messageText = NSLocalizedString(@"WARNING_ON_DELETE_TRASHED_NODE_TITLE", "Message text for the alert displayed when deleting a node");
|
||||
alert.informativeText = NSLocalizedString(@"WARNING_ON_DELETE_TRASHED_NODE_DESCRIPTION", "Informative Text displayed when clearing the Trash");
|
||||
|
||||
@@ -832,13 +844,20 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
||||
}
|
||||
|
||||
- (void)duplicateEntryWithOptions:(KPKCopyOptions)options {
|
||||
KPKEntry *lastDuplicate;
|
||||
for(KPKEntry *entry in self.selectedEntries) {
|
||||
KPKEntry *duplicate = [entry copyWithTitle:nil options:options];
|
||||
[duplicate addToGroup:entry.parent];
|
||||
lastDuplicate = [entry copyWithTitle:nil options:options];
|
||||
[lastDuplicate addToGroup:entry.parent];
|
||||
}
|
||||
[self.undoManager setActionName:[NSString stringWithFormat:NSLocalizedString(@"DUPLICATE_ENTRIES_ACTION_NAME", @"Action name for duplicating entries"), self.selectedEntries.count]];
|
||||
if(lastDuplicate) {
|
||||
[NSNotificationCenter.defaultCenter postNotificationName:MPDocumentDidAddEntryNotification
|
||||
object:self
|
||||
userInfo:@{ MPDocumentEntryKey: lastDuplicate }];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
- (void)duplicateGroup:(id)sender {
|
||||
for(KPKGroup *group in self.selectedGroups) {
|
||||
KPKGroup *duplicate = [group copyWithTitle:nil options:kKPKCopyOptionNone];
|
||||
@@ -871,6 +890,10 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
||||
KPKGroup *targetGroup = targetGroups.count == 1 ? targetGroups.firstObject : nil;
|
||||
|
||||
if(self.encrypted || self.isReadOnly) {
|
||||
if(anItem.action == @selector(revertDocumentToSaved:) ||
|
||||
anItem.action == @selector(browseDocumentVersions:)) {
|
||||
return YES;
|
||||
}
|
||||
return NO;
|
||||
}
|
||||
|
||||
@@ -952,7 +975,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
||||
/* user has removed the keyfile or we should not safe it so remove it */
|
||||
[keysForFiles removeObjectForKey:self.fileURL.path.sha1HexDigest];
|
||||
}
|
||||
else if(self.compositeKey.hasPassword && self.compositeKey.hasKeyFile) {
|
||||
else if([self.compositeKey hasKeyOfClass:KPKPasswordKey.class] && [self.compositeKey hasKeyOfClass:KPKFileKey.class]) {
|
||||
if(nil == keysForFiles) {
|
||||
keysForFiles = [[NSMutableDictionary alloc] initWithCapacity:1];
|
||||
}
|
||||
|
||||
@@ -31,6 +31,8 @@
|
||||
#import "KeePassKit/KeePassKit.h"
|
||||
#import "KPKFormat+MPUTIDetection.h"
|
||||
|
||||
#import "NSApplication+MPAdditions.h"
|
||||
|
||||
@interface MPDocumentController ()
|
||||
|
||||
@property (strong) IBOutlet NSView *accessoryView;
|
||||
@@ -43,6 +45,14 @@
|
||||
|
||||
@implementation MPDocumentController
|
||||
|
||||
- (BOOL)hasEditedDocuments {
|
||||
MPAppDelegate *delegate = NSApp.mp_delegate;
|
||||
if(delegate.isTerminating) {
|
||||
// store all open documents once?!
|
||||
}
|
||||
return [super hasEditedDocuments];
|
||||
}
|
||||
|
||||
- (void)beginOpenPanel:(NSOpenPanel *)openPanel forTypes:(NSArray *)inTypes completionHandler:(void (^)(NSInteger))completionHandler {
|
||||
self.openPanel = openPanel;
|
||||
if(!self.accessoryView) {
|
||||
@@ -83,6 +93,16 @@
|
||||
[super addDocument:document];
|
||||
}
|
||||
|
||||
- (void)removeDocument:(NSDocument *)document {
|
||||
MPAppDelegate *appDelegate = (MPAppDelegate *)NSApp.delegate;
|
||||
if(appDelegate.isTerminating) {
|
||||
if(document.fileURL.isFileURL) {
|
||||
[[NSUserDefaults standardUserDefaults] setObject:document.fileURL.absoluteString forKey:kMPSettingsKeyLastDatabasePath];
|
||||
}
|
||||
}
|
||||
[super removeDocument:document];
|
||||
}
|
||||
|
||||
- (BOOL)reopenLastDocument {
|
||||
if(self.documents.count > 0) {
|
||||
return YES; // The document is already open
|
||||
@@ -93,7 +113,12 @@
|
||||
}
|
||||
else {
|
||||
NSString *lastPath = [NSUserDefaults.standardUserDefaults stringForKey:kMPSettingsKeyLastDatabasePath];
|
||||
documentUrl =[NSURL URLWithString:lastPath];
|
||||
documentUrl = [NSURL URLWithString:lastPath];
|
||||
NSError *error;
|
||||
if(![documentUrl checkResourceIsReachableAndReturnError:&error]) {
|
||||
[NSUserDefaults.standardUserDefaults removeObjectForKey:kMPSettingsKeyLastDatabasePath];
|
||||
documentUrl = nil;
|
||||
}
|
||||
}
|
||||
BOOL isFileURL = documentUrl.fileURL;
|
||||
if(isFileURL) {
|
||||
@@ -105,7 +130,7 @@
|
||||
NSAlert *alert = [[NSAlert alloc] init];
|
||||
alert.messageText = NSLocalizedString(@"FILE_OPEN_ERROR", "Error while reopening last known documents");
|
||||
alert.informativeText = error.localizedDescription;
|
||||
alert.alertStyle = NSCriticalAlertStyle;
|
||||
alert.alertStyle = NSAlertStyleCritical;
|
||||
[alert runModal];
|
||||
}
|
||||
|
||||
|
||||
30
MacPass/MPDocumentSplitViewController.h
Normal file
30
MacPass/MPDocumentSplitViewController.h
Normal file
@@ -0,0 +1,30 @@
|
||||
//
|
||||
// MPDocumentSplitViewController.h
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 31.01.20.
|
||||
// Copyright © 2020 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@class MPEntryViewController;
|
||||
@class MPInspectorViewController;
|
||||
@class MPOutlineViewController;
|
||||
@class MPDocument;
|
||||
|
||||
@interface MPDocumentSplitViewController : NSSplitViewController
|
||||
|
||||
@property (readonly, strong) MPEntryViewController *entryViewController;
|
||||
@property (readonly, strong) MPOutlineViewController *outlineViewController;
|
||||
@property (readonly, strong) MPInspectorViewController *inspectorViewController;
|
||||
|
||||
- (void)registerNotificationsForDocument:(MPDocument *)document;
|
||||
- (IBAction)toggleInspector:(id)sender;
|
||||
- (void)showOutline;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
109
MacPass/MPDocumentSplitViewController.m
Normal file
109
MacPass/MPDocumentSplitViewController.m
Normal file
@@ -0,0 +1,109 @@
|
||||
//
|
||||
// MPDocumentSplitViewController.m
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 31.01.20.
|
||||
// Copyright © 2020 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import "MPDocumentSplitViewController.h"
|
||||
#import "MPOutlineViewController.h"
|
||||
#import "MPEntryViewController.h"
|
||||
#import "MPInspectorViewController.h"
|
||||
#import "MPSettingsHelper.h"
|
||||
|
||||
@interface MPDocumentSplitViewController ()
|
||||
|
||||
@property (strong) MPEntryViewController *entryViewController;
|
||||
@property (strong) MPOutlineViewController *outlineViewController;
|
||||
@property (strong) MPInspectorViewController *inspectorViewController;
|
||||
|
||||
@end
|
||||
|
||||
@implementation MPDocumentSplitViewController
|
||||
|
||||
- (NSNibName)nibName {
|
||||
return @"DocumentSplitView";
|
||||
|
||||
}
|
||||
|
||||
- (instancetype)initWithNibName:(NSNibName)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
|
||||
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
|
||||
if(self) {
|
||||
_outlineViewController = [[MPOutlineViewController alloc] init];
|
||||
_entryViewController = [[MPEntryViewController alloc] init];
|
||||
_inspectorViewController = [[MPInspectorViewController alloc] init];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)viewWillLayout {
|
||||
self.splitView.autosaveName = @"SplitView";
|
||||
[super viewWillLayout];
|
||||
}
|
||||
|
||||
/*- (void)updateViewConstraints {
|
||||
[super updateViewConstraints];
|
||||
if(self.inspectorTopEdgeConstraint) {
|
||||
if(!self.inspectorTopEdgeConstraint.isActive) {
|
||||
self.inspectorTopEdgeConstraint.active = YES;
|
||||
}
|
||||
return; // everything is set up.
|
||||
}
|
||||
// setup the constraint if needed
|
||||
NSWindow *window = self.view.window;
|
||||
if(!window) {
|
||||
return;
|
||||
}
|
||||
NSSplitViewItem *inspector = [self splitViewItemForViewController:self.inspectorViewController];
|
||||
NSSplitViewItem *entries = [self splitViewItemForViewController:self.entryViewController];
|
||||
NSSplitViewItem *outline = [self splitViewItemForViewController:self.outlineViewController];
|
||||
[inspector.viewController.view.topAnchor constraintEqualToAnchor:[window.contentLayoutGuide topAnchor]].active = YES;
|
||||
[entries.viewController.view.topAnchor constraintEqualToAnchor:[window.contentLayoutGuide topAnchor]].active = YES;
|
||||
[outline.viewController.view.topAnchor constraintEqualToAnchor:[window.contentLayoutGuide topAnchor]].active = YES;
|
||||
}*/
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
|
||||
self.splitView.translatesAutoresizingMaskIntoConstraints = NO;
|
||||
|
||||
NSSplitViewItem *outlineItem = [NSSplitViewItem sidebarWithViewController:self.outlineViewController];
|
||||
outlineItem.holdingPriority = NSLayoutPriorityDefaultLow + 2;
|
||||
outlineItem.canCollapse = NO;
|
||||
outlineItem.minimumThickness = 150;
|
||||
NSSplitViewItem *entries = [NSSplitViewItem splitViewItemWithViewController:self.entryViewController];
|
||||
entries.canCollapse = NO;
|
||||
entries.minimumThickness = 150;
|
||||
NSSplitViewItem *inspector = [NSSplitViewItem splitViewItemWithViewController:self.inspectorViewController];
|
||||
inspector.canCollapse = YES;
|
||||
inspector.minimumThickness = 200;
|
||||
inspector.holdingPriority = NSLayoutPriorityDefaultLow + 1;
|
||||
|
||||
[self addSplitViewItem:outlineItem];
|
||||
[self addSplitViewItem:entries];
|
||||
[self addSplitViewItem:inspector];
|
||||
|
||||
BOOL showInspector = [NSUserDefaults.standardUserDefaults boolForKey:kMPSettingsKeyShowInspector];
|
||||
inspector.collapsed = !showInspector;
|
||||
}
|
||||
|
||||
- (void)registerNotificationsForDocument:(MPDocument *)document {
|
||||
|
||||
[self.entryViewController registerNotificationsForDocument:document];
|
||||
[self.outlineViewController registerNotificationsForDocument:document];
|
||||
[self.inspectorViewController registerNotificationsForDocument:document];
|
||||
}
|
||||
|
||||
- (void)showOutline {
|
||||
// FIXME: do not require this to be called directly
|
||||
[self.outlineViewController showOutline];
|
||||
}
|
||||
|
||||
- (void)toggleInspector:(id)sender {
|
||||
NSSplitViewItem *inspector = [self splitViewItemForViewController:self.inspectorViewController];
|
||||
inspector.collapsed = !inspector.collapsed;
|
||||
[NSUserDefaults.standardUserDefaults setBool:!inspector.collapsed forKey:kMPSettingsKeyShowInspector];
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -34,9 +34,6 @@
|
||||
@interface MPDocumentWindowController : NSWindowController <NSTouchBarDelegate>
|
||||
|
||||
@property (readonly, strong) MPPasswordInputController *passwordInputController;
|
||||
@property (readonly, strong) MPEntryViewController *entryViewController;
|
||||
@property (readonly, strong) MPOutlineViewController *outlineViewController;
|
||||
@property (readonly, strong) MPInspectorViewController *inspectorViewController;
|
||||
@property (readonly, strong) MPToolbarDelegate *toolbarDelegate;
|
||||
|
||||
@property (readonly, nonatomic, strong) NSSearchField *searchField;
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
#import "MPDatabaseSettingsWindowController.h"
|
||||
#import "MPDocument.h"
|
||||
#import "MPDocumentWindowDelegate.h"
|
||||
#import "MPDocumentSplitViewController.h"
|
||||
#import "MPDuplicateEntryOptionsWindowController.h"
|
||||
#import "MPEntryViewController.h"
|
||||
#import "MPFixAutotypeWindowController.h"
|
||||
@@ -58,14 +59,11 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
||||
id _firstResponder;
|
||||
}
|
||||
|
||||
@property (strong) IBOutlet NSSplitView *splitView;
|
||||
|
||||
@property (strong) NSToolbar *toolbar;
|
||||
|
||||
@property (strong) MPPasswordInputController *passwordInputController;
|
||||
@property (strong) MPEntryViewController *entryViewController;
|
||||
@property (strong) MPOutlineViewController *outlineViewController;
|
||||
@property (strong) MPInspectorViewController *inspectorViewController;
|
||||
@property (strong) MPDocumentSplitViewController *splitViewController;
|
||||
|
||||
@property (strong) MPDatabaseSettingsWindowController *documentSettingsWindowController;
|
||||
@property (strong) MPDocumentWindowDelegate *documentWindowDelegate;
|
||||
@property (strong) MPPasswordEditWindowController *passwordEditWindowController;
|
||||
@@ -87,9 +85,7 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
||||
if( self ) {
|
||||
_firstResponder = nil;
|
||||
_toolbarDelegate = [[MPToolbarDelegate alloc] init];
|
||||
_outlineViewController = [[MPOutlineViewController alloc] init];
|
||||
_entryViewController = [[MPEntryViewController alloc] init];
|
||||
_inspectorViewController = [[MPInspectorViewController alloc] init];
|
||||
_splitViewController = [[MPDocumentSplitViewController alloc] init];
|
||||
_documentWindowDelegate = [[MPDocumentWindowDelegate alloc] init];
|
||||
}
|
||||
return self;
|
||||
@@ -104,24 +100,35 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
||||
[super windowDidLoad];
|
||||
|
||||
self.window.delegate = self.documentWindowDelegate;
|
||||
if (@available(macOS 11.0, *)) {
|
||||
/* let the user decide how to dipsplay the toolbar */
|
||||
BOOL useUnifiedToolbar = [NSUserDefaults.standardUserDefaults boolForKey:kMPSettingsKeyUseUnifiedToolbar];
|
||||
if(useUnifiedToolbar) {
|
||||
self.window.toolbarStyle = NSWindowToolbarStyleAutomatic;
|
||||
// Do not use full size since the sidebar takes too much room!
|
||||
// self.window.styleMask |= NSWindowStyleMaskFullSizeContentView;
|
||||
}
|
||||
else {
|
||||
self.window.toolbarStyle = NSWindowToolbarStyleExpanded;
|
||||
}
|
||||
}
|
||||
[self.window registerForDraggedTypes:@[NSURLPboardType]];
|
||||
|
||||
MPDocument *document = self.document;
|
||||
|
||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didRevertDocument:) name:MPDocumentDidRevertNotifiation object:document];
|
||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didRevertDocument:) name:MPDocumentDidRevertNotification object:document];
|
||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didUnlockDatabase:) name:MPDocumentDidUnlockDatabaseNotification object:document];
|
||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didAddEntry:) name:MPDocumentDidAddEntryNotification object:document];
|
||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didAddGroup:) name:MPDocumentDidAddGroupNotification object:document];
|
||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didLockDatabase:) name:MPDocumentDidLockDatabaseNotification object:document];
|
||||
|
||||
[self.entryViewController registerNotificationsForDocument:document];
|
||||
[self.inspectorViewController registerNotificationsForDocument:document];
|
||||
[self.outlineViewController registerNotificationsForDocument:document];
|
||||
[self.splitViewController registerNotificationsForDocument:document];
|
||||
[self.toolbarDelegate registerNotificationsForDocument:document];
|
||||
|
||||
self.toolbar = [[NSToolbar alloc] initWithIdentifier:@"MainWindowToolbar"];
|
||||
self.toolbar.autosavesConfiguration = YES;
|
||||
self.toolbar.allowsUserCustomization = YES;
|
||||
/* center search in toolbar */
|
||||
if (@available(macOS 10.14, *)) {
|
||||
self.toolbar.centeredItemIdentifier = MPToolbarItemIdentifierSearch;
|
||||
} else {
|
||||
@@ -131,23 +138,6 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
||||
self.window.toolbar = self.toolbar;
|
||||
self.toolbarDelegate.toolbar = self.toolbar;
|
||||
|
||||
self.splitView.translatesAutoresizingMaskIntoConstraints = NO;
|
||||
|
||||
NSView *outlineView = self.outlineViewController.view;
|
||||
NSView *inspectorView = self.inspectorViewController.view;
|
||||
NSView *entryView = self.entryViewController.view;
|
||||
[self.splitView addSubview:outlineView];
|
||||
[self.splitView addSubview:entryView];
|
||||
[self.splitView addSubview:inspectorView];
|
||||
|
||||
[self.splitView setHoldingPriority:NSLayoutPriorityDefaultLow+2 forSubviewAtIndex:0];
|
||||
[self.splitView setHoldingPriority:NSLayoutPriorityDefaultLow+1 forSubviewAtIndex:2];
|
||||
|
||||
BOOL showInspector = [NSUserDefaults.standardUserDefaults boolForKey:kMPSettingsKeyShowInspector];
|
||||
if(!showInspector) {
|
||||
[inspectorView removeFromSuperview];
|
||||
}
|
||||
|
||||
if(document.encrypted) {
|
||||
[self showPasswordInput];
|
||||
}
|
||||
@@ -155,8 +145,6 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
||||
[self showEntries];
|
||||
}
|
||||
|
||||
self.splitView.autosaveName = @"SplitView";
|
||||
|
||||
/*
|
||||
TODO: Add display for database color?
|
||||
NSTitlebarAccessoryViewController *tbc = [[MPTitlebarColorAccessoryViewController alloc] init];
|
||||
@@ -169,40 +157,21 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
||||
return self.toolbarDelegate.searchField;
|
||||
}
|
||||
|
||||
- (void)_setContentViewController:(MPViewController *)viewController {
|
||||
|
||||
NSView *newContentView = nil;
|
||||
if(viewController && viewController.view) {
|
||||
newContentView = viewController.view;
|
||||
- (void)setContentViewController:(NSViewController *)contentViewController {
|
||||
contentViewController.view.frame = self.window.contentView.frame;
|
||||
[super setContentViewController:contentViewController];
|
||||
if([contentViewController isKindOfClass:MPViewController.class]) {
|
||||
/* enqueue async into main to catch some cases, where the UI would not set the responder correctly */
|
||||
MPDocumentWindowController * __weak welf = self;
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
NSResponder *responder = ((MPViewController *)contentViewController).reconmendedFirstResponder;
|
||||
[welf.window makeFirstResponder:responder];
|
||||
});
|
||||
}
|
||||
NSView *contentView = self.window.contentView;
|
||||
NSView *oldSubView = nil;
|
||||
if(contentView.subviews.count == 1) {
|
||||
oldSubView = contentView.subviews.firstObject;
|
||||
}
|
||||
if(oldSubView == newContentView) {
|
||||
return; // View is already present
|
||||
}
|
||||
[oldSubView removeFromSuperviewWithoutNeedingDisplay];
|
||||
[contentView addSubview:newContentView];
|
||||
[contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[newContentView]|"
|
||||
options:0
|
||||
metrics:nil
|
||||
views:NSDictionaryOfVariableBindings(newContentView)]];
|
||||
|
||||
NSNumber *border = @([[self window] contentBorderThicknessForEdge:NSMinYEdge]);
|
||||
[contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[newContentView]-border-|"
|
||||
options:0
|
||||
metrics:NSDictionaryOfVariableBindings(border)
|
||||
views:NSDictionaryOfVariableBindings(newContentView)]];
|
||||
|
||||
[contentView layout];
|
||||
[self.window makeFirstResponder:viewController.reconmendedFirstResponder];
|
||||
}
|
||||
|
||||
#pragma mark MPDocument notifications
|
||||
- (void)_didRevertDocument:(NSNotification *)notification {
|
||||
[self.outlineViewController clearSelection];
|
||||
[self showPasswordInput];
|
||||
}
|
||||
|
||||
@@ -220,6 +189,10 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
||||
|
||||
- (void)_didUnlockDatabase:(NSNotification *)notification {
|
||||
[self showEntries];
|
||||
BOOL focusSearchAfterUnlock = [NSUserDefaults.standardUserDefaults boolForKey:kMPSettingsKeyFocusSearchAfterUnlock];
|
||||
if(focusSearchAfterUnlock) {
|
||||
[self.document performCustomSearch:self];
|
||||
}
|
||||
/* Show password reminders */
|
||||
[self _presentPasswordIntervalAlerts];
|
||||
}
|
||||
@@ -261,7 +234,7 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
||||
savePanel.allowedFileTypes = @[(id)kUTTypeXML];
|
||||
savePanel.canSelectHiddenExtension = YES;
|
||||
[savePanel beginSheetModalForWindow:self.window completionHandler:^(NSInteger result) {
|
||||
if(result == NSFileHandlingPanelOKButton) {
|
||||
if(result == NSModalResponseOK) {
|
||||
[document writeXMLToURL:savePanel.URL];
|
||||
}
|
||||
}];
|
||||
@@ -277,9 +250,9 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
||||
openPanel.prompt = NSLocalizedString(@"OPEN_BUTTON_IMPORT_XML_OPEN_PANEL", "Open button in the open panel to import an XML file");
|
||||
openPanel.message = NSLocalizedString(@"MESSAGE_XML_OPEN_PANEL", "Message in the open panel to import an XML file");
|
||||
[openPanel beginSheetModalForWindow:self.window completionHandler:^(NSInteger result) {
|
||||
if(result == NSFileHandlingPanelOKButton) {
|
||||
if(result == NSModalResponseOK) {
|
||||
[document readXMLfromURL:openPanel.URL];
|
||||
[self.outlineViewController showOutline];
|
||||
[self.splitViewController showOutline];
|
||||
}
|
||||
}];
|
||||
}
|
||||
@@ -342,7 +315,7 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
||||
openPanel.message = NSLocalizedString(@"SELECT_FILE_TO_MERGE", @"Message for the dialog to open a file for merge");
|
||||
//openPanel.allowedFileTypes = @[(id)kUTTypeXML];
|
||||
[openPanel beginSheetModalForWindow:self.window completionHandler:^(NSInteger result) {
|
||||
if(result == NSFileHandlingPanelOKButton) {
|
||||
if(result == NSModalResponseOK) {
|
||||
[document mergeWithContentsFromURL:openPanel.URL key:document.compositeKey];
|
||||
}
|
||||
}];
|
||||
@@ -363,7 +336,7 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
||||
if(!self.passwordInputController) {
|
||||
self.passwordInputController = [[MPPasswordInputController alloc] init];
|
||||
}
|
||||
[self _setContentViewController:self.passwordInputController];
|
||||
self.contentViewController = self.passwordInputController;
|
||||
[self.passwordInputController requestPasswordWithMessage:message cancelLabel:nil completionHandler:^BOOL(NSString *password, NSURL *keyURL, BOOL didCancel, NSError *__autoreleasing *error) {
|
||||
if(didCancel) {
|
||||
return NO;
|
||||
@@ -469,27 +442,17 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
||||
}
|
||||
|
||||
- (void)pickExpiryDate:(id)sender {
|
||||
[self.inspectorViewController pickExpiryDate:sender];
|
||||
// FIXME: use propert responder chain
|
||||
[self.splitViewController.inspectorViewController pickExpiryDate:sender];
|
||||
}
|
||||
|
||||
- (void)showPluginData:(id)sender {
|
||||
[self.inspectorViewController showPluginData:sender];
|
||||
// FIXME: use propert responder chain
|
||||
[self.splitViewController.inspectorViewController showPluginData:sender];
|
||||
}
|
||||
|
||||
- (void)toggleInspector:(id)sender {
|
||||
NSView *inspectorView = self.inspectorViewController.view;
|
||||
BOOL inspectorWasVisible = [self _isInspectorVisible];
|
||||
if(inspectorWasVisible) {
|
||||
[inspectorView removeFromSuperview];
|
||||
}
|
||||
else {
|
||||
[self.splitView addSubview:inspectorView];
|
||||
[self.splitView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"[inspectorView(>=200)]"
|
||||
options:0
|
||||
metrics:nil
|
||||
views:NSDictionaryOfVariableBindings(inspectorView)]];
|
||||
}
|
||||
[[NSUserDefaults standardUserDefaults] setBool:!inspectorWasVisible forKey:kMPSettingsKeyShowInspector];
|
||||
[self.splitViewController toggleInspector:sender];
|
||||
}
|
||||
|
||||
- (void)performAutotypeForEntry:(id)sender {
|
||||
@@ -507,108 +470,57 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
||||
}
|
||||
|
||||
- (void)focusEntries:(id)sender {
|
||||
[self.window makeFirstResponder:[self.entryViewController reconmendedFirstResponder]];
|
||||
// FIXME: use propert responder chain
|
||||
[self.window makeFirstResponder:[self.splitViewController.entryViewController reconmendedFirstResponder]];
|
||||
}
|
||||
|
||||
- (void)focusGroups:(id)sender {
|
||||
[self.window makeFirstResponder:[self.outlineViewController reconmendedFirstResponder]];
|
||||
// FIXME: use propert responder chain
|
||||
[self.window makeFirstResponder:[self.splitViewController.outlineViewController reconmendedFirstResponder]];
|
||||
}
|
||||
|
||||
- (void)focusInspector:(id)sender {
|
||||
[self.window makeFirstResponder:[self.inspectorViewController reconmendedFirstResponder]];
|
||||
// FIXME: use propert responder chain
|
||||
[self.window makeFirstResponder:[self.splitViewController.inspectorViewController reconmendedFirstResponder]];
|
||||
}
|
||||
|
||||
- (void)showEntries {
|
||||
NSView *contentView = self.window.contentView;
|
||||
if(self.splitView == contentView) {
|
||||
return; // We are displaying the entries already
|
||||
}
|
||||
if(contentView.subviews.count == 1) {
|
||||
[contentView.subviews.firstObject removeFromSuperviewWithoutNeedingDisplay];
|
||||
}
|
||||
[contentView addSubview:self.splitView];
|
||||
NSView *outlineView = self.outlineViewController.view;
|
||||
NSView *inspectorView = self.inspectorViewController.view;
|
||||
NSView *entryView = self.entryViewController.view;
|
||||
|
||||
/*
|
||||
The current easy way to prevent layout hiccups is to add the inspector
|
||||
Add all needed constraints an then remove it again, if it was hidden
|
||||
*/
|
||||
BOOL removeInspector = NO;
|
||||
if(!inspectorView.superview) {
|
||||
[self.splitView addSubview:inspectorView];
|
||||
removeInspector = YES;
|
||||
}
|
||||
/* Maybe we should consider not double adding constraints */
|
||||
NSDictionary *views = NSDictionaryOfVariableBindings(outlineView, inspectorView, entryView, _splitView);
|
||||
[self.splitView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[outlineView(>=150)]-1-[entryView(>=150)]-1-[inspectorView(>=200)]|"
|
||||
options:0
|
||||
metrics:nil
|
||||
views:views]];
|
||||
[self.splitView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[outlineView]|"
|
||||
options:0
|
||||
metrics:nil
|
||||
views:views]];
|
||||
[self.splitView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[entryView(>=200)]|"
|
||||
options:0
|
||||
metrics:nil
|
||||
views:views]];
|
||||
[self.splitView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[inspectorView]|"
|
||||
options:0
|
||||
metrics:nil
|
||||
views:views]];
|
||||
|
||||
NSNumber *border = @([[self window] contentBorderThicknessForEdge:NSMinYEdge]);
|
||||
[contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[_splitView]-border-|"
|
||||
options:0
|
||||
metrics:NSDictionaryOfVariableBindings(border)
|
||||
views:views]];
|
||||
[contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[_splitView]|"
|
||||
options:0
|
||||
metrics:nil
|
||||
views:views]];
|
||||
[self.outlineViewController showOutline];
|
||||
|
||||
/* Restore the State the inspector view was in before the view change */
|
||||
if(removeInspector) {
|
||||
[inspectorView removeFromSuperview];
|
||||
}
|
||||
[contentView layoutSubtreeIfNeeded];
|
||||
self.contentViewController = self.splitViewController;
|
||||
[self.splitViewController showOutline];
|
||||
}
|
||||
|
||||
- (void)showGroupInOutline:(id)sender {
|
||||
NSArray<KPKEntry *> *targetEntries = self.entryViewController.currentTargetEntries;
|
||||
NSArray<KPKEntry *> *targetEntries = self.splitViewController.entryViewController.currentTargetEntries;
|
||||
if(targetEntries.count != 1) {
|
||||
return;
|
||||
}
|
||||
[self.outlineViewController selectGroup:targetEntries.lastObject.parent];
|
||||
[self.splitViewController.outlineViewController selectGroup:targetEntries.lastObject.parent];
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark Actions forwarded to MPEntryViewController
|
||||
- (void)copyUsername:(id)sender {
|
||||
[self.entryViewController copyUsername:sender];
|
||||
[self.splitViewController.entryViewController copyUsername:sender];
|
||||
}
|
||||
|
||||
- (void)copyPassword:(id)sender {
|
||||
[self.entryViewController copyPassword:sender];
|
||||
[self.splitViewController.entryViewController copyPassword:sender];
|
||||
}
|
||||
|
||||
- (void)copyCustomAttribute:(id)sender {
|
||||
[self.entryViewController copyCustomAttribute:sender];
|
||||
[self.splitViewController.entryViewController copyCustomAttribute:sender];
|
||||
}
|
||||
|
||||
- (void)copyAsReference:(id)sender {
|
||||
[self.entryViewController copyAsReference:sender];
|
||||
[self.splitViewController.entryViewController copyAsReference:sender];
|
||||
}
|
||||
|
||||
- (void)copyURL:(id)sender {
|
||||
[self.entryViewController copyURL:sender];
|
||||
[self.splitViewController.entryViewController copyURL:sender];
|
||||
}
|
||||
|
||||
- (void)openURL:(id)sender {
|
||||
[self.entryViewController openURL:sender];
|
||||
[self.splitViewController.entryViewController openURL:sender];
|
||||
}
|
||||
|
||||
#pragma mark Validation
|
||||
@@ -622,7 +534,7 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
||||
if(document.shouldEnforcePasswordChange) {
|
||||
NSAlert *alert = [[NSAlert alloc] init];
|
||||
|
||||
alert.alertStyle = NSCriticalAlertStyle;
|
||||
alert.alertStyle = NSAlertStyleCritical;
|
||||
alert.messageText = NSLocalizedString(@"ENFORCE_PASSWORD_CHANGE_ALERT_TITLE", "Message text for the enforce password change alert");
|
||||
alert.informativeText = NSLocalizedString(@"ENFORCE_PASSWORD_CHANGE_ALERT_DESCRIPTION", "Informative text for the enforce password change alert");
|
||||
|
||||
@@ -653,7 +565,7 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
||||
else if(document.shouldRecommendPasswordChange) {
|
||||
NSAlert *alert = [[NSAlert alloc] init];
|
||||
|
||||
alert.alertStyle = NSInformationalAlertStyle;
|
||||
alert.alertStyle = NSAlertStyleInformational;
|
||||
alert.messageText = NSLocalizedString(@"RECOMMEND_PASSWORD_CHANGE_ALERT_TITLE", "Message text for the recommend password change alert");
|
||||
alert.informativeText = NSLocalizedString(@"RECOMMEND_PASSWORD_CHANGE_ALERT_DESCRIPTION", "Informative text for the recommend password change alert");
|
||||
|
||||
@@ -690,8 +602,8 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
||||
#pragma mark UI Helper
|
||||
|
||||
- (BOOL)_isInspectorVisible {
|
||||
NSView *inspectorView = self.inspectorViewController.view;
|
||||
return (nil != inspectorView.superview);
|
||||
NSSplitViewItem *item = [self.splitViewController splitViewItemForViewController:self.splitViewController.inspectorViewController];
|
||||
return !item.isCollapsed;
|
||||
}
|
||||
|
||||
- (NSTouchBar *)makeTouchBar {
|
||||
|
||||
@@ -28,13 +28,12 @@
|
||||
@implementation MPDocumentWindowDelegate
|
||||
|
||||
- (NSDragOperation)draggingEntered:(id<NSDraggingInfo>)sender {
|
||||
|
||||
MPDocument *document = [[[sender draggingDestinationWindow] windowController] document];
|
||||
MPDocument *document = sender.draggingDestinationWindow.windowController.document;
|
||||
if(document.encrypted) {
|
||||
return NSDragOperationNone;
|
||||
}
|
||||
|
||||
NSPasteboard *draggingPasteBoard = [sender draggingPasteboard];
|
||||
NSPasteboard *draggingPasteBoard = sender.draggingPasteboard;
|
||||
|
||||
NSArray *arrayOfURLs = [draggingPasteBoard readObjectsForClasses:@[NSURL.class] options:nil];
|
||||
BOOL ok = YES;
|
||||
@@ -52,7 +51,7 @@
|
||||
}
|
||||
|
||||
- (BOOL)performDragOperation:(id<NSDraggingInfo>)sender {
|
||||
NSPasteboard *draggingPasteBoard = [sender draggingPasteboard];
|
||||
NSPasteboard *draggingPasteBoard = sender.draggingPasteboard;
|
||||
NSArray *arrayOfURLs = [draggingPasteBoard readObjectsForClasses:@[NSURL.class] options:nil];
|
||||
|
||||
NSURL *url = arrayOfURLs.lastObject;
|
||||
@@ -60,7 +59,7 @@
|
||||
return NO;
|
||||
}
|
||||
/* Currently not working, as the underlying operations do not get the undomanager */
|
||||
MPDocument *document = [sender draggingDestinationWindow].windowController.document;
|
||||
MPDocument *document = sender.draggingDestinationWindow.windowController.document;
|
||||
KPKGroup *parentGroup = document.selectedGroups.count == 1 ? document.selectedGroups.firstObject : document.root;
|
||||
[document.undoManager beginUndoGrouping];
|
||||
KPKEntry *entry = [document createEntry:parentGroup];
|
||||
|
||||
33
MacPass/MPEntryAttributeViewController.h
Normal file
33
MacPass/MPEntryAttributeViewController.h
Normal file
@@ -0,0 +1,33 @@
|
||||
//
|
||||
// MPEntryAttributeViewController.h
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 14.10.21.
|
||||
// Copyright © 2021 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import <HNHUi/HNHUi.h>
|
||||
#import "MPInspectorEditor.h"
|
||||
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
|
||||
/// View controller to show and edit KPKAttributes of KPKEntries.
|
||||
/// Set the represented object to the KPKAttribute the editor shoudl show/edit
|
||||
/// The editor can be set to edit or view
|
||||
@interface MPEntryAttributeViewController : NSViewController <MPInspectorEditor, HNHUITextFieldDelegate>
|
||||
|
||||
@property (strong) IBOutlet NSTextField *keyTextField;
|
||||
@property (strong) IBOutlet HNHUISecureTextField *valueTextField;
|
||||
@property (strong) IBOutlet NSButton *toggleProtectedButton;
|
||||
@property (strong) IBOutlet NSButton *removeButton;
|
||||
|
||||
- (void)updateValues;
|
||||
- (void)updateEditing;
|
||||
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
156
MacPass/MPEntryAttributeViewController.m
Normal file
156
MacPass/MPEntryAttributeViewController.m
Normal file
@@ -0,0 +1,156 @@
|
||||
//
|
||||
// MPEntryAttributeViewController.m
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 14.10.21.
|
||||
// Copyright © 2021 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import "MPEntryAttributeViewController.h"
|
||||
#import <HNHUi/HNHUi.h>
|
||||
#import <KeePassKit/KeePassKit.h>
|
||||
#import "MPPasteBoardController.h"
|
||||
|
||||
@interface MPEntryAttributeViewController () {
|
||||
BOOL _isDefaultAttribute;
|
||||
}
|
||||
@property (readonly, nullable, strong) KPKAttribute *representedAttribute;
|
||||
|
||||
@end
|
||||
|
||||
@implementation MPEntryAttributeViewController
|
||||
|
||||
@synthesize isEditor = _isEditor;
|
||||
|
||||
- (instancetype)initWithNibName:(NSNibName)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
|
||||
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
|
||||
if(self) {
|
||||
_isEditor = NO;
|
||||
_isDefaultAttribute = NO;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (instancetype)initWithCoder:(NSCoder *)coder {
|
||||
self = [super initWithCoder:coder];
|
||||
// set editor to false?
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
NSString *placeHolder = NSLocalizedString(@"NONE", "Placeholder text for input fields if no entry or group is selected");
|
||||
self.keyTextField.placeholderString = placeHolder;
|
||||
self.valueTextField.placeholderString = placeHolder;
|
||||
|
||||
self.toggleProtectedButton.action = @selector(toggleDisplay:);
|
||||
self.toggleProtectedButton.target = self.valueTextField;
|
||||
|
||||
[self updateValues];
|
||||
[self updateEditing];
|
||||
|
||||
__weak MPEntryAttributeViewController *welf = self;
|
||||
self.valueTextField.buttonTitle = NSLocalizedString(@"COPY", "Button to copy the value of an Attribute");
|
||||
self.valueTextField.buttonActionBlock = ^void(NSTextField *tf) {
|
||||
NSText *text = [welf.view.window fieldEditor:NO forObject:welf.valueTextField];
|
||||
if([text isKindOfClass:NSTextView.class]) {
|
||||
[welf textField:welf.valueTextField textView:(NSTextView *)text performAction:@selector(copy:)];
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
- (KPKAttribute *)representedAttribute {
|
||||
if([self.representedObject isKindOfClass:KPKAttribute.class]) {
|
||||
return (KPKAttribute *)self.representedObject;
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (void)setIsEditor:(BOOL)isEditor {
|
||||
_isEditor = isEditor;
|
||||
[self updateEditing];
|
||||
}
|
||||
|
||||
- (void)setRepresentedObject:(id)representedObject {
|
||||
if(self.representedAttribute) {
|
||||
[NSNotificationCenter.defaultCenter removeObserver:self name:KPKWillChangeAttributeNotification object:self.representedObject];
|
||||
[NSNotificationCenter.defaultCenter removeObserver:self name:KPKDidChangeAttributeNotification object:self.representedObject];
|
||||
}
|
||||
super.representedObject = representedObject;
|
||||
if(self.representedAttribute) {
|
||||
[NSNotificationCenter.defaultCenter addObserver:self
|
||||
selector:(@selector(_willChangeAttribute:))
|
||||
name:KPKWillChangeAttributeNotification
|
||||
object:self.representedAttribute];
|
||||
[NSNotificationCenter.defaultCenter addObserver:self
|
||||
selector:(@selector(_didChangeAttribute:))
|
||||
name:KPKDidChangeAttributeNotification
|
||||
object:self.representedAttribute];
|
||||
|
||||
}
|
||||
_isDefaultAttribute = self.representedAttribute.isDefault;
|
||||
[self updateValues];
|
||||
}
|
||||
|
||||
- (BOOL)textField:(NSTextField *)textField textView:(NSTextView *)textView performAction:(SEL)action {
|
||||
if(action != @selector(copy:)) {
|
||||
return YES;
|
||||
}
|
||||
|
||||
// Only copy action
|
||||
MPPasteboardOverlayInfoType info = MPPasteboardOverlayInfoCustom;
|
||||
NSMutableString *selectedValue = [[NSMutableString alloc] init];
|
||||
for(NSValue *rangeValue in textView.selectedRanges) {
|
||||
[selectedValue appendString:[textView.string substringWithRange:rangeValue.rangeValue]];
|
||||
}
|
||||
if(selectedValue.length == 0) {
|
||||
[selectedValue setString:textField.stringValue];
|
||||
}
|
||||
NSString *name = @"";
|
||||
if([self.representedAttribute.key isEqual:kKPKUsernameKey]) {
|
||||
info = MPPasteboardOverlayInfoUsername;
|
||||
}
|
||||
/*else if([self.representedAttribute.key isEqual:kKPKPasswordKey]) {
|
||||
info = MPPasteboardOverlayInfoPassword;
|
||||
}
|
||||
*/
|
||||
else if([self.representedAttribute.key isEqual:kKPKURLKey]) {
|
||||
info = MPPasteboardOverlayInfoURL;
|
||||
}
|
||||
else if([self.representedAttribute.key isEqual:kKPKTitleKey]) {
|
||||
name = NSLocalizedString(@"TITLE", "Displayed name when title field was copied");
|
||||
}
|
||||
else {
|
||||
name = self.representedAttribute.key;
|
||||
}
|
||||
[MPPasteBoardController.defaultController copyObject:selectedValue overlayInfo:info name:name atView:self.view];
|
||||
return NO;
|
||||
}
|
||||
|
||||
|
||||
- (void)_willChangeAttribute:(NSNotification *)notification {
|
||||
// nothing to d
|
||||
}
|
||||
|
||||
- (void)_didChangeAttribute:(NSNotification *)notification {
|
||||
[self updateValues];
|
||||
}
|
||||
|
||||
- (void)updateValues {
|
||||
self.view.hidden = (!self.isEditor && self.representedAttribute.value.length == 0);
|
||||
self.keyTextField.stringValue = self.representedAttribute.key ? self.representedAttribute.key : @"";
|
||||
self.valueTextField.stringValue = self.representedAttribute.value ? self.representedAttribute.value : @"";
|
||||
self.valueTextField.showPassword = !self.representedAttribute.protect;
|
||||
}
|
||||
|
||||
- (void)updateEditing {
|
||||
self.keyTextField.editable = !_isDefaultAttribute && self.isEditor;
|
||||
self.valueTextField.editable = self.isEditor;
|
||||
self.keyTextField.selectable = YES;
|
||||
self.valueTextField.selectable = YES;
|
||||
self.toggleProtectedButton.hidden = _isDefaultAttribute;
|
||||
self.removeButton.hidden = !self.isEditor || (self.isEditor && !_isDefaultAttribute);
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
100
MacPass/MPEntryAttributeViewController.xib
Normal file
100
MacPass/MPEntryAttributeViewController.xib
Normal file
@@ -0,0 +1,100 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="18122" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="18122"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="MPEntryAttributeViewController">
|
||||
<connections>
|
||||
<outlet property="keyTextField" destination="m8q-FN-S8D" id="HzJ-cd-ifA"/>
|
||||
<outlet property="removeButton" destination="Nmx-gC-8rG" id="eRy-l0-u0E"/>
|
||||
<outlet property="toggleProtectedButton" destination="hAk-oD-dCj" id="js9-Hx-ycS"/>
|
||||
<outlet property="valueTextField" destination="HZM-H4-dB4" id="56C-eA-J7G"/>
|
||||
<outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView id="Hz6-mo-xeY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="251" height="43"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<stackView distribution="fill" orientation="vertical" alignment="leading" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="No7-P9-4cl">
|
||||
<rect key="frame" x="0.0" y="0.0" width="251" height="43"/>
|
||||
<subviews>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="m8q-FN-S8D">
|
||||
<rect key="frame" x="-2" y="29" width="255" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="AttributeName" id="MQc-TE-UjE">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<stackView distribution="fill" orientation="horizontal" alignment="top" spacing="5" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="LBt-0e-cUK">
|
||||
<rect key="frame" x="0.0" y="0.0" width="251" height="21"/>
|
||||
<subviews>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="HZM-H4-dB4" customClass="HNHUISecureTextField">
|
||||
<rect key="frame" x="0.0" y="0.0" width="181" height="21"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="sO3-xr-VwO">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="-2" id="Dm6-8t-HmN"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="hAk-oD-dCj">
|
||||
<rect key="frame" x="179" y="-6" width="44" height="32"/>
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSLockLockedTemplate" imagePosition="only" alignment="center" alternateImage="NSLockUnlockedTemplate" lineBreakMode="truncatingTail" borderStyle="border" inset="2" id="f80-K9-DO7">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Nmx-gC-8rG">
|
||||
<rect key="frame" x="214" y="-6" width="44" height="32"/>
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSRemoveTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="179-uk-89S">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
</subviews>
|
||||
<visibilityPriorities>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
</visibilityPriorities>
|
||||
<customSpacing>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
</customSpacing>
|
||||
</stackView>
|
||||
</subviews>
|
||||
<visibilityPriorities>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
</visibilityPriorities>
|
||||
<customSpacing>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
</customSpacing>
|
||||
</stackView>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="No7-P9-4cl" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="0cj-uh-lAy"/>
|
||||
<constraint firstAttribute="trailing" secondItem="No7-P9-4cl" secondAttribute="trailing" id="Awb-Of-fpP"/>
|
||||
<constraint firstAttribute="bottom" secondItem="No7-P9-4cl" secondAttribute="bottom" id="MX2-as-4EI"/>
|
||||
<constraint firstItem="No7-P9-4cl" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" id="mbE-gq-jDF"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="-434.5" y="134"/>
|
||||
</customView>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSLockLockedTemplate" width="14" height="15"/>
|
||||
<image name="NSLockUnlockedTemplate" width="17" height="15"/>
|
||||
<image name="NSRemoveTemplate" width="14" height="4"/>
|
||||
</resources>
|
||||
</document>
|
||||
@@ -47,9 +47,8 @@
|
||||
@property (weak) IBOutlet NSTokenField *tagsTokenField;
|
||||
@property (weak) IBOutlet NSTextField *uuidTextField;
|
||||
|
||||
@property (weak) IBOutlet NSTextField *createdTextField;
|
||||
@property (weak) IBOutlet NSTextField *modifiedTextField;
|
||||
@property (weak) IBOutlet MPContextButton *addCustomFieldButton;
|
||||
@property (strong) IBOutlet NSStackView *fieldsStackView;
|
||||
|
||||
/* Attachments */
|
||||
@property (weak) IBOutlet NSButtonCell *addAttachmentButton;
|
||||
@@ -60,6 +59,11 @@
|
||||
@property (strong) IBOutlet NSTableView *customFieldsTableView;
|
||||
@property (weak) IBOutlet NSButton *showCustomDataButton;
|
||||
|
||||
/* TOTP */
|
||||
@property (strong) IBOutlet NSProgressIndicator *totpProgressIndicator;
|
||||
@property (strong) IBOutlet NSTextField *totpLabelTextField;
|
||||
@property (strong) IBOutlet NSTextField *totpCodeTextField;
|
||||
|
||||
/* Autotype */
|
||||
@property (strong) IBOutlet NSView *autotypView;
|
||||
@property (weak) IBOutlet NSButton *enableAutotypeCheckButton;
|
||||
@@ -80,6 +84,7 @@
|
||||
- (IBAction)showPasswordGenerator:(id)sender;
|
||||
- (IBAction)showReferenceBuilder:(id)sender;
|
||||
- (IBAction)showAutotypeBuilder:(id)sender;
|
||||
- (IBAction)showOTPSetup:(id)sender;
|
||||
|
||||
- (IBAction)saveAttachment:(id)sender;
|
||||
- (IBAction)addAttachment:(id)sender;
|
||||
@@ -93,4 +98,5 @@
|
||||
|
||||
- (IBAction)toggleQuicklookPreview:(id)sender;
|
||||
- (IBAction)toggleExpire:(NSButton*)sender;
|
||||
|
||||
@end
|
||||
|
||||
@@ -31,6 +31,10 @@
|
||||
#import "MPTagsTokenFieldDelegate.h"
|
||||
#import "MPAutotypeBuilderViewController.h"
|
||||
#import "MPReferenceBuilderViewController.h"
|
||||
#import "MPTOTPViewController.h"
|
||||
#import "MPTOTPSetupViewController.h"
|
||||
#import "MPEntryAttributeViewController.h"
|
||||
#import "MPNodeExpirationViewController.h"
|
||||
|
||||
#import "MPPrettyPasswordTransformer.h"
|
||||
#import "NSString+MPPasswordCreation.h"
|
||||
@@ -49,7 +53,6 @@
|
||||
#import "MPArrayController.h"
|
||||
|
||||
#import "KeePassKit/KeePassKit.h"
|
||||
|
||||
#import "HNHUi/HNHUi.h"
|
||||
|
||||
typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
||||
@@ -58,6 +61,22 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
||||
MPEntryTabAutotype
|
||||
};
|
||||
|
||||
typedef NS_ENUM(NSUInteger, MPInpspectorEditorIndex) {
|
||||
MPInpspectorEditorIndexImageEditor,
|
||||
MPInpspectorEditorIndexTitle,
|
||||
MPInpspectorEditorIndexUsername,
|
||||
MPInpspectorEditorIndexPassword,
|
||||
MPInpspectorEditorIndexURL,
|
||||
MPInpspectorEditorIndexExpires,
|
||||
MPInpspectorEditorIndexTags,
|
||||
MPInpspectorEditorIndexDefaultCount
|
||||
};
|
||||
|
||||
|
||||
@interface NSObject (MPAppKitPrivateAPI)
|
||||
- (void)_searchWithGoogleFromMenu:(id)obj;
|
||||
@end
|
||||
|
||||
@interface MPEntryInspectorViewController () {
|
||||
@private
|
||||
NSArrayController *_attachmentsController;
|
||||
@@ -70,11 +89,13 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
||||
MPWindowTitleComboBoxDelegate *_windowTitleMenuDelegate;
|
||||
MPTagsTokenFieldDelegate *_tagTokenFieldDelegate;
|
||||
MPAddCustomFieldContextMenuDelegate *_addCustomFieldContextMenuDelegate;
|
||||
NSMutableArray<NSViewController<MPInspectorEditor> *> *_attributeEditorViewControllers;
|
||||
}
|
||||
|
||||
@property (nonatomic, assign) BOOL showPassword;
|
||||
@property (nonatomic, assign) MPEntryTab activeTab;
|
||||
@property (nonatomic, readonly) KPKEntry *representedEntry;
|
||||
@property (strong) MPTOTPViewController *totpViewController;
|
||||
|
||||
@property (strong) MPTemporaryFileStorage *quicklookStorage;
|
||||
|
||||
@@ -105,6 +126,7 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
||||
_customFieldTableDelegate.viewController = self;
|
||||
_addCustomFieldContextMenuDelegate.viewController = self;
|
||||
|
||||
_attributeEditorViewControllers = [[NSMutableArray alloc] init];
|
||||
_activeTab = MPEntryTabGeneral;
|
||||
}
|
||||
return self;
|
||||
@@ -117,6 +139,22 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (void)setRepresentedObject:(id)representedObject {
|
||||
if(self.representedObject) {
|
||||
[NSNotificationCenter.defaultCenter removeObserver:self name:KPKWillChangeEntryNotification object:self.representedEntry];
|
||||
[NSNotificationCenter.defaultCenter removeObserver:self name:KPKDidChangeEntryNotification object:self.representedEntry];
|
||||
}
|
||||
super.representedObject = representedObject;
|
||||
|
||||
[self _updateEditors];
|
||||
|
||||
/* only register for a single entry! */
|
||||
if(self.representedEntry) {
|
||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_willChangeEntry:) name:KPKWillChangeEntryNotification object:self.representedEntry];
|
||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didChangeEntry:) name:KPKDidChangeEntryNotification object:self.representedEntry];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)viewDidLoad {
|
||||
|
||||
[self _addScrollViewWithView:self.generalView atTab:MPEntryTabGeneral];
|
||||
@@ -124,8 +162,7 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
||||
|
||||
[self.infoTabControl bind:NSSelectedIndexBinding toObject:self withKeyPath:NSStringFromSelector(@selector(activeTab)) options:nil];
|
||||
[self.tabView bind:NSSelectedIndexBinding toObject:self withKeyPath:NSStringFromSelector(@selector(activeTab)) options:nil];
|
||||
|
||||
|
||||
|
||||
self.attachmentTableView.backgroundColor = NSColor.clearColor;
|
||||
[self.attachmentTableView bind:NSContentBinding toObject:_attachmentsController withKeyPath:NSStringFromSelector(@selector(arrangedObjects)) options:nil];
|
||||
self.attachmentTableView.delegate = _attachmentTableDelegate;
|
||||
@@ -141,12 +178,12 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
||||
|
||||
[self.generalView addSubview:customFieldTableView];
|
||||
|
||||
NSDictionary *dict = NSDictionaryOfVariableBindings(customFieldTableView, _tagsTokenField, _addCustomFieldButton);
|
||||
NSDictionary *dict = NSDictionaryOfVariableBindings(customFieldTableView, _fieldsStackView, _addCustomFieldButton);
|
||||
[self.generalView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-16-[customFieldTableView]-16-|"
|
||||
options:0
|
||||
metrics:nil
|
||||
views:dict]];
|
||||
[self.generalView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[_tagsTokenField]-[customFieldTableView]-[_addCustomFieldButton]"
|
||||
[self.generalView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[_fieldsStackView]-[customFieldTableView]-[_addCustomFieldButton]"
|
||||
options:0
|
||||
metrics:nil
|
||||
views:dict]];
|
||||
@@ -154,6 +191,10 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
||||
|
||||
|
||||
self.customFieldsTableView.backgroundColor = NSColor.clearColor;
|
||||
self.customFieldsTableView.usesAutomaticRowHeights = YES;
|
||||
if (@available(macOS 11.0, *)) {
|
||||
self.customFieldsTableView.additionalSafeAreaInsets = NSEdgeInsetsZero;
|
||||
}
|
||||
[self.customFieldsTableView bind:NSContentBinding toObject:_customFieldsController withKeyPath:NSStringFromSelector(@selector(arrangedObjects)) options:nil];
|
||||
self.customFieldsTableView.delegate = _customFieldTableDelegate;
|
||||
|
||||
@@ -170,6 +211,9 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
||||
[self.togglePassword bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(showPassword)) options:nil];
|
||||
|
||||
self.tagsTokenField.delegate = _tagTokenFieldDelegate;
|
||||
|
||||
[self _setupAttributeEditors];
|
||||
[self _updateEditors];
|
||||
|
||||
[self _setupCustomFieldsButton];
|
||||
[self _setupViewBindings];
|
||||
@@ -187,10 +231,6 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
||||
object:document];
|
||||
}
|
||||
|
||||
- (void)dealloc {
|
||||
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark Actions
|
||||
|
||||
@@ -219,7 +259,7 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
||||
savePanel.nameFieldStringValue = binary.name;
|
||||
|
||||
[savePanel beginSheetModalForWindow:self.windowController.window completionHandler:^(NSInteger result) {
|
||||
if(result == NSFileHandlingPanelOKButton) {
|
||||
if(result == NSModalResponseOK) {
|
||||
NSError *error;
|
||||
BOOL sucess = [binary saveToLocation:savePanel.URL error:&error];
|
||||
if(!sucess && error) {
|
||||
@@ -237,7 +277,7 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
||||
openPanel.prompt = NSLocalizedString(@"OPEN_BUTTON_ADD_ATTACHMENT_OPEN_PANEL", "Open button in the open panel to add attachments to an entry");
|
||||
openPanel.message = NSLocalizedString(@"MESSAGE_ADD_ATTACHMENT_OPEN_PANEL", "Message in the open panel to add attachments to an entry");
|
||||
[openPanel beginSheetModalForWindow:self.windowController.window completionHandler:^(NSInteger result) {
|
||||
if(result == NSFileHandlingPanelOKButton) {
|
||||
if(result == NSModalResponseOK) {
|
||||
for (NSURL *attachmentURL in openPanel.URLs) {
|
||||
KPKBinary *binary = [[KPKBinary alloc] initWithContentsOfURL:attachmentURL];
|
||||
[self.observer willChangeModelProperty];
|
||||
@@ -273,8 +313,8 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
||||
KPKWindowAssociation *association = self.representedEntry.autotype.associations[row];
|
||||
if(association) {
|
||||
[self.representedEntry.autotype removeAssociation:association];
|
||||
[self.observer didChangeModelProperty];
|
||||
}
|
||||
[self.observer didChangeModelProperty];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -372,6 +412,22 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
||||
[self _showPopopver:viewController atView:sender onEdge:NSMinYEdge];
|
||||
}
|
||||
|
||||
- (IBAction)showOTPSetup:(id)sender {
|
||||
NSView *location;
|
||||
if([sender isKindOfClass:NSView.class]) {
|
||||
location = sender;
|
||||
}
|
||||
if([sender isKindOfClass:NSMenuItem.class]) {
|
||||
if([[sender representedObject] isKindOfClass:NSView.class]) {
|
||||
location = [sender representedObject];
|
||||
}
|
||||
}
|
||||
MPTOTPSetupViewController *vc = [[MPTOTPSetupViewController alloc] init];
|
||||
vc.representedObject = self.representedObject;
|
||||
|
||||
[self _showPopopver:vc atView:location onEdge:NSMinYEdge];
|
||||
}
|
||||
|
||||
- (void)dismissViewController:(NSViewController *)viewController {
|
||||
if([viewController isKindOfClass:MPAutotypeBuilderViewController.class]) {
|
||||
self.showCustomAssociationSequenceAutotypeBuilderButton.enabled = YES;
|
||||
@@ -431,11 +487,15 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
||||
metrics:nil
|
||||
views:views]];
|
||||
|
||||
[[self view] layoutSubtreeIfNeeded];
|
||||
[self.view layoutSubtreeIfNeeded];
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark Entry Selection
|
||||
- (void)_updateEntryValues {
|
||||
// TODO implement binding less model update
|
||||
}
|
||||
|
||||
- (void)_setupViewBindings {
|
||||
/* Disable for history view */
|
||||
NSArray *inputs = @[self.titleTextField,
|
||||
@@ -464,6 +524,8 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
||||
|
||||
/* general */
|
||||
NSDictionary *nullPlaceholderBindingOptionsDict = @{ NSNullPlaceholderBindingOption: NSLocalizedString(@"NONE", "Placeholder text for input fields if no entry or group is selected")};
|
||||
NSDictionary *prettyPasswordBindingOptionsDict = @{ NSNullPlaceholderBindingOption: nullPlaceholderBindingOptionsDict[NSNullPlaceholderBindingOption], NSValueTransformerNameBindingOption : MPPrettyPasswordTransformerName };
|
||||
|
||||
[self.titleTextField bind:NSValueBinding
|
||||
toObject:self
|
||||
withKeyPath:[NSString stringWithFormat:@"%@.%@", NSStringFromSelector(@selector(representedObject)), NSStringFromSelector(@selector(title))]
|
||||
@@ -471,19 +533,23 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
||||
[self.passwordTextField bind:NSValueBinding
|
||||
toObject:self
|
||||
withKeyPath:[NSString stringWithFormat:@"%@.%@", NSStringFromSelector(@selector(representedObject)), NSStringFromSelector(@selector(password))]
|
||||
options:nullPlaceholderBindingOptionsDict];
|
||||
options:prettyPasswordBindingOptionsDict];
|
||||
|
||||
[self.usernameTextField bind:NSValueBinding
|
||||
toObject:self
|
||||
withKeyPath:[NSString stringWithFormat:@"%@.%@", NSStringFromSelector(@selector(representedObject)), NSStringFromSelector(@selector(username))]
|
||||
options:nullPlaceholderBindingOptionsDict];
|
||||
|
||||
[self.URLTextField bind:NSValueBinding
|
||||
toObject:self
|
||||
withKeyPath:[NSString stringWithFormat:@"%@.%@", NSStringFromSelector(@selector(representedObject)), NSStringFromSelector(@selector(url))]
|
||||
options:nullPlaceholderBindingOptionsDict];
|
||||
|
||||
[self.expiresCheckButton bind:NSTitleBinding
|
||||
toObject:self
|
||||
withKeyPath:[NSString stringWithFormat:@"%@.%@.%@", NSStringFromSelector(@selector(representedObject)), NSStringFromSelector(@selector(timeInfo)), NSStringFromSelector(@selector(expirationDate))]
|
||||
options:@{ NSValueTransformerNameBindingOption:MPExpiryDateValueTransformerName }];
|
||||
|
||||
[self.expiresCheckButton bind:NSValueBinding
|
||||
toObject:self
|
||||
withKeyPath:[NSString stringWithFormat:@"%@.%@.%@", NSStringFromSelector(@selector(representedObject)), NSStringFromSelector(@selector(timeInfo)), NSStringFromSelector(@selector(expires))]
|
||||
@@ -500,7 +566,7 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
||||
withKeyPath:[NSString stringWithFormat:@"%@.%@.%@", NSStringFromSelector(@selector(representedObject)), NSStringFromSelector(@selector(uuid)), NSStringFromSelector(@selector(UUIDString))]
|
||||
options:@{ NSConditionallySetsEditableBindingOption: @NO }];
|
||||
self.uuidTextField.editable = NO;
|
||||
|
||||
|
||||
/* Attachments */
|
||||
[_attachmentsController bind:NSContentArrayBinding
|
||||
toObject:self
|
||||
@@ -557,7 +623,42 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
||||
NSMenu *customFieldMenu = [[NSMenu alloc] initWithTitle:NSLocalizedString(@"ADD_CUSTOM_FIELD_CONTEXT_MENU", @"Menu displayed for adding special custom keys")];
|
||||
customFieldMenu.delegate = _addCustomFieldContextMenuDelegate;
|
||||
self.addCustomFieldButton.contextMenu = customFieldMenu;
|
||||
[self.addCustomFieldButton setEnabled:NO forSegment:MPContextButtonSegmentContextButton];
|
||||
//[self.addCustomFieldButton setEnabled:NO forSegment:MPContextButtonSegmentContextButton];
|
||||
}
|
||||
|
||||
- (void)_setupAttributeEditors {
|
||||
self.totpViewController = [[MPTOTPViewController alloc] init];
|
||||
|
||||
NSInteger urlindex = [self.fieldsStackView.arrangedSubviews indexOfObject:self.URLTextField];
|
||||
NSAssert(urlindex != NSNotFound, @"Missing reference view. This should not happen!");
|
||||
[self addChildViewController:self.totpViewController];
|
||||
[self.fieldsStackView insertArrangedSubview:self.totpViewController.view atIndex:urlindex - 1];
|
||||
|
||||
/*
|
||||
MPNodeExpirationViewController *vc = [[MPNodeExpirationViewController alloc] init];
|
||||
vc.isEditor = NO;
|
||||
[_attributeEditorViewControllers addObject:vc];
|
||||
[self.fieldsStackView addArrangedSubview:vc.view];
|
||||
|
||||
MPEntryAttributeViewController *vc = [[MPEntryAttributeViewController alloc] init];
|
||||
vc.isEditor = NO;
|
||||
[_attributeEditorViewControllers addObject:vc];
|
||||
[self.fieldsStackView addArrangedSubview:vc.view];
|
||||
|
||||
for(NSUInteger index = 0; index < kKPKDefaultEntryKeysCount; index++) {
|
||||
MPEntryAttributeViewController *vc = [[MPEntryAttributeViewController alloc] init];
|
||||
vc.isEditor = NO;
|
||||
[_attributeEditorViewControllers addObject:vc];
|
||||
[self.fieldsStackView addArrangedSubview:vc.view];
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
- (void)_updateEditors {
|
||||
self.totpViewController.representedObject = self.representedObject;
|
||||
/* Update all the Attribute editors
|
||||
_attributeEditorViewControllers[MPInpspectorEditorIndexUsername].representedObject = [self.representedEntry attributeWithKey:kKPKUsernameKey];
|
||||
*/
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
@@ -624,14 +725,14 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
||||
name = [_customFieldsController.arrangedObjects[index] key];
|
||||
}
|
||||
}
|
||||
[MPPasteBoardController.defaultController copyObjects:@[selectedValue] overlayInfo:info name:name atView:self.view];
|
||||
[MPPasteBoardController.defaultController copyObject:selectedValue overlayInfo:info name:name atView:self.view];
|
||||
return NO;
|
||||
}
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (IBAction)toggleExpire:(NSButton*)sender {
|
||||
if([sender state] == NSOnState && [self.representedEntry.timeInfo.expirationDate isEqualToDate:[NSDate distantFuture]]) {
|
||||
if([sender state] == NSOnState && [self.representedEntry.timeInfo.expirationDate isEqualToDate:NSDate.distantFuture]) {
|
||||
[NSApp sendAction:self.pickExpireDateButton.action to:nil from:self.pickExpireDateButton];
|
||||
}
|
||||
}
|
||||
@@ -646,7 +747,25 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
||||
|
||||
- (void)_didChangeCurrentItem:(NSNotification *)notificiation {
|
||||
self.showPassword = NO;
|
||||
//self.customFieldsTableView.needsDisplay = YES;
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark KPKEntry Notifications
|
||||
|
||||
- (void)_willChangeEntry:(NSNotification *)notification {
|
||||
NSLog(@"willChangeEntry");
|
||||
}
|
||||
|
||||
- (void)_didChangeEntry:(NSNotification *)notification {
|
||||
if(notification.object != self.representedObject) {
|
||||
NSLog(@"Skipping: didChangeEntry:%@, we do not need this change!", notification.object);
|
||||
return;
|
||||
}
|
||||
NSLog(@"didChangeEntry:%@", notification.object);
|
||||
[self _updateEntryValues];
|
||||
}
|
||||
|
||||
- (void)_didChangeAttribute:(NSNotification *)notification {
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
18
MacPass/MPEntryPasswordAttributeViewController.h
Normal file
18
MacPass/MPEntryPasswordAttributeViewController.h
Normal file
@@ -0,0 +1,18 @@
|
||||
//
|
||||
// MPEntryPasswordAttributeViewController.h
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 18.10.21.
|
||||
// Copyright © 2021 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import "MPEntryAttributeViewController.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface MPEntryPasswordAttributeViewController : MPEntryAttributeViewController
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
37
MacPass/MPEntryPasswordAttributeViewController.m
Normal file
37
MacPass/MPEntryPasswordAttributeViewController.m
Normal file
@@ -0,0 +1,37 @@
|
||||
//
|
||||
// MPEntryPasswordAttributeViewController.m
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 18.10.21.
|
||||
// Copyright © 2021 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import "MPEntryPasswordAttributeViewController.h"
|
||||
#import <HNHUi/HNHUi.h>
|
||||
#import <KeePassKit/KeePassKit.h>
|
||||
|
||||
@interface MPEntryPasswordAttributeViewController ()
|
||||
|
||||
@property (strong) IBOutlet HNHUISecureTextField *passwordTextField;
|
||||
@property (strong) IBOutlet NSButton *togglePasswordButton;
|
||||
@property (strong) IBOutlet NSButton *generatePasswordButton;
|
||||
|
||||
@property (strong, nullable, readonly) KPKAttribute *representedAttribute;
|
||||
|
||||
@end
|
||||
|
||||
@implementation MPEntryPasswordAttributeViewController
|
||||
|
||||
- (void)updateValues {
|
||||
self.view.hidden = (!self.isEditor && self.representedAttribute.value.length == 0);
|
||||
self.passwordTextField.stringValue = self.representedAttribute.value ? self.representedAttribute.value : @"";
|
||||
}
|
||||
|
||||
- (void)updateEditing {
|
||||
self.generatePasswordButton.hidden = !self.isEditor;
|
||||
self.passwordTextField.editable = self.isEditor;
|
||||
self.passwordTextField.selectable = YES;
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
104
MacPass/MPEntryPasswordAttributeViewController.xib
Normal file
104
MacPass/MPEntryPasswordAttributeViewController.xib
Normal file
@@ -0,0 +1,104 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="18122" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="18122"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="MPEntryPasswordAttributeViewController">
|
||||
<connections>
|
||||
<outlet property="generatePasswordButton" destination="UlI-yI-Sqn" id="sKR-Rd-2LC"/>
|
||||
<outlet property="keyTextField" destination="2aN-Ps-z4K" id="ua7-Km-K5o"/>
|
||||
<outlet property="passwordTextField" destination="tpF-hp-29r" id="2pM-fr-9l0"/>
|
||||
<outlet property="togglePasswordButton" destination="AY0-XE-8S7" id="IwM-pB-tQn"/>
|
||||
<outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView id="Hz6-mo-xeY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="480" height="42"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<stackView distribution="fill" orientation="vertical" alignment="leading" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="jTp-ga-xuT">
|
||||
<rect key="frame" x="0.0" y="0.0" width="480" height="42"/>
|
||||
<subviews>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="2aN-Ps-z4K">
|
||||
<rect key="frame" x="-2" y="28" width="484" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Password" id="Piv-zL-dtc">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<stackView distribution="fill" orientation="horizontal" alignment="centerY" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" horizontalHuggingPriority="249" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="XRh-Fs-reW">
|
||||
<rect key="frame" x="0.0" y="0.0" width="480" height="20"/>
|
||||
<subviews>
|
||||
<secureTextField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" contentType="oneTimeCode" translatesAutoresizingMaskIntoConstraints="NO" id="tpF-hp-29r" customClass="HNHUISecureTextField">
|
||||
<rect key="frame" x="0.0" y="0.0" width="352" height="20"/>
|
||||
<secureTextFieldCell key="cell" lineBreakMode="truncatingTail" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="CeT-F7-Vb3">
|
||||
<font key="font" size="13" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
<allowedInputSourceLocales>
|
||||
<string>NSAllRomanInputSourcesLocaleIdentifier</string>
|
||||
</allowedInputSourceLocales>
|
||||
</secureTextFieldCell>
|
||||
<connections>
|
||||
<outlet property="nextKeyView" destination="AY0-XE-8S7" id="uPk-2E-Bwh"/>
|
||||
</connections>
|
||||
</secureTextField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="AY0-XE-8S7">
|
||||
<rect key="frame" x="353" y="-7" width="50" height="32"/>
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSQuickLookTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="NUE-lS-hzr">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<outlet property="nextKeyView" destination="UlI-yI-Sqn" id="6uu-J3-TEc"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="UlI-yI-Sqn">
|
||||
<rect key="frame" x="397" y="-7" width="90" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Generate" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Rx9-ck-eKo">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
</subviews>
|
||||
<visibilityPriorities>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
</visibilityPriorities>
|
||||
<customSpacing>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
</customSpacing>
|
||||
</stackView>
|
||||
</subviews>
|
||||
<visibilityPriorities>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
</visibilityPriorities>
|
||||
<customSpacing>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
</customSpacing>
|
||||
</stackView>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" secondItem="jTp-ga-xuT" secondAttribute="trailing" id="8qT-FW-gVh"/>
|
||||
<constraint firstItem="jTp-ga-xuT" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="Hla-na-Bw8"/>
|
||||
<constraint firstAttribute="bottom" secondItem="jTp-ga-xuT" secondAttribute="bottom" id="pcp-4W-Bvc"/>
|
||||
<constraint firstItem="jTp-ga-xuT" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" id="wEy-tv-xz0"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="173" y="112"/>
|
||||
</customView>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSQuickLookTemplate" width="21" height="13"/>
|
||||
</resources>
|
||||
</document>
|
||||
@@ -24,17 +24,6 @@
|
||||
#import "MPContextBarViewController.h"
|
||||
#import "MPTargetNodeResolving.h"
|
||||
|
||||
APPKIT_EXTERN NSString *const MPEntryTableIndexColumnIdentifier;
|
||||
APPKIT_EXTERN NSString *const MPEntryTableUserNameColumnIdentifier;
|
||||
APPKIT_EXTERN NSString *const MPEntryTableTitleColumnIdentifier;
|
||||
APPKIT_EXTERN NSString *const MPEntryTablePasswordColumnIdentifier;
|
||||
APPKIT_EXTERN NSString *const MPEntryTableParentColumnIdentifier;
|
||||
APPKIT_EXTERN NSString *const MPEntryTableURLColumnIdentifier;
|
||||
APPKIT_EXTERN NSString *const MPEntryTableNotesColumnIdentifier;
|
||||
APPKIT_EXTERN NSString *const MPEntryTableAttachmentColumnIdentifier;
|
||||
APPKIT_EXTERN NSString *const MPEntryTableModfiedColumnIdentifier;
|
||||
APPKIT_EXTERN NSString *const MPEntryTableHistoryColumnIdentifier;
|
||||
|
||||
typedef NS_ENUM(NSUInteger, MPDisplayMode) {
|
||||
MPDisplayModeEntries,
|
||||
MPDisplayModeSearchResults,
|
||||
|
||||
@@ -49,6 +49,8 @@
|
||||
|
||||
#import "HNHUi/HNHUi.h"
|
||||
|
||||
#import "MPOpenURLHandler.h"
|
||||
|
||||
#import "MPNotifications.h"
|
||||
|
||||
#define STATUS_BAR_ANIMATION_TIME 0.15
|
||||
@@ -62,12 +64,14 @@ NSString *const MPEntryTableParentColumnIdentifier = @"MPParentColumnIdentifier"
|
||||
NSString *const MPEntryTableURLColumnIdentifier = @"MPEntryTableURLColumnIdentifier";
|
||||
NSString *const MPEntryTableNotesColumnIdentifier = @"MPEntryTableNotesColumnIdentifier";
|
||||
NSString *const MPEntryTableAttachmentColumnIdentifier = @"MPEntryTableAttachmentColumnIdentifier";
|
||||
NSString *const MPEntryTableCreatedColumnIdentifier = @"MPEntryTableCreatedColumnIdentifier";
|
||||
NSString *const MPEntryTableModfiedColumnIdentifier = @"MPEntryTableModfiedColumnIdentifier";
|
||||
NSString *const MPEntryTableHistoryColumnIdentifier = @"MPEntryTableHistoryColumnIdentifier";
|
||||
|
||||
NSString *const _MPTableImageCellView = @"ImageCell";
|
||||
NSString *const _MPTableStringCellView = @"StringCell";
|
||||
NSString *const _MPTableSecurCellView = @"PasswordCell";
|
||||
NSString *const _MPTableMonoSpacedStringCellView = @"MonospacedStringCell";
|
||||
|
||||
@interface MPEntryViewController () {
|
||||
BOOL _isDisplayingContextBar;
|
||||
@@ -75,7 +79,6 @@ NSString *const _MPTableSecurCellView = @"PasswordCell";
|
||||
}
|
||||
|
||||
@property (strong) MPContextBarViewController *contextBarViewController;
|
||||
@property (strong) NSArray *filteredEntries;
|
||||
|
||||
@property (weak) IBOutlet NSTableView *entryTable;
|
||||
@property (assign) MPDisplayMode displayMode;
|
||||
@@ -86,6 +89,7 @@ NSString *const _MPTableSecurCellView = @"PasswordCell";
|
||||
@property (strong) NSLayoutConstraint *contextBarTopConstraint;
|
||||
|
||||
@property (nonatomic, strong) MPEntryTableDataSource *dataSource;
|
||||
@property (nonatomic) BOOL displayClearTextPasswords;
|
||||
|
||||
@end
|
||||
|
||||
@@ -104,6 +108,13 @@ NSString *const _MPTableSecurCellView = @"PasswordCell";
|
||||
_dataSource = [[MPEntryTableDataSource alloc] init];
|
||||
_dataSource.viewController = self;
|
||||
_contextBarViewController = [[MPContextBarViewController alloc] init];
|
||||
_displayClearTextPasswords = [NSUserDefaults.standardUserDefaults boolForKey:kMPSettingsKeyDisplayClearTextPasswordsInEntryList];
|
||||
|
||||
[self bind:NSStringFromSelector(@selector(displayClearTextPasswords))
|
||||
toObject:NSUserDefaultsController.sharedUserDefaultsController
|
||||
withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyDisplayClearTextPasswordsInEntryList]
|
||||
options:nil];
|
||||
|
||||
[self _setupEntryBindings];
|
||||
}
|
||||
return self;
|
||||
@@ -146,11 +157,13 @@ NSString *const _MPTableSecurCellView = @"PasswordCell";
|
||||
NSTableColumn *urlColumn = self.entryTable.tableColumns[4];
|
||||
NSTableColumn *attachmentsColumn = [[NSTableColumn alloc] initWithIdentifier:MPEntryTableAttachmentColumnIdentifier];
|
||||
NSTableColumn *notesColumn = [[NSTableColumn alloc] initWithIdentifier:MPEntryTableNotesColumnIdentifier];
|
||||
NSTableColumn *createdColumn = [[NSTableColumn alloc] initWithIdentifier:MPEntryTableCreatedColumnIdentifier];
|
||||
NSTableColumn *modifiedColumn = [[NSTableColumn alloc] initWithIdentifier:MPEntryTableModfiedColumnIdentifier];
|
||||
NSTableColumn *historyColumn = [[NSTableColumn alloc] initWithIdentifier:MPEntryTableHistoryColumnIdentifier];
|
||||
NSTableColumn *indexColumn = [[NSTableColumn alloc] initWithIdentifier:MPEntryTableIndexColumnIdentifier];
|
||||
notesColumn.minWidth = 40.0;
|
||||
attachmentsColumn.minWidth = 40.0;
|
||||
createdColumn.minWidth = 40.0;
|
||||
modifiedColumn.minWidth = 40.0;
|
||||
historyColumn.minWidth = 40.0;
|
||||
indexColumn.minWidth = 27.0;
|
||||
@@ -158,6 +171,7 @@ NSString *const _MPTableSecurCellView = @"PasswordCell";
|
||||
[self.entryTable addTableColumn:notesColumn];
|
||||
[self.entryTable addTableColumn:attachmentsColumn];
|
||||
[self.entryTable addTableColumn:modifiedColumn];
|
||||
[self.entryTable addTableColumn:createdColumn];
|
||||
[self.entryTable addTableColumn:historyColumn];
|
||||
[self.entryTable addTableColumn:indexColumn];
|
||||
|
||||
@@ -172,6 +186,7 @@ NSString *const _MPTableSecurCellView = @"PasswordCell";
|
||||
|
||||
NSString *parentTitleKeyPath = [[NSString alloc] initWithFormat:@"%@.%@", NSStringFromSelector(@selector(parent)), NSStringFromSelector(@selector(title))];
|
||||
NSString *timeInfoModificationTimeKeyPath = [[NSString alloc] initWithFormat:@"%@.%@", NSStringFromSelector(@selector(timeInfo)), NSStringFromSelector(@selector(modificationDate))];
|
||||
NSString *timeInfoCreationTimeKeyPath = [[NSString alloc] initWithFormat:@"%@.%@", NSStringFromSelector(@selector(timeInfo)), NSStringFromSelector(@selector(creationDate))];
|
||||
|
||||
indexColumn.sortDescriptorPrototype = [NSSortDescriptor sortDescriptorWithKey:NSStringFromSelector(@selector(index)) ascending:YES selector:@selector(compare:)];
|
||||
titleColumn.sortDescriptorPrototype = [NSSortDescriptor sortDescriptorWithKey:NSStringFromSelector(@selector(title))ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)];
|
||||
@@ -179,6 +194,7 @@ NSString *const _MPTableSecurCellView = @"PasswordCell";
|
||||
urlColumn.sortDescriptorPrototype = [NSSortDescriptor sortDescriptorWithKey:NSStringFromSelector(@selector(url)) ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)];
|
||||
parentColumn.sortDescriptorPrototype = [NSSortDescriptor sortDescriptorWithKey:parentTitleKeyPath ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)];
|
||||
modifiedColumn.sortDescriptorPrototype = [NSSortDescriptor sortDescriptorWithKey:timeInfoModificationTimeKeyPath ascending:YES selector:@selector(compare:)];
|
||||
createdColumn.sortDescriptorPrototype = [NSSortDescriptor sortDescriptorWithKey:timeInfoCreationTimeKeyPath ascending:YES selector:@selector(compare:)];
|
||||
|
||||
indexColumn.headerCell.stringValue = @"";
|
||||
indexColumn.headerToolTip = NSLocalizedString(@"ENTRY_INDEX_COLUMN_TOOLTIP", "Tooltip displayed on the index header cell");
|
||||
@@ -189,6 +205,7 @@ NSString *const _MPTableSecurCellView = @"PasswordCell";
|
||||
urlColumn.headerCell.stringValue = NSLocalizedString(@"URL", "Url column title");
|
||||
notesColumn.headerCell.stringValue = NSLocalizedString(@"NOTES", "Notes column title");
|
||||
attachmentsColumn.headerCell.stringValue = NSLocalizedString(@"ATTACHMENTS", "Attachments column title (shows counts)");
|
||||
createdColumn.headerCell.stringValue = NSLocalizedString(@"CREATED", "Creating date column title");
|
||||
modifiedColumn.headerCell.stringValue = NSLocalizedString(@"MODIFIED", "Modification date column title");
|
||||
historyColumn.headerCell.stringValue = NSLocalizedString(@"HISTORY", "History count column title");
|
||||
|
||||
@@ -200,7 +217,7 @@ NSString *const _MPTableSecurCellView = @"PasswordCell";
|
||||
// bind NSArrayController sorting so that sort order gets auto-saved
|
||||
// see: http://simx.me/technonova/software_development/sort_descriptors_nstableview_bindings_a.html
|
||||
[self.entryArrayController bind:NSSortDescriptorsBinding
|
||||
toObject:[NSUserDefaultsController sharedUserDefaultsController]
|
||||
toObject:NSUserDefaultsController.sharedUserDefaultsController
|
||||
withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyEntryTableSortDescriptors]
|
||||
options:@{ NSValueTransformerNameBindingOption: NSUnarchiveFromDataTransformerName }];
|
||||
|
||||
@@ -217,6 +234,17 @@ NSString *const _MPTableSecurCellView = @"PasswordCell";
|
||||
}
|
||||
}
|
||||
|
||||
- (void)setDisplayClearTextPasswords:(BOOL)displayClearTextPasswords {
|
||||
if(_displayClearTextPasswords == displayClearTextPasswords) {
|
||||
return;
|
||||
}
|
||||
_displayClearTextPasswords = displayClearTextPasswords;
|
||||
NSTableColumn *passwordColumn = [self.entryTable tableColumnWithIdentifier:MPEntryTablePasswordColumnIdentifier];
|
||||
if(!passwordColumn.isHidden) {
|
||||
[self.entryTable reloadData];
|
||||
}
|
||||
}
|
||||
|
||||
- (NSResponder *)reconmendedFirstResponder {
|
||||
return self.entryTable;
|
||||
}
|
||||
@@ -229,7 +257,7 @@ NSString *const _MPTableSecurCellView = @"PasswordCell";
|
||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didUpdateSearchResults:) name:MPDocumentDidChangeSearchResults object:document];
|
||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_showEntryHistory:) name:MPDocumentShowEntryHistoryNotification object:document];
|
||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_hideEntryHistory:) name:MPDocumentHideEntryHistoryNotification object:document];
|
||||
|
||||
|
||||
[self.contextBarViewController registerNotificationsForDocument:document];
|
||||
}
|
||||
|
||||
@@ -253,7 +281,6 @@ NSString *const _MPTableSecurCellView = @"PasswordCell";
|
||||
entry.parent.lastTopVisibleEntry = entry.uuid;
|
||||
}
|
||||
}
|
||||
|
||||
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
|
||||
BOOL isTitleColumn = [tableColumn.identifier isEqualToString:MPEntryTableTitleColumnIdentifier];
|
||||
BOOL isGroupColumn = [tableColumn.identifier isEqualToString:MPEntryTableParentColumnIdentifier];
|
||||
@@ -262,10 +289,12 @@ NSString *const _MPTableSecurCellView = @"PasswordCell";
|
||||
BOOL isURLColumn = [tableColumn.identifier isEqualToString:MPEntryTableURLColumnIdentifier];
|
||||
BOOL isAttachmentColumn = [tableColumn.identifier isEqualToString:MPEntryTableAttachmentColumnIdentifier];
|
||||
BOOL isNotesColumn = [tableColumn.identifier isEqualToString:MPEntryTableNotesColumnIdentifier];
|
||||
BOOL isCreatedColumn = [tableColumn.identifier isEqualToString:MPEntryTableCreatedColumnIdentifier];
|
||||
BOOL isModifedColumn = [tableColumn.identifier isEqualToString:MPEntryTableModfiedColumnIdentifier];
|
||||
BOOL isHistoryColumn = [tableColumn.identifier isEqualToString:MPEntryTableHistoryColumnIdentifier];
|
||||
|
||||
NSTableCellView *view = nil;
|
||||
BOOL displayClearTextPasswords = [NSUserDefaults.standardUserDefaults boolForKey:kMPSettingsKeyDisplayClearTextPasswordsInEntryList];
|
||||
if(isTitleColumn || isGroupColumn) {
|
||||
view = [tableView makeViewWithIdentifier:_MPTableImageCellView owner:self];
|
||||
[view.textField unbind:NSValueBinding];
|
||||
@@ -296,7 +325,7 @@ NSString *const _MPTableSecurCellView = @"PasswordCell";
|
||||
[view.imageView bind:NSValueBinding toObject:view withKeyPath:parentIconImageKeyPath options:nil];
|
||||
}
|
||||
}
|
||||
else if(isPasswordColum) {
|
||||
else if(isPasswordColum && !displayClearTextPasswords) {
|
||||
view = [tableView makeViewWithIdentifier:_MPTableSecurCellView owner:self];
|
||||
NSString *passwordKeyPath = [NSString stringWithFormat:@"%@.%@",
|
||||
NSStringFromSelector(@selector(objectValue)),
|
||||
@@ -304,16 +333,20 @@ NSString *const _MPTableSecurCellView = @"PasswordCell";
|
||||
NSDictionary *options = @{ NSValueTransformerBindingOption : [NSValueTransformer valueTransformerForName:MPStringLengthValueTransformerName] };
|
||||
[view.textField bind:NSValueBinding toObject:view withKeyPath:passwordKeyPath options:options];
|
||||
}
|
||||
else {
|
||||
view = [tableView makeViewWithIdentifier:_MPTableStringCellView owner:self];
|
||||
else {
|
||||
if(isPasswordColum) {
|
||||
view = [tableView makeViewWithIdentifier:_MPTableMonoSpacedStringCellView owner:self];
|
||||
}
|
||||
else {
|
||||
view = [tableView makeViewWithIdentifier:_MPTableStringCellView owner:self];
|
||||
}
|
||||
[view.textField unbind:NSValueBinding];
|
||||
view.textField.stringValue = @"";
|
||||
if(!isModifedColumn) {
|
||||
if(!isModifedColumn && !isCreatedColumn) {
|
||||
/* clean up old formatter that might be left */
|
||||
view.textField.formatter = nil;
|
||||
}
|
||||
|
||||
if(isModifedColumn) {
|
||||
if(isModifedColumn || isCreatedColumn) {
|
||||
if(!view.textField.formatter) {
|
||||
/* Just use one formatter instance since it's expensive to create */
|
||||
static NSDateFormatter *formatter = nil;
|
||||
@@ -325,12 +358,23 @@ NSString *const _MPTableSecurCellView = @"PasswordCell";
|
||||
});
|
||||
view.textField.formatter = formatter;
|
||||
}
|
||||
NSString *modificationTimeKeyPath = [NSString stringWithFormat:@"%@.%@.%@",
|
||||
NSStringFromSelector(@selector(objectValue)),
|
||||
NSStringFromSelector(@selector(timeInfo)),
|
||||
NSStringFromSelector(@selector(modificationDate))];
|
||||
|
||||
[view.textField bind:NSValueBinding toObject:view withKeyPath:modificationTimeKeyPath options:nil];
|
||||
if(isModifedColumn) {
|
||||
NSString *modificationTimeKeyPath = [NSString stringWithFormat:@"%@.%@.%@",
|
||||
NSStringFromSelector(@selector(objectValue)),
|
||||
NSStringFromSelector(@selector(timeInfo)),
|
||||
NSStringFromSelector(@selector(modificationDate))];
|
||||
|
||||
[view.textField bind:NSValueBinding toObject:view withKeyPath:modificationTimeKeyPath options:nil];
|
||||
}
|
||||
else {
|
||||
NSString * createdTimeKeyPath = [NSString stringWithFormat:@"%@.%@.%@",
|
||||
NSStringFromSelector(@selector(objectValue)),
|
||||
NSStringFromSelector(@selector(timeInfo)),
|
||||
NSStringFromSelector(@selector(creationDate))];
|
||||
|
||||
|
||||
[view.textField bind:NSValueBinding toObject:view withKeyPath:createdTimeKeyPath options:nil];
|
||||
}
|
||||
return view;
|
||||
}
|
||||
else if(isURLColumn) {
|
||||
@@ -365,6 +409,12 @@ NSString *const _MPTableSecurCellView = @"PasswordCell";
|
||||
NSStringFromSelector(@selector(history))];
|
||||
[view.textField bind:NSValueBinding toObject:view withKeyPath:historyCountKeyPath options:nil];
|
||||
}
|
||||
else if(isPasswordColum) {
|
||||
NSString *passwordKeyPath = [NSString stringWithFormat:@"%@.%@",
|
||||
NSStringFromSelector(@selector(objectValue)),
|
||||
NSStringFromSelector(@selector(password))];
|
||||
[view.textField bind:NSValueBinding toObject:view withKeyPath:passwordKeyPath options:nil];
|
||||
}
|
||||
}
|
||||
return view;
|
||||
}
|
||||
@@ -382,8 +432,11 @@ NSString *const _MPTableSecurCellView = @"PasswordCell";
|
||||
if(tableView != self.entryTable) {
|
||||
return; // Not the right table view
|
||||
}
|
||||
MPDocument *document = self.windowController.document;
|
||||
document.selectedEntries = self.entryArrayController.selectedObjects;
|
||||
/* do not update the current item if we are not in focus! */
|
||||
if(self.displayMode == MPDisplayModeSearchResults || tableView.window.firstResponder == self.entryTable) {
|
||||
MPDocument *document = self.windowController.document;
|
||||
document.selectedEntries = self.entryArrayController.selectedObjects;
|
||||
}
|
||||
}
|
||||
|
||||
- (BOOL)tableView:(NSTableView *)tableView shouldReorderColumn:(NSInteger)columnIndex toColumn:(NSInteger)newColumnIndex {
|
||||
@@ -472,13 +525,16 @@ NSString *const _MPTableSecurCellView = @"PasswordCell";
|
||||
NSUInteger row = [self.entryArrayController.arrangedObjects indexOfObject:entry];
|
||||
[self.entryTable scrollRowToVisible:row];
|
||||
[self.entryTable selectRowIndexes:[NSIndexSet indexSetWithIndex:row] byExtendingSelection:NO];
|
||||
// since we do not update the current selection when the table view is not first responder, do it here manually
|
||||
if(self.entryTable.window.firstResponder != self.entryTable) {
|
||||
document.selectedEntries = self.entryArrayController.selectedObjects;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)_didUpdateSearchResults:(NSNotification *)notification {
|
||||
NSArray *result = notification.userInfo[kMPDocumentSearchResultsKey];
|
||||
NSAssert(result != nil, @"Resutls should never be nil");
|
||||
self.filteredEntries = result;
|
||||
self.entryArrayController.content = self.filteredEntries;
|
||||
NSAssert(result != nil, @"Results should never be nil");
|
||||
self.entryArrayController.content = result;
|
||||
[self.entryTable tableColumnWithIdentifier:MPEntryTableParentColumnIdentifier].hidden = NO;
|
||||
[self _updateContextBar];
|
||||
}
|
||||
@@ -487,7 +543,6 @@ NSString *const _MPTableSecurCellView = @"PasswordCell";
|
||||
- (void)_didExitSearch:(NSNotification *)notification {
|
||||
[self.entryTable tableColumnWithIdentifier:MPEntryTableParentColumnIdentifier].hidden = YES;
|
||||
self.entryArrayController.content = nil;
|
||||
self.filteredEntries = nil;
|
||||
self.displayMode = MPDisplayModeEntries;
|
||||
[self _updateContextBar];
|
||||
MPDocument *document = notification.object;
|
||||
@@ -496,6 +551,7 @@ NSString *const _MPTableSecurCellView = @"PasswordCell";
|
||||
|
||||
- (void)_didEnterSearch:(NSNotification *)notification {
|
||||
self.displayMode = MPDisplayModeSearchResults;
|
||||
// FIXME: update selection?
|
||||
[self _updateContextBar];
|
||||
}
|
||||
|
||||
@@ -620,6 +676,7 @@ NSString *const _MPTableSecurCellView = @"PasswordCell";
|
||||
[headerMenu addItemWithTitle:NSLocalizedString(@"NOTES", "Menu item to toggle display of notes column in entry table") action:NULL keyEquivalent:@""];
|
||||
[headerMenu addItemWithTitle:NSLocalizedString(@"ATTACHMENTS", "Menu item to toggle display of attachment count column in entry table") action:NULL keyEquivalent:@""];
|
||||
[headerMenu addItemWithTitle:NSLocalizedString(@"MODIFIED", "Menu item to toggle display of modified date column in entry table") action:NULL keyEquivalent:@""];
|
||||
[headerMenu addItemWithTitle:NSLocalizedString(@"CREATED", "Menu item to toggle display of created date column in entry table") action:NULL keyEquivalent:@""];
|
||||
[headerMenu addItemWithTitle:NSLocalizedString(@"HISTORY", "Menu item to toggle display of history count column in entry table") action:NULL keyEquivalent:@""];
|
||||
|
||||
NSArray *identifier = @[ MPEntryTableTitleColumnIdentifier,
|
||||
@@ -629,6 +686,7 @@ NSString *const _MPTableSecurCellView = @"PasswordCell";
|
||||
MPEntryTableNotesColumnIdentifier,
|
||||
MPEntryTableAttachmentColumnIdentifier,
|
||||
MPEntryTableModfiedColumnIdentifier,
|
||||
MPEntryTableCreatedColumnIdentifier,
|
||||
MPEntryTableHistoryColumnIdentifier ];
|
||||
|
||||
NSDictionary *options = @{ NSValueTransformerNameBindingOption : NSNegateBooleanTransformerName };
|
||||
@@ -638,6 +696,14 @@ NSString *const _MPTableSecurCellView = @"PasswordCell";
|
||||
[item bind:NSValueBinding toObject:column withKeyPath:NSHiddenBinding options:options];
|
||||
}
|
||||
|
||||
|
||||
[headerMenu addItem:[NSMenuItem separatorItem]];
|
||||
NSMenuItem *showPasswordsItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"SHOW_CLEAR_TEXT_PASSWORDS", "Menu item to toggle display type of passwords") action:NULL keyEquivalent:@""];
|
||||
[showPasswordsItem bind:NSValueBinding
|
||||
toObject:NSUserDefaultsController.sharedUserDefaultsController
|
||||
withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyDisplayClearTextPasswordsInEntryList]
|
||||
options:nil];
|
||||
[headerMenu addItem:showPasswordsItem];
|
||||
self.entryTable.headerView.menu = headerMenu;
|
||||
}
|
||||
|
||||
@@ -647,7 +713,7 @@ NSString *const _MPTableSecurCellView = @"PasswordCell";
|
||||
KPKEntry *selectedEntry = nodes.count == 1 ? [nodes.firstObject asEntry] : nil;
|
||||
NSString *value = [selectedEntry.password kpk_finalValueForEntry:selectedEntry];
|
||||
if(value) {
|
||||
[MPPasteBoardController.defaultController copyObjects:@[value] overlayInfo:MPPasteboardOverlayInfoPassword name:nil atView:self.view];
|
||||
[MPPasteBoardController.defaultController copyObject:value overlayInfo:MPPasteboardOverlayInfoPassword name:nil atView:self.view];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -656,7 +722,7 @@ NSString *const _MPTableSecurCellView = @"PasswordCell";
|
||||
KPKEntry *selectedEntry = nodes.count == 1 ? [nodes.firstObject asEntry] : nil;
|
||||
NSString *value = [selectedEntry.username kpk_finalValueForEntry:selectedEntry];
|
||||
if(value) {
|
||||
[MPPasteBoardController.defaultController copyObjects:@[value] overlayInfo:MPPasteboardOverlayInfoUsername name:nil atView:self.view];
|
||||
[MPPasteBoardController.defaultController copyObject:value overlayInfo:MPPasteboardOverlayInfoUsername name:nil atView:self.view];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -669,7 +735,7 @@ NSString *const _MPTableSecurCellView = @"PasswordCell";
|
||||
KPKAttribute *attribute = selectedEntry.customAttributes[index];
|
||||
NSString *value = attribute.evaluatedValue;
|
||||
if(value) {
|
||||
[MPPasteBoardController.defaultController copyObjects:@[value] overlayInfo:MPPasteboardOverlayInfoCustom name:attribute.key atView:self.view];
|
||||
[MPPasteBoardController.defaultController copyObject:value overlayInfo:MPPasteboardOverlayInfoCustom name:attribute.key atView:self.view];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -679,7 +745,7 @@ NSString *const _MPTableSecurCellView = @"PasswordCell";
|
||||
KPKEntry *selectedEntry = nodes.count == 1 ? [nodes.firstObject asEntry] : nil;
|
||||
NSString *value = [selectedEntry.url kpk_finalValueForEntry:selectedEntry];
|
||||
if(value) {
|
||||
[MPPasteBoardController.defaultController copyObjects:@[value] overlayInfo:MPPasteboardOverlayInfoURL name:nil atView:self.view];
|
||||
[MPPasteBoardController.defaultController copyObject:value overlayInfo:MPPasteboardOverlayInfoURL name:nil atView:self.view];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -688,27 +754,7 @@ NSString *const _MPTableSecurCellView = @"PasswordCell";
|
||||
KPKEntry *selectedEntry = nodes.count == 1 ? [nodes.firstObject asEntry] : nil;
|
||||
NSString *expandedURL = [selectedEntry.url kpk_finalValueForEntry:selectedEntry];
|
||||
if(expandedURL.length > 0) {
|
||||
NSURL *webURL = [NSURL URLWithString:expandedURL];
|
||||
NSString *scheme = webURL.scheme;
|
||||
if(!scheme) {
|
||||
webURL = [NSURL URLWithString:[NSString stringWithFormat:@"http://%@", expandedURL]];
|
||||
}
|
||||
|
||||
NSString *browserBundleID = [NSUserDefaults.standardUserDefaults stringForKey:kMPSettingsKeyBrowserBundleId];
|
||||
NSURL *browserApplicationURL = browserBundleID ? [NSWorkspace.sharedWorkspace URLForApplicationWithBundleIdentifier:browserBundleID] : nil;
|
||||
BOOL openedURL = NO;
|
||||
|
||||
if(browserApplicationURL) {
|
||||
NSRunningApplication *urlOpeningApplication = [NSWorkspace.sharedWorkspace openURLs:@[webURL] withApplicationAtURL:browserApplicationURL options:NSWorkspaceLaunchDefault configuration:@{} error:nil];
|
||||
openedURL = nil != urlOpeningApplication;
|
||||
}
|
||||
|
||||
if(!openedURL) {
|
||||
openedURL = [NSWorkspace.sharedWorkspace openURL:webURL];
|
||||
}
|
||||
if(!openedURL) {
|
||||
NSLog(@"Unable to open URL %@", webURL);
|
||||
}
|
||||
[MPOpenURLHandler.sharedHandler openURL:expandedURL];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -718,7 +764,7 @@ NSString *const _MPTableSecurCellView = @"PasswordCell";
|
||||
kKPKReferenceTitleKey: NSLocalizedString(@"COPIED_TITLE_REFERENCE", "Context menu that copies reference to title"),
|
||||
kKPKReferencePasswordKey: NSLocalizedString(@"COPIED_PASSWORD_REFERENCE", "Context menu that copies reference to password"),
|
||||
kKPKReferenceUsernameKey: NSLocalizedString(@"COPIED_USERNAME_REFERENCE", "Context menu that copies reference to username"),
|
||||
};
|
||||
};
|
||||
if(![sender isKindOfClass:NSMenuItem.class]) {
|
||||
return;
|
||||
}
|
||||
@@ -727,7 +773,7 @@ NSString *const _MPTableSecurCellView = @"PasswordCell";
|
||||
KPKEntry *selectedEntry = nodes.count == 1 ? [nodes.firstObject asEntry] : nil;
|
||||
if(referencesField && selectedEntry) {
|
||||
NSString *value = [NSString stringWithFormat:@"{%@%@@%@:%@}", kKPKReferencePrefix, referencesField, kKPKReferenceUUIDKey, selectedEntry.uuid.UUIDString];
|
||||
[MPPasteBoardController.defaultController copyObjects:@[value] overlayInfo:MPPasteboardOverlayInfoReference name:references[referencesField] atView:self.view];
|
||||
[MPPasteBoardController.defaultController copyObject:value overlayInfo:MPPasteboardOverlayInfoReference name:references[referencesField] atView:self.view];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
17
MacPass/MPGeneralDatabaseSettingsViewController.h
Normal file
17
MacPass/MPGeneralDatabaseSettingsViewController.h
Normal file
@@ -0,0 +1,17 @@
|
||||
//
|
||||
// MPGeneralDatabaseSettingsViewController.h
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 18.11.21.
|
||||
// Copyright © 2021 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface MPGeneralDatabaseSettingsViewController : NSViewController
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
66
MacPass/MPGeneralDatabaseSettingsViewController.m
Normal file
66
MacPass/MPGeneralDatabaseSettingsViewController.m
Normal file
@@ -0,0 +1,66 @@
|
||||
//
|
||||
// MPGeneralDatabaseSettingsViewController.m
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 18.11.21.
|
||||
// Copyright © 2021 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import "MPGeneralDatabaseSettingsViewController.h"
|
||||
|
||||
#import "MPDocument.h"
|
||||
|
||||
#import <KeePassKit/KeePassKit.h>
|
||||
|
||||
@interface MPGeneralDatabaseSettingsViewController ()
|
||||
|
||||
@property (weak) IBOutlet NSTextField *databaseNameTextField;
|
||||
@property (weak) IBOutlet NSPopUpButton *databaseCompressionPopupButton;
|
||||
@property (weak) IBOutlet NSTextView *databaseDescriptionTextView;
|
||||
@property (weak) IBOutlet NSColorWell *databaseColorColorWell;
|
||||
@property (weak) IBOutlet NSTextField *fileVersionTextField;
|
||||
|
||||
@end
|
||||
|
||||
@implementation MPGeneralDatabaseSettingsViewController
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
}
|
||||
|
||||
#pragma mark Private Helper
|
||||
- (void)_setupView {
|
||||
MPDocument *document = (MPDocument *)self.view.window.windowController.document;
|
||||
|
||||
KPKTree *tree = document.tree;
|
||||
|
||||
if(!tree) {
|
||||
return; // nothing to read from
|
||||
}
|
||||
|
||||
self.databaseNameTextField.stringValue = tree.metaData.databaseName;
|
||||
self.databaseDescriptionTextView.string = tree.metaData.databaseDescription;
|
||||
[self.databaseCompressionPopupButton selectItemAtIndex:tree.metaData.compressionAlgorithm];
|
||||
self.databaseColorColorWell.color = tree.metaData.color ? tree.metaData.color : NSColor.clearColor;
|
||||
|
||||
|
||||
NSData *fileData = [NSData dataWithContentsOfURL:document.fileURL];
|
||||
if(!fileData) {
|
||||
self.fileVersionTextField.stringValue = NSLocalizedString(@"UNKNOWN_FORMAT_FILE_NOT_SAVED_YET", "Database format is unknown since the file is not saved yet");
|
||||
}
|
||||
else {
|
||||
KPKFileVersion version = [[KPKFormat sharedFormat] fileVersionForData:fileData];
|
||||
NSDictionary *nameMappings = @{
|
||||
@(KPKDatabaseFormatKdb): @"Kdb",
|
||||
@(KPKDatabaseFormatKdbx): @"Kdbx",
|
||||
@(KPKDatabaseFormatUnknown): NSLocalizedString(@"UNKNOWN_FORMAT", "Unknown database format.")
|
||||
};
|
||||
|
||||
NSUInteger mayor = (version.version >> 16);
|
||||
NSUInteger minor = (version.version & 0xFFFF);
|
||||
|
||||
self.fileVersionTextField.stringValue = [NSString stringWithFormat:@"%@ (Version %ld.%ld)", nameMappings[@(version.format)], mayor, minor];
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
177
MacPass/MPGeneralDatabaseSettingsViewController.xib
Normal file
177
MacPass/MPGeneralDatabaseSettingsViewController.xib
Normal file
@@ -0,0 +1,177 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19455" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19455"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="MPGeneralDatabaseSettingsViewController">
|
||||
<connections>
|
||||
<outlet property="databaseColorColorWell" destination="mT4-DP-GXO" id="LfS-qU-wBC"/>
|
||||
<outlet property="databaseCompressionPopupButton" destination="Dq5-lP-zsS" id="11H-3z-4YL"/>
|
||||
<outlet property="databaseDescriptionTextView" destination="YXY-Zl-7nu" id="s8Q-Fa-oaw"/>
|
||||
<outlet property="databaseNameTextField" destination="ufI-vz-Iga" id="LYk-xb-BYQ"/>
|
||||
<outlet property="fileVersionTextField" destination="7hG-5O-ghC" id="SoE-e8-vh3"/>
|
||||
<outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView id="Hz6-mo-xeY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="434" height="244"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<gridView xPlacement="trailing" yPlacement="fill" rowAlignment="none" rowSpacing="8" columnSpacing="8" translatesAutoresizingMaskIntoConstraints="NO" id="RYv-Ng-2bJ">
|
||||
<rect key="frame" x="20" y="20" width="394" height="204"/>
|
||||
<rows>
|
||||
<gridRow id="xmM-rD-5oB"/>
|
||||
<gridRow yPlacement="top" id="EPS-PJ-wZn"/>
|
||||
<gridRow id="6vV-rV-ITV"/>
|
||||
<gridRow id="zYk-Ml-HAt"/>
|
||||
<gridRow id="kzN-Ch-gfi"/>
|
||||
</rows>
|
||||
<columns>
|
||||
<gridColumn id="7Ct-m6-g6y"/>
|
||||
<gridColumn xPlacement="leading" id="eQs-KV-hxL"/>
|
||||
</columns>
|
||||
<gridCells>
|
||||
<gridCell row="xmM-rD-5oB" column="7Ct-m6-g6y" id="am5-3Y-3j8">
|
||||
<textField key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="JAh-R7-pLA">
|
||||
<rect key="frame" x="-2" y="188" width="102" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Database name:" id="03Y-Lj-rRN">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="xmM-rD-5oB" column="eQs-KV-hxL" id="IfW-cA-EoE">
|
||||
<textField key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ufI-vz-Iga">
|
||||
<rect key="frame" x="106" y="188" width="280" height="16"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="280" id="FXj-7O-RqC"/>
|
||||
</constraints>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="jl4-gm-Hbo">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="EPS-PJ-wZn" column="7Ct-m6-g6y" id="uqN-Dk-NnR">
|
||||
<textField key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="WIS-Jx-S9I">
|
||||
<rect key="frame" x="22" y="164" width="78" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Description:" id="p9U-Kw-bI5">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="EPS-PJ-wZn" column="eQs-KV-hxL" id="Gb7-AY-QQA">
|
||||
<scrollView key="contentView" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nST-Dm-Qr7">
|
||||
<rect key="frame" x="106" y="80" width="280" height="100"/>
|
||||
<clipView key="contentView" drawsBackground="NO" id="Is2-5k-gGr">
|
||||
<rect key="frame" x="1" y="1" width="278" height="98"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textView importsGraphics="NO" verticallyResizable="YES" usesFontPanel="YES" findStyle="panel" continuousSpellChecking="YES" allowsUndo="YES" usesRuler="YES" allowsNonContiguousLayout="YES" smartInsertDelete="YES" id="YXY-Zl-7nu">
|
||||
<rect key="frame" x="0.0" y="0.0" width="278" height="98"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
<size key="minSize" width="278" height="98"/>
|
||||
<size key="maxSize" width="463" height="10000000"/>
|
||||
<color key="insertionPointColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
</textView>
|
||||
</subviews>
|
||||
</clipView>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="280" id="UdJ-ki-epM"/>
|
||||
<constraint firstAttribute="height" constant="100" id="XMz-jM-eIA"/>
|
||||
</constraints>
|
||||
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="YES" id="I22-YZ-tXl">
|
||||
<rect key="frame" x="-100" y="-100" width="87" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="MI6-Kw-OxH">
|
||||
<rect key="frame" x="263" y="1" width="16" height="98"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
</scrollView>
|
||||
</gridCell>
|
||||
<gridCell row="6vV-rV-ITV" column="7Ct-m6-g6y" id="EZb-Cx-iTX">
|
||||
<textField key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8Dj-om-Zoe">
|
||||
<rect key="frame" x="12" y="56" width="88" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Compression:" id="5Bm-Nl-53q">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="6vV-rV-ITV" column="eQs-KV-hxL" id="T5V-Av-aBB">
|
||||
<popUpButton key="contentView" verticalHuggingPriority="750" verticalCompressionResistancePriority="749" translatesAutoresizingMaskIntoConstraints="NO" id="Dq5-lP-zsS">
|
||||
<rect key="frame" x="103" y="52" width="72" height="21"/>
|
||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="GdG-Qp-e8U">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" title="OtherViews" id="8oG-i9-WDa">
|
||||
<items>
|
||||
<menuItem title="None" id="uX3-5x-6i6"/>
|
||||
<menuItem title="GZip" tag="1" id="rIh-xx-34B"/>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
</gridCell>
|
||||
<gridCell row="zYk-Ml-HAt" column="7Ct-m6-g6y" id="DAB-yY-fno">
|
||||
<textField key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="jgn-WC-9Qs">
|
||||
<rect key="frame" x="59" y="24" width="41" height="24"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Color:" id="shK-cG-3dL">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="zYk-Ml-HAt" column="eQs-KV-hxL" id="3lH-bt-QOB">
|
||||
<colorWell key="contentView" translatesAutoresizingMaskIntoConstraints="NO" id="mT4-DP-GXO" customClass="HNHUIColorWell">
|
||||
<rect key="frame" x="106" y="24" width="100" height="24"/>
|
||||
<color key="color" red="0.05813049898" green="0.055541899059999997" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</colorWell>
|
||||
</gridCell>
|
||||
<gridCell row="kzN-Ch-gfi" column="7Ct-m6-g6y" id="SII-3r-mjn">
|
||||
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="IX3-zX-Jvu">
|
||||
<rect key="frame" x="27" y="0.0" width="73" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="File format:" id="FgL-0B-JE9">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="kzN-Ch-gfi" column="eQs-KV-hxL" id="3Hz-QZ-yB0">
|
||||
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="7hG-5O-ghC">
|
||||
<rect key="frame" x="104" y="0.0" width="72" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="VersionInfo" id="C2T-fi-WiV">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
</gridCells>
|
||||
</gridView>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" secondItem="RYv-Ng-2bJ" secondAttribute="trailing" constant="20" id="atn-XX-tEa"/>
|
||||
<constraint firstItem="RYv-Ng-2bJ" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="dcr-ZE-P1X"/>
|
||||
<constraint firstAttribute="bottom" secondItem="RYv-Ng-2bJ" secondAttribute="bottom" constant="20" id="e2v-cE-ajw"/>
|
||||
<constraint firstItem="RYv-Ng-2bJ" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="20" symbolic="YES" id="qLx-ot-9dT"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="-368" y="-227"/>
|
||||
</customView>
|
||||
</objects>
|
||||
</document>
|
||||
@@ -37,5 +37,6 @@
|
||||
@property (strong) IBOutlet NSButton *enableAutosaveCheckButton;
|
||||
@property (strong) IBOutlet NSButton *rememberKeyFileCheckButton;
|
||||
@property (strong) IBOutlet NSPopUpButton *fileChangeStrategyPopup;
|
||||
@property (strong) IBOutlet NSPopUpButton *faviconDownloadMethodPopup;
|
||||
|
||||
@end
|
||||
|
||||
@@ -56,6 +56,19 @@
|
||||
[self.enableAutosaveCheckButton bind:NSValueBinding toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyEnableAutosave] options:nil];
|
||||
[self.rememberKeyFileCheckButton bind:NSValueBinding toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyRememberKeyFilesForDatabases] options:nil];
|
||||
|
||||
/* Favicon download method menu */
|
||||
NSDictionary *faviconDownloadMethodDict = @{ @(MPFaviconDownloadMethodDirect) : NSLocalizedString(@"FAVICON_DOWNLOAD_METHOD_DIRECT", @"Favicon download method: directly download from the host"),
|
||||
@(MPFaviconDownloadMethodDuckDuckGo) : NSLocalizedString(@"FAVICON_DOWNLOAD_METHOD_DUCKDUCKGO", @"Favicon download method: use DuckDuckGo's favicon fetching service"),
|
||||
@(MPFaviconDownloadMethodGoogle) : NSLocalizedString(@"FAVICON_DOWNLOAD_METHOD_GOOGLE", @"Favicon download method: use Google's favicon fetching service"),
|
||||
};
|
||||
[self.faviconDownloadMethodPopup.menu removeAllItems];
|
||||
for(NSNumber *key in faviconDownloadMethodDict) {
|
||||
NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:faviconDownloadMethodDict[key] action:NULL keyEquivalent:@""];
|
||||
item.tag = key.integerValue;
|
||||
[self.faviconDownloadMethodPopup.menu addItem:item];
|
||||
}
|
||||
[self.faviconDownloadMethodPopup bind:NSSelectedTagBinding toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyFaviconDownloadMethod] options:nil];
|
||||
|
||||
/* File Change Strategy Menu */
|
||||
NSDictionary *fileChangeStragegyDict = @{ @(MPFileChangeStrategyAsk) : NSLocalizedString(@"FILE_CHANGE_STRATEGY_ASK", @"External file change strategy option: ask what to do"),
|
||||
@(MPFileChangeStrategyUseOther) : NSLocalizedString(@"FILE_CHANGE_STRATEGY_USE_OTHER", @"External file change strategy option: Use the changed file and discard local changes"),
|
||||
@@ -69,6 +82,6 @@
|
||||
[self.fileChangeStrategyPopup.menu addItem:item];
|
||||
}
|
||||
[self.fileChangeStrategyPopup bind:NSSelectedTagBinding toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyFileChangeStrategy] options:nil];
|
||||
|
||||
|
||||
}
|
||||
@end
|
||||
|
||||
@@ -27,14 +27,15 @@
|
||||
@interface MPGroupInspectorViewController : MPViewController
|
||||
|
||||
@property (strong) IBOutlet NSView *contentView;
|
||||
@property (weak) IBOutlet HNHUITextField *titleTextField;
|
||||
@property (strong) IBOutlet HNHUITextField *titleTextField;
|
||||
|
||||
@property (weak) IBOutlet NSButton *expiresCheckButton;
|
||||
@property (weak) IBOutlet NSButton *expireDateSelectButton;
|
||||
@property (strong) IBOutlet NSButton *expiresCheckButton;
|
||||
@property (strong) IBOutlet NSButton *expireDateSelectButton;
|
||||
|
||||
@property (weak) IBOutlet NSPopUpButton *searchPopupButton;
|
||||
@property (weak) IBOutlet NSPopUpButton *autotypePopupButton;
|
||||
@property (weak) IBOutlet HNHUITextField *autotypeSequenceTextField;
|
||||
@property (strong) IBOutlet NSPopUpButton *searchPopupButton;
|
||||
@property (strong) IBOutlet NSPopUpButton *autotypePopupButton;
|
||||
@property (strong) IBOutlet HNHUITextField *autotypeSequenceTextField;
|
||||
@property (strong) IBOutlet NSTokenField *tagsTokenField;
|
||||
|
||||
- (void)registerNotificationsForDocument:(MPDocument *)document;
|
||||
@end
|
||||
|
||||
@@ -62,17 +62,17 @@
|
||||
scrollView.showBottomShadow = NO;
|
||||
scrollView.hasVerticalRuler = YES;
|
||||
scrollView.drawsBackground = NO;
|
||||
scrollView.translatesAutoresizingMaskIntoConstraints = NO;
|
||||
/*scrollView.translatesAutoresizingMaskIntoConstraints = NO;
|
||||
NSView *clipView = scrollView.contentView;
|
||||
|
||||
scrollView.documentView = self.contentView;
|
||||
//scrollView.documentView = self.contentView;
|
||||
|
||||
NSDictionary *views = NSDictionaryOfVariableBindings(_contentView);
|
||||
[clipView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[_contentView]|"
|
||||
options:0
|
||||
metrics:nil
|
||||
views:views]];
|
||||
[self.view layoutSubtreeIfNeeded];
|
||||
[self.view layoutSubtreeIfNeeded];*/
|
||||
|
||||
NSMenu *autotypeMenu = self.autotypePopupButton.menu;
|
||||
NSMenuItem *inheritAutotype = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"AUTOTYPE_INHERIT", "Inherit autotype settings menu item") action:NULL keyEquivalent:@""];
|
||||
@@ -127,6 +127,10 @@
|
||||
toObject:self
|
||||
withKeyPath:[NSString stringWithFormat:@"%@.%@", NSStringFromSelector(@selector(representedObject)), NSStringFromSelector(@selector(isSearchEnabled))]
|
||||
options:nil];
|
||||
[self.tagsTokenField bind:NSValueBinding
|
||||
toObject:self
|
||||
withKeyPath:[NSString stringWithFormat:@"%@.%@", NSStringFromSelector(@selector(representedObject)), NSStringFromSelector(@selector(tags))]
|
||||
options:nullPlaceholderOptionsDict];
|
||||
}
|
||||
- (IBAction)toggleExpire:(NSButton*)sender {
|
||||
KPKGroup *group = self.representedObject;
|
||||
|
||||
@@ -101,7 +101,7 @@ typedef NS_ENUM(NSUInteger, MPIconType) {
|
||||
MPIconPhone,
|
||||
/* Custom Icons not used in Database */
|
||||
MPCustomIconTypeBegin = 1000,
|
||||
MPIconInfo,
|
||||
MPIconSidebar,
|
||||
MPIconAddFolder,
|
||||
MPIconHardDisk,
|
||||
MPIconCreated,
|
||||
@@ -130,19 +130,21 @@ typedef NS_ENUM(NSUInteger, MPIconType) {
|
||||
* Available Icon names (all)
|
||||
* @return Dictionary with MPIconType keys and NSString values containing their names
|
||||
*/
|
||||
+ (NSDictionary *)availableIconNames;
|
||||
@property (class, nonatomic, strong, readonly) NSDictionary *availableIconNames;
|
||||
|
||||
@property (class, nonatomic, strong, readonly) NSDictionary *availableSymbolNames;
|
||||
|
||||
/**
|
||||
* List of all available DatabaseIcons as an array of Images. Sorted by IconIndex.
|
||||
* @return Array of Icons as NSImage objects
|
||||
*/
|
||||
+ (NSArray<KPKIcon *> *)databaseIcons;
|
||||
@property (class, nonatomic, strong, readonly) NSArray<KPKIcon *> *databaseIcons;
|
||||
|
||||
/**
|
||||
* List of all available DatabaseIcons as an array of MPIconType. Sorted by IconIndex.
|
||||
* @return Array of MPIconType as NSNumber objects
|
||||
*/
|
||||
+ (NSArray *)databaseIconTypes;
|
||||
@property (class, nonatomic, strong, readonly) NSArray *databaseIconTypes;
|
||||
|
||||
+ (void)fetchIconDataForURL:(NSURL *)url completionHandler:(void (^)(NSData *iconData))handler;
|
||||
|
||||
|
||||
@@ -21,19 +21,39 @@
|
||||
//
|
||||
|
||||
#import "MPIconHelper.h"
|
||||
#import "MPSettingsHelper.h"
|
||||
#import "KeePassKit/KeePassKit.h"
|
||||
|
||||
|
||||
@implementation MPIconHelper
|
||||
|
||||
+ (NSImage *)icon:(MPIconType)type {
|
||||
static NSDictionary *icons;
|
||||
if(!icons) {
|
||||
icons = [MPIconHelper availableIconNames];
|
||||
if (@available(macOS 11.0, *)) {
|
||||
static NSDictionary *symbols;
|
||||
if(!symbols) {
|
||||
symbols = MPIconHelper.availableSymbolNames;
|
||||
}
|
||||
if([symbols.allKeys containsObject:@(type)]) {
|
||||
NSString *imageName = symbols[@(type)];
|
||||
|
||||
NSImage *image = [NSImage imageWithSystemSymbolName:imageName accessibilityDescription:nil];
|
||||
if(image) {
|
||||
return image;
|
||||
}
|
||||
}
|
||||
}
|
||||
if([[icons allKeys] containsObject:@(type)]) {
|
||||
|
||||
static NSDictionary *icons;
|
||||
|
||||
if(!icons) {
|
||||
icons = MPIconHelper.availableIconNames;
|
||||
}
|
||||
if([icons.allKeys containsObject:@(type)]) {
|
||||
NSString *imageName = icons[@(type)];
|
||||
NSImage *image = [NSImage imageNamed:imageName];
|
||||
return image;
|
||||
if(image) {
|
||||
return image;
|
||||
}
|
||||
}
|
||||
return [NSImage imageNamed:NSImageNameActionTemplate];
|
||||
}
|
||||
@@ -42,7 +62,7 @@
|
||||
static NSArray *icons;
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
NSDictionary *imageNames = [MPIconHelper availableIconNames];
|
||||
NSDictionary *imageNames = MPIconHelper.availableIconNames;
|
||||
NSMutableArray *mutableIcons = [[NSMutableArray alloc] initWithCapacity:imageNames.count];
|
||||
|
||||
NSArray *sortedImageNames = [imageNames.allKeys sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
|
||||
@@ -67,10 +87,10 @@
|
||||
static NSArray *iconTypes;
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
NSDictionary *imageNames = [MPIconHelper availableIconNames];
|
||||
NSDictionary *imageNames = MPIconHelper.availableIconNames;
|
||||
|
||||
NSArray *sortedImageNames = [[imageNames allKeys] sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
|
||||
return [[imageNames objectForKey:obj1] compare:[imageNames objectForKey:obj2]];
|
||||
NSArray *sortedImageNames = [imageNames.allKeys sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
|
||||
return [imageNames[obj1] compare:imageNames[obj2]];
|
||||
}];
|
||||
iconTypes = [sortedImageNames filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
|
||||
NSNumber *iconNumber = (NSNumber *)evaluatedObject;
|
||||
@@ -80,104 +100,214 @@
|
||||
return iconTypes;
|
||||
}
|
||||
|
||||
+ (NSDictionary *)availableSymbolNames {
|
||||
static NSDictionary *symbolNames;
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
symbolNames = @{
|
||||
@(MPIconPassword) : @"ellipsis.rectangle",
|
||||
@(MPIconPackageNetwork) : @"globe",
|
||||
@(MPIconWarning) : @"exclamationmark.triangle",
|
||||
@(MPIconServer) : @"server.rack",
|
||||
@(MPIconKlipper) : @"pin",
|
||||
@(MPIconLanguages) : @"mouth",
|
||||
@(MPIconBlockDevice) : @"gearshape.2",
|
||||
@(MPIconNotepad) : @"note.text",
|
||||
@(MPIconSocket) : @"rectangle.connected.to.line.below",
|
||||
@(MPIconIdentity) : @"person.crop.square.fill.and.at.rectangle",
|
||||
@(MPIconContact) : @"at",
|
||||
@(MPIconCamera) : @"camera",
|
||||
@(MPIconRemote) : @"icloud.fill",
|
||||
@(MPIconKeys) : @"key",
|
||||
@(MPIconBattery) : @"bolt.fill.batteryblock",
|
||||
@(MPIconScanner) : @"scanner",
|
||||
@(MPIconBrowser) : @"safari",
|
||||
@(MPIconCDRom) : @"opticaldisc",
|
||||
@(MPIconDisplay) : @"display",
|
||||
@(MPIconEmail) : @"envelope",
|
||||
@(MPIconMisc) : @"ellipsis.circle",
|
||||
@(MPIconOrganizer) : @"list.number",
|
||||
@(MPIconASCII) : @"doc.text",
|
||||
@(MPIconIcons) : @"square.grid.3x3.fill.square",
|
||||
@(MPIconEstablishedConnection) : @"bolt",
|
||||
@(MPIconMailFolder) : @"tray.full",
|
||||
@(MPIconFileSave) : @"square.and.arrow.down",
|
||||
@(MPIconNFSUnmount) : @"externaldrive.connected.to.line.below",
|
||||
@(MPIconQuickTime) : @"film",
|
||||
@(MPIconSecureTerminal) : @"terminal",
|
||||
@(MPIconTerminal) : @"terminal",
|
||||
@(MPIconPrint) : @"printer",
|
||||
@(MPIconFileSystemView) : @"square.grid.2x2",
|
||||
@(MPIconRun) : @"figure.walk.diamond",
|
||||
@(MPIconConfigure) : @"slider.vertical.3",
|
||||
@(MPIconBrowserWindow) : @"macwindow",
|
||||
@(MPIconArchive) : @"doc.zipper",
|
||||
@(MPIconPercentage) : @"percent",
|
||||
@(MPIconSambaUnmount) : @"externaldrive.badge.xmark",
|
||||
@(MPIconHistory) : @"clock.arrow.circlepath",
|
||||
@(MPIconFindMail) : @"mail.and.text.magnifyingglass",
|
||||
@(MPIconVector) : @"skew",
|
||||
@(MPIconMemory) : @"memorychip",
|
||||
@(MPIconTrash) : @"trash",
|
||||
@(MPIconNotes) : @"note.text",
|
||||
@(MPIconCancel) : @"xmark.circle",
|
||||
@(MPIconHelp) : @"questionmark.circle.fill",
|
||||
@(MPIconPackage) : @"shippingbox",
|
||||
@(MPIconFolder) : @"folder",
|
||||
@(MPIconFolderOpen) : @"folder",
|
||||
@(MPIconFolderTar) : @"archivebox",
|
||||
@(MPIconDecrypted) : @"lock.open",
|
||||
@(MPIconEncrypted) : @"lock",
|
||||
@(MPIconApply) : @"checkmark.square",
|
||||
@(MPIconSignature) : @"signature",
|
||||
@(MPIconThumbnail) : @"photo",
|
||||
@(MPIconAddressBook) : @"rectangle.stack.person.crop",
|
||||
@(MPIconTextView) : @"text.justifyleft",
|
||||
@(MPIconSecureAccount) : @"person.fill.viewfinder",
|
||||
@(MPIconDevelopment) : @"hammer",
|
||||
@(MPIconHome) : @"house",
|
||||
@(MPIconServices) : @"star",
|
||||
@(MPIconTux) : @"ladybug",
|
||||
@(MPIconFeather) : @"lightbulb",
|
||||
@(MPIconApple) : @"applelogo",
|
||||
@(MPIconWiki) : @"w.circle",
|
||||
@(MPIconMoney) : @"dollarsign.circle",
|
||||
@(MPIconCertificat) : @"signature", // FIXME: find better icon
|
||||
@(MPIconPhone) : @"iphone",
|
||||
/* Custom */
|
||||
@(MPIconSidebar) : @"sidebar.trailing",
|
||||
@(MPIconAddFolder) : @"folder.badge.plus",
|
||||
@(MPIconHardDisk) : @"internaldrive",
|
||||
@(MPIconCreated) : @"staroflife", // FIXME: find better icon
|
||||
@(MPIconAddEntry) : @"ellipsis.rectangle", // FIXME: find better icon
|
||||
@(MPIconContextTriangle) : @"arrowtriangle.down.fill",
|
||||
@(MPIconKeyboard) : @"keyboard",
|
||||
|
||||
@(MPIconExpiredEntry) : @"exclamationmark.octagon.fill",
|
||||
@(MPIconExpiredGroup) : @"exclamationmark.octagon.fill"
|
||||
};
|
||||
});
|
||||
|
||||
if(@available(macOS 11.0, *)) {
|
||||
return symbolNames;
|
||||
}
|
||||
else {
|
||||
return nil;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+ (NSDictionary *)availableIconNames {
|
||||
static NSDictionary *imageNames;
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
imageNames = @{
|
||||
@(MPIconPassword): @"00_PasswordTemplate",
|
||||
@(MPIconPackageNetwork): @"01_PackageNetworkTemplate",
|
||||
@(MPIconWarning): @"02_MessageBoxWarningTemplate",
|
||||
@(MPIconServer): @"03_ServerTemplate",
|
||||
@(MPIconKlipper): @"04_KlipperTemplate",
|
||||
@(MPIconLanguages): @"05_LanguagesTemplate",
|
||||
@(MPIconBlockDevice): @"06_BlockDeviceTemplate",
|
||||
@(MPIconNotepad): @"07_NotepadTemplate",
|
||||
@(MPIconSocket): @"08_SocketTemplate",
|
||||
@(MPIconIdentity): @"09_IdentityTemplate",
|
||||
@(MPIconContact): @"10_ContactTemplate",
|
||||
@(MPIconCamera): @"11_CameraTemplate",
|
||||
@(MPIconRemote): @"12_RemoteTemplate",
|
||||
@(MPIconKeys): @"13_KeysTemplate",
|
||||
@(MPIconBattery): @"14_BatteryTemplate",
|
||||
@(MPIconScanner): @"15_ScannerTemplate",
|
||||
@(MPIconBrowser): @"16_BrowserTemplate",
|
||||
@(MPIconCDRom): @"17_CDRomTemplate",
|
||||
@(MPIconDisplay): @"18_DisplayTemplate",
|
||||
@(MPIconEmail): @"19_EmailTemplate",
|
||||
@(MPIconMisc): @"20_MiscTemplate",
|
||||
@(MPIconOrganizer): @"21_OrganizerTemplate",
|
||||
@(MPIconASCII): @"22_ASCIITemplate",
|
||||
@(MPIconIcons): @"23_IconsTemplate",
|
||||
@(MPIconEstablishedConnection): @"24_EstablishedConnectionTemplate",
|
||||
@(MPIconMailFolder): @"25_MailFolderTemplate",
|
||||
@(MPIconFileSave): @"26_FileSaveTemplate",
|
||||
@(MPIconNFSUnmount) :@"27_NFSUnmountTemplate",
|
||||
@(MPIconQuickTime) : @"28_QuickTimeTemplate",
|
||||
@(MPIconSecureTerminal) : @"29_SecureTerminalTemplate",
|
||||
@(MPIconTerminal) : @"30_TerminalTemplate",
|
||||
@(MPIconPrint) : @"31_PrintTemplate",
|
||||
@(MPIconFileSystemView) : @"32_FileSystemViewTemplate",
|
||||
@(MPIconRun) : @"33_RunTemplate",
|
||||
@(MPIconConfigure) : @"34_ConfigureTemplate",
|
||||
@(MPIconBrowserWindow) : @"35_BrowserWindowTemplate",
|
||||
@(MPIconArchive) : @"36_ArchiveTemplate",
|
||||
@(MPIconPercentage) : @"37_PercentageTemplate",
|
||||
@(MPIconSambaUnmount) : @"38_SambaUnmountTemplate",
|
||||
@(MPIconHistory) : @"39_HistoryTemplate",
|
||||
@(MPIconFindMail) : @"40_FindMailTemplate",
|
||||
@(MPIconVector) : @"41_VectorTemplate",
|
||||
@(MPIconMemory) : @"42_MemoryTemplate",
|
||||
@(MPIconTrash): @"43_TrashTemplate",
|
||||
@(MPIconNotes) : @"44_NotesTemplate",
|
||||
@(MPIconCancel) : @"45_CancelTemplate",
|
||||
@(MPIconHelp) : @"46_HelpTemplate",
|
||||
@(MPIconPackage) : @"47_PackageTemplate",
|
||||
@(MPIconFolder): @"48_FolderTemplate",
|
||||
@(MPIconFolderOpen) : @"49_FolderOpenTemplate",
|
||||
@(MPIconFolderTar) : @"50_FolderTarTemplate",
|
||||
@(MPIconDecrypted) : @"51_DecryptedTemplate",
|
||||
@(MPIconEncrypted) : @"52_EncryptedTemplate",
|
||||
@(MPIconApply) : @"53_ApplyTemplate",
|
||||
@(MPIconSignature) : @"54_SignatureTemplate",
|
||||
@(MPIconThumbnail) : @"55_ThumbnailTemplate",
|
||||
@(MPIconAddressBook) : @"56_AddressBookTemplate",
|
||||
@(MPIconTextView) : @"57_TextViewTemplate",
|
||||
@(MPIconSecureAccount) : @"58_SecureAccountTemplate",
|
||||
@(MPIconDevelopment) : @"59_DevelopmentTemplate",
|
||||
@(MPIconHome) : @"60_HomeTemplate",
|
||||
@(MPIconServices) : @"61_ServicesTemplate",
|
||||
@(MPIconTux) : @"62_TuxTemplate",
|
||||
@(MPIconFeather) : @"63_FeatherTemplate",
|
||||
@(MPIconApple) : @"64_AppleTemplate",
|
||||
@(MPIconWiki) : @"65_WikiTemplate",
|
||||
@(MPIconMoney) : @"66_MoneyTemplate",
|
||||
@(MPIconCertificat) : @"67_CertificatTemplate",
|
||||
@(MPIconPhone): @"68_PhoneTemplate",
|
||||
/* Custom */
|
||||
@(MPIconInfo): @"infoTemplate",
|
||||
@(MPIconAddFolder): @"addFolderTemplate",
|
||||
@(MPIconHardDisk): @"harddiskTemplate",
|
||||
@(MPIconCreated): @"createdTemplate",
|
||||
@(MPIconAddEntry): @"addEntryTemplate",
|
||||
@(MPIconContextTriangle): @"contextTriangleTemplate",
|
||||
@(MPIconKeyboard): @"keyboardTemplate",
|
||||
|
||||
@(MPIconExpiredEntry): NSImageNameCaution,
|
||||
@(MPIconExpiredGroup): NSImageNameCaution
|
||||
};
|
||||
@(MPIconPassword) : @"00_PasswordTemplate",
|
||||
@(MPIconPackageNetwork) : @"01_PackageNetworkTemplate",
|
||||
@(MPIconWarning) : @"02_MessageBoxWarningTemplate",
|
||||
@(MPIconServer) : @"03_ServerTemplate",
|
||||
@(MPIconKlipper) : @"04_KlipperTemplate",
|
||||
@(MPIconLanguages) : @"05_LanguagesTemplate",
|
||||
@(MPIconBlockDevice) : @"06_BlockDeviceTemplate",
|
||||
@(MPIconNotepad) : @"07_NotepadTemplate",
|
||||
@(MPIconSocket) : @"08_SocketTemplate",
|
||||
@(MPIconIdentity) : @"09_IdentityTemplate",
|
||||
@(MPIconContact) : @"10_ContactTemplate",
|
||||
@(MPIconCamera) : @"11_CameraTemplate",
|
||||
@(MPIconRemote) : @"12_RemoteTemplate",
|
||||
@(MPIconKeys) : @"13_KeysTemplate",
|
||||
@(MPIconBattery) : @"14_BatteryTemplate",
|
||||
@(MPIconScanner) : @"15_ScannerTemplate",
|
||||
@(MPIconBrowser) : @"16_BrowserTemplate",
|
||||
@(MPIconCDRom) : @"17_CDRomTemplate",
|
||||
@(MPIconDisplay) : @"18_DisplayTemplate",
|
||||
@(MPIconEmail) : @"19_EmailTemplate",
|
||||
@(MPIconMisc) : @"20_MiscTemplate",
|
||||
@(MPIconOrganizer) : @"21_OrganizerTemplate",
|
||||
@(MPIconASCII) : @"22_ASCIITemplate",
|
||||
@(MPIconIcons) : @"23_IconsTemplate",
|
||||
@(MPIconEstablishedConnection) : @"24_EstablishedConnectionTemplate",
|
||||
@(MPIconMailFolder) : @"25_MailFolderTemplate",
|
||||
@(MPIconFileSave) : @"26_FileSaveTemplate",
|
||||
@(MPIconNFSUnmount) : @"27_NFSUnmountTemplate",
|
||||
@(MPIconQuickTime) : @"28_QuickTimeTemplate",
|
||||
@(MPIconSecureTerminal) : @"29_SecureTerminalTemplate",
|
||||
@(MPIconTerminal) : @"30_TerminalTemplate",
|
||||
@(MPIconPrint) : @"31_PrintTemplate",
|
||||
@(MPIconFileSystemView) : @"32_FileSystemViewTemplate",
|
||||
@(MPIconRun) : @"33_RunTemplate",
|
||||
@(MPIconConfigure) : @"34_ConfigureTemplate",
|
||||
@(MPIconBrowserWindow) : @"35_BrowserWindowTemplate",
|
||||
@(MPIconArchive) : @"36_ArchiveTemplate",
|
||||
@(MPIconPercentage) : @"37_PercentageTemplate",
|
||||
@(MPIconSambaUnmount) : @"38_SambaUnmountTemplate",
|
||||
@(MPIconHistory) : @"39_HistoryTemplate",
|
||||
@(MPIconFindMail) : @"40_FindMailTemplate",
|
||||
@(MPIconVector) : @"41_VectorTemplate",
|
||||
@(MPIconMemory) : @"42_MemoryTemplate",
|
||||
@(MPIconTrash) : @"43_TrashTemplate",
|
||||
@(MPIconNotes) : @"44_NotesTemplate",
|
||||
@(MPIconCancel) : @"45_CancelTemplate",
|
||||
@(MPIconHelp) : @"46_HelpTemplate",
|
||||
@(MPIconPackage) : @"47_PackageTemplate",
|
||||
@(MPIconFolder) : @"48_FolderTemplate",
|
||||
@(MPIconFolderOpen) : @"49_FolderOpenTemplate",
|
||||
@(MPIconFolderTar) : @"50_FolderTarTemplate",
|
||||
@(MPIconDecrypted) : @"51_DecryptedTemplate",
|
||||
@(MPIconEncrypted) : @"52_EncryptedTemplate",
|
||||
@(MPIconApply) : @"53_ApplyTemplate",
|
||||
@(MPIconSignature) : @"54_SignatureTemplate",
|
||||
@(MPIconThumbnail) : @"55_ThumbnailTemplate",
|
||||
@(MPIconAddressBook) : @"56_AddressBookTemplate",
|
||||
@(MPIconTextView) : @"57_TextViewTemplate",
|
||||
@(MPIconSecureAccount) : @"58_SecureAccountTemplate",
|
||||
@(MPIconDevelopment) : @"59_DevelopmentTemplate",
|
||||
@(MPIconHome) : @"60_HomeTemplate",
|
||||
@(MPIconServices) : @"61_ServicesTemplate",
|
||||
@(MPIconTux) : @"62_TuxTemplate",
|
||||
@(MPIconFeather) : @"63_FeatherTemplate",
|
||||
@(MPIconApple) : @"64_AppleTemplate",
|
||||
@(MPIconWiki) : @"65_WikiTemplate",
|
||||
@(MPIconMoney) : @"66_MoneyTemplate",
|
||||
@(MPIconCertificat) : @"67_CertificatTemplate",
|
||||
@(MPIconPhone) : @"68_PhoneTemplate",
|
||||
/* Custom */
|
||||
@(MPIconSidebar) : NSImageNameTouchBarGetInfoTemplate,
|
||||
@(MPIconAddFolder) : @"addFolderTemplate",
|
||||
@(MPIconHardDisk) : @"harddiskTemplate",
|
||||
@(MPIconCreated) : @"createdTemplate",
|
||||
@(MPIconAddEntry) : @"addEntryTemplate",
|
||||
@(MPIconContextTriangle) : @"contextTriangleTemplate",
|
||||
@(MPIconKeyboard) : @"keyboardTemplate",
|
||||
|
||||
@(MPIconExpiredEntry) : NSImageNameCaution,
|
||||
@(MPIconExpiredGroup) : NSImageNameCaution
|
||||
};
|
||||
});
|
||||
return imageNames;
|
||||
}
|
||||
|
||||
+ (void)fetchIconDataForURL:(NSURL *)url completionHandler:(void (^)(NSData *iconData))handler {
|
||||
|
||||
|
||||
if(!url || !handler) {
|
||||
return; // no url, no handler so no need to do anything
|
||||
}
|
||||
|
||||
NSString *urlString = [NSString stringWithFormat:@"%@://%@/favicon.ico", url.scheme, url.host ? url.host : @""];
|
||||
|
||||
NSString *urlString;
|
||||
MPFaviconDownloadMethod faviconDownloadMethod = (MPFaviconDownloadMethod)[NSUserDefaults.standardUserDefaults integerForKey:kMPSettingsKeyFaviconDownloadMethod];
|
||||
switch(faviconDownloadMethod) {
|
||||
case MPFaviconDownloadMethodGoogle:
|
||||
urlString = [NSString stringWithFormat:@"https://www.google.com/s2/favicons?domain=%@", url.host ? url.host : @""];
|
||||
break;
|
||||
case MPFaviconDownloadMethodDuckDuckGo:
|
||||
urlString = [NSString stringWithFormat:@"https://icons.duckduckgo.com/ip3/%@.ico", url.host ? url.host : @""];
|
||||
break;
|
||||
case MPFaviconDownloadMethodDirect:
|
||||
default:
|
||||
urlString = [NSString stringWithFormat:@"%@://%@/favicon.ico", url.scheme, url.host ? url.host : @""];
|
||||
break;
|
||||
}
|
||||
|
||||
NSURL *favIconURL = [NSURL URLWithString:urlString];
|
||||
if(!favIconURL) {
|
||||
/* call the handler with nil data */
|
||||
@@ -187,15 +317,15 @@
|
||||
|
||||
NSURLSessionTask *task = [NSURLSession.sharedSession dataTaskWithURL:favIconURL completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
|
||||
if(error) {
|
||||
handler(nil);
|
||||
handler(nil);
|
||||
}
|
||||
else if([response respondsToSelector:@selector(statusCode)]
|
||||
&& (200 == [(id)response statusCode])
|
||||
&& data.length > 0) {
|
||||
handler(data);
|
||||
handler(data);
|
||||
}
|
||||
else {
|
||||
handler(nil);
|
||||
handler(nil);
|
||||
}
|
||||
}];
|
||||
[task resume];
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
#import "MPViewController.h"
|
||||
|
||||
@class MPDocument;
|
||||
@class MPCollectionViewItem;
|
||||
|
||||
@interface MPIconSelectViewController : MPViewController <NSCollectionViewDelegate>
|
||||
|
||||
|
||||
@@ -239,7 +239,6 @@ typedef NS_ENUM(NSInteger, MPIconDownloadStatus) {
|
||||
}
|
||||
|
||||
- (BOOL)collectionView:(NSCollectionView *)collectionView writeItemsAtIndexes:(NSIndexSet *)indexes toPasteboard:(NSPasteboard *)pasteboard {
|
||||
NSLog(@"dragStart for indexes:%@", indexes);
|
||||
[pasteboard declareTypes:@[(NSString *)kUTTypeText] owner:nil];
|
||||
return YES;
|
||||
}
|
||||
|
||||
23
MacPass/MPInspectorEditor.h
Normal file
23
MacPass/MPInspectorEditor.h
Normal file
@@ -0,0 +1,23 @@
|
||||
//
|
||||
// MPInspectorEditor.h
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 14.10.21.
|
||||
// Copyright © 2021 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/// The InpsectorEditor protocoll that should be implemented by editors used in the inspector
|
||||
/// Individual editors shoudl adopt different APIs to accomodate their needs
|
||||
/// The preferred way to set model data is to use the representedObject
|
||||
@protocol MPInspectorEditor <NSObject>
|
||||
|
||||
@required
|
||||
@property (nonatomic) BOOL isEditor;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -76,10 +76,6 @@ typedef NS_ENUM(NSUInteger, MPContentTab) {
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)dealloc {
|
||||
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
||||
}
|
||||
|
||||
- (NSResponder *)reconmendedFirstResponder {
|
||||
return self.view;
|
||||
}
|
||||
@@ -104,6 +100,7 @@ typedef NS_ENUM(NSUInteger, MPContentTab) {
|
||||
NSTabViewItem *groupTabItem = [self.tabView tabViewItemAtIndex:MPGroupTab];
|
||||
NSView *groupTabView = groupTabItem.view;
|
||||
[groupTabView addSubview:groupView];
|
||||
|
||||
[groupTabView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[groupView]|" options:0 metrics:nil views:views]];
|
||||
[groupTabView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[groupView]|" options:0 metrics:nil views:views]];
|
||||
groupTabItem.initialFirstResponder = groupView;
|
||||
@@ -111,15 +108,15 @@ typedef NS_ENUM(NSUInteger, MPContentTab) {
|
||||
[self.view layout];}
|
||||
|
||||
- (void)registerNotificationsForDocument:(MPDocument *)document {
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(_didChangeCurrentItem:)
|
||||
name:MPDocumentCurrentItemChangedNotification
|
||||
object:document];
|
||||
[NSNotificationCenter.defaultCenter addObserver:self
|
||||
selector:@selector(_didChangeCurrentItem:)
|
||||
name:MPDocumentCurrentItemChangedNotification
|
||||
object:document];
|
||||
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(_willChangeModelProperty:)
|
||||
name:MPDocumentWillChangeModelPropertyNotification
|
||||
object:document];
|
||||
[NSNotificationCenter.defaultCenter addObserver:self
|
||||
selector:@selector(_willChangeModelProperty:)
|
||||
name:MPDocumentWillChangeModelPropertyNotification
|
||||
object:document];
|
||||
|
||||
self.entryViewController.observer = document;
|
||||
self.itemImageView.modelChangeObserver = document;
|
||||
@@ -154,7 +151,7 @@ typedef NS_ENUM(NSUInteger, MPContentTab) {
|
||||
if(textView == self.notesTextView) {
|
||||
name = NSLocalizedString(@"NOTES", "Displayed name when notes or part of notes was copied");
|
||||
}
|
||||
[[MPPasteBoardController defaultController] copyObjects:@[selectedString] overlayInfo:info name:name atView:self.view];
|
||||
[MPPasteBoardController.defaultController copyObject:selectedString overlayInfo:info name:name atView:self.view];
|
||||
return NO;
|
||||
}
|
||||
return YES;
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
@property (strong) IBOutlet NSButton *matchTagsCheckBox;
|
||||
|
||||
@property (strong) IBOutlet NSButton *sendCommandForControlCheckBox;
|
||||
|
||||
@property (strong) IBOutlet NSButton *alwaysShowConfirmationBeforeAutotypeCheckBox;
|
||||
/* Preview */
|
||||
@property (strong) IBOutlet NSButton *enableQuicklookCheckBox;
|
||||
|
||||
|
||||
@@ -67,16 +67,28 @@
|
||||
[self.matchHostCheckBox bind:NSValueBinding toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyAutotypeMatchHost] options:nil];
|
||||
[self.matchTagsCheckBox bind:NSValueBinding toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyAutotypeMatchTags] options:nil];
|
||||
|
||||
[self.sendCommandForControlCheckBox bind:NSValueBinding toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeySendCommandForControlKey] options:nil];
|
||||
|
||||
[self.sendCommandForControlCheckBox bind:NSValueBinding
|
||||
toObject:defaultsController
|
||||
withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeySendCommandForControlKey]
|
||||
options:nil];
|
||||
|
||||
[self.alwaysShowConfirmationBeforeAutotypeCheckBox bind:NSValueBinding
|
||||
toObject:defaultsController
|
||||
withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyGloablAutotypeAlwaysShowCandidateSelection]
|
||||
options:nil];
|
||||
|
||||
[self _showKeyCodeMissingKeyWarning:NO];
|
||||
[self _updateAccessabilityWarning];
|
||||
}
|
||||
|
||||
- (void)willShowTab {
|
||||
_hotKey = [DDHotKey hotKeyWithKeyData:[NSUserDefaults.standardUserDefaults dataForKey:kMPSettingsKeyGlobalAutotypeKeyDataKey]];
|
||||
/* Change any invalid hotkeys to valid ones? */
|
||||
self.hotKeyTextField.hotKey = self.hotKey;
|
||||
if(!_hotKey) {
|
||||
_hotKey = [DDHotKey hotKeyWithKeyData:[NSUserDefaults.standardUserDefaults dataForKey:kMPSettingsKeyGlobalAutotypeKeyDataKey]];
|
||||
}
|
||||
/* Only call the setter if the hotkeys are different, otherwise the dealloc call will unregister them*/
|
||||
if(![self.hotKeyTextField.hotKey isEqual:self.hotKey]) {
|
||||
self.hotKeyTextField.hotKey = self.hotKey;
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
|
||||
@@ -165,7 +165,7 @@ static MPLockDaemon *_sharedInstance;
|
||||
}
|
||||
/* Create event handler if necessary */
|
||||
if(!self.localEventHandler) {
|
||||
self.localEventHandler = [NSEvent addLocalMonitorForEventsMatchingMask:NSAnyEventMask handler:^NSEvent *(NSEvent *theEvent) {
|
||||
self.localEventHandler = [NSEvent addLocalMonitorForEventsMatchingMask:NSEventMaskAny handler:^NSEvent *(NSEvent *theEvent) {
|
||||
self.lastLocalEventTime = NSDate.timeIntervalSinceReferenceDate;
|
||||
return theEvent;
|
||||
}];
|
||||
|
||||
@@ -28,12 +28,7 @@ uint16_t const kMPUnknownKeyCode = UINT16_MAX;
|
||||
|
||||
- (MPModifiedKey)modifiedKeyValue {
|
||||
MPModifiedKey key;
|
||||
if(@available(macOS 10.13, *)) {
|
||||
[self getValue:&key size:sizeof(MPModifiedKey)];
|
||||
}
|
||||
else {
|
||||
[self getValue:&key];
|
||||
}
|
||||
[self getValue:&key size:sizeof(MPModifiedKey)];
|
||||
return key;
|
||||
}
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user