22 Commits

Author SHA1 Message Date
Michael Starke
9851a7b4e2 Use switch case. Localise user facing texts 2021-07-22 17:43:17 +02:00
Julius Zint
d1690d76d1 Extracted the logic for storing the encrypted compositekey into a
seperate class
2021-03-14 15:54:42 +01:00
Julius Zint
3c54cd9d7a Code refactoring to implement suggestions from the code review.
Binding the touchIdEnabled Buttons state directly to the userdefaults
value.

Fixed bug that disabled the TouchIdEnabled button on an unsucessfull
TouchId unlock
2021-02-21 12:48:04 +01:00
Julius Zint
4aa812740f Code refactoring to implement suggestions from the code review.
Renamed touchIdEnabled outlet to touchIdEnabledButton in preparation
to bind a variable to the state value.

Used SecKeyCreateRandomKey instead of SecKeyGeneratePair as suggested
by the headers.
2021-02-21 12:04:49 +01:00
Julius Zint
197a4145e8 Code refactoring to implement suggestions from the code review.
The fileURL for the current document does no longer have to be passed
in as a parameter but instead is retreived by accessing the windowControllers
document that hosts the MPPasswordInputController.

_touchIdHandleUnlockAttempt got renamed to _touchIdUpdateKeyForCurrentDocument
to better state its actual purpose and should no longer be called
on unsuccessfull unlock attempts. It also now removes stored keys if the
state of the TouchIdEnabled button has changed.

The key, that is derived from the document, is now the same whether it is
used to store it in the transient dictionary or the userdefaults
2021-02-21 11:27:41 +01:00
Julius Zint
88a5af995e Small layout changes. This prevents the error message overlapping
the TouchID enabled button.
2021-02-14 17:58:06 +01:00
Julius Zint
7b79c0b814 Added tooltip to TouchID enabled button. This is a first attempt
to make it better to understand what the mixed state is all about.
2021-02-14 17:56:29 +01:00
Julius Zint
c5e30a0fa0 The TouchID keypair can no be removed from the macOS keychain
This is a good feature for security and stability. It gives users
the option to prevent TouchID unlock for any previously unlocked
database and it is also helpful in cases where only one part of the
keypair is in the macOS keychain.
2021-02-14 17:40:11 +01:00
Julius Zint
9d058f9d15 Explicitly setting the keychain-access-groups. In these groups Keychain
items can be shared. If left empty, Xcode inserts the AppID prefix with
a wildcard.
2021-02-14 10:00:15 +01:00
Julius Zint
33907e07d6 Removed script buildstep that is no longer needed 2021-02-14 10:00:15 +01:00
Julius Zint
02b3fc2945 Fixed errors while rebasing to latest master 2021-02-14 10:00:15 +01:00
Julius Zint
484b5e4acd Added a flag to support unlocking the database with the apple watch as well as TouchID 2021-02-14 10:00:15 +01:00
Julius Zint
82558936da Fixed typo 2021-02-14 10:00:15 +01:00
Julius Zint
92a120c405 Support for persistent TouchID unlock.
While originally not intended, this changeset enables MacPass to
unlock a database with TouchID even after the process is completly
wiped.

It does this by introducing multiple modes of operation.

First:  TouchId can be completly disabled. The TouchID checkbox is off
        and MacPass works like the TouchID feature had never been added.

Second: The TouchID checkbox gets put into the mixed state. MacPass will now
        remember the database key in memory as long as the process remains
	alive and the database can be unlocked with TouchID until the
	applications terminates.

Third: The TouchID checkbox is checked and MacPass will store the encrypted
       database key on a successfull unlock attempt in the standard
       userdefaults. TouchID unlock works now even after MacPass is completly
       terminated and restarted.
2021-02-14 10:00:15 +01:00
Julius Zint
3fc73a7fd9 Switched Encryption algorithm to support larger message texts.
kSecKeyAlgorithmRSAEncryptionOAEPSHA256AESGCM is now used. Apples CryptoKit makes
it very easy to use asymmetric cryptography to encrypt a symmetric key and with it
encrypt a message. So now the Database key material is no longer directly encrypted
with the asymmetric key but with a randomly generated symmetric one.
2021-02-14 10:00:15 +01:00
Julius Zint
431b636057 Switched to archiving the complete composite key for TouchID unlock 2021-02-14 10:00:15 +01:00
Julius Zint
51bdf12198 MPPasswordInputController completion callback refactoring
Changed the completion callback definition to take a KPKCompositeKey pointer
instead of a password string and keyfile URL. This is a intermedate step to
support key files with TouchID unlock. The next step is to make
KPKCompositeKey conform to the NSCoding protocol. The serialized data can
then be stored instead of the password.
2021-02-14 10:00:15 +01:00
Julius Zint
700dd43282 TouchID unlock is now optional
Added a CheckBox to the PasswordInput view, so the user can see and
manipulate, whether the TouchID feature is enabled or disabled. The
choice is remembered in the standard user defaults.
2021-02-14 10:00:15 +01:00
Julius Zint
5157ec823f Enables TouchID unlock for multiple Database files.
This changeset adds the optional fileURL parameter to the
requestPasswordWithMessage function in MPPasswordInputController.
The controller uses this URL as a key to store the encrypted
masterpassword in a dictionary.

In my opinion edge cases like when a file is moved or replaced
do not have to get special handling since the worst case scenario
is that TouchID unlock does not work and users have still the
option to unlock with the masterpassword.

Also this changeset removes the unused
requestPasswordWithCompletionHandler function
2021-02-14 10:00:15 +01:00
Julius Zint
94956a673b fixed typos 2021-02-14 10:00:15 +01:00
Julius Zint
4e56740577 Added necessary entitlement and additional buildstep
Enabled the "Keychain Sharing" Entitlement that is required for
the Keychain APIs to work properly.

The additional buildstep signs the KissXML.framework nested inside
the KeePassKit.framework before this Framework itself is signed and
embedded. This is necessary because, to my knowledge, Xcode does not
support signing nested frameworks.
2021-02-14 10:00:15 +01:00
Julius Zint
a7b8be1886 TouchID unlock Feature for MacPass.
To use it a user must first enter the correct password for the database.
If the unlock succeeds, the supplied password is encrypted with the public
part of a RSA keypair. On subsequent unlocks a TouchID button appears. If
clicked, MacPass queries the Keychain for the private key part and uses it to
decrypt the previously supplied password and tries to unlock the database
with it.
2021-02-14 10:00:15 +01:00
181 changed files with 1967 additions and 7252 deletions

View File

@@ -30,48 +30,3 @@ jobs:
set -o pipefail set -o pipefail
xcodebuild clean xcodebuild clean
xcodebuild build -configuration release -project MacPass.xcodeproj -scheme MacPass CODE_SIGNING_REQUIRED=NO -derivedDataPath ./build | xcpretty -c 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

View File

@@ -1,15 +0,0 @@
//
// AppDelegate.h
// AutotypeOverlay
//
// Created by Michael Starke on 09.03.22.
// Copyright © 2022 HicknHack Software GmbH. All rights reserved.
//
#import <Cocoa/Cocoa.h>
@interface AOAppDelegate : NSObject <NSApplicationDelegate>
@end

View File

@@ -1,80 +0,0 @@
//
// AppDelegate.m
// AutotypeOverlay
//
// Created by Michael Starke on 09.03.22.
// Copyright © 2022 HicknHack Software GmbH. All rights reserved.
//
#import "AOAppDelegate.h"
#import <ApplicationServices/ApplicationServices.h>
@interface AOAppDelegate ()
@property (strong) IBOutlet NSWindow *window;
@end
@implementation AOAppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
// Insert code here to initialize your application
if(!AXIsProcessTrusted()) {
NSString *name = [NSBundle.mainBundle.infoDictionary[@"CFBundleName"] copy];
NSLog(@"%@ requires Accessibilty Permissions to work.", name);
}
[NSWorkspace.sharedWorkspace.notificationCenter addObserver:self selector:@selector(_didDeactivateApplication:) name:NSWorkspaceDidDeactivateApplicationNotification object:nil];
[NSWorkspace.sharedWorkspace.notificationCenter addObserver:self selector:@selector(_didActivateApplication:) name:NSWorkspaceDidActivateApplicationNotification object:nil];
}
- (void)applicationWillTerminate:(NSNotification *)aNotification {
// Insert code here to tear down your application
}
- (BOOL)applicationSupportsSecureRestorableState:(NSApplication *)app {
return YES;
}
- (void)_didDeactivateApplication:(NSNotification *)notification {
//[self.window orderOut:nil];
}
- (void)_didActivateApplication:(NSNotification *)notification {
AXUIElementRef systemWide = AXUIElementCreateSystemWide();
if(NULL == systemWide) {
return;
}
CFTypeRef elementRef;
AXError error = AXUIElementCopyAttributeValue(systemWide, kAXFocusedUIElementAttribute, &elementRef);
if(error == kAXErrorSuccess) {
[self _updateFocusedElement:elementRef];
}
}
- (void)_updateFocusedElement:(AXUIElementRef)element {
if(CFGetTypeID(element) != AXUIElementGetTypeID()) {
return; // wrong type or NULL
}
CFTypeRef positionRef;
AXError error = AXUIElementCopyAttributeValue(element, kAXPositionAttribute, &positionRef);
if(error != kAXErrorSuccess || kAXValueTypeCGPoint != AXValueGetType(positionRef)) {
return;
}
CGPoint position;
AXValueGetValue(positionRef, kAXValueTypeCGPoint, &position);
[self.window orderFront:self];
[self.window setFrameTopLeftPoint:position];
NSLog(@"Setting position to %@", NSStringFromPoint(position));
}
@end

View File

@@ -1,11 +0,0 @@
{
"colors" : [
{
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -1,58 +0,0 @@
{
"images" : [
{
"idiom" : "mac",
"scale" : "1x",
"size" : "16x16"
},
{
"idiom" : "mac",
"scale" : "2x",
"size" : "16x16"
},
{
"idiom" : "mac",
"scale" : "1x",
"size" : "32x32"
},
{
"idiom" : "mac",
"scale" : "2x",
"size" : "32x32"
},
{
"idiom" : "mac",
"scale" : "1x",
"size" : "128x128"
},
{
"idiom" : "mac",
"scale" : "2x",
"size" : "128x128"
},
{
"idiom" : "mac",
"scale" : "1x",
"size" : "256x256"
},
{
"idiom" : "mac",
"scale" : "2x",
"size" : "256x256"
},
{
"idiom" : "mac",
"scale" : "1x",
"size" : "512x512"
},
{
"idiom" : "mac",
"scale" : "2x",
"size" : "512x512"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -1,6 +0,0 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict/>
</plist>

View File

@@ -1,696 +0,0 @@
<?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="NSApplication">
<connections>
<outlet property="delegate" destination="Voe-Tx-rLC" id="GzC-gU-4Uq"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customObject id="Voe-Tx-rLC" customClass="AOAppDelegate">
<connections>
<outlet property="window" destination="QvC-M9-y7g" id="gIp-Ho-8D9"/>
</connections>
</customObject>
<customObject id="YLy-65-1bz" customClass="NSFontManager"/>
<menu title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
<items>
<menuItem title="AutotypeOverlay" id="1Xt-HY-uBw">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="AutotypeOverlay" systemMenu="apple" id="uQy-DD-JDr">
<items>
<menuItem title="About AutotypeOverlay" id="5kV-Vb-QxS">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="orderFrontStandardAboutPanel:" target="-1" id="Exp-CZ-Vem"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="VOq-y0-SEH"/>
<menuItem title="Preferences…" keyEquivalent="," id="BOF-NM-1cW"/>
<menuItem isSeparatorItem="YES" id="wFC-TO-SCJ"/>
<menuItem title="Services" id="NMo-om-nkz">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Services" systemMenu="services" id="hz9-B4-Xy5"/>
</menuItem>
<menuItem isSeparatorItem="YES" id="4je-JR-u6R"/>
<menuItem title="Hide AutotypeOverlay" keyEquivalent="h" id="Olw-nP-bQN">
<connections>
<action selector="hide:" target="-1" id="PnN-Uc-m68"/>
</connections>
</menuItem>
<menuItem title="Hide Others" keyEquivalent="h" id="Vdr-fp-XzO">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="hideOtherApplications:" target="-1" id="VT4-aY-XCT"/>
</connections>
</menuItem>
<menuItem title="Show All" id="Kd2-mp-pUS">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="unhideAllApplications:" target="-1" id="Dhg-Le-xox"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="kCx-OE-vgT"/>
<menuItem title="Quit AutotypeOverlay" keyEquivalent="q" id="4sb-4s-VLi">
<connections>
<action selector="terminate:" target="-1" id="Te7-pn-YzF"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="File" id="dMs-cI-mzQ">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="File" id="bib-Uj-vzu">
<items>
<menuItem title="New" keyEquivalent="n" id="Was-JA-tGl">
<connections>
<action selector="newDocument:" target="-1" id="4Si-XN-c54"/>
</connections>
</menuItem>
<menuItem title="Open…" keyEquivalent="o" id="IAo-SY-fd9">
<connections>
<action selector="openDocument:" target="-1" id="bVn-NM-KNZ"/>
</connections>
</menuItem>
<menuItem title="Open Recent" id="tXI-mr-wws">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Open Recent" systemMenu="recentDocuments" id="oas-Oc-fiZ">
<items>
<menuItem title="Clear Menu" id="vNY-rz-j42">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="clearRecentDocuments:" target="-1" id="Daa-9d-B3U"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem isSeparatorItem="YES" id="m54-Is-iLE"/>
<menuItem title="Close" keyEquivalent="w" id="DVo-aG-piG">
<connections>
<action selector="performClose:" target="-1" id="HmO-Ls-i7Q"/>
</connections>
</menuItem>
<menuItem title="Save…" keyEquivalent="s" id="pxx-59-PXV">
<connections>
<action selector="saveDocument:" target="-1" id="teZ-XB-qJY"/>
</connections>
</menuItem>
<menuItem title="Save As…" keyEquivalent="S" id="Bw7-FT-i3A">
<connections>
<action selector="saveDocumentAs:" target="-1" id="mDf-zr-I0C"/>
</connections>
</menuItem>
<menuItem title="Revert to Saved" keyEquivalent="r" id="KaW-ft-85H">
<connections>
<action selector="revertDocumentToSaved:" target="-1" id="iJ3-Pv-kwq"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="aJh-i4-bef"/>
<menuItem title="Page Setup…" keyEquivalent="P" id="qIS-W8-SiK">
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
<connections>
<action selector="runPageLayout:" target="-1" id="Din-rz-gC5"/>
</connections>
</menuItem>
<menuItem title="Print…" keyEquivalent="p" id="aTl-1u-JFS">
<connections>
<action selector="print:" target="-1" id="qaZ-4w-aoO"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Edit" id="5QF-Oa-p0T">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Edit" id="W48-6f-4Dl">
<items>
<menuItem title="Undo" keyEquivalent="z" id="dRJ-4n-Yzg">
<connections>
<action selector="undo:" target="-1" id="M6e-cu-g7V"/>
</connections>
</menuItem>
<menuItem title="Redo" keyEquivalent="Z" id="6dh-zS-Vam">
<connections>
<action selector="redo:" target="-1" id="oIA-Rs-6OD"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="WRV-NI-Exz"/>
<menuItem title="Cut" keyEquivalent="x" id="uRl-iY-unG">
<connections>
<action selector="cut:" target="-1" id="YJe-68-I9s"/>
</connections>
</menuItem>
<menuItem title="Copy" keyEquivalent="c" id="x3v-GG-iWU">
<connections>
<action selector="copy:" target="-1" id="G1f-GL-Joy"/>
</connections>
</menuItem>
<menuItem title="Paste" keyEquivalent="v" id="gVA-U4-sdL">
<connections>
<action selector="paste:" target="-1" id="UvS-8e-Qdg"/>
</connections>
</menuItem>
<menuItem title="Paste and Match Style" keyEquivalent="V" id="WeT-3V-zwk">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="pasteAsPlainText:" target="-1" id="cEh-KX-wJQ"/>
</connections>
</menuItem>
<menuItem title="Delete" id="pa3-QI-u2k">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="delete:" target="-1" id="0Mk-Ml-PaM"/>
</connections>
</menuItem>
<menuItem title="Select All" keyEquivalent="a" id="Ruw-6m-B2m">
<connections>
<action selector="selectAll:" target="-1" id="VNm-Mi-diN"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="uyl-h8-XO2"/>
<menuItem title="Find" id="4EN-yA-p0u">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Find" id="1b7-l0-nxx">
<items>
<menuItem title="Find…" tag="1" keyEquivalent="f" id="Xz5-n4-O0W">
<connections>
<action selector="performFindPanelAction:" target="-1" id="cD7-Qs-BN4"/>
</connections>
</menuItem>
<menuItem title="Find and Replace…" tag="12" keyEquivalent="f" id="YEy-JH-Tfz">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="performFindPanelAction:" target="-1" id="WD3-Gg-5AJ"/>
</connections>
</menuItem>
<menuItem title="Find Next" tag="2" keyEquivalent="g" id="q09-fT-Sye">
<connections>
<action selector="performFindPanelAction:" target="-1" id="NDo-RZ-v9R"/>
</connections>
</menuItem>
<menuItem title="Find Previous" tag="3" keyEquivalent="G" id="OwM-mh-QMV">
<connections>
<action selector="performFindPanelAction:" target="-1" id="HOh-sY-3ay"/>
</connections>
</menuItem>
<menuItem title="Use Selection for Find" tag="7" keyEquivalent="e" id="buJ-ug-pKt">
<connections>
<action selector="performFindPanelAction:" target="-1" id="U76-nv-p5D"/>
</connections>
</menuItem>
<menuItem title="Jump to Selection" keyEquivalent="j" id="S0p-oC-mLd">
<connections>
<action selector="centerSelectionInVisibleArea:" target="-1" id="IOG-6D-g5B"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Spelling and Grammar" id="Dv1-io-Yv7">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Spelling" id="3IN-sU-3Bg">
<items>
<menuItem title="Show Spelling and Grammar" keyEquivalent=":" id="HFo-cy-zxI">
<connections>
<action selector="showGuessPanel:" target="-1" id="vFj-Ks-hy3"/>
</connections>
</menuItem>
<menuItem title="Check Document Now" keyEquivalent=";" id="hz2-CU-CR7">
<connections>
<action selector="checkSpelling:" target="-1" id="fz7-VC-reM"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="bNw-od-mp5"/>
<menuItem title="Check Spelling While Typing" id="rbD-Rh-wIN">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleContinuousSpellChecking:" target="-1" id="7w6-Qz-0kB"/>
</connections>
</menuItem>
<menuItem title="Check Grammar With Spelling" id="mK6-2p-4JG">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleGrammarChecking:" target="-1" id="muD-Qn-j4w"/>
</connections>
</menuItem>
<menuItem title="Correct Spelling Automatically" id="78Y-hA-62v">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticSpellingCorrection:" target="-1" id="2lM-Qi-WAP"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Substitutions" id="9ic-FL-obx">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Substitutions" id="FeM-D8-WVr">
<items>
<menuItem title="Show Substitutions" id="z6F-FW-3nz">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="orderFrontSubstitutionsPanel:" target="-1" id="oku-mr-iSq"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="gPx-C9-uUO"/>
<menuItem title="Smart Copy/Paste" id="9yt-4B-nSM">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleSmartInsertDelete:" target="-1" id="3IJ-Se-DZD"/>
</connections>
</menuItem>
<menuItem title="Smart Quotes" id="hQb-2v-fYv">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticQuoteSubstitution:" target="-1" id="ptq-xd-QOA"/>
</connections>
</menuItem>
<menuItem title="Smart Dashes" id="rgM-f4-ycn">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticDashSubstitution:" target="-1" id="oCt-pO-9gS"/>
</connections>
</menuItem>
<menuItem title="Smart Links" id="cwL-P1-jid">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticLinkDetection:" target="-1" id="Gip-E3-Fov"/>
</connections>
</menuItem>
<menuItem title="Data Detectors" id="tRr-pd-1PS">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticDataDetection:" target="-1" id="R1I-Nq-Kbl"/>
</connections>
</menuItem>
<menuItem title="Text Replacement" id="HFQ-gK-NFA">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticTextReplacement:" target="-1" id="DvP-Fe-Py6"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Transformations" id="2oI-Rn-ZJC">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Transformations" id="c8a-y6-VQd">
<items>
<menuItem title="Make Upper Case" id="vmV-6d-7jI">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="uppercaseWord:" target="-1" id="sPh-Tk-edu"/>
</connections>
</menuItem>
<menuItem title="Make Lower Case" id="d9M-CD-aMd">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="lowercaseWord:" target="-1" id="iUZ-b5-hil"/>
</connections>
</menuItem>
<menuItem title="Capitalize" id="UEZ-Bs-lqG">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="capitalizeWord:" target="-1" id="26H-TL-nsh"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Speech" id="xrE-MZ-jX0">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Speech" id="3rS-ZA-NoH">
<items>
<menuItem title="Start Speaking" id="Ynk-f8-cLZ">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="startSpeaking:" target="-1" id="654-Ng-kyl"/>
</connections>
</menuItem>
<menuItem title="Stop Speaking" id="Oyz-dy-DGm">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="stopSpeaking:" target="-1" id="dX8-6p-jy9"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Format" id="jxT-CU-nIS">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Format" id="GEO-Iw-cKr">
<items>
<menuItem title="Font" id="Gi5-1S-RQB">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Font" systemMenu="font" id="aXa-aM-Jaq">
<items>
<menuItem title="Show Fonts" keyEquivalent="t" id="Q5e-8K-NDq">
<connections>
<action selector="orderFrontFontPanel:" target="YLy-65-1bz" id="WHr-nq-2xA"/>
</connections>
</menuItem>
<menuItem title="Bold" tag="2" keyEquivalent="b" id="GB9-OM-e27">
<connections>
<action selector="addFontTrait:" target="YLy-65-1bz" id="hqk-hr-sYV"/>
</connections>
</menuItem>
<menuItem title="Italic" tag="1" keyEquivalent="i" id="Vjx-xi-njq">
<connections>
<action selector="addFontTrait:" target="YLy-65-1bz" id="IHV-OB-c03"/>
</connections>
</menuItem>
<menuItem title="Underline" keyEquivalent="u" id="WRG-CD-K1S">
<connections>
<action selector="underline:" target="-1" id="FYS-2b-JAY"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="5gT-KC-WSO"/>
<menuItem title="Bigger" tag="3" keyEquivalent="+" id="Ptp-SP-VEL">
<connections>
<action selector="modifyFont:" target="YLy-65-1bz" id="Uc7-di-UnL"/>
</connections>
</menuItem>
<menuItem title="Smaller" tag="4" keyEquivalent="-" id="i1d-Er-qST">
<connections>
<action selector="modifyFont:" target="YLy-65-1bz" id="HcX-Lf-eNd"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="kx3-Dk-x3B"/>
<menuItem title="Kern" id="jBQ-r6-VK2">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Kern" id="tlD-Oa-oAM">
<items>
<menuItem title="Use Default" id="GUa-eO-cwY">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="useStandardKerning:" target="-1" id="6dk-9l-Ckg"/>
</connections>
</menuItem>
<menuItem title="Use None" id="cDB-IK-hbR">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="turnOffKerning:" target="-1" id="U8a-gz-Maa"/>
</connections>
</menuItem>
<menuItem title="Tighten" id="46P-cB-AYj">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="tightenKerning:" target="-1" id="hr7-Nz-8ro"/>
</connections>
</menuItem>
<menuItem title="Loosen" id="ogc-rX-tC1">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="loosenKerning:" target="-1" id="8i4-f9-FKE"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Ligatures" id="o6e-r0-MWq">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Ligatures" id="w0m-vy-SC9">
<items>
<menuItem title="Use Default" id="agt-UL-0e3">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="useStandardLigatures:" target="-1" id="7uR-wd-Dx6"/>
</connections>
</menuItem>
<menuItem title="Use None" id="J7y-lM-qPV">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="turnOffLigatures:" target="-1" id="iX2-gA-Ilz"/>
</connections>
</menuItem>
<menuItem title="Use All" id="xQD-1f-W4t">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="useAllLigatures:" target="-1" id="KcB-kA-TuK"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Baseline" id="OaQ-X3-Vso">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Baseline" id="ijk-EB-dga">
<items>
<menuItem title="Use Default" id="3Om-Ey-2VK">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="unscript:" target="-1" id="0vZ-95-Ywn"/>
</connections>
</menuItem>
<menuItem title="Superscript" id="Rqc-34-cIF">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="superscript:" target="-1" id="3qV-fo-wpU"/>
</connections>
</menuItem>
<menuItem title="Subscript" id="I0S-gh-46l">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="subscript:" target="-1" id="Q6W-4W-IGz"/>
</connections>
</menuItem>
<menuItem title="Raise" id="2h7-ER-AoG">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="raiseBaseline:" target="-1" id="4sk-31-7Q9"/>
</connections>
</menuItem>
<menuItem title="Lower" id="1tx-W0-xDw">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="lowerBaseline:" target="-1" id="OF1-bc-KW4"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem isSeparatorItem="YES" id="Ndw-q3-faq"/>
<menuItem title="Show Colors" keyEquivalent="C" id="bgn-CT-cEk">
<connections>
<action selector="orderFrontColorPanel:" target="-1" id="mSX-Xz-DV3"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="iMs-zA-UFJ"/>
<menuItem title="Copy Style" keyEquivalent="c" id="5Vv-lz-BsD">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="copyFont:" target="-1" id="GJO-xA-L4q"/>
</connections>
</menuItem>
<menuItem title="Paste Style" keyEquivalent="v" id="vKC-jM-MkH">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="pasteFont:" target="-1" id="JfD-CL-leO"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Text" id="Fal-I4-PZk">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Text" id="d9c-me-L2H">
<items>
<menuItem title="Align Left" keyEquivalent="{" id="ZM1-6Q-yy1">
<connections>
<action selector="alignLeft:" target="-1" id="zUv-R1-uAa"/>
</connections>
</menuItem>
<menuItem title="Center" keyEquivalent="|" id="VIY-Ag-zcb">
<connections>
<action selector="alignCenter:" target="-1" id="spX-mk-kcS"/>
</connections>
</menuItem>
<menuItem title="Justify" id="J5U-5w-g23">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="alignJustified:" target="-1" id="ljL-7U-jND"/>
</connections>
</menuItem>
<menuItem title="Align Right" keyEquivalent="}" id="wb2-vD-lq4">
<connections>
<action selector="alignRight:" target="-1" id="r48-bG-YeY"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="4s2-GY-VfK"/>
<menuItem title="Writing Direction" id="H1b-Si-o9J">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Writing Direction" id="8mr-sm-Yjd">
<items>
<menuItem title="Paragraph" enabled="NO" id="ZvO-Gk-QUH">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem id="YGs-j5-SAR">
<string key="title"> Default</string>
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="makeBaseWritingDirectionNatural:" target="-1" id="qtV-5e-UBP"/>
</connections>
</menuItem>
<menuItem id="Lbh-J2-qVU">
<string key="title"> Left to Right</string>
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="makeBaseWritingDirectionLeftToRight:" target="-1" id="S0X-9S-QSf"/>
</connections>
</menuItem>
<menuItem id="jFq-tB-4Kx">
<string key="title"> Right to Left</string>
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="makeBaseWritingDirectionRightToLeft:" target="-1" id="5fk-qB-AqJ"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="swp-gr-a21"/>
<menuItem title="Selection" enabled="NO" id="cqv-fj-IhA">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem id="Nop-cj-93Q">
<string key="title"> Default</string>
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="makeTextWritingDirectionNatural:" target="-1" id="lPI-Se-ZHp"/>
</connections>
</menuItem>
<menuItem id="BgM-ve-c93">
<string key="title"> Left to Right</string>
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="makeTextWritingDirectionLeftToRight:" target="-1" id="caW-Bv-w94"/>
</connections>
</menuItem>
<menuItem id="RB4-Sm-HuC">
<string key="title"> Right to Left</string>
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="makeTextWritingDirectionRightToLeft:" target="-1" id="EXD-6r-ZUu"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem isSeparatorItem="YES" id="fKy-g9-1gm"/>
<menuItem title="Show Ruler" id="vLm-3I-IUL">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleRuler:" target="-1" id="FOx-HJ-KwY"/>
</connections>
</menuItem>
<menuItem title="Copy Ruler" keyEquivalent="c" id="MkV-Pr-PK5">
<modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
<connections>
<action selector="copyRuler:" target="-1" id="71i-fW-3W2"/>
</connections>
</menuItem>
<menuItem title="Paste Ruler" keyEquivalent="v" id="LVM-kO-fVI">
<modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
<connections>
<action selector="pasteRuler:" target="-1" id="cSh-wd-qM2"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="View" id="H8h-7b-M4v">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="View" id="HyV-fh-RgO">
<items>
<menuItem title="Show Toolbar" keyEquivalent="t" id="snW-S8-Cw5">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="toggleToolbarShown:" target="-1" id="BXY-wc-z0C"/>
</connections>
</menuItem>
<menuItem title="Customize Toolbar…" id="1UK-8n-QPP">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="runToolbarCustomizationPalette:" target="-1" id="pQI-g3-MTW"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="hB3-LF-h0Y"/>
<menuItem title="Show Sidebar" keyEquivalent="s" id="kIP-vf-haE">
<modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
<connections>
<action selector="toggleSidebar:" target="-1" id="iwa-gc-5KM"/>
</connections>
</menuItem>
<menuItem title="Enter Full Screen" keyEquivalent="f" id="4J7-dP-txa">
<modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
<connections>
<action selector="toggleFullScreen:" target="-1" id="dU3-MA-1Rq"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Window" id="aUF-d1-5bR">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Window" systemMenu="window" id="Td7-aD-5lo">
<items>
<menuItem title="Minimize" keyEquivalent="m" id="OY7-WF-poV">
<connections>
<action selector="performMiniaturize:" target="-1" id="VwT-WD-YPe"/>
</connections>
</menuItem>
<menuItem title="Zoom" id="R4o-n2-Eq4">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="performZoom:" target="-1" id="DIl-cC-cCs"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="eu3-7i-yIM"/>
<menuItem title="Bring All to Front" id="LE2-aR-0XJ">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="arrangeInFront:" target="-1" id="DRN-fu-gQh"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Help" id="wpr-3q-Mcd">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Help" systemMenu="help" id="F2S-fz-NVQ">
<items>
<menuItem title="AutotypeOverlay Help" keyEquivalent="?" id="FKE-Sm-Kum">
<connections>
<action selector="showHelp:" target="-1" id="y7X-2Q-9no"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
</items>
<point key="canvasLocation" x="200" y="121"/>
</menu>
<window title="AutotypeOverlay" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="QvC-M9-y7g">
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="335" y="390" width="480" height="360"/>
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1415"/>
<view key="contentView" id="EiT-Mj-1SZ">
<rect key="frame" x="0.0" y="0.0" width="480" height="360"/>
<autoresizingMask key="autoresizingMask"/>
</view>
<point key="canvasLocation" x="200" y="400"/>
</window>
</objects>
</document>

View File

@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>LSUIElement</key>
<true/>
</dict>
</plist>

View File

@@ -1,16 +0,0 @@
//
// main.m
// AutotypeOverlay
//
// Created by Michael Starke on 09.03.22.
// Copyright © 2022 HicknHack Software GmbH. All rights reserved.
//
#import <Cocoa/Cocoa.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
// Setup code that might create autoreleased objects goes here.
}
return NSApplicationMain(argc, argv);
}

View File

@@ -1,4 +1,4 @@
github "sparkle-project/Sparkle" ~> 1.22 github "sparkle-project/Sparkle" ~> 1.22
github "MacPass/TransformerKit" "a8b5bb73cc327ec6798569b865c32fec5eb2289f" github "mattt/TransformerKit" ~> 1.1.1
github "MacPass/KeePassKit" ~> 3.2.0 github "MacPass/KeePassKit" "76e6ecda942f9e328efde7883ad75aed7290b632"
github "mstarke/HNHUi" ~> 6.0 github "mstarke/HNHUi" ~> 4.0

View File

@@ -1,5 +1,5 @@
github "MacPass/KeePassKit" "3.2.1" github "MacPass/KeePassKit" "76e6ecda942f9e328efde7883ad75aed7290b632"
github "MacPass/KissXML" "933f04fe5ad95c2be07ec0c2f801e140007f20fa" github "mattt/TransformerKit" "1.1.1"
github "MacPass/TransformerKit" "a8b5bb73cc327ec6798569b865c32fec5eb2289f" github "mstarke/HNHUi" "4.0.3"
github "mstarke/HNHUi" "6.0.1" github "robbiehanson/KissXML" "5.3.3"
github "sparkle-project/Sparkle" "1.27.1" github "sparkle-project/Sparkle" "1.24.0"

View File

@@ -49,6 +49,7 @@
4C25D58716CF0FAA00F6806C /* EntryView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C25D58616CF0FAA00F6806C /* EntryView.xib */; }; 4C25D58716CF0FAA00F6806C /* EntryView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C25D58616CF0FAA00F6806C /* EntryView.xib */; };
4C26C33F18D8C92100CF1A1C /* MPTemporaryFileStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C26C33E18D8C92100CF1A1C /* MPTemporaryFileStorage.m */; }; 4C26C33F18D8C92100CF1A1C /* MPTemporaryFileStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C26C33E18D8C92100CF1A1C /* MPTemporaryFileStorage.m */; };
4C2892A8257103F9003C7732 /* MPTOTPViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C2892A6257103F9003C7732 /* MPTOTPViewController.m */; }; 4C2892A8257103F9003C7732 /* MPTOTPViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C2892A6257103F9003C7732 /* MPTOTPViewController.m */; };
4C2892A9257103F9003C7732 /* MPTOTPViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C2892A7257103F9003C7732 /* MPTOTPViewController.xib */; };
4C2E381D16D11FF900037A9D /* 03_ServerTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C2E381A16D11FF900037A9D /* 03_ServerTemplate.pdf */; }; 4C2E381D16D11FF900037A9D /* 03_ServerTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C2E381A16D11FF900037A9D /* 03_ServerTemplate.pdf */; };
4C2E381E16D11FF900037A9D /* 04_KlipperTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C2E381B16D11FF900037A9D /* 04_KlipperTemplate.pdf */; }; 4C2E381E16D11FF900037A9D /* 04_KlipperTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C2E381B16D11FF900037A9D /* 04_KlipperTemplate.pdf */; };
4C2E381F16D11FF900037A9D /* 05_LanguagesTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C2E381C16D11FF900037A9D /* 05_LanguagesTemplate.pdf */; }; 4C2E381F16D11FF900037A9D /* 05_LanguagesTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C2E381C16D11FF900037A9D /* 05_LanguagesTemplate.pdf */; };
@@ -59,6 +60,7 @@
4C349A00218852160055AF45 /* MPKeyTyper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C3499FF218852160055AF45 /* MPKeyTyper.m */; }; 4C349A00218852160055AF45 /* MPKeyTyper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C3499FF218852160055AF45 /* MPKeyTyper.m */; };
4C35664025824C0A00CAB95B /* NSImage+MPQRCode.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C35663F25824C0A00CAB95B /* NSImage+MPQRCode.m */; }; 4C35664025824C0A00CAB95B /* NSImage+MPQRCode.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C35663F25824C0A00CAB95B /* NSImage+MPQRCode.m */; };
4C356645258259AA00CAB95B /* MPTOTPSetupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C356643258259AA00CAB95B /* MPTOTPSetupViewController.m */; }; 4C356645258259AA00CAB95B /* MPTOTPSetupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C356643258259AA00CAB95B /* MPTOTPSetupViewController.m */; };
4C356646258259AA00CAB95B /* MPTOTPSetupViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C356644258259AA00CAB95B /* MPTOTPSetupViewController.xib */; };
4C3666411787327E00B249F1 /* MPDocument+Attachments.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C3666401787327E00B249F1 /* MPDocument+Attachments.m */; }; 4C3666411787327E00B249F1 /* MPDocument+Attachments.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C3666401787327E00B249F1 /* MPDocument+Attachments.m */; };
4C370EFE215B76CB00703AAE /* MPOutlineTableCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C370EFD215B76CB00703AAE /* MPOutlineTableCellView.m */; }; 4C370EFE215B76CB00703AAE /* MPOutlineTableCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C370EFD215B76CB00703AAE /* MPOutlineTableCellView.m */; };
4C37A84015B8B474005EF8EE /* MPOutlineDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C37A83F15B8B474005EF8EE /* MPOutlineDataSource.m */; }; 4C37A84015B8B474005EF8EE /* MPOutlineDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C37A83F15B8B474005EF8EE /* MPOutlineDataSource.m */; };
@@ -129,14 +131,9 @@
4C4BE0C8257E9B91000AEA8C /* MPNotificationPreferencesController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C4BE0C6257E9B91000AEA8C /* MPNotificationPreferencesController.m */; }; 4C4BE0C8257E9B91000AEA8C /* MPNotificationPreferencesController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C4BE0C6257E9B91000AEA8C /* MPNotificationPreferencesController.m */; };
4C4BE0C9257E9B91000AEA8C /* MPNotificationPreferencesController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C4BE0C7257E9B91000AEA8C /* MPNotificationPreferencesController.xib */; }; 4C4BE0C9257E9B91000AEA8C /* MPNotificationPreferencesController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C4BE0C7257E9B91000AEA8C /* MPNotificationPreferencesController.xib */; };
4C4DC0A61C3AD17500DE9DCF /* KeePassKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C7B63791C0CB55600D7038C /* KeePassKit.framework */; }; 4C4DC0A61C3AD17500DE9DCF /* KeePassKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C7B63791C0CB55600D7038C /* KeePassKit.framework */; };
4C4F120027D9055300ED5495 /* AOAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C4F11FF27D9055300ED5495 /* AOAppDelegate.m */; };
4C4F120227D9055600ED5495 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4C4F120127D9055600ED5495 /* Assets.xcassets */; };
4C4F120527D9055600ED5495 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C4F120327D9055600ED5495 /* MainMenu.xib */; };
4C4F120727D9055600ED5495 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C4F120627D9055600ED5495 /* main.m */; };
4C4F72D118DF704400E8D378 /* DDHotKeyTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C4F72CF18DF704400E8D378 /* DDHotKeyTextField.m */; }; 4C4F72D118DF704400E8D378 /* DDHotKeyTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C4F72CF18DF704400E8D378 /* DDHotKeyTextField.m */; };
4C4FCE15177CFE6B00BBF7AE /* MPCustomFieldTableCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C4FCE14177CFE6B00BBF7AE /* MPCustomFieldTableCellView.m */; }; 4C4FCE15177CFE6B00BBF7AE /* MPCustomFieldTableCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C4FCE14177CFE6B00BBF7AE /* MPCustomFieldTableCellView.m */; };
4C50CC041F6C18830095629D /* MPCollectionViewItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C50CC031F6C18830095629D /* MPCollectionViewItem.m */; }; 4C50CC041F6C18830095629D /* MPCollectionViewItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C50CC031F6C18830095629D /* MPCollectionViewItem.m */; };
4C521981273D192C00C719D3 /* MPOpenURLHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C521980273D192C00C719D3 /* MPOpenURLHandler.m */; };
4C52A88E1788628B00868229 /* 06_BlockDeviceTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C52A88B1788628B00868229 /* 06_BlockDeviceTemplate.pdf */; }; 4C52A88E1788628B00868229 /* 06_BlockDeviceTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C52A88B1788628B00868229 /* 06_BlockDeviceTemplate.pdf */; };
4C52A88F1788628B00868229 /* 13_KeysTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C52A88C1788628B00868229 /* 13_KeysTemplate.pdf */; }; 4C52A88F1788628B00868229 /* 13_KeysTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C52A88C1788628B00868229 /* 13_KeysTemplate.pdf */; };
4C52A8901788628B00868229 /* 18_DisplayTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C52A88D1788628B00868229 /* 18_DisplayTemplate.pdf */; }; 4C52A8901788628B00868229 /* 18_DisplayTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C52A88D1788628B00868229 /* 18_DisplayTemplate.pdf */; };
@@ -150,8 +147,6 @@
4C586FA216D07F6A00E7DB57 /* 02_MessageBoxWarningTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C586FA116D07F6A00E7DB57 /* 02_MessageBoxWarningTemplate.pdf */; }; 4C586FA216D07F6A00E7DB57 /* 02_MessageBoxWarningTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C586FA116D07F6A00E7DB57 /* 02_MessageBoxWarningTemplate.pdf */; };
4C58A4A32192EC1600B13370 /* NSIndexPath+MPAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C58A4A22192EC1600B13370 /* NSIndexPath+MPAdditions.m */; }; 4C58A4A32192EC1600B13370 /* NSIndexPath+MPAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C58A4A22192EC1600B13370 /* NSIndexPath+MPAdditions.m */; };
4C58A4A82192EEBE00B13370 /* MPTestIndexPathAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C58A4A72192EEBE00B13370 /* MPTestIndexPathAdditions.m */; }; 4C58A4A82192EEBE00B13370 /* MPTestIndexPathAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C58A4A72192EEBE00B13370 /* MPTestIndexPathAdditions.m */; };
4C59AC9D2722C12200F54B20 /* MPNodeExpirationViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C59AC9B2722C12200F54B20 /* MPNodeExpirationViewController.m */; };
4C59AC9E2722C12200F54B20 /* MPNodeExpirationViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C59AC9C2722C12200F54B20 /* MPNodeExpirationViewController.xib */; };
4C5A11FE1708DE8700223D8A /* MPPasswordCreatorViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C5A11FC1708DE8700223D8A /* MPPasswordCreatorViewController.m */; }; 4C5A11FE1708DE8700223D8A /* MPPasswordCreatorViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C5A11FC1708DE8700223D8A /* MPPasswordCreatorViewController.m */; };
4C5EF816218CA03F0003C00E /* MPAutotypeParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C5EF815218CA03F0003C00E /* MPAutotypeParser.m */; }; 4C5EF816218CA03F0003C00E /* MPAutotypeParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C5EF815218CA03F0003C00E /* MPAutotypeParser.m */; };
4C5FE9AE17843CE20001D5A8 /* MPSelectedAttachmentTableCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C5FE9AD17843CE20001D5A8 /* MPSelectedAttachmentTableCellView.m */; }; 4C5FE9AE17843CE20001D5A8 /* MPSelectedAttachmentTableCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C5FE9AD17843CE20001D5A8 /* MPSelectedAttachmentTableCellView.m */; };
@@ -223,11 +218,7 @@
4C8F0C711FCEF91400BE157F /* MPPickcharsParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C8F0C701FCEF91400BE157F /* MPPickcharsParser.m */; }; 4C8F0C711FCEF91400BE157F /* MPPickcharsParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C8F0C701FCEF91400BE157F /* MPPickcharsParser.m */; };
4C8F0C731FCF1B7A00BE157F /* MPTestPickcharsParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C8F0C721FCF1B7A00BE157F /* MPTestPickcharsParser.m */; }; 4C8F0C731FCF1B7A00BE157F /* MPTestPickcharsParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C8F0C721FCF1B7A00BE157F /* MPTestPickcharsParser.m */; };
4C8F0C791FD05A6A00BE157F /* NSString+MPPrettyPasswordDisplay.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C8F0C781FD05A6A00BE157F /* NSString+MPPrettyPasswordDisplay.m */; }; 4C8F0C791FD05A6A00BE157F /* NSString+MPPrettyPasswordDisplay.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C8F0C781FD05A6A00BE157F /* NSString+MPPrettyPasswordDisplay.m */; };
4C9328C8273E6A38000DCBEE /* MPTOTPSetupViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C9328CA273E6A38000DCBEE /* MPTOTPSetupViewController.xib */; };
4C9328D0273E6A83000DCBEE /* MPTOTPViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C9328D2273E6A83000DCBEE /* MPTOTPViewController.xib */; };
4C978E0D19AE54AB003067DF /* MPFlagsHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C978E0C19AE54AB003067DF /* MPFlagsHelper.m */; }; 4C978E0D19AE54AB003067DF /* MPFlagsHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C978E0C19AE54AB003067DF /* MPFlagsHelper.m */; };
4C98A6CC27CFAB1900CD912F /* MPNodeIconViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C98A6CA27CFAB1900CD912F /* MPNodeIconViewController.m */; };
4C98A6CD27CFAB1900CD912F /* MPNodeIconViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C98A6CB27CFAB1900CD912F /* MPNodeIconViewController.xib */; };
4C9BFFFB1FD19B5400264B16 /* MPPrettyPasswordTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C9BFFFA1FD19B5400264B16 /* MPPrettyPasswordTransformer.m */; }; 4C9BFFFB1FD19B5400264B16 /* MPPrettyPasswordTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C9BFFFA1FD19B5400264B16 /* MPPrettyPasswordTransformer.m */; };
4CA08DA017A831B200A6544B /* MPAddEntryContextMenuDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA08D9F17A831B200A6544B /* MPAddEntryContextMenuDelegate.m */; }; 4CA08DA017A831B200A6544B /* MPAddEntryContextMenuDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA08D9F17A831B200A6544B /* MPAddEntryContextMenuDelegate.m */; };
4CA0B2ED15BCADAC00654E32 /* PreferencesWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4CA0B2EC15BCADAC00654E32 /* PreferencesWindow.xib */; }; 4CA0B2ED15BCADAC00654E32 /* PreferencesWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4CA0B2EC15BCADAC00654E32 /* PreferencesWindow.xib */; };
@@ -253,15 +244,12 @@
4CBA2ABA17074C07006D8139 /* MPSettingsHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CBA2AB917074C07006D8139 /* MPSettingsHelper.m */; }; 4CBA2ABA17074C07006D8139 /* MPSettingsHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CBA2AB917074C07006D8139 /* MPSettingsHelper.m */; };
4CBC5DDD23C61C8900D14B92 /* TransformerKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4CBC5DDB23C61C8300D14B92 /* TransformerKit.framework */; }; 4CBC5DDD23C61C8900D14B92 /* TransformerKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4CBC5DDB23C61C8300D14B92 /* TransformerKit.framework */; };
4CBC5DDE23C61C8900D14B92 /* TransformerKit.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4CBC5DDB23C61C8300D14B92 /* TransformerKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 4CBC5DDE23C61C8900D14B92 /* TransformerKit.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4CBC5DDB23C61C8300D14B92 /* TransformerKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
4CC0192E271836CD00459789 /* MPEntryAttributeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC0192C271836CD00459789 /* MPEntryAttributeViewController.m */; };
4CC0192F271836CD00459789 /* MPEntryAttributeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4CC0192D271836CD00459789 /* MPEntryAttributeViewController.xib */; };
4CC0D2CE17974A47000B4BDA /* MPCustomFieldTableViewDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC0D2CD17974A47000B4BDA /* MPCustomFieldTableViewDelegate.m */; }; 4CC0D2CE17974A47000B4BDA /* MPCustomFieldTableViewDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC0D2CD17974A47000B4BDA /* MPCustomFieldTableViewDelegate.m */; };
4CC0D2D117974A5A000B4BDA /* MPAttachmentTableViewDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC0D2D017974A5A000B4BDA /* MPAttachmentTableViewDelegate.m */; }; 4CC0D2D117974A5A000B4BDA /* MPAttachmentTableViewDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC0D2D017974A5A000B4BDA /* MPAttachmentTableViewDelegate.m */; };
4CC281891C0F675B00B9174D /* HNHUi.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4CC281881C0F675B00B9174D /* HNHUi.framework */; }; 4CC281891C0F675B00B9174D /* HNHUi.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4CC281881C0F675B00B9174D /* HNHUi.framework */; };
4CC59C2721AF0893005E8D6B /* MPPathControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC59C2621AF0893005E8D6B /* MPPathControl.m */; }; 4CC59C2721AF0893005E8D6B /* MPPathControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC59C2621AF0893005E8D6B /* MPPathControl.m */; };
4CC663E7216F7A7100E33965 /* MPPluginRepositoryBrowserViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC663E5216F7A7100E33965 /* MPPluginRepositoryBrowserViewController.m */; }; 4CC663E7216F7A7100E33965 /* MPPluginRepositoryBrowserViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC663E5216F7A7100E33965 /* MPPluginRepositoryBrowserViewController.m */; };
4CC6DB7A17D23719002C6091 /* KPKNode+IconImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6DB7917D23719002C6091 /* KPKNode+IconImage.m */; }; 4CC6DB7A17D23719002C6091 /* KPKNode+IconImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6DB7917D23719002C6091 /* KPKNode+IconImage.m */; };
4CC91B6B27D7E7E6001E9517 /* MPInspectorEditorView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC91B6A27D7E7E6001E9517 /* MPInspectorEditorView.m */; };
4CCA8E9B18D91ED9001A6754 /* Quartz.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4CCA8E9A18D91ED9001A6754 /* Quartz.framework */; }; 4CCA8E9B18D91ED9001A6754 /* Quartz.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4CCA8E9A18D91ED9001A6754 /* Quartz.framework */; };
4CCCE8011D75CA48006AA951 /* MPArrayController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CCCE8001D75CA48006AA951 /* MPArrayController.m */; }; 4CCCE8011D75CA48006AA951 /* MPArrayController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CCCE8001D75CA48006AA951 /* MPArrayController.m */; };
4CCEDE2A179F203B008402BE /* MPOutlineView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CCEDE29179F203B008402BE /* MPOutlineView.m */; }; 4CCEDE2A179F203B008402BE /* MPOutlineView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CCEDE29179F203B008402BE /* MPOutlineView.m */; };
@@ -292,12 +280,6 @@
4CE39ABF16ECE34A000FE29D /* MPIconSelectViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE39ABE16ECE34A000FE29D /* MPIconSelectViewController.m */; }; 4CE39ABF16ECE34A000FE29D /* MPIconSelectViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE39ABE16ECE34A000FE29D /* MPIconSelectViewController.m */; };
4CE39AC416ECE4F7000FE29D /* MPIconImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE39AC316ECE4F7000FE29D /* MPIconImageView.m */; }; 4CE39AC416ECE4F7000FE29D /* MPIconImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE39AC316ECE4F7000FE29D /* MPIconImageView.m */; };
4CE3E62617AB0D2D00D9E4B4 /* MPAttachmentTableDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE3E62517AB0D2D00D9E4B4 /* MPAttachmentTableDataSource.m */; }; 4CE3E62617AB0D2D00D9E4B4 /* MPAttachmentTableDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE3E62517AB0D2D00D9E4B4 /* MPAttachmentTableDataSource.m */; };
4CE4FFA22746953A00789F75 /* MPAdvancedDatabaseSettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4FFA02746953A00789F75 /* MPAdvancedDatabaseSettingsViewController.m */; };
4CE4FFA32746953A00789F75 /* MPAdvancedDatabaseSettingsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4CE4FFA12746953A00789F75 /* MPAdvancedDatabaseSettingsViewController.xib */; };
4CE4FFA72746955E00789F75 /* MPSecurityDatabaseSettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4FFA52746955E00789F75 /* MPSecurityDatabaseSettingsViewController.m */; };
4CE4FFA82746955E00789F75 /* MPSecurityDatabaseSettingsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4CE4FFA62746955E00789F75 /* MPSecurityDatabaseSettingsViewController.xib */; };
4CE4FFAC2746956F00789F75 /* MPGeneralDatabaseSettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4FFAA2746956F00789F75 /* MPGeneralDatabaseSettingsViewController.m */; };
4CE4FFAD2746956F00789F75 /* MPGeneralDatabaseSettingsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4CE4FFAB2746956F00789F75 /* MPGeneralDatabaseSettingsViewController.xib */; };
4CE501341BBC47F500FB819D /* MPTagsTokenFieldDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE501331BBC47F500FB819D /* MPTagsTokenFieldDelegate.m */; }; 4CE501341BBC47F500FB819D /* MPTagsTokenFieldDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE501331BBC47F500FB819D /* MPTagsTokenFieldDelegate.m */; };
4CE5B54B173AFBA700207B39 /* MPDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE5B549173AFBA700207B39 /* MPDocument.m */; }; 4CE5B54B173AFBA700207B39 /* MPDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE5B549173AFBA700207B39 /* MPDocument.m */; };
4CE8246F16E2E93400573141 /* MPOverlayWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE8246E16E2E93400573141 /* MPOverlayWindowController.m */; }; 4CE8246F16E2E93400573141 /* MPOverlayWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE8246E16E2E93400573141 /* MPOverlayWindowController.m */; };
@@ -305,8 +287,6 @@
4CE88B9717BA651C0042E078 /* contextTriangleTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4CE88B9617BA651C0042E078 /* contextTriangleTemplate.pdf */; }; 4CE88B9717BA651C0042E078 /* contextTriangleTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4CE88B9617BA651C0042E078 /* contextTriangleTemplate.pdf */; };
4CEE46DD181C301D006BF1E5 /* MPAutotypeDaemon.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CEE46DC181C301D006BF1E5 /* MPAutotypeDaemon.m */; }; 4CEE46DD181C301D006BF1E5 /* MPAutotypeDaemon.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CEE46DC181C301D006BF1E5 /* MPAutotypeDaemon.m */; };
4CEED1C617D7BD0E007180F1 /* NSError+Messages.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CEED1C517D7BD0E007180F1 /* NSError+Messages.m */; }; 4CEED1C617D7BD0E007180F1 /* NSError+Messages.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CEED1C517D7BD0E007180F1 /* NSError+Messages.m */; };
4CF13A9727E0D5D800E3297A /* MPNodeTagViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF13A9527E0D5D800E3297A /* MPNodeTagViewController.m */; };
4CF13A9827E0D5D800E3297A /* MPNodeTagViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4CF13A9627E0D5D800E3297A /* MPNodeTagViewController.xib */; };
4CF29BF417879D0000851B60 /* 26_FileSaveTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4CF29BF317879D0000851B60 /* 26_FileSaveTemplate.pdf */; }; 4CF29BF417879D0000851B60 /* 26_FileSaveTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4CF29BF317879D0000851B60 /* 26_FileSaveTemplate.pdf */; };
4CF5BE6D1BF33E3000048505 /* NSApplication+MPAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF5BE6C1BF33E3000048505 /* NSApplication+MPAdditions.m */; }; 4CF5BE6D1BF33E3000048505 /* NSApplication+MPAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF5BE6C1BF33E3000048505 /* NSApplication+MPAdditions.m */; };
4CF6653820E67A140008A25C /* PluginDataView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4CF6653A20E67A140008A25C /* PluginDataView.xib */; }; 4CF6653820E67A140008A25C /* PluginDataView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4CF6653A20E67A140008A25C /* PluginDataView.xib */; };
@@ -326,6 +306,7 @@
6021FE9818E1650F00C3BC51 /* DatabaseSettingsWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6021FE9A18E1650F00C3BC51 /* DatabaseSettingsWindow.xib */; }; 6021FE9818E1650F00C3BC51 /* DatabaseSettingsWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6021FE9A18E1650F00C3BC51 /* DatabaseSettingsWindow.xib */; };
7837112C225540D1009BD28D /* PluginRepositoryBrowserView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7837112E225540D1009BD28D /* PluginRepositoryBrowserView.xib */; }; 7837112C225540D1009BD28D /* PluginRepositoryBrowserView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7837112E225540D1009BD28D /* PluginRepositoryBrowserView.xib */; };
78E1F8B022E3A5D600E738AE /* AutotypeDoctorReportViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 78E1F8B222E3A5D600E738AE /* AutotypeDoctorReportViewController.xib */; }; 78E1F8B022E3A5D600E738AE /* AutotypeDoctorReportViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 78E1F8B222E3A5D600E738AE /* AutotypeDoctorReportViewController.xib */; };
AF105CF325FE5B2000C4FD3C /* MPTouchIdCompositeKeyStore.m in Sources */ = {isa = PBXBuildFile; fileRef = AF105CF125FE5B2000C4FD3C /* MPTouchIdCompositeKeyStore.m */; };
FA13910C1F9CD9EB0033D256 /* Localizable.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = FA13910A1F9CD9EB0033D256 /* Localizable.stringsdict */; }; FA13910C1F9CD9EB0033D256 /* Localizable.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = FA13910A1F9CD9EB0033D256 /* Localizable.stringsdict */; };
FA9FD3271FB5E8F4003CEDD6 /* AutotypeCandidateSelectionView.xib in Resources */ = {isa = PBXBuildFile; fileRef = FA9FD3291FB5E8F4003CEDD6 /* AutotypeCandidateSelectionView.xib */; }; FA9FD3271FB5E8F4003CEDD6 /* AutotypeCandidateSelectionView.xib in Resources */ = {isa = PBXBuildFile; fileRef = FA9FD3291FB5E8F4003CEDD6 /* AutotypeCandidateSelectionView.xib */; };
FA9FD32C1FB5EDD3003CEDD6 /* AutotypeBuilderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = FA9FD32E1FB5EDD3003CEDD6 /* AutotypeBuilderView.xib */; }; FA9FD32C1FB5EDD3003CEDD6 /* AutotypeBuilderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = FA9FD32E1FB5EDD3003CEDD6 /* AutotypeBuilderView.xib */; };
@@ -461,6 +442,7 @@
4C272A2B2224871900186EEC /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/PickfieldView.strings; sourceTree = "<group>"; }; 4C272A2B2224871900186EEC /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/PickfieldView.strings; sourceTree = "<group>"; };
4C2892A5257103F9003C7732 /* MPTOTPViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPTOTPViewController.h; sourceTree = "<group>"; }; 4C2892A5257103F9003C7732 /* MPTOTPViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPTOTPViewController.h; sourceTree = "<group>"; };
4C2892A6257103F9003C7732 /* MPTOTPViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPTOTPViewController.m; sourceTree = "<group>"; }; 4C2892A6257103F9003C7732 /* MPTOTPViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPTOTPViewController.m; sourceTree = "<group>"; };
4C2892A7257103F9003C7732 /* MPTOTPViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MPTOTPViewController.xib; sourceTree = "<group>"; };
4C2B0B7419F66F6400E48913 /* MPTargetNodeResolving.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPTargetNodeResolving.h; sourceTree = "<group>"; }; 4C2B0B7419F66F6400E48913 /* MPTargetNodeResolving.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPTargetNodeResolving.h; sourceTree = "<group>"; };
4C2E381A16D11FF900037A9D /* 03_ServerTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 03_ServerTemplate.pdf; sourceTree = "<group>"; }; 4C2E381A16D11FF900037A9D /* 03_ServerTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 03_ServerTemplate.pdf; sourceTree = "<group>"; };
4C2E381B16D11FF900037A9D /* 04_KlipperTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 04_KlipperTemplate.pdf; sourceTree = "<group>"; }; 4C2E381B16D11FF900037A9D /* 04_KlipperTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 04_KlipperTemplate.pdf; sourceTree = "<group>"; };
@@ -479,6 +461,7 @@
4C35663F25824C0A00CAB95B /* NSImage+MPQRCode.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSImage+MPQRCode.m"; sourceTree = "<group>"; }; 4C35663F25824C0A00CAB95B /* NSImage+MPQRCode.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSImage+MPQRCode.m"; sourceTree = "<group>"; };
4C356642258259AA00CAB95B /* MPTOTPSetupViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPTOTPSetupViewController.h; sourceTree = "<group>"; }; 4C356642258259AA00CAB95B /* MPTOTPSetupViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPTOTPSetupViewController.h; sourceTree = "<group>"; };
4C356643258259AA00CAB95B /* MPTOTPSetupViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPTOTPSetupViewController.m; sourceTree = "<group>"; }; 4C356643258259AA00CAB95B /* MPTOTPSetupViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPTOTPSetupViewController.m; sourceTree = "<group>"; };
4C356644258259AA00CAB95B /* MPTOTPSetupViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MPTOTPSetupViewController.xib; sourceTree = "<group>"; };
4C3666401787327E00B249F1 /* MPDocument+Attachments.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MPDocument+Attachments.m"; sourceTree = "<group>"; }; 4C3666401787327E00B249F1 /* MPDocument+Attachments.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MPDocument+Attachments.m"; sourceTree = "<group>"; };
4C370EFC215B76CB00703AAE /* MPOutlineTableCellView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPOutlineTableCellView.h; sourceTree = "<group>"; }; 4C370EFC215B76CB00703AAE /* MPOutlineTableCellView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPOutlineTableCellView.h; sourceTree = "<group>"; };
4C370EFD215B76CB00703AAE /* MPOutlineTableCellView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPOutlineTableCellView.m; sourceTree = "<group>"; }; 4C370EFD215B76CB00703AAE /* MPOutlineTableCellView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPOutlineTableCellView.m; sourceTree = "<group>"; };
@@ -568,7 +551,6 @@
4C45FB2F178E0CE20010007D /* MPTestDocument.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPTestDocument.m; sourceTree = "<group>"; }; 4C45FB2F178E0CE20010007D /* MPTestDocument.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPTestDocument.m; sourceTree = "<group>"; };
4C46B88317063A070046109A /* NSString+MPPasswordCreation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+MPPasswordCreation.h"; sourceTree = "<group>"; }; 4C46B88317063A070046109A /* NSString+MPPasswordCreation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+MPPasswordCreation.h"; sourceTree = "<group>"; };
4C46B88417063A070046109A /* NSString+MPPasswordCreation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+MPPasswordCreation.m"; sourceTree = "<group>"; }; 4C46B88417063A070046109A /* NSString+MPPasswordCreation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+MPPasswordCreation.m"; sourceTree = "<group>"; };
4C47090727184AC8003777EB /* MPInspectorEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPInspectorEditor.h; sourceTree = "<group>"; };
4C473A8518AFD7250073FD2E /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; 4C473A8518AFD7250073FD2E /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
4C49CFD424252389004092E7 /* KPKEntry+MPTags.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "KPKEntry+MPTags.h"; sourceTree = "<group>"; }; 4C49CFD424252389004092E7 /* KPKEntry+MPTags.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "KPKEntry+MPTags.h"; sourceTree = "<group>"; };
4C49CFD524252389004092E7 /* KPKEntry+MPTags.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "KPKEntry+MPTags.m"; sourceTree = "<group>"; }; 4C49CFD524252389004092E7 /* KPKEntry+MPTags.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "KPKEntry+MPTags.m"; sourceTree = "<group>"; };
@@ -588,22 +570,12 @@
4C4BE0C5257E9B91000AEA8C /* MPNotificationPreferencesController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPNotificationPreferencesController.h; sourceTree = "<group>"; }; 4C4BE0C5257E9B91000AEA8C /* MPNotificationPreferencesController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPNotificationPreferencesController.h; sourceTree = "<group>"; };
4C4BE0C6257E9B91000AEA8C /* MPNotificationPreferencesController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPNotificationPreferencesController.m; sourceTree = "<group>"; }; 4C4BE0C6257E9B91000AEA8C /* MPNotificationPreferencesController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPNotificationPreferencesController.m; sourceTree = "<group>"; };
4C4BE0C7257E9B91000AEA8C /* MPNotificationPreferencesController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MPNotificationPreferencesController.xib; sourceTree = "<group>"; }; 4C4BE0C7257E9B91000AEA8C /* MPNotificationPreferencesController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MPNotificationPreferencesController.xib; sourceTree = "<group>"; };
4C4F11FC27D9055300ED5495 /* AutotypeOverlay.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AutotypeOverlay.app; sourceTree = BUILT_PRODUCTS_DIR; };
4C4F11FE27D9055300ED5495 /* AOAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AOAppDelegate.h; sourceTree = "<group>"; };
4C4F11FF27D9055300ED5495 /* AOAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AOAppDelegate.m; sourceTree = "<group>"; };
4C4F120127D9055600ED5495 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
4C4F120427D9055600ED5495 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
4C4F120627D9055600ED5495 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
4C4F120827D9055600ED5495 /* AutotypeOverlay.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = AutotypeOverlay.entitlements; sourceTree = "<group>"; };
4C4F120C27D905CE00ED5495 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
4C4F72CF18DF704400E8D378 /* DDHotKeyTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; name = DDHotKeyTextField.m; path = DDHotKey/DDHotKeyTextField.m; sourceTree = "<group>"; tabWidth = 4; }; 4C4F72CF18DF704400E8D378 /* DDHotKeyTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; name = DDHotKeyTextField.m; path = DDHotKey/DDHotKeyTextField.m; sourceTree = "<group>"; tabWidth = 4; };
4C4F72D018DF704400E8D378 /* DDHotKeyTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DDHotKeyTextField.h; path = DDHotKey/DDHotKeyTextField.h; sourceTree = "<group>"; }; 4C4F72D018DF704400E8D378 /* DDHotKeyTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DDHotKeyTextField.h; path = DDHotKey/DDHotKeyTextField.h; sourceTree = "<group>"; };
4C4FCE13177CFE6B00BBF7AE /* MPCustomFieldTableCellView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPCustomFieldTableCellView.h; sourceTree = "<group>"; }; 4C4FCE13177CFE6B00BBF7AE /* MPCustomFieldTableCellView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPCustomFieldTableCellView.h; sourceTree = "<group>"; };
4C4FCE14177CFE6B00BBF7AE /* MPCustomFieldTableCellView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPCustomFieldTableCellView.m; sourceTree = "<group>"; }; 4C4FCE14177CFE6B00BBF7AE /* MPCustomFieldTableCellView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPCustomFieldTableCellView.m; sourceTree = "<group>"; };
4C50CC021F6C18830095629D /* MPCollectionViewItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPCollectionViewItem.h; sourceTree = "<group>"; }; 4C50CC021F6C18830095629D /* MPCollectionViewItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPCollectionViewItem.h; sourceTree = "<group>"; };
4C50CC031F6C18830095629D /* MPCollectionViewItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPCollectionViewItem.m; sourceTree = "<group>"; }; 4C50CC031F6C18830095629D /* MPCollectionViewItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPCollectionViewItem.m; sourceTree = "<group>"; };
4C52197F273D192C00C719D3 /* MPOpenURLHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPOpenURLHandler.h; sourceTree = "<group>"; };
4C521980273D192C00C719D3 /* MPOpenURLHandler.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPOpenURLHandler.m; sourceTree = "<group>"; };
4C52A88B1788628B00868229 /* 06_BlockDeviceTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 06_BlockDeviceTemplate.pdf; sourceTree = "<group>"; }; 4C52A88B1788628B00868229 /* 06_BlockDeviceTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 06_BlockDeviceTemplate.pdf; sourceTree = "<group>"; };
4C52A88C1788628B00868229 /* 13_KeysTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 13_KeysTemplate.pdf; sourceTree = "<group>"; }; 4C52A88C1788628B00868229 /* 13_KeysTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 13_KeysTemplate.pdf; sourceTree = "<group>"; };
4C52A88D1788628B00868229 /* 18_DisplayTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 18_DisplayTemplate.pdf; sourceTree = "<group>"; }; 4C52A88D1788628B00868229 /* 18_DisplayTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 18_DisplayTemplate.pdf; sourceTree = "<group>"; };
@@ -622,9 +594,6 @@
4C58A4A12192EC1600B13370 /* NSIndexPath+MPAdditions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSIndexPath+MPAdditions.h"; sourceTree = "<group>"; }; 4C58A4A12192EC1600B13370 /* NSIndexPath+MPAdditions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSIndexPath+MPAdditions.h"; sourceTree = "<group>"; };
4C58A4A22192EC1600B13370 /* NSIndexPath+MPAdditions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSIndexPath+MPAdditions.m"; sourceTree = "<group>"; }; 4C58A4A22192EC1600B13370 /* NSIndexPath+MPAdditions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSIndexPath+MPAdditions.m"; sourceTree = "<group>"; };
4C58A4A72192EEBE00B13370 /* MPTestIndexPathAdditions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPTestIndexPathAdditions.m; sourceTree = "<group>"; }; 4C58A4A72192EEBE00B13370 /* MPTestIndexPathAdditions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPTestIndexPathAdditions.m; sourceTree = "<group>"; };
4C59AC9A2722C12200F54B20 /* MPNodeExpirationViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPNodeExpirationViewController.h; sourceTree = "<group>"; };
4C59AC9B2722C12200F54B20 /* MPNodeExpirationViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPNodeExpirationViewController.m; sourceTree = "<group>"; };
4C59AC9C2722C12200F54B20 /* MPNodeExpirationViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MPNodeExpirationViewController.xib; sourceTree = "<group>"; };
4C5A11FB1708DE8700223D8A /* MPPasswordCreatorViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPPasswordCreatorViewController.h; sourceTree = "<group>"; }; 4C5A11FB1708DE8700223D8A /* MPPasswordCreatorViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPPasswordCreatorViewController.h; sourceTree = "<group>"; };
4C5A11FC1708DE8700223D8A /* MPPasswordCreatorViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPPasswordCreatorViewController.m; sourceTree = "<group>"; }; 4C5A11FC1708DE8700223D8A /* MPPasswordCreatorViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPPasswordCreatorViewController.m; sourceTree = "<group>"; };
4C5ADC3017830B09004E1E8D /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InspectorView.strings; sourceTree = "<group>"; }; 4C5ADC3017830B09004E1E8D /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InspectorView.strings; sourceTree = "<group>"; };
@@ -786,17 +755,8 @@
4C8F0C771FD05A6A00BE157F /* NSString+MPPrettyPasswordDisplay.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSString+MPPrettyPasswordDisplay.h"; sourceTree = "<group>"; }; 4C8F0C771FD05A6A00BE157F /* NSString+MPPrettyPasswordDisplay.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSString+MPPrettyPasswordDisplay.h"; sourceTree = "<group>"; };
4C8F0C781FD05A6A00BE157F /* NSString+MPPrettyPasswordDisplay.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSString+MPPrettyPasswordDisplay.m"; sourceTree = "<group>"; }; 4C8F0C781FD05A6A00BE157F /* NSString+MPPrettyPasswordDisplay.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSString+MPPrettyPasswordDisplay.m"; sourceTree = "<group>"; };
4C8FB9FA1FC2D0EF003691AA /* MPPlugin_Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPPlugin_Private.h; sourceTree = "<group>"; }; 4C8FB9FA1FC2D0EF003691AA /* MPPlugin_Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPPlugin_Private.h; sourceTree = "<group>"; };
4C9328C9273E6A38000DCBEE /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MPTOTPSetupViewController.xib; sourceTree = "<group>"; };
4C9328CD273E6A5F000DCBEE /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/MPTOTPSetupViewController.strings"; sourceTree = "<group>"; };
4C9328CF273E6A63000DCBEE /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/MPTOTPSetupViewController.strings; sourceTree = "<group>"; };
4C9328D1273E6A83000DCBEE /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MPTOTPViewController.xib; sourceTree = "<group>"; };
4C9328D4273E6A85000DCBEE /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/MPTOTPViewController.strings"; sourceTree = "<group>"; };
4C9328D6273E6A85000DCBEE /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/MPTOTPViewController.strings; sourceTree = "<group>"; };
4C978E0C19AE54AB003067DF /* MPFlagsHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPFlagsHelper.m; sourceTree = "<group>"; }; 4C978E0C19AE54AB003067DF /* MPFlagsHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPFlagsHelper.m; sourceTree = "<group>"; };
4C97CCEF1FA727DC00E58F8C /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; }; 4C97CCEF1FA727DC00E58F8C /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
4C98A6C927CFAB1800CD912F /* MPNodeIconViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPNodeIconViewController.h; sourceTree = "<group>"; };
4C98A6CA27CFAB1900CD912F /* MPNodeIconViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPNodeIconViewController.m; sourceTree = "<group>"; };
4C98A6CB27CFAB1900CD912F /* MPNodeIconViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MPNodeIconViewController.xib; sourceTree = "<group>"; };
4C9BFFF91FD19B5400264B16 /* MPPrettyPasswordTransformer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPPrettyPasswordTransformer.h; sourceTree = "<group>"; }; 4C9BFFF91FD19B5400264B16 /* MPPrettyPasswordTransformer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPPrettyPasswordTransformer.h; sourceTree = "<group>"; };
4C9BFFFA1FD19B5400264B16 /* MPPrettyPasswordTransformer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPPrettyPasswordTransformer.m; sourceTree = "<group>"; }; 4C9BFFFA1FD19B5400264B16 /* MPPrettyPasswordTransformer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPPrettyPasswordTransformer.m; sourceTree = "<group>"; };
4C9FE47423703DA50096A5EA /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; }; 4C9FE47423703DA50096A5EA /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
@@ -847,9 +807,6 @@
4CBA2AB617074B59006D8139 /* MPSettingsHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPSettingsHelper.h; sourceTree = "<group>"; }; 4CBA2AB617074B59006D8139 /* MPSettingsHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPSettingsHelper.h; sourceTree = "<group>"; };
4CBA2AB917074C07006D8139 /* MPSettingsHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPSettingsHelper.m; sourceTree = "<group>"; }; 4CBA2AB917074C07006D8139 /* MPSettingsHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPSettingsHelper.m; sourceTree = "<group>"; };
4CBC5DDB23C61C8300D14B92 /* TransformerKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = TransformerKit.framework; path = Carthage/Build/Mac/TransformerKit.framework; sourceTree = "<group>"; }; 4CBC5DDB23C61C8300D14B92 /* TransformerKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = TransformerKit.framework; path = Carthage/Build/Mac/TransformerKit.framework; sourceTree = "<group>"; };
4CC0192B271836CD00459789 /* MPEntryAttributeViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPEntryAttributeViewController.h; sourceTree = "<group>"; };
4CC0192C271836CD00459789 /* MPEntryAttributeViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPEntryAttributeViewController.m; sourceTree = "<group>"; };
4CC0192D271836CD00459789 /* MPEntryAttributeViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MPEntryAttributeViewController.xib; sourceTree = "<group>"; };
4CC0D2CC17974A47000B4BDA /* MPCustomFieldTableViewDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPCustomFieldTableViewDelegate.h; sourceTree = "<group>"; }; 4CC0D2CC17974A47000B4BDA /* MPCustomFieldTableViewDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPCustomFieldTableViewDelegate.h; sourceTree = "<group>"; };
4CC0D2CD17974A47000B4BDA /* MPCustomFieldTableViewDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPCustomFieldTableViewDelegate.m; sourceTree = "<group>"; }; 4CC0D2CD17974A47000B4BDA /* MPCustomFieldTableViewDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPCustomFieldTableViewDelegate.m; sourceTree = "<group>"; };
4CC0D2CF17974A5A000B4BDA /* MPAttachmentTableViewDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPAttachmentTableViewDelegate.h; sourceTree = "<group>"; }; 4CC0D2CF17974A5A000B4BDA /* MPAttachmentTableViewDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPAttachmentTableViewDelegate.h; sourceTree = "<group>"; };
@@ -861,8 +818,6 @@
4CC663E5216F7A7100E33965 /* MPPluginRepositoryBrowserViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPPluginRepositoryBrowserViewController.m; sourceTree = "<group>"; }; 4CC663E5216F7A7100E33965 /* MPPluginRepositoryBrowserViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPPluginRepositoryBrowserViewController.m; sourceTree = "<group>"; };
4CC6DB7817D23719002C6091 /* KPKNode+IconImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "KPKNode+IconImage.h"; sourceTree = "<group>"; }; 4CC6DB7817D23719002C6091 /* KPKNode+IconImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "KPKNode+IconImage.h"; sourceTree = "<group>"; };
4CC6DB7917D23719002C6091 /* KPKNode+IconImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "KPKNode+IconImage.m"; sourceTree = "<group>"; }; 4CC6DB7917D23719002C6091 /* KPKNode+IconImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "KPKNode+IconImage.m"; sourceTree = "<group>"; };
4CC91B6927D7E7E6001E9517 /* MPInspectorEditorView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPInspectorEditorView.h; sourceTree = "<group>"; };
4CC91B6A27D7E7E6001E9517 /* MPInspectorEditorView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPInspectorEditorView.m; sourceTree = "<group>"; };
4CCA7EEC1797866F00B0B55E /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/GeneralPreferences.strings; sourceTree = "<group>"; }; 4CCA7EEC1797866F00B0B55E /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/GeneralPreferences.strings; sourceTree = "<group>"; };
4CCA8E9A18D91ED9001A6754 /* Quartz.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Quartz.framework; path = System/Library/Frameworks/Quartz.framework; sourceTree = SDKROOT; }; 4CCA8E9A18D91ED9001A6754 /* Quartz.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Quartz.framework; path = System/Library/Frameworks/Quartz.framework; sourceTree = SDKROOT; };
4CCCE7FF1D75CA48006AA951 /* MPArrayController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPArrayController.h; sourceTree = "<group>"; }; 4CCCE7FF1D75CA48006AA951 /* MPArrayController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPArrayController.h; sourceTree = "<group>"; };
@@ -912,15 +867,6 @@
4CE39AC316ECE4F7000FE29D /* MPIconImageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPIconImageView.m; sourceTree = "<group>"; }; 4CE39AC316ECE4F7000FE29D /* MPIconImageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPIconImageView.m; sourceTree = "<group>"; };
4CE3E62417AB0D2D00D9E4B4 /* MPAttachmentTableDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPAttachmentTableDataSource.h; sourceTree = "<group>"; }; 4CE3E62417AB0D2D00D9E4B4 /* MPAttachmentTableDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPAttachmentTableDataSource.h; sourceTree = "<group>"; };
4CE3E62517AB0D2D00D9E4B4 /* MPAttachmentTableDataSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPAttachmentTableDataSource.m; sourceTree = "<group>"; }; 4CE3E62517AB0D2D00D9E4B4 /* MPAttachmentTableDataSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPAttachmentTableDataSource.m; sourceTree = "<group>"; };
4CE4FF9F2746953A00789F75 /* MPAdvancedDatabaseSettingsViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPAdvancedDatabaseSettingsViewController.h; sourceTree = "<group>"; };
4CE4FFA02746953A00789F75 /* MPAdvancedDatabaseSettingsViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPAdvancedDatabaseSettingsViewController.m; sourceTree = "<group>"; };
4CE4FFA12746953A00789F75 /* MPAdvancedDatabaseSettingsViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MPAdvancedDatabaseSettingsViewController.xib; sourceTree = "<group>"; };
4CE4FFA42746955E00789F75 /* MPSecurityDatabaseSettingsViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPSecurityDatabaseSettingsViewController.h; sourceTree = "<group>"; };
4CE4FFA52746955E00789F75 /* MPSecurityDatabaseSettingsViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPSecurityDatabaseSettingsViewController.m; sourceTree = "<group>"; };
4CE4FFA62746955E00789F75 /* MPSecurityDatabaseSettingsViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MPSecurityDatabaseSettingsViewController.xib; sourceTree = "<group>"; };
4CE4FFA92746956F00789F75 /* MPGeneralDatabaseSettingsViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPGeneralDatabaseSettingsViewController.h; sourceTree = "<group>"; };
4CE4FFAA2746956F00789F75 /* MPGeneralDatabaseSettingsViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPGeneralDatabaseSettingsViewController.m; sourceTree = "<group>"; };
4CE4FFAB2746956F00789F75 /* MPGeneralDatabaseSettingsViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MPGeneralDatabaseSettingsViewController.xib; sourceTree = "<group>"; };
4CE501321BBC47F500FB819D /* MPTagsTokenFieldDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPTagsTokenFieldDelegate.h; sourceTree = "<group>"; }; 4CE501321BBC47F500FB819D /* MPTagsTokenFieldDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPTagsTokenFieldDelegate.h; sourceTree = "<group>"; };
4CE501331BBC47F500FB819D /* MPTagsTokenFieldDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPTagsTokenFieldDelegate.m; sourceTree = "<group>"; }; 4CE501331BBC47F500FB819D /* MPTagsTokenFieldDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPTagsTokenFieldDelegate.m; sourceTree = "<group>"; };
4CE5B548173AFBA700207B39 /* MPDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPDocument.h; sourceTree = "<group>"; }; 4CE5B548173AFBA700207B39 /* MPDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPDocument.h; sourceTree = "<group>"; };
@@ -936,9 +882,6 @@
4CEE46DC181C301D006BF1E5 /* MPAutotypeDaemon.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPAutotypeDaemon.m; sourceTree = "<group>"; }; 4CEE46DC181C301D006BF1E5 /* MPAutotypeDaemon.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPAutotypeDaemon.m; sourceTree = "<group>"; };
4CEED1C417D7BD0E007180F1 /* NSError+Messages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSError+Messages.h"; sourceTree = "<group>"; }; 4CEED1C417D7BD0E007180F1 /* NSError+Messages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSError+Messages.h"; sourceTree = "<group>"; };
4CEED1C517D7BD0E007180F1 /* NSError+Messages.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSError+Messages.m"; sourceTree = "<group>"; }; 4CEED1C517D7BD0E007180F1 /* NSError+Messages.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSError+Messages.m"; sourceTree = "<group>"; };
4CF13A9427E0D5D800E3297A /* MPNodeTagViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPNodeTagViewController.h; sourceTree = "<group>"; };
4CF13A9527E0D5D800E3297A /* MPNodeTagViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPNodeTagViewController.m; sourceTree = "<group>"; };
4CF13A9627E0D5D800E3297A /* MPNodeTagViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MPNodeTagViewController.xib; sourceTree = "<group>"; };
4CF14962224B623700D1CE1C /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = Base; path = Base.lproj/Credits.rtf; sourceTree = "<group>"; }; 4CF14962224B623700D1CE1C /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = Base; path = Base.lproj/Credits.rtf; sourceTree = "<group>"; };
4CF29BF317879D0000851B60 /* 26_FileSaveTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 26_FileSaveTemplate.pdf; sourceTree = "<group>"; }; 4CF29BF317879D0000851B60 /* 26_FileSaveTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 26_FileSaveTemplate.pdf; sourceTree = "<group>"; };
4CF5BE6B1BF33E3000048505 /* NSApplication+MPAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSApplication+MPAdditions.h"; sourceTree = "<group>"; }; 4CF5BE6B1BF33E3000048505 /* NSApplication+MPAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSApplication+MPAdditions.h"; sourceTree = "<group>"; };
@@ -999,39 +942,6 @@
60ECAD221F12231B00EA9DB3 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/PluginPreferences.strings"; sourceTree = "<group>"; }; 60ECAD221F12231B00EA9DB3 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/PluginPreferences.strings"; sourceTree = "<group>"; };
60ECAD251F12253C00EA9DB3 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/WorkflowPreferences.strings"; sourceTree = "<group>"; }; 60ECAD251F12253C00EA9DB3 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/WorkflowPreferences.strings"; sourceTree = "<group>"; };
60ECAD271F12262400EA9DB3 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/IntegrationPreferences.strings"; sourceTree = "<group>"; }; 60ECAD271F12262400EA9DB3 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/IntegrationPreferences.strings"; sourceTree = "<group>"; };
69385E2F274ACFDE001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/DatabaseSettingsWindow.strings; sourceTree = "<group>"; };
69385E30274ACFDE001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/DuplicateEntryOptionsWindow.strings; sourceTree = "<group>"; };
69385E31274ACFDE001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/PasswordEditWindow.strings; sourceTree = "<group>"; };
69385E32274ACFDE001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/SavePanelAccessoryView.strings; sourceTree = "<group>"; };
69385E33274ACFDE001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/EntryInspectorView.strings; sourceTree = "<group>"; };
69385E34274ACFDF001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/GroupInspectorView.strings; sourceTree = "<group>"; };
69385E35274ACFDF001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/InspectorView.strings; sourceTree = "<group>"; };
69385E37274ACFDF001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/GeneralPreferences.strings; sourceTree = "<group>"; };
69385E38274ACFDF001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/IntegrationPreferences.strings; sourceTree = "<group>"; };
69385E39274ACFDF001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/PluginPreferences.strings; sourceTree = "<group>"; };
69385E3A274ACFDF001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/PluginRepositoryBrowserView.strings; sourceTree = "<group>"; };
69385E3B274ACFDF001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/UpdatePreferences.strings; sourceTree = "<group>"; };
69385E3C274ACFDF001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/WorkflowPreferences.strings; sourceTree = "<group>"; };
69385E3D274ACFDF001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/MPTOTPSetupViewController.strings; sourceTree = "<group>"; };
69385E3E274ACFDF001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/AutotypeBuilderView.strings; sourceTree = "<group>"; };
69385E3F274ACFDF001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/AutotypeCandidateSelectionView.strings; sourceTree = "<group>"; };
69385E40274ACFDF001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/AutotypeDoctorReportViewController.strings; sourceTree = "<group>"; };
69385E41274ACFE0001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/ContextBar.strings; sourceTree = "<group>"; };
69385E42274ACFE0001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/DatePickingView.strings; sourceTree = "<group>"; };
69385E43274ACFE0001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/IconSelection.strings; sourceTree = "<group>"; };
69385E44274ACFE0001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/PasswordCreatorView.strings; sourceTree = "<group>"; };
69385E45274ACFE0001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/PasswordInputView.strings; sourceTree = "<group>"; };
69385E46274ACFE0001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/PickcharsView.strings; sourceTree = "<group>"; };
69385E47274ACFE0001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/PickfieldView.strings; sourceTree = "<group>"; };
69385E48274ACFE0001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/PluginDataView.strings; sourceTree = "<group>"; };
69385E49274ACFE0001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/ReferenceBuilderView.strings; sourceTree = "<group>"; };
69385E4A274ACFE0001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/WelcomeView.strings; sourceTree = "<group>"; };
69385E4B274ACFE0001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/OpenPanelAccessoryView.strings; sourceTree = "<group>"; };
69385E4C274ACFE0001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/MainMenu.strings; sourceTree = "<group>"; };
69385E4D274ACFE0001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = cs; path = cs.lproj/Localizable.stringsdict; sourceTree = "<group>"; };
69385E4E274ACFE0001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/Localizable.strings; sourceTree = "<group>"; };
69385E50274ACFE1001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/InfoPlist.strings; sourceTree = "<group>"; };
69385E51274ACFE1001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/InfoPlist.strings; sourceTree = "<group>"; };
6A74B0622076F4B30049BC29 /* sv-SE */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "sv-SE"; path = "sv-SE.lproj/DatabaseSettingsWindow.strings"; sourceTree = "<group>"; }; 6A74B0622076F4B30049BC29 /* sv-SE */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "sv-SE"; path = "sv-SE.lproj/DatabaseSettingsWindow.strings"; sourceTree = "<group>"; };
6A74B0632076F4B30049BC29 /* sv-SE */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "sv-SE"; path = "sv-SE.lproj/PasswordEditWindow.strings"; sourceTree = "<group>"; }; 6A74B0632076F4B30049BC29 /* sv-SE */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "sv-SE"; path = "sv-SE.lproj/PasswordEditWindow.strings"; sourceTree = "<group>"; };
6A74B0642076F4B40049BC29 /* sv-SE */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "sv-SE"; path = "sv-SE.lproj/DuplicateEntryOptionsWindow.strings"; sourceTree = "<group>"; }; 6A74B0642076F4B40049BC29 /* sv-SE */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "sv-SE"; path = "sv-SE.lproj/DuplicateEntryOptionsWindow.strings"; sourceTree = "<group>"; };
@@ -1134,6 +1044,8 @@
ABE8662E2316617500201125 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.stringsdict"; sourceTree = "<group>"; }; ABE8662E2316617500201125 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.stringsdict"; sourceTree = "<group>"; };
ABE8662F2316617500201125 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/AutotypeDoctorReportViewController.strings"; sourceTree = "<group>"; }; ABE8662F2316617500201125 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/AutotypeDoctorReportViewController.strings"; sourceTree = "<group>"; };
ABE86630231662D200201125 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/PluginDataView.strings"; sourceTree = "<group>"; }; ABE86630231662D200201125 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/PluginDataView.strings"; sourceTree = "<group>"; };
AF105CF125FE5B2000C4FD3C /* MPTouchIdCompositeKeyStore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPTouchIdCompositeKeyStore.m; sourceTree = "<group>"; };
AF105CF225FE5B2000C4FD3C /* MPTouchIdCompositeKeyStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPTouchIdCompositeKeyStore.h; sourceTree = "<group>"; };
BB3E050C1FE9D1CA00F0B46F /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/AutotypeCandidateSelectionView.strings; sourceTree = "<group>"; }; BB3E050C1FE9D1CA00F0B46F /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/AutotypeCandidateSelectionView.strings; sourceTree = "<group>"; };
BB3E050D1FE9D1CB00F0B46F /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = nl; path = nl.lproj/Localizable.stringsdict; sourceTree = "<group>"; }; BB3E050D1FE9D1CB00F0B46F /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = nl; path = nl.lproj/Localizable.stringsdict; sourceTree = "<group>"; };
BB3E050E1FE9D1CC00F0B46F /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/ReferenceBuilderView.strings; sourceTree = "<group>"; }; BB3E050E1FE9D1CC00F0B46F /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/ReferenceBuilderView.strings; sourceTree = "<group>"; };
@@ -1230,13 +1142,6 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
4C4F11F927D9055300ED5495 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
4C77E35F15B84A240093A587 /* Frameworks */ = { 4C77E35F15B84A240093A587 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase; isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
@@ -1297,8 +1202,6 @@
4CFC53BE16E94729007396BE /* MPShadowBox.m */, 4CFC53BE16E94729007396BE /* MPShadowBox.m */,
4C4A100D176286FD00BBF2CA /* MPTableView.h */, 4C4A100D176286FD00BBF2CA /* MPTableView.h */,
4C4A100E176286FD00BBF2CA /* MPTableView.m */, 4C4A100E176286FD00BBF2CA /* MPTableView.m */,
4CC91B6927D7E7E6001E9517 /* MPInspectorEditorView.h */,
4CC91B6A27D7E7E6001E9517 /* MPInspectorEditorView.m */,
); );
name = Views; name = Views;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -1398,8 +1301,8 @@
4C4B7EF717A4B335000234C7 /* MPUniqueCharactersFormatter.m */, 4C4B7EF717A4B335000234C7 /* MPUniqueCharactersFormatter.m */,
4C3C4EAD18D7039300153127 /* MPValueTransformerHelper.h */, 4C3C4EAD18D7039300153127 /* MPValueTransformerHelper.h */,
4C3C4EAE18D7039300153127 /* MPValueTransformerHelper.m */, 4C3C4EAE18D7039300153127 /* MPValueTransformerHelper.m */,
4C52197F273D192C00C719D3 /* MPOpenURLHandler.h */, AF105CF225FE5B2000C4FD3C /* MPTouchIdCompositeKeyStore.h */,
4C521980273D192C00C719D3 /* MPOpenURLHandler.m */, AF105CF125FE5B2000C4FD3C /* MPTouchIdCompositeKeyStore.m */,
); );
name = Helper; name = Helper;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -1534,37 +1437,11 @@
4C76156F1764C0E20015A1A6 /* InspectorView.xib */, 4C76156F1764C0E20015A1A6 /* InspectorView.xib */,
4C2892A5257103F9003C7732 /* MPTOTPViewController.h */, 4C2892A5257103F9003C7732 /* MPTOTPViewController.h */,
4C2892A6257103F9003C7732 /* MPTOTPViewController.m */, 4C2892A6257103F9003C7732 /* MPTOTPViewController.m */,
4C9328D2273E6A83000DCBEE /* MPTOTPViewController.xib */, 4C2892A7257103F9003C7732 /* MPTOTPViewController.xib */,
4CC0192B271836CD00459789 /* MPEntryAttributeViewController.h */,
4CC0192C271836CD00459789 /* MPEntryAttributeViewController.m */,
4CC0192D271836CD00459789 /* MPEntryAttributeViewController.xib */,
4C59AC9A2722C12200F54B20 /* MPNodeExpirationViewController.h */,
4C59AC9B2722C12200F54B20 /* MPNodeExpirationViewController.m */,
4C59AC9C2722C12200F54B20 /* MPNodeExpirationViewController.xib */,
4C98A6C927CFAB1800CD912F /* MPNodeIconViewController.h */,
4C98A6CA27CFAB1900CD912F /* MPNodeIconViewController.m */,
4C98A6CB27CFAB1900CD912F /* MPNodeIconViewController.xib */,
4CF13A9427E0D5D800E3297A /* MPNodeTagViewController.h */,
4CF13A9527E0D5D800E3297A /* MPNodeTagViewController.m */,
4CF13A9627E0D5D800E3297A /* MPNodeTagViewController.xib */,
); );
name = Inspector; name = Inspector;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
4C4F11FD27D9055300ED5495 /* AutotypeOverlay */ = {
isa = PBXGroup;
children = (
4C4F120C27D905CE00ED5495 /* Info.plist */,
4C4F11FE27D9055300ED5495 /* AOAppDelegate.h */,
4C4F11FF27D9055300ED5495 /* AOAppDelegate.m */,
4C4F120127D9055600ED5495 /* Assets.xcassets */,
4C4F120327D9055600ED5495 /* MainMenu.xib */,
4C4F120627D9055600ED5495 /* main.m */,
4C4F120827D9055600ED5495 /* AutotypeOverlay.entitlements */,
);
path = AutotypeOverlay;
sourceTree = "<group>";
};
4C5133861FA0C32C00C94C73 /* Accessory */ = { 4C5133861FA0C32C00C94C73 /* Accessory */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
@@ -1683,7 +1560,6 @@
4C00E33917D8FA3B00F37192 /* DDHotKey */, 4C00E33917D8FA3B00F37192 /* DDHotKey */,
4C77E36C15B84A240093A587 /* MacPass */, 4C77E36C15B84A240093A587 /* MacPass */,
4C45FB1E178E09ED0010007D /* MacPassTests */, 4C45FB1E178E09ED0010007D /* MacPassTests */,
4C4F11FD27D9055300ED5495 /* AutotypeOverlay */,
4C77E36515B84A240093A587 /* Frameworks */, 4C77E36515B84A240093A587 /* Frameworks */,
4C77E36315B84A240093A587 /* Products */, 4C77E36315B84A240093A587 /* Products */,
); );
@@ -1696,7 +1572,6 @@
children = ( children = (
4C77E36215B84A240093A587 /* MacPass.app */, 4C77E36215B84A240093A587 /* MacPass.app */,
4C45FB1A178E09ED0010007D /* MacPassTests.xctest */, 4C45FB1A178E09ED0010007D /* MacPassTests.xctest */,
4C4F11FC27D9055300ED5495 /* AutotypeOverlay.app */,
); );
name = Products; name = Products;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -1810,7 +1685,6 @@
4CA0B2F115BCAEE600654E32 /* View Controller */ = { 4CA0B2F115BCAEE600654E32 /* View Controller */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
4CE4FF9E2746943900789F75 /* Database Preferences */,
4C5133861FA0C32C00C94C73 /* Accessory */, 4C5133861FA0C32C00C94C73 /* Accessory */,
4C4B7EF517A46815000234C7 /* Inspector */, 4C4B7EF517A46815000234C7 /* Inspector */,
4C47D77718B37911002755E4 /* Preferences */, 4C47D77718B37911002755E4 /* Preferences */,
@@ -1882,7 +1756,6 @@
4C7679BC1D75E690001F33D6 /* MPModelChangeObserving.h */, 4C7679BC1D75E690001F33D6 /* MPModelChangeObserving.h */,
4CA0B30D15BCB6FD00654E32 /* MPPreferencesTab.h */, 4CA0B30D15BCB6FD00654E32 /* MPPreferencesTab.h */,
4C2B0B7419F66F6400E48913 /* MPTargetNodeResolving.h */, 4C2B0B7419F66F6400E48913 /* MPTargetNodeResolving.h */,
4C47090727184AC8003777EB /* MPInspectorEditor.h */,
); );
name = Protocolls; name = Protocolls;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -1901,7 +1774,7 @@
children = ( children = (
4C356642258259AA00CAB95B /* MPTOTPSetupViewController.h */, 4C356642258259AA00CAB95B /* MPTOTPSetupViewController.h */,
4C356643258259AA00CAB95B /* MPTOTPSetupViewController.m */, 4C356643258259AA00CAB95B /* MPTOTPSetupViewController.m */,
4C9328CA273E6A38000DCBEE /* MPTOTPSetupViewController.xib */, 4C356644258259AA00CAB95B /* MPTOTPSetupViewController.xib */,
); );
name = OTP; name = OTP;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -1926,22 +1799,6 @@
name = Controls; name = Controls;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
4CE4FF9E2746943900789F75 /* Database Preferences */ = {
isa = PBXGroup;
children = (
4CE4FF9F2746953A00789F75 /* MPAdvancedDatabaseSettingsViewController.h */,
4CE4FFA02746953A00789F75 /* MPAdvancedDatabaseSettingsViewController.m */,
4CE4FFA12746953A00789F75 /* MPAdvancedDatabaseSettingsViewController.xib */,
4CE4FFA42746955E00789F75 /* MPSecurityDatabaseSettingsViewController.h */,
4CE4FFA52746955E00789F75 /* MPSecurityDatabaseSettingsViewController.m */,
4CE4FFA62746955E00789F75 /* MPSecurityDatabaseSettingsViewController.xib */,
4CE4FFA92746956F00789F75 /* MPGeneralDatabaseSettingsViewController.h */,
4CE4FFAA2746956F00789F75 /* MPGeneralDatabaseSettingsViewController.m */,
4CE4FFAB2746956F00789F75 /* MPGeneralDatabaseSettingsViewController.xib */,
);
name = "Database Preferences";
sourceTree = "<group>";
};
4CE8247016E2E96500573141 /* Window Controller */ = { 4CE8247016E2E96500573141 /* Window Controller */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
@@ -2044,23 +1901,6 @@
productReference = 4C45FB1A178E09ED0010007D /* MacPassTests.xctest */; productReference = 4C45FB1A178E09ED0010007D /* MacPassTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test"; productType = "com.apple.product-type.bundle.unit-test";
}; };
4C4F11FB27D9055300ED5495 /* AutotypeOverlay */ = {
isa = PBXNativeTarget;
buildConfigurationList = 4C4F120B27D9055600ED5495 /* Build configuration list for PBXNativeTarget "AutotypeOverlay" */;
buildPhases = (
4C4F11F827D9055300ED5495 /* Sources */,
4C4F11F927D9055300ED5495 /* Frameworks */,
4C4F11FA27D9055300ED5495 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = AutotypeOverlay;
productName = AutotypeOverlay;
productReference = 4C4F11FC27D9055300ED5495 /* AutotypeOverlay.app */;
productType = "com.apple.product-type.application";
};
4C77E36115B84A240093A587 /* MacPass */ = { 4C77E36115B84A240093A587 /* MacPass */ = {
isa = PBXNativeTarget; isa = PBXNativeTarget;
buildConfigurationList = 4C77E38015B84A240093A587 /* Build configuration list for PBXNativeTarget "MacPass" */; buildConfigurationList = 4C77E38015B84A240093A587 /* Build configuration list for PBXNativeTarget "MacPass" */;
@@ -2087,13 +1927,9 @@
isa = PBXProject; isa = PBXProject;
attributes = { attributes = {
CLASSPREFIX = MP; CLASSPREFIX = MP;
LastUpgradeCheck = 1250; LastUpgradeCheck = 1240;
ORGANIZATIONNAME = "HicknHack Software GmbH"; ORGANIZATIONNAME = "HicknHack Software GmbH";
TargetAttributes = { TargetAttributes = {
4C4F11FB27D9055300ED5495 = {
CreatedOnToolsVersion = 13.2.1;
ProvisioningStyle = Automatic;
};
4C77E36115B84A240093A587 = { 4C77E36115B84A240093A587 = {
DevelopmentTeam = 55SM4L4Z97; DevelopmentTeam = 55SM4L4Z97;
}; };
@@ -2117,7 +1953,6 @@
"sv-SE", "sv-SE",
uk, uk,
ja, ja,
cs,
); );
mainGroup = 4C77E35715B84A240093A587; mainGroup = 4C77E35715B84A240093A587;
productRefGroup = 4C77E36315B84A240093A587 /* Products */; productRefGroup = 4C77E36315B84A240093A587 /* Products */;
@@ -2126,7 +1961,6 @@
targets = ( targets = (
4C77E36115B84A240093A587 /* MacPass */, 4C77E36115B84A240093A587 /* MacPass */,
4C45FB19178E09ED0010007D /* MacPassTests */, 4C45FB19178E09ED0010007D /* MacPassTests */,
4C4F11FB27D9055300ED5495 /* AutotypeOverlay */,
); );
}; };
/* End PBXProject section */ /* End PBXProject section */
@@ -2142,15 +1976,6 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
4C4F11FA27D9055300ED5495 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
4C4F120227D9055600ED5495 /* Assets.xcassets in Resources */,
4C4F120527D9055600ED5495 /* MainMenu.xib in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
4C77E36015B84A240093A587 /* Resources */ = { 4C77E36015B84A240093A587 /* Resources */ = {
isa = PBXResourcesBuildPhase; isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
@@ -2166,12 +1991,10 @@
4CA182751F963FF600DD4A4A /* TitlebarColorAccessoryViewController.xib in Resources */, 4CA182751F963FF600DD4A4A /* TitlebarColorAccessoryViewController.xib in Resources */,
4C3826B71AD04D8E007D7D67 /* 42_MemoryTemplate.pdf in Resources */, 4C3826B71AD04D8E007D7D67 /* 42_MemoryTemplate.pdf in Resources */,
4C3826B41AD04D8E007D7D67 /* 39_HistoryTemplate.pdf in Resources */, 4C3826B41AD04D8E007D7D67 /* 39_HistoryTemplate.pdf in Resources */,
4CE4FFA32746953A00789F75 /* MPAdvancedDatabaseSettingsViewController.xib in Resources */,
4C77E37D15B84A240093A587 /* MainMenu.xib in Resources */, 4C77E37D15B84A240093A587 /* MainMenu.xib in Resources */,
4C4BE0C9257E9B91000AEA8C /* MPNotificationPreferencesController.xib in Resources */, 4C4BE0C9257E9B91000AEA8C /* MPNotificationPreferencesController.xib in Resources */,
4C3826CD1AD04D8E007D7D67 /* 66_MoneyTemplate.pdf in Resources */, 4C3826CD1AD04D8E007D7D67 /* 66_MoneyTemplate.pdf in Resources */,
78E1F8B022E3A5D600E738AE /* AutotypeDoctorReportViewController.xib in Resources */, 78E1F8B022E3A5D600E738AE /* AutotypeDoctorReportViewController.xib in Resources */,
4C59AC9E2722C12200F54B20 /* MPNodeExpirationViewController.xib in Resources */,
4CA0B2ED15BCADAC00654E32 /* PreferencesWindow.xib in Resources */, 4CA0B2ED15BCADAC00654E32 /* PreferencesWindow.xib in Resources */,
4C76155C1764C04C0015A1A6 /* GeneralPreferences.xib in Resources */, 4C76155C1764C04C0015A1A6 /* GeneralPreferences.xib in Resources */,
4CD884B715BD47080042BBF8 /* DocumentWindow.xib in Resources */, 4CD884B715BD47080042BBF8 /* DocumentWindow.xib in Resources */,
@@ -2183,8 +2006,6 @@
4C586F9E16D07ABD00E7DB57 /* 00_PasswordTemplate.pdf in Resources */, 4C586F9E16D07ABD00E7DB57 /* 00_PasswordTemplate.pdf in Resources */,
FA13910C1F9CD9EB0033D256 /* Localizable.stringsdict in Resources */, FA13910C1F9CD9EB0033D256 /* Localizable.stringsdict in Resources */,
4C586FA016D07D7200E7DB57 /* 01_PackageNetworkTemplate.pdf in Resources */, 4C586FA016D07D7200E7DB57 /* 01_PackageNetworkTemplate.pdf in Resources */,
4C98A6CD27CFAB1900CD912F /* MPNodeIconViewController.xib in Resources */,
4CE4FFAD2746956F00789F75 /* MPGeneralDatabaseSettingsViewController.xib in Resources */,
4C3826CB1AD04D8E007D7D67 /* 64_AppleTemplate.pdf in Resources */, 4C3826CB1AD04D8E007D7D67 /* 64_AppleTemplate.pdf in Resources */,
4C3826AA1AD04D8E007D7D67 /* 27_NFSUnmountTemplate.pdf in Resources */, 4C3826AA1AD04D8E007D7D67 /* 27_NFSUnmountTemplate.pdf in Resources */,
4C3826C31AD04D8E007D7D67 /* 56_AddressBookTemplate.pdf in Resources */, 4C3826C31AD04D8E007D7D67 /* 56_AddressBookTemplate.pdf in Resources */,
@@ -2222,7 +2043,6 @@
4C0F04412147FB49000B8568 /* OpenPanelAccessoryView.xib in Resources */, 4C0F04412147FB49000B8568 /* OpenPanelAccessoryView.xib in Resources */,
4C6DCC451FA2457900C8AD3F /* ContextBar.xib in Resources */, 4C6DCC451FA2457900C8AD3F /* ContextBar.xib in Resources */,
4C431BCF16E2BAB000700A81 /* OverlayWindow.xib in Resources */, 4C431BCF16E2BAB000700A81 /* OverlayWindow.xib in Resources */,
4CE4FFA82746955E00789F75 /* MPSecurityDatabaseSettingsViewController.xib in Resources */,
4C3826B61AD04D8E007D7D67 /* 41_VectorTemplate.pdf in Resources */, 4C3826B61AD04D8E007D7D67 /* 41_VectorTemplate.pdf in Resources */,
4C17F105184E630200E85625 /* 14_BatteryTemplate.pdf in Resources */, 4C17F105184E630200E85625 /* 14_BatteryTemplate.pdf in Resources */,
4C0B5338205C1516003D277E /* PickcharsView.xib in Resources */, 4C0B5338205C1516003D277E /* PickcharsView.xib in Resources */,
@@ -2243,7 +2063,6 @@
4C3826B81AD04D8E007D7D67 /* 44_NotesTemplate.pdf in Resources */, 4C3826B81AD04D8E007D7D67 /* 44_NotesTemplate.pdf in Resources */,
4C3826C41AD04D8E007D7D67 /* 57_TextViewTemplate.pdf in Resources */, 4C3826C41AD04D8E007D7D67 /* 57_TextViewTemplate.pdf in Resources */,
6021FE9818E1650F00C3BC51 /* DatabaseSettingsWindow.xib in Resources */, 6021FE9818E1650F00C3BC51 /* DatabaseSettingsWindow.xib in Resources */,
4CC0192F271836CD00459789 /* MPEntryAttributeViewController.xib in Resources */,
4C6D1D25178579570014C5A5 /* 48_FolderTemplate.pdf in Resources */, 4C6D1D25178579570014C5A5 /* 48_FolderTemplate.pdf in Resources */,
4C701CBC178618A000581B88 /* 12_RemoteTemplate.pdf in Resources */, 4C701CBC178618A000581B88 /* 12_RemoteTemplate.pdf in Resources */,
4CF29BF417879D0000851B60 /* 26_FileSaveTemplate.pdf in Resources */, 4CF29BF417879D0000851B60 /* 26_FileSaveTemplate.pdf in Resources */,
@@ -2252,7 +2071,6 @@
4C52A88E1788628B00868229 /* 06_BlockDeviceTemplate.pdf in Resources */, 4C52A88E1788628B00868229 /* 06_BlockDeviceTemplate.pdf in Resources */,
4C52A88F1788628B00868229 /* 13_KeysTemplate.pdf in Resources */, 4C52A88F1788628B00868229 /* 13_KeysTemplate.pdf in Resources */,
4C3826C61AD04D8E007D7D67 /* 59_DevelopmentTemplate.pdf in Resources */, 4C3826C61AD04D8E007D7D67 /* 59_DevelopmentTemplate.pdf in Resources */,
4CF13A9827E0D5D800E3297A /* MPNodeTagViewController.xib in Resources */,
4C52A8901788628B00868229 /* 18_DisplayTemplate.pdf in Resources */, 4C52A8901788628B00868229 /* 18_DisplayTemplate.pdf in Resources */,
4C52A892178863B000868229 /* 68_PhoneTemplate.pdf in Resources */, 4C52A892178863B000868229 /* 68_PhoneTemplate.pdf in Resources */,
6021FE7718E15FF300C3BC51 /* DatePickingView.xib in Resources */, 6021FE7718E15FF300C3BC51 /* DatePickingView.xib in Resources */,
@@ -2268,7 +2086,7 @@
4C17D11E2250EFBC00C650C4 /* SavePanelAccessoryView.xib in Resources */, 4C17D11E2250EFBC00C650C4 /* SavePanelAccessoryView.xib in Resources */,
4CE88B9717BA651C0042E078 /* contextTriangleTemplate.pdf in Resources */, 4CE88B9717BA651C0042E078 /* contextTriangleTemplate.pdf in Resources */,
4C7ABA4817BAEC6700FF5799 /* 15_ScannerTemplate.pdf in Resources */, 4C7ABA4817BAEC6700FF5799 /* 15_ScannerTemplate.pdf in Resources */,
4C9328C8273E6A38000DCBEE /* MPTOTPSetupViewController.xib in Resources */, 4C356646258259AA00CAB95B /* MPTOTPSetupViewController.xib in Resources */,
4C7ABA4917BAEC6700FF5799 /* 16_BrowserTemplate.pdf in Resources */, 4C7ABA4917BAEC6700FF5799 /* 16_BrowserTemplate.pdf in Resources */,
4C7ABA4A17BAEC6700FF5799 /* 17_CDRomTemplate.pdf in Resources */, 4C7ABA4A17BAEC6700FF5799 /* 17_CDRomTemplate.pdf in Resources */,
4C7ABA4B17BAEC6700FF5799 /* 19_EmailTemplate.pdf in Resources */, 4C7ABA4B17BAEC6700FF5799 /* 19_EmailTemplate.pdf in Resources */,
@@ -2283,7 +2101,7 @@
4C0DBEF51BF508DE00F9B287 /* PluginPreferences.xib in Resources */, 4C0DBEF51BF508DE00F9B287 /* PluginPreferences.xib in Resources */,
4CF6653820E67A140008A25C /* PluginDataView.xib in Resources */, 4CF6653820E67A140008A25C /* PluginDataView.xib in Resources */,
4C7F8B681A10B68400CCB83D /* WelcomeView.xib in Resources */, 4C7F8B681A10B68400CCB83D /* WelcomeView.xib in Resources */,
4C9328D0273E6A83000DCBEE /* MPTOTPViewController.xib in Resources */, 4C2892A9257103F9003C7732 /* MPTOTPViewController.xib in Resources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -2327,15 +2145,6 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
4C4F11F827D9055300ED5495 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
4C4F120727D9055600ED5495 /* main.m in Sources */,
4C4F120027D9055300ED5495 /* AOAppDelegate.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
4C77E35E15B84A240093A587 /* Sources */ = { 4C77E35E15B84A240093A587 /* Sources */ = {
isa = PBXSourcesBuildPhase; isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
@@ -2346,7 +2155,6 @@
4CBA2ABA17074C07006D8139 /* MPSettingsHelper.m in Sources */, 4CBA2ABA17074C07006D8139 /* MPSettingsHelper.m in Sources */,
4C77E37A15B84A240093A587 /* MPAppDelegate.m in Sources */, 4C77E37A15B84A240093A587 /* MPAppDelegate.m in Sources */,
3C0CDED821D28BF700B2A10B /* MPTouchBarButtonCreator.m in Sources */, 3C0CDED821D28BF700B2A10B /* MPTouchBarButtonCreator.m in Sources */,
4CC91B6B27D7E7E6001E9517 /* MPInspectorEditorView.m in Sources */,
4C37A84015B8B474005EF8EE /* MPOutlineDataSource.m in Sources */, 4C37A84015B8B474005EF8EE /* MPOutlineDataSource.m in Sources */,
4CA0B2F915BCAF6700654E32 /* MPGeneralPreferencesController.m in Sources */, 4CA0B2F915BCAF6700654E32 /* MPGeneralPreferencesController.m in Sources */,
4C8F0C791FD05A6A00BE157F /* NSString+MPPrettyPasswordDisplay.m in Sources */, 4C8F0C791FD05A6A00BE157F /* NSString+MPPrettyPasswordDisplay.m in Sources */,
@@ -2356,7 +2164,6 @@
4C4F72D118DF704400E8D378 /* DDHotKeyTextField.m in Sources */, 4C4F72D118DF704400E8D378 /* DDHotKeyTextField.m in Sources */,
4C8F0C6E1FCEE9B900BE157F /* MPPluginConstants.m in Sources */, 4C8F0C6E1FCEE9B900BE157F /* MPPluginConstants.m in Sources */,
4C83814215BF4677001AE468 /* MPDocumentWindowController.m in Sources */, 4C83814215BF4677001AE468 /* MPDocumentWindowController.m in Sources */,
4CE4FFA22746953A00789F75 /* MPAdvancedDatabaseSettingsViewController.m in Sources */,
4C82046A1FCDC07800EB24A4 /* MPPickfieldViewController.m in Sources */, 4C82046A1FCDC07800EB24A4 /* MPPickfieldViewController.m in Sources */,
4C2E382316D1421B00037A9D /* MPIconHelper.m in Sources */, 4C2E382316D1421B00037A9D /* MPIconHelper.m in Sources */,
4C2E382616D1470200037A9D /* MPViewController.m in Sources */, 4C2E382616D1470200037A9D /* MPViewController.m in Sources */,
@@ -2374,7 +2181,6 @@
4C370EFE215B76CB00703AAE /* MPOutlineTableCellView.m in Sources */, 4C370EFE215B76CB00703AAE /* MPOutlineTableCellView.m in Sources */,
4CE8246F16E2E93400573141 /* MPOverlayWindowController.m in Sources */, 4CE8246F16E2E93400573141 /* MPOverlayWindowController.m in Sources */,
4CE8247516E2F2B900573141 /* MPOverlayView.m in Sources */, 4CE8247516E2F2B900573141 /* MPOverlayView.m in Sources */,
4C59AC9D2722C12200F54B20 /* MPNodeExpirationViewController.m in Sources */,
4C77547516E55FE800970E02 /* MPInspectorViewController.m in Sources */, 4C77547516E55FE800970E02 /* MPInspectorViewController.m in Sources */,
4C89F524182FB4740069C73C /* MPAutotypeCommand.m in Sources */, 4C89F524182FB4740069C73C /* MPAutotypeCommand.m in Sources */,
4C6DCC611FA24C2100C8AD3F /* MPAutotypeCandidateSelectionViewController.m in Sources */, 4C6DCC611FA24C2100C8AD3F /* MPAutotypeCandidateSelectionViewController.m in Sources */,
@@ -2403,7 +2209,6 @@
4C569DA117652BFE00595B62 /* MPEntryTableDataSource.m in Sources */, 4C569DA117652BFE00595B62 /* MPEntryTableDataSource.m in Sources */,
4CD034AA1BFE113B003C002C /* MPPlugin.m in Sources */, 4CD034AA1BFE113B003C002C /* MPPlugin.m in Sources */,
4CA2335A176DBFE100F0B6AC /* MPLockDaemon.m in Sources */, 4CA2335A176DBFE100F0B6AC /* MPLockDaemon.m in Sources */,
4CF13A9727E0D5D800E3297A /* MPNodeTagViewController.m in Sources */,
4C77C84118E240E000D1C42B /* DDHotKey+MacPassAdditions.m in Sources */, 4C77C84118E240E000D1C42B /* DDHotKey+MacPassAdditions.m in Sources */,
4C89B71019B4B4A300DC0A6A /* MPTreeDelegate.m in Sources */, 4C89B71019B4B4A300DC0A6A /* MPTreeDelegate.m in Sources */,
4C88C66918D9F8D600F43852 /* MPTemporaryFileStorageCenter.m in Sources */, 4C88C66918D9F8D600F43852 /* MPTemporaryFileStorageCenter.m in Sources */,
@@ -2415,6 +2220,7 @@
4C978E0D19AE54AB003067DF /* MPFlagsHelper.m in Sources */, 4C978E0D19AE54AB003067DF /* MPFlagsHelper.m in Sources */,
4C6F228919A4A7F90012310C /* MPAutotypeClear.m in Sources */, 4C6F228919A4A7F90012310C /* MPAutotypeClear.m in Sources */,
4C0B038C18E36DA400B9F9C9 /* MPFixAutotypeWindowController.m in Sources */, 4C0B038C18E36DA400B9F9C9 /* MPFixAutotypeWindowController.m in Sources */,
AF105CF325FE5B2000C4FD3C /* MPTouchIdCompositeKeyStore.m in Sources */,
4C7679BF1D76D6D8001F33D6 /* MPErrorRecoveryAttempter.m in Sources */, 4C7679BF1D76D6D8001F33D6 /* MPErrorRecoveryAttempter.m in Sources */,
4CAD338F205169D30068587E /* MPPluginRepositoryItem.m in Sources */, 4CAD338F205169D30068587E /* MPPluginRepositoryItem.m in Sources */,
4C9BFFFB1FD19B5400264B16 /* MPPrettyPasswordTransformer.m in Sources */, 4C9BFFFB1FD19B5400264B16 /* MPPrettyPasswordTransformer.m in Sources */,
@@ -2438,7 +2244,6 @@
4C0C59F118B17F10009C7B76 /* DDHotKeyUtilities.m in Sources */, 4C0C59F118B17F10009C7B76 /* DDHotKeyUtilities.m in Sources */,
4CEE46DD181C301D006BF1E5 /* MPAutotypeDaemon.m in Sources */, 4CEE46DD181C301D006BF1E5 /* MPAutotypeDaemon.m in Sources */,
4C50CC041F6C18830095629D /* MPCollectionViewItem.m in Sources */, 4C50CC041F6C18830095629D /* MPCollectionViewItem.m in Sources */,
4CC0192E271836CD00459789 /* MPEntryAttributeViewController.m in Sources */,
4CA78C001FD58C92003C8560 /* MPPluginRepository.m in Sources */, 4CA78C001FD58C92003C8560 /* MPPluginRepository.m in Sources */,
4CAD8AA622CF397B0090B2DD /* MPAutotypeDoctorReportViewController.m in Sources */, 4CAD8AA622CF397B0090B2DD /* MPAutotypeDoctorReportViewController.m in Sources */,
4C8990F71EE978EB0043B48D /* MPDuplicateEntryOptionsWindowController.m in Sources */, 4C8990F71EE978EB0043B48D /* MPDuplicateEntryOptionsWindowController.m in Sources */,
@@ -2462,7 +2267,6 @@
4C17D8E517A1C780006C8C1E /* MPDocumentWindowDelegate.m in Sources */, 4C17D8E517A1C780006C8C1E /* MPDocumentWindowDelegate.m in Sources */,
4C63B8FB17A3154D0091BD72 /* MPContextButton.m in Sources */, 4C63B8FB17A3154D0091BD72 /* MPContextButton.m in Sources */,
4C1E9885185F71A800943563 /* MPContextBarViewController.m in Sources */, 4C1E9885185F71A800943563 /* MPContextBarViewController.m in Sources */,
4CE4FFA72746955E00789F75 /* MPSecurityDatabaseSettingsViewController.m in Sources */,
4C1FA07B18231900003A3F8C /* MPDocument+Autotype.m in Sources */, 4C1FA07B18231900003A3F8C /* MPDocument+Autotype.m in Sources */,
4C4B7EE917A45EC6000234C7 /* MPDatePickingViewController.m in Sources */, 4C4B7EE917A45EC6000234C7 /* MPDatePickingViewController.m in Sources */,
4C4B7EEE17A467E1000234C7 /* MPGroupInspectorViewController.m in Sources */, 4C4B7EEE17A467E1000234C7 /* MPGroupInspectorViewController.m in Sources */,
@@ -2478,15 +2282,12 @@
4C0728BD17B5B7F7005A7DD9 /* MPPasswordEditWindowController.m in Sources */, 4C0728BD17B5B7F7005A7DD9 /* MPPasswordEditWindowController.m in Sources */,
4C0F647B17B6BC9C00D9522A /* MPSavePanelAccessoryViewController.m in Sources */, 4C0F647B17B6BC9C00D9522A /* MPSavePanelAccessoryViewController.m in Sources */,
4C0949591FD6B89B004F2971 /* NSUserNotification+MPAdditions.m in Sources */, 4C0949591FD6B89B004F2971 /* NSUserNotification+MPAdditions.m in Sources */,
4C521981273D192C00C719D3 /* MPOpenURLHandler.m in Sources */,
4C2057EE23CDF6F900C731EC /* MPPathCell.m in Sources */, 4C2057EE23CDF6F900C731EC /* MPPathCell.m in Sources */,
4C3B42871F935316007B04FD /* MPDayCountFormatter.m in Sources */, 4C3B42871F935316007B04FD /* MPDayCountFormatter.m in Sources */,
4C7D9D5424ABE6FD00907034 /* MPTabViewController.m in Sources */, 4C7D9D5424ABE6FD00907034 /* MPTabViewController.m in Sources */,
3C0CDECF21CFEDD200B2A10B /* NSTextView+MPTouchBarExtension.m in Sources */, 3C0CDECF21CFEDD200B2A10B /* NSTextView+MPTouchBarExtension.m in Sources */,
4C57AE1417BA422B00CA4F34 /* MPSegmentedContextCell.m in Sources */, 4C57AE1417BA422B00CA4F34 /* MPSegmentedContextCell.m in Sources */,
4CE2961518429AA5005F01CE /* MPAutotypeKeyPress.m in Sources */, 4CE2961518429AA5005F01CE /* MPAutotypeKeyPress.m in Sources */,
4CE4FFAC2746956F00789F75 /* MPGeneralDatabaseSettingsViewController.m in Sources */,
4C98A6CC27CFAB1900CD912F /* MPNodeIconViewController.m in Sources */,
4C32B0E71A1D4436007E12F1 /* KPKFormat+MPUTIDetection.m in Sources */, 4C32B0E71A1D4436007E12F1 /* KPKFormat+MPUTIDetection.m in Sources */,
4C5807781C64F67000E7171F /* NSString+MPHash.m in Sources */, 4C5807781C64F67000E7171F /* NSString+MPHash.m in Sources */,
4CAAA8271D787B8B00CDE977 /* MPAutotypeBuilderViewController.m in Sources */, 4CAAA8271D787B8B00CDE977 /* MPAutotypeBuilderViewController.m in Sources */,
@@ -2518,7 +2319,6 @@
D364AB1423FC104300AB1D8E /* pl */, D364AB1423FC104300AB1D8E /* pl */,
FA8CCD9123A7A6FA003A3BB1 /* uk */, FA8CCD9123A7A6FA003A3BB1 /* uk */,
6FECA76F24D51B0A00BBA9BB /* ja */, 6FECA76F24D51B0A00BBA9BB /* ja */,
69385E46274ACFE0001AB1E9 /* cs */,
); );
name = PickcharsView.xib; name = PickcharsView.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -2537,7 +2337,6 @@
71FF7A25230FEF3D002F488F /* it */, 71FF7A25230FEF3D002F488F /* it */,
FA8CCD9223A7A6FA003A3BB1 /* uk */, FA8CCD9223A7A6FA003A3BB1 /* uk */,
6FECA77024D51B0A00BBA9BB /* ja */, 6FECA77024D51B0A00BBA9BB /* ja */,
69385E47274ACFE0001AB1E9 /* cs */,
); );
name = PickfieldView.xib; name = PickfieldView.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -2557,7 +2356,6 @@
6A74B0692076F4B40049BC29 /* sv-SE */, 6A74B0692076F4B40049BC29 /* sv-SE */,
FA8CCD8323A7A6F7003A3BB1 /* uk */, FA8CCD8323A7A6F7003A3BB1 /* uk */,
6FECA76324D51B0800BBA9BB /* ja */, 6FECA76324D51B0800BBA9BB /* ja */,
69385E39274ACFDF001AB1E9 /* cs */,
); );
name = PluginPreferences.xib; name = PluginPreferences.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -2575,7 +2373,6 @@
D364AB1523FC104300AB1D8E /* pl */, D364AB1523FC104300AB1D8E /* pl */,
FA8CCD9523A7A6FB003A3BB1 /* uk */, FA8CCD9523A7A6FB003A3BB1 /* uk */,
6FECA77424D51B0B00BBA9BB /* ja */, 6FECA77424D51B0B00BBA9BB /* ja */,
69385E4B274ACFE0001AB1E9 /* cs */,
); );
name = OpenPanelAccessoryView.xib; name = OpenPanelAccessoryView.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -2594,7 +2391,6 @@
D364AB1623FC104300AB1D8E /* pl */, D364AB1623FC104300AB1D8E /* pl */,
FA8CCD7E23A7A6F6003A3BB1 /* uk */, FA8CCD7E23A7A6F6003A3BB1 /* uk */,
6FECA75D24D51B0700BBA9BB /* ja */, 6FECA75D24D51B0700BBA9BB /* ja */,
69385E32274ACFDE001AB1E9 /* cs */,
); );
name = SavePanelAccessoryView.xib; name = SavePanelAccessoryView.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -2613,19 +2409,10 @@
6A74B07D2076F4B60049BC29 /* sv-SE */, 6A74B07D2076F4B60049BC29 /* sv-SE */,
FA8CCD9B23A7A6FC003A3BB1 /* uk */, FA8CCD9B23A7A6FC003A3BB1 /* uk */,
6FECA77924D51B0B00BBA9BB /* ja */, 6FECA77924D51B0B00BBA9BB /* ja */,
69385E51274ACFE1001AB1E9 /* cs */,
); );
name = InfoPlist.strings; name = InfoPlist.strings;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
4C4F120327D9055600ED5495 /* MainMenu.xib */ = {
isa = PBXVariantGroup;
children = (
4C4F120427D9055600ED5495 /* Base */,
);
name = MainMenu.xib;
sourceTree = "<group>";
};
4C6DCC471FA2457900C8AD3F /* ContextBar.xib */ = { 4C6DCC471FA2457900C8AD3F /* ContextBar.xib */ = {
isa = PBXVariantGroup; isa = PBXVariantGroup;
children = ( children = (
@@ -2641,7 +2428,6 @@
6A74B0712076F4B50049BC29 /* sv-SE */, 6A74B0712076F4B50049BC29 /* sv-SE */,
FA8CCD8C23A7A6F9003A3BB1 /* uk */, FA8CCD8C23A7A6F9003A3BB1 /* uk */,
6FECA76A24D51B0900BBA9BB /* ja */, 6FECA76A24D51B0900BBA9BB /* ja */,
69385E41274ACFE0001AB1E9 /* cs */,
); );
name = ContextBar.xib; name = ContextBar.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -2661,7 +2447,6 @@
6A74B06F2076F4B50049BC29 /* sv-SE */, 6A74B06F2076F4B50049BC29 /* sv-SE */,
FA8CCD8A23A7A6F8003A3BB1 /* uk */, FA8CCD8A23A7A6F8003A3BB1 /* uk */,
6FECA76C24D51B0A00BBA9BB /* ja */, 6FECA76C24D51B0A00BBA9BB /* ja */,
69385E43274ACFE0001AB1E9 /* cs */,
); );
name = IconSelection.xib; name = IconSelection.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -2681,7 +2466,6 @@
6A74B0652076F4B40049BC29 /* sv-SE */, 6A74B0652076F4B40049BC29 /* sv-SE */,
FA8CCD7F23A7A6F6003A3BB1 /* uk */, FA8CCD7F23A7A6F6003A3BB1 /* uk */,
6FECA76124D51B0800BBA9BB /* ja */, 6FECA76124D51B0800BBA9BB /* ja */,
69385E37274ACFDF001AB1E9 /* cs */,
); );
name = GeneralPreferences.xib; name = GeneralPreferences.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -2701,7 +2485,6 @@
6A74B06D2076F4B40049BC29 /* sv-SE */, 6A74B06D2076F4B40049BC29 /* sv-SE */,
FA8CCD8823A7A6F8003A3BB1 /* uk */, FA8CCD8823A7A6F8003A3BB1 /* uk */,
6FECA76E24D51B0A00BBA9BB /* ja */, 6FECA76E24D51B0A00BBA9BB /* ja */,
69385E45274ACFE0001AB1E9 /* cs */,
); );
name = PasswordInputView.xib; name = PasswordInputView.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -2721,7 +2504,6 @@
6A74B06A2076F4B40049BC29 /* sv-SE */, 6A74B06A2076F4B40049BC29 /* sv-SE */,
FA8CCD8523A7A6F7003A3BB1 /* uk */, FA8CCD8523A7A6F7003A3BB1 /* uk */,
6FECA76024D51B0800BBA9BB /* ja */, 6FECA76024D51B0800BBA9BB /* ja */,
69385E35274ACFDF001AB1E9 /* cs */,
); );
name = InspectorView.xib; name = InspectorView.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -2741,7 +2523,6 @@
4C9FE47423703DA50096A5EA /* en */, 4C9FE47423703DA50096A5EA /* en */,
FA8CCD9A23A7A6FB003A3BB1 /* uk */, FA8CCD9A23A7A6FB003A3BB1 /* uk */,
6FECA77824D51B0B00BBA9BB /* ja */, 6FECA77824D51B0B00BBA9BB /* ja */,
69385E50274ACFE1001AB1E9 /* cs */,
); );
name = InfoPlist.strings; name = InfoPlist.strings;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -2761,7 +2542,6 @@
6A74B0782076F4B50049BC29 /* sv-SE */, 6A74B0782076F4B50049BC29 /* sv-SE */,
FA8CCD9623A7A6FB003A3BB1 /* uk */, FA8CCD9623A7A6FB003A3BB1 /* uk */,
6FECA77524D51B0B00BBA9BB /* ja */, 6FECA77524D51B0B00BBA9BB /* ja */,
69385E4C274ACFE0001AB1E9 /* cs */,
); );
name = MainMenu.xib; name = MainMenu.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -2781,7 +2561,6 @@
6A74B0772076F4B50049BC29 /* sv-SE */, 6A74B0772076F4B50049BC29 /* sv-SE */,
FA8CCD9323A7A6FA003A3BB1 /* uk */, FA8CCD9323A7A6FA003A3BB1 /* uk */,
6FECA77324D51B0B00BBA9BB /* ja */, 6FECA77324D51B0B00BBA9BB /* ja */,
69385E4A274ACFE0001AB1E9 /* cs */,
); );
name = WelcomeView.xib; name = WelcomeView.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -2801,32 +2580,10 @@
4C1888D0230FFEE20054A38F /* it */, 4C1888D0230FFEE20054A38F /* it */,
FA8CCD9823A7A6FB003A3BB1 /* uk */, FA8CCD9823A7A6FB003A3BB1 /* uk */,
6FECA77724D51B0B00BBA9BB /* ja */, 6FECA77724D51B0B00BBA9BB /* ja */,
69385E4E274ACFE0001AB1E9 /* cs */,
); );
name = Localizable.strings; name = Localizable.strings;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
4C9328CA273E6A38000DCBEE /* MPTOTPSetupViewController.xib */ = {
isa = PBXVariantGroup;
children = (
4C9328C9273E6A38000DCBEE /* Base */,
4C9328CD273E6A5F000DCBEE /* zh-Hans */,
4C9328CF273E6A63000DCBEE /* de */,
69385E3D274ACFDF001AB1E9 /* cs */,
);
name = MPTOTPSetupViewController.xib;
sourceTree = "<group>";
};
4C9328D2273E6A83000DCBEE /* MPTOTPViewController.xib */ = {
isa = PBXVariantGroup;
children = (
4C9328D1273E6A83000DCBEE /* Base */,
4C9328D4273E6A85000DCBEE /* zh-Hans */,
4C9328D6273E6A85000DCBEE /* de */,
);
name = MPTOTPViewController.xib;
sourceTree = "<group>";
};
4CA1827A1F96523600DD4A4A /* DuplicateEntryOptionsWindow.xib */ = { 4CA1827A1F96523600DD4A4A /* DuplicateEntryOptionsWindow.xib */ = {
isa = PBXVariantGroup; isa = PBXVariantGroup;
children = ( children = (
@@ -2842,7 +2599,6 @@
6A74B0642076F4B40049BC29 /* sv-SE */, 6A74B0642076F4B40049BC29 /* sv-SE */,
FA8CCD7D23A7A6F5003A3BB1 /* uk */, FA8CCD7D23A7A6F5003A3BB1 /* uk */,
6FECA75B24D51B0700BBA9BB /* ja */, 6FECA75B24D51B0700BBA9BB /* ja */,
69385E30274ACFDE001AB1E9 /* cs */,
); );
name = DuplicateEntryOptionsWindow.xib; name = DuplicateEntryOptionsWindow.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -2870,7 +2626,6 @@
ABAA99A523151BE70095D78E /* zh-Hans */, ABAA99A523151BE70095D78E /* zh-Hans */,
FA8CCD8D23A7A6F9003A3BB1 /* uk */, FA8CCD8D23A7A6F9003A3BB1 /* uk */,
6FECA77224D51B0A00BBA9BB /* ja */, 6FECA77224D51B0A00BBA9BB /* ja */,
69385E49274ACFE0001AB1E9 /* cs */,
); );
name = ReferenceBuilderView.xib; name = ReferenceBuilderView.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -2889,7 +2644,6 @@
ABE86630231662D200201125 /* zh-Hans */, ABE86630231662D200201125 /* zh-Hans */,
FA8CCD8F23A7A6F9003A3BB1 /* uk */, FA8CCD8F23A7A6F9003A3BB1 /* uk */,
6FECA77124D51B0A00BBA9BB /* ja */, 6FECA77124D51B0A00BBA9BB /* ja */,
69385E48274ACFE0001AB1E9 /* cs */,
); );
name = PluginDataView.xib; name = PluginDataView.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -2909,7 +2663,6 @@
6A74B06C2076F4B40049BC29 /* sv-SE */, 6A74B06C2076F4B40049BC29 /* sv-SE */,
FA8CCD8723A7A6F8003A3BB1 /* uk */, FA8CCD8723A7A6F8003A3BB1 /* uk */,
6FECA75E24D51B0800BBA9BB /* ja */, 6FECA75E24D51B0800BBA9BB /* ja */,
69385E33274ACFDE001AB1E9 /* cs */,
); );
name = EntryInspectorView.xib; name = EntryInspectorView.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -2929,7 +2682,6 @@
6A74B06B2076F4B40049BC29 /* sv-SE */, 6A74B06B2076F4B40049BC29 /* sv-SE */,
FA8CCD8623A7A6F7003A3BB1 /* uk */, FA8CCD8623A7A6F7003A3BB1 /* uk */,
6FECA75F24D51B0800BBA9BB /* ja */, 6FECA75F24D51B0800BBA9BB /* ja */,
69385E34274ACFDF001AB1E9 /* cs */,
); );
name = GroupInspectorView.xib; name = GroupInspectorView.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -2949,7 +2701,6 @@
78E1F8AF22E3A3DF00E738AE /* ru */, 78E1F8AF22E3A3DF00E738AE /* ru */,
FA8CCD8023A7A6F6003A3BB1 /* uk */, FA8CCD8023A7A6F6003A3BB1 /* uk */,
6FECA76224D51B0800BBA9BB /* ja */, 6FECA76224D51B0800BBA9BB /* ja */,
69385E38274ACFDF001AB1E9 /* cs */,
); );
name = IntegrationPreferences.xib; name = IntegrationPreferences.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -2969,7 +2720,6 @@
6A74B0672076F4B40049BC29 /* sv-SE */, 6A74B0672076F4B40049BC29 /* sv-SE */,
FA8CCD8123A7A6F6003A3BB1 /* uk */, FA8CCD8123A7A6F6003A3BB1 /* uk */,
6FECA76624D51B0900BBA9BB /* ja */, 6FECA76624D51B0900BBA9BB /* ja */,
69385E3C274ACFDF001AB1E9 /* cs */,
); );
name = WorkflowPreferences.xib; name = WorkflowPreferences.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -2989,7 +2739,6 @@
6A74B0682076F4B40049BC29 /* sv-SE */, 6A74B0682076F4B40049BC29 /* sv-SE */,
FA8CCD8223A7A6F6003A3BB1 /* uk */, FA8CCD8223A7A6F6003A3BB1 /* uk */,
6FECA76524D51B0900BBA9BB /* ja */, 6FECA76524D51B0900BBA9BB /* ja */,
69385E3B274ACFDF001AB1E9 /* cs */,
); );
name = UpdatePreferences.xib; name = UpdatePreferences.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -3009,7 +2758,6 @@
6A74B0702076F4B50049BC29 /* sv-SE */, 6A74B0702076F4B50049BC29 /* sv-SE */,
FA8CCD8B23A7A6F9003A3BB1 /* uk */, FA8CCD8B23A7A6F9003A3BB1 /* uk */,
6FECA76B24D51B0900BBA9BB /* ja */, 6FECA76B24D51B0900BBA9BB /* ja */,
69385E42274ACFE0001AB1E9 /* cs */,
); );
name = DatePickingView.xib; name = DatePickingView.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -3029,7 +2777,6 @@
6A74B0632076F4B30049BC29 /* sv-SE */, 6A74B0632076F4B30049BC29 /* sv-SE */,
FA8CCD7C23A7A6F5003A3BB1 /* uk */, FA8CCD7C23A7A6F5003A3BB1 /* uk */,
6FECA75C24D51B0700BBA9BB /* ja */, 6FECA75C24D51B0700BBA9BB /* ja */,
69385E31274ACFDE001AB1E9 /* cs */,
); );
name = PasswordEditWindow.xib; name = PasswordEditWindow.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -3049,7 +2796,6 @@
6A74B06E2076F4B50049BC29 /* sv-SE */, 6A74B06E2076F4B50049BC29 /* sv-SE */,
FA8CCD8923A7A6F8003A3BB1 /* uk */, FA8CCD8923A7A6F8003A3BB1 /* uk */,
6FECA76D24D51B0A00BBA9BB /* ja */, 6FECA76D24D51B0A00BBA9BB /* ja */,
69385E44274ACFE0001AB1E9 /* cs */,
); );
name = PasswordCreatorView.xib; name = PasswordCreatorView.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -3069,7 +2815,6 @@
6A74B0622076F4B30049BC29 /* sv-SE */, 6A74B0622076F4B30049BC29 /* sv-SE */,
FA8CCD7B23A7A6F5003A3BB1 /* uk */, FA8CCD7B23A7A6F5003A3BB1 /* uk */,
6FECA75A24D51B0700BBA9BB /* ja */, 6FECA75A24D51B0700BBA9BB /* ja */,
69385E2F274ACFDE001AB1E9 /* cs */,
); );
name = DatabaseSettingsWindow.xib; name = DatabaseSettingsWindow.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -3087,7 +2832,6 @@
D364AB1823FC104300AB1D8E /* pl */, D364AB1823FC104300AB1D8E /* pl */,
FA8CCD8423A7A6F7003A3BB1 /* uk */, FA8CCD8423A7A6F7003A3BB1 /* uk */,
6FECA76424D51B0800BBA9BB /* ja */, 6FECA76424D51B0800BBA9BB /* ja */,
69385E3A274ACFDF001AB1E9 /* cs */,
); );
name = PluginRepositoryBrowserView.xib; name = PluginRepositoryBrowserView.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -3104,7 +2848,6 @@
D364AB1723FC104300AB1D8E /* pl */, D364AB1723FC104300AB1D8E /* pl */,
FA8CCD9423A7A6FA003A3BB1 /* uk */, FA8CCD9423A7A6FA003A3BB1 /* uk */,
6FECA76924D51B0900BBA9BB /* ja */, 6FECA76924D51B0900BBA9BB /* ja */,
69385E40274ACFDF001AB1E9 /* cs */,
); );
name = AutotypeDoctorReportViewController.xib; name = AutotypeDoctorReportViewController.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -3123,7 +2866,6 @@
ABE8662E2316617500201125 /* zh-Hans */, ABE8662E2316617500201125 /* zh-Hans */,
FA8CCD9723A7A6FB003A3BB1 /* uk */, FA8CCD9723A7A6FB003A3BB1 /* uk */,
6FECA77624D51B0B00BBA9BB /* ja */, 6FECA77624D51B0B00BBA9BB /* ja */,
69385E4D274ACFE0001AB1E9 /* cs */,
); );
name = Localizable.stringsdict; name = Localizable.stringsdict;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -3143,7 +2885,6 @@
ABE506D522EFF97400B9F8DA /* zh-Hans */, ABE506D522EFF97400B9F8DA /* zh-Hans */,
FA8CCD9023A7A6FA003A3BB1 /* uk */, FA8CCD9023A7A6FA003A3BB1 /* uk */,
6FECA76824D51B0900BBA9BB /* ja */, 6FECA76824D51B0900BBA9BB /* ja */,
69385E3F274ACFDF001AB1E9 /* cs */,
); );
name = AutotypeCandidateSelectionView.xib; name = AutotypeCandidateSelectionView.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -3163,7 +2904,6 @@
ABE506D622EFF97400B9F8DA /* zh-Hans */, ABE506D622EFF97400B9F8DA /* zh-Hans */,
FA8CCD8E23A7A6F9003A3BB1 /* uk */, FA8CCD8E23A7A6F9003A3BB1 /* uk */,
6FECA76724D51B0900BBA9BB /* ja */, 6FECA76724D51B0900BBA9BB /* ja */,
69385E3E274ACFDF001AB1E9 /* cs */,
); );
name = AutotypeBuilderView.xib; name = AutotypeBuilderView.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -3221,97 +2961,6 @@
}; };
name = Release; name = Release;
}; };
4C4F120927D9055600ED5495 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_ENTITLEMENTS = AutotypeOverlay/AutotypeOverlay.entitlements;
CODE_SIGN_IDENTITY = "-";
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 1;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = "";
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = AutotypeOverlay/Info.plist;
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2022 HicknHack Software GmbH. All rights reserved.";
INFOPLIST_KEY_NSMainNibFile = MainMenu;
INFOPLIST_KEY_NSPrincipalClass = NSApplication;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 11.6;
MARKETING_VERSION = 1.0;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.hicknhacksoftware.AutotypeOverlay;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_EMIT_LOC_STRINGS = YES;
};
name = Debug;
};
4C4F120A27D9055600ED5495 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_ENTITLEMENTS = AutotypeOverlay/AutotypeOverlay.entitlements;
CODE_SIGN_IDENTITY = "-";
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = "";
ENABLE_NS_ASSERTIONS = NO;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = AutotypeOverlay/Info.plist;
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2022 HicknHack Software GmbH. All rights reserved.";
INFOPLIST_KEY_NSMainNibFile = MainMenu;
INFOPLIST_KEY_NSPrincipalClass = NSApplication;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 11.6;
MARKETING_VERSION = 1.0;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.hicknhacksoftware.AutotypeOverlay;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_EMIT_LOC_STRINGS = YES;
};
name = Release;
};
4C77E37E15B84A240093A587 /* Debug */ = { 4C77E37E15B84A240093A587 /* Debug */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
buildSettings = { buildSettings = {
@@ -3330,7 +2979,6 @@
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES;
@@ -3338,7 +2986,7 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = ""; CODE_SIGN_IDENTITY = "";
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 0.8.1; CURRENT_PROJECT_VERSION = "0.8-beta";
ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES; ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99; GCC_C_LANGUAGE_STANDARD = gnu99;
@@ -3386,7 +3034,6 @@
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES;
@@ -3394,7 +3041,7 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = ""; CODE_SIGN_IDENTITY = "";
COPY_PHASE_STRIP = YES; COPY_PHASE_STRIP = YES;
CURRENT_PROJECT_VERSION = 0.8.1; CURRENT_PROJECT_VERSION = "0.8-beta";
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99; GCC_C_LANGUAGE_STANDARD = gnu99;
@@ -3422,6 +3069,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = MacPassAppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = MacPassAppIcon;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES; CLANG_ENABLE_OBJC_ARC = YES;
CODE_SIGN_ENTITLEMENTS = MacPass/MacPass.entitlements;
CODE_SIGN_IDENTITY = "-"; CODE_SIGN_IDENTITY = "-";
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = "${CURRENT_PROJECT_VERSION}"; CURRENT_PROJECT_VERSION = "${CURRENT_PROJECT_VERSION}";
@@ -3452,6 +3100,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = MacPassAppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = MacPassAppIcon;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES; CLANG_ENABLE_OBJC_ARC = YES;
CODE_SIGN_ENTITLEMENTS = MacPass/MacPass.entitlements;
CODE_SIGN_IDENTITY = "-"; CODE_SIGN_IDENTITY = "-";
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = "${CURRENT_PROJECT_VERSION}"; CURRENT_PROJECT_VERSION = "${CURRENT_PROJECT_VERSION}";
@@ -3489,15 +3138,6 @@
defaultConfigurationIsVisible = 0; defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release; defaultConfigurationName = Release;
}; };
4C4F120B27D9055600ED5495 /* Build configuration list for PBXNativeTarget "AutotypeOverlay" */ = {
isa = XCConfigurationList;
buildConfigurations = (
4C4F120927D9055600ED5495 /* Debug */,
4C4F120A27D9055600ED5495 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
4C77E35C15B84A240093A587 /* Build configuration list for PBXProject "MacPass" */ = { 4C77E35C15B84A240093A587 /* Build configuration list for PBXProject "MacPass" */ = {
isa = XCConfigurationList; isa = XCConfigurationList;
buildConfigurations = ( buildConfigurations = (

View File

@@ -1,78 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1320"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "4C4F11FB27D9055300ED5495"
BuildableName = "AutotypeOverlay.app"
BlueprintName = "AutotypeOverlay"
ReferencedContainer = "container:MacPass.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "4C4F11FB27D9055300ED5495"
BuildableName = "AutotypeOverlay.app"
BlueprintName = "AutotypeOverlay"
ReferencedContainer = "container:MacPass.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "4C4F11FB27D9055300ED5495"
BuildableName = "AutotypeOverlay.app"
BlueprintName = "AutotypeOverlay"
ReferencedContainer = "container:MacPass.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Scheme <Scheme
LastUpgradeVersion = "1250" LastUpgradeVersion = "1240"
version = "2.0"> version = "2.0">
<BuildAction <BuildAction
parallelizeBuildables = "YES" parallelizeBuildables = "YES"

View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17506" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<dependencies> <dependencies>
<deployment identifier="macosx"/> <deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/> <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17506"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<objects> <objects>
@@ -15,12 +15,12 @@
</customObject> </customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/> <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/> <customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customView misplaced="YES" id="Hz6-mo-xeY"> <customView id="Hz6-mo-xeY">
<rect key="frame" x="0.0" y="0.0" width="392" height="220"/> <rect key="frame" x="0.0" y="0.0" width="392" height="210"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews> <subviews>
<tokenField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Jzn-UC-Ok8"> <tokenField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Jzn-UC-Ok8">
<rect key="frame" x="20" y="60" width="352" height="66"/> <rect key="frame" x="20" y="50" width="352" height="66"/>
<constraints> <constraints>
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="66" id="7rr-fC-NeH"/> <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="66" id="7rr-fC-NeH"/>
</constraints> </constraints>
@@ -31,14 +31,14 @@
</tokenFieldCell> </tokenFieldCell>
</tokenField> </tokenField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="lS4-1R-Bhp"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="lS4-1R-Bhp">
<rect key="frame" x="201" y="13" width="178" height="32"/> <rect key="frame" x="215" y="19" width="157" height="23"/>
<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"> <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">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
</button> </button>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="7xF-eN-vs3"> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="7xF-eN-vs3">
<rect key="frame" x="18" y="186" width="207" height="14"/> <rect key="frame" x="18" y="176" width="207" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Available Commands and Placeholders" id="lug-97-H9D"> <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"/> <font key="font" metaFont="smallSystem"/>
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
@@ -46,7 +46,7 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="9Kw-lW-ASe"> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="9Kw-lW-ASe">
<rect key="frame" x="18" y="134" width="107" height="14"/> <rect key="frame" x="18" y="124" width="107" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Autotype Sequence" id="8ny-Qk-Jvo"> <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Autotype Sequence" id="8ny-Qk-Jvo">
<font key="font" metaFont="smallSystem"/> <font key="font" metaFont="smallSystem"/>
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
@@ -54,7 +54,7 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<tokenField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="k06-gn-ahB"> <tokenField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="k06-gn-ahB">
<rect key="frame" x="20" y="156" width="352" height="22"/> <rect key="frame" x="20" y="146" width="352" height="22"/>
<constraints> <constraints>
<constraint firstAttribute="width" relation="lessThanOrEqual" constant="400" id="can-wk-8oX"/> <constraint firstAttribute="width" relation="lessThanOrEqual" constant="400" id="can-wk-8oX"/>
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="22" id="nk8-bB-yOg"/> <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 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="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 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="20" symbolic="YES" id="ZCK-9U-M92"/> <constraint firstItem="lS4-1R-Bhp" firstAttribute="top" secondItem="Jzn-UC-Ok8" secondAttribute="bottom" constant="8" 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="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="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"/> <constraint firstItem="9Kw-lW-ASe" firstAttribute="top" secondItem="k06-gn-ahB" secondAttribute="bottom" constant="8" symbolic="YES" id="qdv-SC-dEw"/>

View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17156" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<dependencies> <dependencies>
<deployment identifier="macosx"/> <deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19529"/> <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17156"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<objects> <objects>
@@ -44,7 +44,7 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="x9d-0h-hyJ"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="x9d-0h-hyJ">
<rect key="frame" x="37" y="322" width="230" height="32"/> <rect key="frame" x="38" y="321" width="236" height="32"/>
<buttonCell key="cell" type="push" title="Open Accessibilty Preferences…" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="8m1-vs-pd5"> <buttonCell key="cell" type="push" title="Open Accessibilty Preferences…" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="8m1-vs-pd5">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
@@ -54,20 +54,20 @@
</connections> </connections>
</button> </button>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="vvZ-Lj-v22"> <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="vvZ-Lj-v22">
<rect key="frame" x="20" y="284" width="16" height="16"/> <rect key="frame" x="20" y="283" width="16" height="16"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="NSStatusAvailable" id="kCX-CB-5vQ"/> <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="NSStatusAvailable" id="kCX-CB-5vQ"/>
</imageView> </imageView>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" verticalCompressionResistancePriority="751" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6vq-iM-inn"> <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" verticalCompressionResistancePriority="751" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6vq-iM-inn">
<rect key="frame" x="42" y="164" width="340" height="112"/> <rect key="frame" x="42" y="177" width="340" height="98"/>
<textFieldCell key="cell" controlSize="small" selectable="YES" id="7of-1z-Nfk"> <textFieldCell key="cell" controlSize="small" selectable="YES" id="7of-1z-Nfk">
<font key="font" metaFont="smallSystem"/> <font key="font" metaFont="smallSystem"/>
<string key="title">MacPass will read every window title when Autotype or Global Autotype is executed to find a match. Since macOS 10.15 Catalina it is not possible to read any window title, if the user has not granted permissions to record the screen. If you are running macOS 10.15 or higher, MacPass will check if it can read every window title of currently visible windows. This test will not read the actual title. The titles aren't stored or processed in any way.</string> <string key="title">MacPass will read every window title when Global Autotype is executed to find a match. Since macOS 10.15 Catalina it is not possible to read any window title, if the user has not granted permissions to record the screen. If you are running macOS 10.15 or higher, MacPass will check if it can read every window title of currently visible windows. This test will not read the actual title. The titles aren't stored or processed in any way.</string>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="IP0-CP-tlA"> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="IP0-CP-tlA">
<rect key="frame" x="42" y="284" width="112" height="16"/> <rect key="frame" x="42" y="283" width="112" height="16"/>
<textFieldCell key="cell" lineBreakMode="clipping" title="Screen Recording" id="9gr-mz-2I4"> <textFieldCell key="cell" lineBreakMode="clipping" title="Screen Recording" id="9gr-mz-2I4">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@@ -75,10 +75,10 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="BHb-cd-Q0r"> <box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="BHb-cd-Q0r">
<rect key="frame" x="20" y="306" width="360" height="5"/> <rect key="frame" x="20" y="305" width="360" height="5"/>
</box> </box>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="d5Z-hD-bpr"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="d5Z-hD-bpr">
<rect key="frame" x="37" y="117" width="172" height="32"/> <rect key="frame" x="38" y="129" width="177" height="32"/>
<buttonCell key="cell" type="push" title="Request Permissions…" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="1Nx-Cg-TCn"> <buttonCell key="cell" type="push" title="Request Permissions…" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="1Nx-Cg-TCn">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
@@ -88,7 +88,7 @@
</connections> </connections>
</button> </button>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" preferredMaxLayoutWidth="336" translatesAutoresizingMaskIntoConstraints="NO" id="cu4-Jq-eaS"> <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" preferredMaxLayoutWidth="336" translatesAutoresizingMaskIntoConstraints="NO" id="cu4-Jq-eaS">
<rect key="frame" x="42" y="74" width="340" height="42"/> <rect key="frame" x="42" y="86" width="340" height="42"/>
<textFieldCell key="cell" selectable="YES" id="Mhg-rd-1hK"> <textFieldCell key="cell" selectable="YES" id="Mhg-rd-1hK">
<font key="font" metaFont="smallSystem"/> <font key="font" metaFont="smallSystem"/>
<string key="title">To request Screen Recording permissions, MacPass will try to capture a 1 by 1 Pixel sized screenshot of the top left part of your screen. The data is not stored nor processed in any way.</string> <string key="title">To request Screen Recording permissions, MacPass will try to capture a 1 by 1 Pixel sized screenshot of the top left part of your screen. The data is not stored nor processed in any way.</string>
@@ -97,7 +97,7 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="dek-ho-dPm"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="dek-ho-dPm">
<rect key="frame" x="37" y="39" width="266" height="32"/> <rect key="frame" x="38" y="50" width="271" height="32"/>
<buttonCell key="cell" type="push" title="Open Screen Recording Preferences…" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="lgB-Ys-L9R"> <buttonCell key="cell" type="push" title="Open Screen Recording Preferences…" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="lgB-Ys-L9R">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>

View File

@@ -1,6 +1,6 @@
{\rtf1\ansi\ansicpg1250\cocoartf2636 {\rtf1\ansi\ansicpg1252\cocoartf2513
\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica-Bold;\f1\fswiss\fcharset0 Helvetica;\f2\fnil\fcharset0 HelveticaNeue; \cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica-Bold;\f1\fswiss\fcharset0 Helvetica;\f2\fnil\fcharset0 HelveticaNeue;
\f3\fnil\fcharset0 AppleColorEmoji;} \f3\fnil\fcharset0 AppleColorEmoji;\f4\fnil\fcharset0 SFProText-Regular;}
{\colortbl;\red255\green255\blue255;\red0\green0\blue0;\red9\green79\blue209;\red69\green60\blue204; {\colortbl;\red255\green255\blue255;\red0\green0\blue0;\red9\green79\blue209;\red69\green60\blue204;
\red52\green110\blue183;\red38\green38\blue38;} \red52\green110\blue183;\red38\green38\blue38;}
{\*\expandedcolortbl;;\cssrgb\c0\c0\c0\cname textColor;\cssrgb\c0\c40784\c85490\cname linkColor;\cssrgb\c34510\c33725\c83922; {\*\expandedcolortbl;;\cssrgb\c0\c0\c0\cname textColor;\cssrgb\c0\c40784\c85490\cname linkColor;\cssrgb\c34510\c33725\c83922;
@@ -21,7 +21,7 @@
License:\ License:\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
\f1\b0 \cf2 MacPass KeePass compatible client for macOS\ \f1\b0 \cf2 MacPass KeePass compatible client for OS X\
Copyright (c) 2012-2021 Michael Starke, HicknHack Software GmbH\ 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\ 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\
@@ -62,10 +62,11 @@ Karl Heinz Marbaise}}\kerning1\expnd0\expndtw3
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
\f1\b0 \cf2 \ \f1\b0 \cf2 \
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}},
\ \f4 \cf4 \expnd0\expndtw0\kerning0
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
{\field{\*\fldinst{HYPERLINK "https://github.com/clone1612"}}{\fldrslt \cf3 \kerning1\expnd0\expndtw0 Jannick Hemelhof}}\cf0 \kerning1\expnd0\expndtw0 \ \f1 \cf3 \kerning1\expnd0\expndtw0 Jannick Hemelhof}}
\f1 \cf0 \kerning1\expnd0\expndtw0 \
\ \
\cf2 French translation:\cf0 {\field{\*\fldinst{HYPERLINK "mailto:gil@panix.com"}}{\fldrslt \cf3 Gil Andr\'e9}}\ \cf2 French translation:\cf0 {\field{\*\fldinst{HYPERLINK "mailto:gil@panix.com"}}{\fldrslt \cf3 Gil Andr\'e9}}\
\ \

View File

@@ -1,22 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies> <dependencies>
<deployment identifier="macosx"/> <deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19529"/> <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<objects> <objects>
<customObject id="-2" userLabel="File's Owner" customClass="MPDatabaseSettingsWindowController"> <customObject id="-2" userLabel="File's Owner" customClass="MPDatabaseSettingsWindowController">
<connections> <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="aesEncryptionRoundsTextField" destination="8aq-34-rcd" id="WoJ-Kc-d8q"/>
<outlet property="argon2dIterationsTextField" destination="39N-8Q-J8b" id="af4-Ft-aDX"/> <outlet property="argon2IterationsTextField" destination="39N-8Q-J8b" id="af4-Ft-aDX"/>
<outlet property="argon2dMemoryStepper" destination="NfL-iP-SRk" id="eAW-kb-cLh"/> <outlet property="argon2MemoryStepper" destination="NfL-iP-SRk" id="eAW-kb-cLh"/>
<outlet property="argon2dMemoryTextField" destination="eEW-oa-V7U" id="Wig-Rk-lm0"/> <outlet property="argon2MemoryTextField" destination="eEW-oa-V7U" id="Wig-Rk-lm0"/>
<outlet property="argon2dThreadsTextField" destination="178-0f-guB" id="dHa-L6-gOs"/> <outlet property="argon2ThreadsTextField" 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="cipherPopupButton" destination="3ek-Rg-w82" id="LbB-Fd-rqC"/>
<outlet property="createKeyDerivationParametersButton" destination="P98-Cu-Tha" id="UQ0-eg-rdx"/> <outlet property="createKeyDerivationParametersButton" destination="P98-Cu-Tha" id="UQ0-eg-rdx"/>
<outlet property="databaseColorColorWell" destination="1439" id="Fqq-2P-vbf"/> <outlet property="databaseColorColorWell" destination="1439" id="Fqq-2P-vbf"/>
@@ -52,13 +51,13 @@
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/> <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="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="contentRect" x="196" y="240" width="500" height="360"/>
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1415"/> <rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
<view key="contentView" misplaced="YES" id="2"> <view key="contentView" misplaced="YES" id="2">
<rect key="frame" x="0.0" y="0.0" width="500" height="380"/> <rect key="frame" x="0.0" y="0.0" width="500" height="360"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="288"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="288">
<rect key="frame" x="433" y="13" width="54" height="32"/> <rect key="frame" x="385" y="13" width="59" height="32"/>
<buttonCell key="cell" type="push" title="OK" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="289"> <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"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
@@ -71,7 +70,7 @@ DQ
</connections> </connections>
</button> </button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="956"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="956">
<rect key="frame" x="359" y="13" width="76" height="32"/> <rect key="frame" x="303" y="13" width="82" height="32"/>
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="957"> <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"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
@@ -84,16 +83,16 @@ Gw
</connections> </connections>
</button> </button>
<tabView translatesAutoresizingMaskIntoConstraints="NO" id="357"> <tabView translatesAutoresizingMaskIntoConstraints="NO" id="357">
<rect key="frame" x="13" y="40" width="474" height="334"/> <rect key="frame" x="13" y="41" width="432" height="338"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<tabViewItems> <tabViewItems>
<tabViewItem label="General" identifier="1" id="358"> <tabViewItem label="General" identifier="1" id="358">
<view key="view" id="361"> <view key="view" id="361">
<rect key="frame" x="10" y="33" width="454" height="264"/> <rect key="frame" x="10" y="33" width="454" height="265"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="231"> <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="231">
<rect key="frame" x="154" y="223" width="280" height="21"/> <rect key="frame" x="154" y="224" width="280" height="21"/>
<constraints> <constraints>
<constraint firstAttribute="width" constant="280" id="cra-uC-nCv"/> <constraint firstAttribute="width" constant="280" id="cra-uC-nCv"/>
</constraints> </constraints>
@@ -104,7 +103,7 @@ Gw
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="256"> <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="256">
<rect key="frame" x="70" y="200" width="78" height="16"/> <rect key="frame" x="70" y="201" width="78" height="16"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Description:" id="257"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Description:" id="257">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -112,7 +111,7 @@ Gw
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="189"> <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="189">
<rect key="frame" x="46" y="227" width="102" height="16"/> <rect key="frame" x="46" y="228" width="102" height="16"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Database name:" id="190"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Database name:" id="190">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -120,7 +119,7 @@ Gw
</textFieldCell> </textFieldCell>
</textField> </textField>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1394"> <popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1394">
<rect key="frame" x="151" y="71" width="72" height="25"/> <rect key="frame" x="152" y="72" width="71" height="25"/>
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="1395"> <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"/> <behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/> <font key="font" metaFont="menu"/>
@@ -133,7 +132,7 @@ Gw
</popUpButtonCell> </popUpButtonCell>
</popUpButton> </popUpButton>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1404"> <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1404">
<rect key="frame" x="60" y="77" width="88" height="16"/> <rect key="frame" x="60" y="78" width="88" height="16"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Compression:" id="1405"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Compression:" id="1405">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -157,7 +156,7 @@ Gw
<color key="color" red="0.05813049898" green="0.055541899059999997" blue="1" alpha="1" colorSpace="calibratedRGB"/> <color key="color" red="0.05813049898" green="0.055541899059999997" blue="1" alpha="1" colorSpace="calibratedRGB"/>
</colorWell> </colorWell>
<scrollView horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1530"> <scrollView horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1530">
<rect key="frame" x="154" y="115" width="280" height="100"/> <rect key="frame" x="154" y="116" width="280" height="100"/>
<clipView key="contentView" drawsBackground="NO" id="WOI-1v-RCe"> <clipView key="contentView" drawsBackground="NO" id="WOI-1v-RCe">
<rect key="frame" x="1" y="1" width="278" height="98"/> <rect key="frame" x="1" y="1" width="278" height="98"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
@@ -237,11 +236,11 @@ Gw
</tabViewItem> </tabViewItem>
<tabViewItem label="Security" identifier="" id="370"> <tabViewItem label="Security" identifier="" id="370">
<view key="view" id="371"> <view key="view" id="371">
<rect key="frame" x="10" y="33" width="454" height="288"/> <rect key="frame" x="10" y="33" width="412" height="292"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="3ek-Rg-w82"> <popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="3ek-Rg-w82">
<rect key="frame" x="149" y="244" width="157" height="25"/> <rect key="frame" x="129" y="248" width="155" height="25"/>
<constraints> <constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="150" id="F8Y-Uw-4mL"/> <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="150" id="F8Y-Uw-4mL"/>
</constraints> </constraints>
@@ -252,7 +251,7 @@ Gw
</popUpButtonCell> </popUpButtonCell>
</popUpButton> </popUpButton>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="vH7-5a-52C"> <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="vH7-5a-52C">
<rect key="frame" x="73" y="251" width="73" height="16"/> <rect key="frame" x="52" y="255" width="73" height="16"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Encryption:" id="gxY-UL-bEG"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Encryption:" id="gxY-UL-bEG">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@@ -260,23 +259,20 @@ Gw
</textFieldCell> </textFieldCell>
</textField> </textField>
<box title="Key derivation" translatesAutoresizingMaskIntoConstraints="NO" id="pbl-Mb-r8V"> <box title="Key derivation" translatesAutoresizingMaskIntoConstraints="NO" id="pbl-Mb-r8V">
<rect key="frame" x="17" y="16" width="420" height="224"/> <rect key="frame" x="17" y="16" width="378" height="227"/>
<view key="contentView" id="hkT-SX-Te1"> <view key="contentView" id="hkT-SX-Te1">
<rect key="frame" x="3" y="3" width="414" height="206"/> <rect key="frame" x="3" y="3" width="372" height="209"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="P98-Cu-Tha"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="P98-Cu-Tha">
<rect key="frame" x="249" y="17" width="146" height="23"/> <rect key="frame" x="209" y="18" width="143" 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"> <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"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
<connections>
<action selector="benchmarkParametersForDelay:" target="-2" id="Iyw-Hp-gm2"/>
</connections>
</button> </button>
<tabView drawsBackground="NO" type="noTabsNoBorder" translatesAutoresizingMaskIntoConstraints="NO" id="2MY-PW-kzL"> <tabView drawsBackground="NO" type="noTabsNoBorder" translatesAutoresizingMaskIntoConstraints="NO" id="2MY-PW-kzL">
<rect key="frame" x="12" y="47" width="390" height="111"/> <rect key="frame" x="12" y="49" width="348" height="111"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<tabViewItems> <tabViewItems>
<tabViewItem label="Aes" identifier="1" id="ft1-pl-lpO"> <tabViewItem label="Aes" identifier="1" id="ft1-pl-lpO">
@@ -417,103 +413,14 @@ Gw
</tabViewItem> </tabViewItem>
<tabViewItem label="Argon2id" identifier="" id="xI9-6m-9ju"> <tabViewItem label="Argon2id" identifier="" id="xI9-6m-9ju">
<view key="view" id="k6k-0V-j7w"> <view key="view" id="k6k-0V-j7w">
<rect key="frame" x="0.0" y="0.0" width="390" height="111"/> <rect key="frame" x="0.0" y="0.0" width="348" height="111"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <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> </view>
</tabViewItem> </tabViewItem>
</tabViewItems> </tabViewItems>
</tabView> </tabView>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2cq-R3-Ksh"> <popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2cq-R3-Ksh">
<rect key="frame" x="129" y="162" width="157" height="25"/> <rect key="frame" x="109" y="165" width="155" height="25"/>
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="Pb9-YV-rYe"> <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"/> <behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/> <font key="font" metaFont="menu"/>
@@ -524,7 +431,7 @@ Gw
</connections> </connections>
</popUpButton> </popUpButton>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="4el-r1-iRL"> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="4el-r1-iRL">
<rect key="frame" x="63" y="169" width="63" height="16"/> <rect key="frame" x="42" y="172" width="63" height="16"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Algorithm" id="GVd-KH-pHc"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Algorithm" id="GVd-KH-pHc">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@@ -569,18 +476,18 @@ Gw
</tabViewItem> </tabViewItem>
<tabViewItem label="Advanced" identifier="" id="368"> <tabViewItem label="Advanced" identifier="" id="368">
<view key="view" id="369"> <view key="view" id="369">
<rect key="frame" x="10" y="33" width="513" height="393"/> <rect key="frame" x="10" y="33" width="507" height="391"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<button verticalHuggingPriority="1000" translatesAutoresizingMaskIntoConstraints="NO" id="531"> <button verticalHuggingPriority="1000" translatesAutoresizingMaskIntoConstraints="NO" id="531">
<rect key="frame" x="184" y="356" width="149" height="18"/> <rect key="frame" x="184" y="355" width="145" height="18"/>
<buttonCell key="cell" type="check" title="Enable Entry History" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="532"> <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"/> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
</button> </button>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1273"> <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1273">
<rect key="frame" x="186" y="328" width="64" height="21"/> <rect key="frame" x="186" y="327" width="64" height="22"/>
<constraints> <constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="64" id="PRg-vx-8QK"/> <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="64" id="PRg-vx-8QK"/>
</constraints> </constraints>
@@ -592,11 +499,11 @@ Gw
</textFieldCell> </textFieldCell>
</textField> </textField>
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1294"> <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1294">
<rect key="frame" x="255" y="325" width="19" height="28"/> <rect key="frame" x="255" y="325" width="19" height="27"/>
<stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="1295"/> <stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="1295"/>
</stepper> </stepper>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1268"> <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1268">
<rect key="frame" x="41" y="331" width="139" height="16"/> <rect key="frame" x="41" y="330" width="139" height="17"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" enabled="NO" sendsActionOnEndEditing="YES" title="Maximum history size:" id="1269"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" enabled="NO" sendsActionOnEndEditing="YES" title="Maximum history size:" id="1269">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -604,7 +511,7 @@ Gw
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="557"> <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="557">
<rect key="frame" x="18" y="304" width="162" height="16"/> <rect key="frame" x="18" y="302" width="162" height="17"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" enabled="NO" sendsActionOnEndEditing="YES" title="Maximum items in history:" id="558"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" enabled="NO" sendsActionOnEndEditing="YES" title="Maximum items in history:" id="558">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -612,7 +519,7 @@ Gw
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="593"> <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="593">
<rect key="frame" x="186" y="301" width="64" height="21"/> <rect key="frame" x="186" y="299" width="64" height="22"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="594"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="594">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
@@ -620,18 +527,18 @@ Gw
</textFieldCell> </textFieldCell>
</textField> </textField>
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="599"> <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="599">
<rect key="frame" x="255" y="298" width="19" height="28"/> <rect key="frame" x="255" y="297" width="19" height="27"/>
<stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="600"/> <stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="600"/>
</stepper> </stepper>
<button translatesAutoresizingMaskIntoConstraints="NO" id="535"> <button translatesAutoresizingMaskIntoConstraints="NO" id="535">
<rect key="frame" x="184" y="268" width="141" height="18"/> <rect key="frame" x="184" y="266" width="137" height="18"/>
<buttonCell key="cell" type="check" title="Enable Recycle Bin" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="536"> <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"/> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
</button> </button>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="678"> <popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="678">
<rect key="frame" x="183" y="237" width="39" height="25"/> <rect key="frame" x="184" y="236" width="38" height="25"/>
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="679"> <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"/> <behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/> <font key="font" metaFont="menu"/>
@@ -639,10 +546,10 @@ Gw
</popUpButtonCell> </popUpButtonCell>
</popUpButton> </popUpButton>
<box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="U7M-MH-EFw"> <box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="U7M-MH-EFw">
<rect key="frame" x="20" y="291" width="473" height="5"/> <rect key="frame" x="20" y="288" width="467" height="5"/>
</box> </box>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1582"> <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1582">
<rect key="frame" x="63" y="203" width="117" height="16"/> <rect key="frame" x="63" y="200" width="117" height="17"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Default Username:" id="1591"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Default Username:" id="1591">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -650,7 +557,7 @@ Gw
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1730"> <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1730">
<rect key="frame" x="186" y="200" width="307" height="21"/> <rect key="frame" x="186" y="197" width="301" height="22"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="1731"> <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"/> <font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -658,7 +565,7 @@ Gw
</textFieldCell> </textFieldCell>
</textField> </textField>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1738"> <popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1738">
<rect key="frame" x="183" y="156" width="39" height="25"/> <rect key="frame" x="184" y="153" width="38" height="25"/>
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="1739"> <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"/> <behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/> <font key="font" metaFont="menu"/>
@@ -666,7 +573,7 @@ Gw
</popUpButtonCell> </popUpButtonCell>
</popUpButton> </popUpButton>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="19r-LE-7X5"> <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="19r-LE-7X5">
<rect key="frame" x="186" y="98" width="128" height="21"/> <rect key="frame" x="186" y="95" width="128" height="22"/>
<constraints> <constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="128" id="COb-0V-OmT"/> <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="128" id="COb-0V-OmT"/>
</constraints> </constraints>
@@ -678,25 +585,25 @@ Gw
</textFieldCell> </textFieldCell>
</textField> </textField>
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="GUO-6H-UI2"> <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="GUO-6H-UI2">
<rect key="frame" x="319" y="94" width="19" height="28"/> <rect key="frame" x="319" y="92" width="19" height="27"/>
<stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="qQV-3d-GpK"/> <stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="qQV-3d-GpK"/>
</stepper> </stepper>
<button verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Hqc-B0-xyz"> <button verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Hqc-B0-xyz">
<rect key="frame" x="184" y="126" width="175" height="18"/> <rect key="frame" x="184" y="123" width="171" height="18"/>
<buttonCell key="cell" type="check" title="Recommend key change" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="CtU-Eq-dgy"> <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"/> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
</button> </button>
<button translatesAutoresizingMaskIntoConstraints="NO" id="upv-b3-vCc"> <button translatesAutoresizingMaskIntoConstraints="NO" id="upv-b3-vCc">
<rect key="frame" x="184" y="73" width="133" height="18"/> <rect key="frame" x="184" y="71" width="129" height="18"/>
<buttonCell key="cell" type="check" title="Force key change" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="z6u-YT-7LE"> <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"/> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
</button> </button>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="VYh-cm-fix"> <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="VYh-cm-fix">
<rect key="frame" x="186" y="45" width="128" height="21"/> <rect key="frame" x="186" y="43" width="128" height="22"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="M9G-Yy-1s4"> <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"/> <customFormatter key="formatter" id="3Ax-U4-Ofb" customClass="MPDayCountFormatter"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
@@ -705,11 +612,11 @@ Gw
</textFieldCell> </textFieldCell>
</textField> </textField>
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="lH4-xp-5QF"> <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="lH4-xp-5QF">
<rect key="frame" x="319" y="41" width="19" height="28"/> <rect key="frame" x="319" y="40" width="19" height="27"/>
<stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="7Hw-Qf-zWf"/> <stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="7Hw-Qf-zWf"/>
</stepper> </stepper>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1584"> <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1584">
<rect key="frame" x="75" y="163" width="105" height="16"/> <rect key="frame" x="75" y="159" width="105" height="17"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Template Group:" id="1588"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Template Group:" id="1588">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -717,10 +624,10 @@ Gw
</textFieldCell> </textFieldCell>
</textField> </textField>
<box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="I0d-r2-ySf"> <box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="I0d-r2-ySf">
<rect key="frame" x="20" y="149" width="473" height="5"/> <rect key="frame" x="20" y="145" width="467" height="5"/>
</box> </box>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="NPm-5h-2Mz"> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="NPm-5h-2Mz">
<rect key="frame" x="65" y="244" width="115" height="16"/> <rect key="frame" x="65" y="242" width="115" height="17"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Recyclebin Group:" id="kI5-Kp-byE"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Recyclebin Group:" id="kI5-Kp-byE">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@@ -728,7 +635,7 @@ Gw
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="OmP-GD-2nA"> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="OmP-GD-2nA">
<rect key="frame" x="27" y="101" width="153" height="16"/> <rect key="frame" x="27" y="98" width="153" height="17"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Recommend key change" id="Xib-Fn-sqx"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Recommend key change" id="Xib-Fn-sqx">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@@ -736,7 +643,7 @@ Gw
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="S0c-4E-42z"> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="S0c-4E-42z">
<rect key="frame" x="57" y="48" width="123" height="16"/> <rect key="frame" x="56" y="46" width="124" height="17"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Enforce key change" id="5QH-N1-FHK"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Enforce key change" id="5QH-N1-FHK">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@@ -744,7 +651,7 @@ Gw
</textFieldCell> </textFieldCell>
</textField> </textField>
<button translatesAutoresizingMaskIntoConstraints="NO" id="VMc-Qg-eCr"> <button translatesAutoresizingMaskIntoConstraints="NO" id="VMc-Qg-eCr">
<rect key="frame" x="184" y="20" width="261" height="18"/> <rect key="frame" x="184" y="19" width="257" 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"> <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"/> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
@@ -848,7 +755,7 @@ Gw
<constraint firstItem="956" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="2" secondAttribute="leading" constant="20" symbolic="YES" id="Yla-YR-bgz"/> <constraint firstItem="956" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="2" secondAttribute="leading" constant="20" symbolic="YES" id="Yla-YR-bgz"/>
</constraints> </constraints>
</view> </view>
<point key="canvasLocation" x="-2020.5" y="-860.5"/> <point key="canvasLocation" x="-2020" y="-860"/>
</window> </window>
</objects> </objects>
</document> </document>

View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="15702" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies> <dependencies>
<deployment identifier="macosx"/> <deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/> <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="15702"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<objects> <objects>
@@ -16,11 +16,11 @@
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/> <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/> <customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customView id="1"> <customView id="1">
<rect key="frame" x="0.0" y="0.0" width="190" height="132"/> <rect key="frame" x="0.0" y="0.0" width="180" height="134"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews> <subviews>
<datePicker horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="3"> <datePicker horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="3">
<rect key="frame" x="20" y="88" width="153" height="28"/> <rect key="frame" x="20" y="91" width="143" height="27"/>
<datePickerCell key="cell" borderStyle="bezel" alignment="left" id="4"> <datePickerCell key="cell" borderStyle="bezel" alignment="left" id="4">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<date key="date" timeIntervalSinceReferenceDate="-595929600"> <date key="date" timeIntervalSinceReferenceDate="-595929600">
@@ -32,7 +32,7 @@
</datePickerCell> </datePickerCell>
</datePicker> </datePicker>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="15"> <popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="15">
<rect key="frame" x="17" y="44" width="157" height="25"/> <rect key="frame" x="18" y="47" width="145" height="25"/>
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="16"> <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"/> <behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/> <font key="font" metaFont="menu"/>
@@ -42,9 +42,9 @@
<action selector="setDatePreset:" target="-2" id="RzX-je-KSz"/> <action selector="setDatePreset:" target="-2" id="RzX-je-KSz"/>
</connections> </connections>
</popUpButton> </popUpButton>
<button verticalHuggingPriority="750" horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="25"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="25">
<rect key="frame" x="87" y="13" width="90" height="32"/> <rect key="frame" x="90" y="19" width="70" height="23"/>
<buttonCell key="cell" type="push" title="Use Date" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="26"> <buttonCell key="cell" type="roundTextured" title="Use Date" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="26">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
@@ -52,9 +52,9 @@
<action selector="useDate:" target="-2" id="34n-E5-FQq"/> <action selector="useDate:" target="-2" id="34n-E5-FQq"/>
</connections> </connections>
</button> </button>
<button verticalHuggingPriority="750" horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="29"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="29">
<rect key="frame" x="13" y="13" width="76" height="32"/> <rect key="frame" x="26" y="19" width="56" height="23"/>
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="30"> <buttonCell key="cell" type="roundTextured" title="Cancel" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="30">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
@@ -73,7 +73,7 @@
<constraint firstAttribute="bottom" secondItem="25" secondAttribute="bottom" constant="20" symbolic="YES" id="36"/> <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 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="centerY" secondItem="29" secondAttribute="centerY" id="M8N-5g-ClS"/>
<constraint firstItem="25" firstAttribute="leading" secondItem="29" secondAttribute="trailing" constant="12" symbolic="YES" id="on5-xg-jcC"/> <constraint firstItem="25" firstAttribute="leading" secondItem="29" secondAttribute="trailing" constant="8" 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="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"/> <constraint firstItem="25" firstAttribute="top" secondItem="15" secondAttribute="bottom" constant="8" symbolic="YES" id="sxX-fk-xaJ"/>
</constraints> </constraints>

View File

@@ -1,13 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies> <dependencies>
<deployment identifier="macosx"/> <deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19529"/> <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<objects> <objects>
<customObject id="-2" userLabel="File's Owner" customClass="MPEntryInspectorViewController"> <customObject id="-2" userLabel="File's Owner" customClass="MPEntryInspectorViewController">
<connections> <connections>
<outlet property="URLTextField" destination="56" id="262"/>
<outlet property="addAttachmentButton" destination="177" id="w3F-U0-Rpk"/> <outlet property="addAttachmentButton" destination="177" id="w3F-U0-Rpk"/>
<outlet property="addCustomFieldButton" destination="G9J-nn-2bu" id="vco-Lt-hkc"/> <outlet property="addCustomFieldButton" destination="G9J-nn-2bu" id="vco-Lt-hkc"/>
<outlet property="addWindowAssociationButton" destination="Iy9-9L-Aev" id="kDA-Mm-lah"/> <outlet property="addWindowAssociationButton" destination="Iy9-9L-Aev" id="kDA-Mm-lah"/>
@@ -17,16 +18,23 @@
<outlet property="customEntrySequenceTextField" destination="cDK-DM-F5z" id="CDU-Oq-AHP"/> <outlet property="customEntrySequenceTextField" destination="cDK-DM-F5z" id="CDU-Oq-AHP"/>
<outlet property="customFieldsTableView" destination="193" id="266"/> <outlet property="customFieldsTableView" destination="193" id="266"/>
<outlet property="enableAutotypeCheckButton" destination="kdV-Xa-8p3" id="vlC-HP-lBv"/> <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="fieldsStackView" destination="dx3-E2-FFt" id="GbY-9q-iEy"/>
<outlet property="generalView" destination="4" id="270"/> <outlet property="generalView" destination="4" id="270"/>
<outlet property="generatePasswordButton" destination="59" id="282"/>
<outlet property="infoTabControl" destination="82" id="264"/> <outlet property="infoTabControl" destination="82" id="264"/>
<outlet property="obfuscateAutotypeCheckButton" destination="I7L-Am-Qpa" id="hwa-zl-24W"/> <outlet property="obfuscateAutotypeCheckButton" destination="I7L-Am-Qpa" id="hwa-zl-24W"/>
<outlet property="passwordTextField" destination="60" id="263"/>
<outlet property="pickExpireDateButton" destination="8" id="cJg-5V-AL6"/>
<outlet property="removeWindowAssociationButton" destination="AAj-Ak-z46" id="KJD-It-16t"/> <outlet property="removeWindowAssociationButton" destination="AAj-Ak-z46" id="KJD-It-16t"/>
<outlet property="showCustomAssociationSequenceAutotypeBuilderButton" destination="m1C-m8-BKR" id="B3I-AG-TCJ"/> <outlet property="showCustomAssociationSequenceAutotypeBuilderButton" destination="m1C-m8-BKR" id="B3I-AG-TCJ"/>
<outlet property="showCustomDataButton" destination="QSX-Xo-tcH" id="bqq-Rh-GOb"/> <outlet property="showCustomDataButton" destination="QSX-Xo-tcH" id="bqq-Rh-GOb"/>
<outlet property="showCustomEntrySequenceAutotypeBuilderButton" destination="HDS-Bz-jrr" id="7u1-17-oMK"/> <outlet property="showCustomEntrySequenceAutotypeBuilderButton" destination="HDS-Bz-jrr" id="7u1-17-oMK"/>
<outlet property="tabView" destination="83" id="269"/> <outlet property="tabView" destination="83" id="269"/>
<outlet property="tagsTokenField" destination="5" id="287"/> <outlet property="tagsTokenField" destination="5" id="287"/>
<outlet property="titleTextField" destination="53" id="260"/>
<outlet property="togglePassword" destination="61" id="268"/>
<outlet property="usernameTextField" destination="55" id="261"/>
<outlet property="uuidTextField" destination="IpW-b2-jWu" id="dP6-qA-jJm"/> <outlet property="uuidTextField" destination="IpW-b2-jWu" id="dP6-qA-jJm"/>
<outlet property="view" destination="3" id="250"/> <outlet property="view" destination="3" id="250"/>
<outlet property="windowAssociationsTableView" destination="caM-L6-UHC" id="n5M-f8-z24"/> <outlet property="windowAssociationsTableView" destination="caM-L6-UHC" id="n5M-f8-z24"/>
@@ -36,11 +44,11 @@
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/> <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/> <customObject id="-3" userLabel="Application" customClass="NSObject"/>
<view translatesAutoresizingMaskIntoConstraints="NO" id="3"> <view translatesAutoresizingMaskIntoConstraints="NO" id="3">
<rect key="frame" x="0.0" y="0.0" width="273" height="493"/> <rect key="frame" x="0.0" y="0.0" width="293" height="493"/>
<subviews> <subviews>
<segmentedControl verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="82"> <segmentedControl verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="82">
<rect key="frame" x="62" y="468" width="150" height="21"/> <rect key="frame" x="76" y="470" width="142" height="19"/>
<segmentedCell key="cell" controlSize="small" borderStyle="border" alignment="left" style="rounded" trackingMode="selectOne" id="238"> <segmentedCell key="cell" controlSize="small" borderStyle="border" alignment="left" style="capsule" trackingMode="selectOne" id="238">
<font key="font" metaFont="smallSystem"/> <font key="font" metaFont="smallSystem"/>
<segments> <segments>
<segment label="General" selected="YES"/> <segment label="General" selected="YES"/>
@@ -50,26 +58,26 @@
</segmentedCell> </segmentedCell>
</segmentedControl> </segmentedControl>
<tabView drawsBackground="NO" type="noTabsNoBorder" initialItem="110" translatesAutoresizingMaskIntoConstraints="NO" id="83"> <tabView drawsBackground="NO" type="noTabsNoBorder" initialItem="110" translatesAutoresizingMaskIntoConstraints="NO" id="83">
<rect key="frame" x="0.0" y="0.0" width="273" height="467"/> <rect key="frame" x="0.0" y="0.0" width="293" height="467"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<tabViewItems> <tabViewItems>
<tabViewItem label="General" identifier="1" id="110"> <tabViewItem label="General" identifier="1" id="110">
<view key="view" id="111"> <view key="view" id="111">
<rect key="frame" x="0.0" y="0.0" width="273" height="467"/> <rect key="frame" x="0.0" y="0.0" width="293" height="467"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
</view> </view>
</tabViewItem> </tabViewItem>
<tabViewItem label="Attachments" identifier="" id="109"> <tabViewItem label="Attachments" identifier="" id="109">
<view key="view" id="123"> <view key="view" id="123">
<rect key="frame" x="0.0" y="0.0" width="273" height="467"/> <rect key="frame" x="0.0" y="0.0" width="293" height="467"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<button focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="124"> <button focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="124">
<rect key="frame" x="214" y="423" width="46" height="32"/> <rect key="frame" x="241" y="428" width="32" height="23"/>
<constraints> <constraints>
<constraint firstAttribute="width" constant="32" id="176"/> <constraint firstAttribute="width" constant="32" id="176"/>
</constraints> </constraints>
<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"> <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">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
@@ -86,19 +94,19 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<scrollView autohidesScrollers="YES" horizontalLineScroll="38" horizontalPageScroll="10" verticalLineScroll="38" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="125" customClass="HNHUIScrollView"> <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="233" height="396"/> <rect key="frame" x="20" y="26" width="253" height="396"/>
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="F3N-QI-Di5"> <clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="F3N-QI-Di5">
<rect key="frame" x="1" y="1" width="231" height="394"/> <rect key="frame" x="1" y="1" width="251" height="394"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" multipleSelection="NO" autosaveColumns="NO" rowHeight="36" rowSizeStyle="automatic" viewBased="YES" id="137"> <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="231" height="394"/> <rect key="frame" x="0.0" y="0.0" width="251" height="394"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<size key="intercellSpacing" width="3" height="2"/> <size key="intercellSpacing" width="3" height="2"/>
<color key="backgroundColor" name="alternateSelectedControlTextColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="alternateSelectedControlTextColor" catalog="System" colorSpace="catalog"/>
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/> <color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
<tableColumns> <tableColumns>
<tableColumn width="190" minWidth="40" maxWidth="1000" id="140"> <tableColumn width="219" minWidth="40" maxWidth="1000" id="140">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left"> <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left">
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" white="0.33333298560000002" alpha="1" colorSpace="calibratedWhite"/> <color key="backgroundColor" white="0.33333298560000002" alpha="1" colorSpace="calibratedWhite"/>
@@ -111,7 +119,7 @@
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/> <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
<prototypeCellViews> <prototypeCellViews>
<tableCellView identifier="NormalCell" id="143"> <tableCellView identifier="NormalCell" id="143">
<rect key="frame" x="11" y="1" width="199" height="36"/> <rect key="frame" x="11" y="1" width="228" height="36"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<imageView translatesAutoresizingMaskIntoConstraints="NO" id="144"> <imageView translatesAutoresizingMaskIntoConstraints="NO" id="144">
@@ -123,7 +131,7 @@
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="NSActionTemplate" id="152"/> <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="NSActionTemplate" id="152"/>
</imageView> </imageView>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="145"> <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="145">
<rect key="frame" x="41" y="10" width="157" height="16"/> <rect key="frame" x="41" y="10" width="186" height="16"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="151"> <textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="151">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -144,7 +152,7 @@
</connections> </connections>
</tableCellView> </tableCellView>
<tableCellView identifier="SelectedCell" id="141" customClass="MPSelectedAttachmentTableCellView"> <tableCellView identifier="SelectedCell" id="141" customClass="MPSelectedAttachmentTableCellView">
<rect key="frame" x="11" y="39" width="199" height="36"/> <rect key="frame" x="11" y="39" width="228" height="36"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<imageView translatesAutoresizingMaskIntoConstraints="NO" id="167"> <imageView translatesAutoresizingMaskIntoConstraints="NO" id="167">
@@ -156,7 +164,7 @@
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="NSActionTemplate" id="170"/> <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="NSActionTemplate" id="170"/>
</imageView> </imageView>
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="166"> <textField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="166">
<rect key="frame" x="41" y="10" width="106" height="16"/> <rect key="frame" x="41" y="10" width="131" height="16"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="171"> <textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="171">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -164,7 +172,7 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="42g-QS-XtW"> <popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="42g-QS-XtW">
<rect key="frame" x="150" y="4" width="50" height="25"/> <rect key="frame" x="175" y="4" width="54" 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"> <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"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/> <font key="font" metaFont="menu"/>
@@ -210,7 +218,7 @@
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="100" id="KFw-Ma-DSd"/> <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="100" id="KFw-Ma-DSd"/>
</constraints> </constraints>
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="138"> <scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="138">
<rect key="frame" x="1" y="379" width="231" height="16"/> <rect key="frame" x="1" y="147" width="52" height="16"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
</scroller> </scroller>
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="139"> <scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="139">
@@ -234,7 +242,7 @@
</tabViewItem> </tabViewItem>
<tabViewItem label="Autotype" identifier="" id="hK7-Dx-yjH"> <tabViewItem label="Autotype" identifier="" id="hK7-Dx-yjH">
<view key="view" id="2py-ab-4ZU"> <view key="view" id="2py-ab-4ZU">
<rect key="frame" x="0.0" y="0.0" width="273" height="467"/> <rect key="frame" x="0.0" y="0.0" width="293" height="467"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
</view> </view>
</tabViewItem> </tabViewItem>
@@ -246,15 +254,15 @@
<constraint firstItem="83" firstAttribute="trailing" secondItem="3" secondAttribute="trailing" id="86"/> <constraint firstItem="83" firstAttribute="trailing" secondItem="3" secondAttribute="trailing" id="86"/>
<constraint firstItem="82" firstAttribute="top" secondItem="3" secondAttribute="top" constant="5" id="89"/> <constraint firstItem="82" firstAttribute="top" secondItem="3" secondAttribute="top" constant="5" id="89"/>
<constraint firstAttribute="centerX" secondItem="82" secondAttribute="centerX" id="90"/> <constraint firstAttribute="centerX" secondItem="82" secondAttribute="centerX" id="90"/>
<constraint firstItem="83" firstAttribute="bottom" secondItem="3" secondAttribute="bottom" id="254"/>
<constraint firstItem="83" firstAttribute="top" secondItem="3" secondAttribute="top" constant="26" id="279"/> <constraint firstItem="83" firstAttribute="top" secondItem="3" secondAttribute="top" constant="26" id="279"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="82" secondAttribute="trailing" constant="20" symbolic="YES" id="4df-0Y-ggz"/> <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="82" secondAttribute="trailing" constant="20" symbolic="YES" id="4df-0Y-ggz"/>
<constraint firstAttribute="bottom" secondItem="83" secondAttribute="bottom" id="Lc3-ap-AJQ"/>
<constraint firstItem="82" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="3" secondAttribute="leading" constant="20" symbolic="YES" id="zU6-5h-Swa"/> <constraint firstItem="82" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="3" secondAttribute="leading" constant="20" symbolic="YES" id="zU6-5h-Swa"/>
</constraints> </constraints>
<point key="canvasLocation" x="-239" y="-1954"/> <point key="canvasLocation" x="-680" y="-1408"/>
</view> </view>
<customView translatesAutoresizingMaskIntoConstraints="NO" id="4" customClass="HNHUIScrollDocumentViewAdapter"> <customView translatesAutoresizingMaskIntoConstraints="NO" id="4" customClass="HNHUIScrollDocumentViewAdapter">
<rect key="frame" x="0.0" y="0.0" width="291" height="840"/> <rect key="frame" x="0.0" y="0.0" width="291" height="484"/>
<subviews> <subviews>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="0U8-TS-giU"> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="0U8-TS-giU">
<rect key="frame" x="18" y="77" width="32" height="14"/> <rect key="frame" x="18" y="77" width="32" height="14"/>
@@ -276,18 +284,19 @@
</connections> </connections>
</textField> </textField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="QSX-Xo-tcH"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="QSX-Xo-tcH">
<rect key="frame" x="13" y="13" width="265" height="32"/> <rect key="frame" x="19" y="18" width="253" height="23"/>
<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"> <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">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
<connections> <connections>
<action selector="showPluginData:" target="-1" id="yGe-GL-mcW"/> <action selector="showPluginData:" target="-1" id="yGe-GL-mcW"/>
<outlet property="nextKeyView" destination="53" id="HTB-dl-8aH"/>
</connections> </connections>
</button> </button>
<segmentedControl verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="G9J-nn-2bu" customClass="MPContextButton"> <segmentedControl verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="G9J-nn-2bu" customClass="MPContextButton">
<rect key="frame" x="219" y="97" width="55" height="24"/> <rect key="frame" x="219" y="98" width="54" height="24"/>
<segmentedCell key="cell" borderStyle="border" alignment="left" style="separated" trackingMode="selectOne" id="POU-2t-8fl"> <segmentedCell key="cell" borderStyle="border" alignment="left" style="texturedRounded" trackingMode="selectOne" id="POU-2t-8fl">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<segments> <segments>
<segment image="NSAddTemplate" width="32"/> <segment image="NSAddTemplate" width="32"/>
@@ -300,8 +309,162 @@
</connections> </connections>
</segmentedControl> </segmentedControl>
<stackView distribution="fill" orientation="vertical" alignment="leading" horizontalStackHuggingPriority="250" verticalStackHuggingPriority="250" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="dx3-E2-FFt"> <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="721" width="251" height="99"/> <rect key="frame" x="20" y="135" width="251" height="329"/>
<subviews> <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" 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 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" 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 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" translatesAutoresizingMaskIntoConstraints="NO" id="60" customClass="HNHUISecureTextField">
<rect key="frame" x="0.0" y="0.0" width="135" height="20"/>
<secureTextFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="63" 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"/>
<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="142" y="-2" width="32" height="23"/>
<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 verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="59">
<rect key="frame" x="180" y="-2" width="72" 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>
</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" 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>
<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"> <textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6">
<rect key="frame" x="-2" y="85" width="255" height="14"/> <rect key="frame" x="-2" y="85" width="255" height="14"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Tags" id="79"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Tags" id="79">
@@ -328,10 +491,28 @@
<visibilityPriorities> <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"/>
<integer value="1000"/>
</visibilityPriorities> </visibilityPriorities>
<customSpacing> <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"/>
<real value="3.4028234663852886e+38"/>
</customSpacing> </customSpacing>
</stackView> </stackView>
</subviews> </subviews>
@@ -352,7 +533,7 @@
<constraint firstItem="dx3-E2-FFt" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" symbolic="YES" id="sjr-Xo-zxh"/> <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"/> <constraint firstItem="G9J-nn-2bu" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="4" secondAttribute="leading" constant="20" symbolic="YES" id="z4K-PB-Qfb"/>
</constraints> </constraints>
<point key="canvasLocation" x="91" y="-1780"/> <point key="canvasLocation" x="-304" y="-1442"/>
</customView> </customView>
<view translatesAutoresizingMaskIntoConstraints="NO" id="zv7-wE-Bmg" customClass="HNHUIScrollDocumentViewAdapter"> <view translatesAutoresizingMaskIntoConstraints="NO" id="zv7-wE-Bmg" customClass="HNHUIScrollDocumentViewAdapter">
<rect key="frame" x="0.0" y="0.0" width="301" height="424"/> <rect key="frame" x="0.0" y="0.0" width="301" height="424"/>
@@ -386,7 +567,7 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="cDK-DM-F5z" customClass="HNHUITextField"> <textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="cDK-DM-F5z" customClass="HNHUITextField">
<rect key="frame" x="20" y="329" width="222" height="21"/> <rect key="frame" x="20" y="329" width="228" 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"> <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"/> <font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -417,7 +598,7 @@
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/> <color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
<tableColumns> <tableColumns>
<tableColumn width="218" minWidth="40" maxWidth="1000" id="Wdn-k1-39b"> <tableColumn width="247" minWidth="40" maxWidth="1000" id="Wdn-k1-39b">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left"> <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left">
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" white="0.33333298560000002" alpha="1" colorSpace="calibratedWhite"/> <color key="backgroundColor" white="0.33333298560000002" alpha="1" colorSpace="calibratedWhite"/>
@@ -430,12 +611,12 @@
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/> <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
<prototypeCellViews> <prototypeCellViews>
<tableCellView identifier="WindowAssociationCell" id="jI3-t8-8bp"> <tableCellView identifier="WindowAssociationCell" id="jI3-t8-8bp">
<rect key="frame" x="11" y="1" width="227" height="17"/> <rect key="frame" x="1" y="1" width="256" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="JgP-7K-Ugw"> <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="226" height="17"/> <rect key="frame" x="0.0" y="0.0" width="256" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="dyA-lo-PGa"> <textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="dyA-lo-PGa">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -514,7 +695,7 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="NjR-ea-Y7k" customClass="HNHUITextField"> <textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="NjR-ea-Y7k" customClass="HNHUITextField">
<rect key="frame" x="20" y="10" width="222" height="21"/> <rect key="frame" x="20" y="10" width="228" 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"> <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"/> <font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -522,8 +703,8 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="m1C-m8-BKR"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="m1C-m8-BKR">
<rect key="frame" x="243" y="4" width="45" height="32"/> <rect key="frame" x="255" y="9" width="27" height="23"/>
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSActionTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="HIC-T9-j9G"> <buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" 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"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
@@ -532,8 +713,8 @@
</connections> </connections>
</button> </button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="HDS-Bz-jrr"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="HDS-Bz-jrr">
<rect key="frame" x="243" y="322" width="45" height="32"/> <rect key="frame" x="255" y="327" width="27" height="23"/>
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSActionTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="V5Z-qf-FVH"> <buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" 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"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
@@ -583,22 +764,22 @@
<constraint firstAttribute="trailing" secondItem="45R-v4-ywl" secondAttribute="trailing" constant="20" symbolic="YES" id="uUm-S5-cxM"/> <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"/> <constraint firstAttribute="trailing" secondItem="z03-zW-GN3" secondAttribute="trailing" constant="20" symbolic="YES" id="wiq-pY-TG8"/>
</constraints> </constraints>
<point key="canvasLocation" x="418" y="-1988"/> <point key="canvasLocation" x="146" y="-1275"/>
</view> </view>
<scrollView borderType="line" autohidesScrollers="YES" horizontalLineScroll="56" horizontalPageScroll="10" verticalLineScroll="56" verticalPageScroll="10" usesPredominantAxisScrolling="NO" horizontalScrollElasticity="none" translatesAutoresizingMaskIntoConstraints="NO" id="180" customClass="HNHUIScrollView"> <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="290" height="268"/> <rect key="frame" x="0.0" y="0.0" width="261" height="268"/>
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="k8G-zp-BXZ"> <clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="k8G-zp-BXZ">
<rect key="frame" x="1" y="1" width="288" height="266"/> <rect key="frame" x="1" y="1" width="259" height="266"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<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"> <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">
<rect key="frame" x="0.0" y="0.0" width="288" height="266"/> <rect key="frame" x="0.0" y="0.0" width="259" height="266"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<size key="intercellSpacing" width="3" height="2"/> <size key="intercellSpacing" width="3" height="2"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/> <color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
<tableColumns> <tableColumns>
<tableColumn width="218" minWidth="40" maxWidth="1000000" id="194"> <tableColumn width="247" minWidth="40" maxWidth="1000000" id="194">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left"> <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left">
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" white="0.33333298560000002" alpha="1" colorSpace="calibratedWhite"/> <color key="backgroundColor" white="0.33333298560000002" alpha="1" colorSpace="calibratedWhite"/>
@@ -610,22 +791,23 @@
</textFieldCell> </textFieldCell>
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES"/> <tableColumnResizingMask key="resizingMask" resizeWithTable="YES"/>
<prototypeCellViews> <prototypeCellViews>
<tableCellView identifier="SelectedCell" translatesAutoresizingMaskIntoConstraints="NO" id="196" customClass="MPCustomFieldTableCellView"> <tableCellView identifier="SelectedCell" id="196" customClass="MPCustomFieldTableCellView">
<rect key="frame" x="1" y="1" width="227" height="53"/> <rect key="frame" x="1" y="1" width="256" height="53"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" contentType="oneTimeCode" translatesAutoresizingMaskIntoConstraints="NO" id="199" customClass="HNHUISecureTextField"> <textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="199" customClass="HNHUISecureTextField">
<rect key="frame" x="3" y="10" width="114" height="21"/> <rect key="frame" x="3" y="10" width="153" height="21"/>
<constraints> <constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="50" id="213"/> <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="50" id="213"/>
</constraints> </constraints>
<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"> <textFieldCell key="cell" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="Value" drawsBackground="YES" id="214" customClass="HNHUISecureTextFieldCell">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="200"> <textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="200">
<rect key="frame" x="1" y="39" width="198" height="14"/> <rect key="frame" x="1" y="39" width="223" height="14"/>
<constraints> <constraints>
<constraint firstAttribute="height" constant="14" id="210"/> <constraint firstAttribute="height" constant="14" id="210"/>
</constraints> </constraints>
@@ -636,16 +818,16 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="198"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="198">
<rect key="frame" x="160" y="4" width="44" height="32"/> <rect key="frame" x="197" y="9" width="26" height="23"/>
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSRemoveTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="216"> <buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSRemoveTemplate" imagePosition="overlaps" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="216">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
</button> </button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="tDI-EL-JGB"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="tDI-EL-JGB">
<rect key="frame" x="118" y="4" width="44" height="32"/> <rect key="frame" x="163" y="9" width="28" height="23"/>
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSLockLockedTemplate" imagePosition="only" alignment="center" lineBreakMode="truncatingTail" borderStyle="border" inset="2" id="fat-C5-dS2"> <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" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/> <behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
</button> </button>
@@ -657,11 +839,11 @@
<constraint firstItem="199" firstAttribute="leading" secondItem="196" secondAttribute="leading" constant="3" id="204"/> <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 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="bottom" secondItem="199" secondAttribute="bottom" constant="10" id="206"/>
<constraint firstAttribute="trailing" secondItem="198" secondAttribute="trailing" constant="30" id="209"/> <constraint firstAttribute="trailing" secondItem="198" secondAttribute="trailing" constant="34" 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="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="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="top" secondItem="199" secondAttribute="top" id="lHD-b8-rRG"/>
<constraint firstItem="198" firstAttribute="leading" secondItem="tDI-EL-JGB" secondAttribute="trailing" constant="12" symbolic="YES" id="qSi-Hi-kM3"/> <constraint firstItem="198" firstAttribute="leading" secondItem="tDI-EL-JGB" secondAttribute="trailing" constant="8" symbolic="YES" id="qSi-Hi-kM3"/>
</constraints> </constraints>
<connections> <connections>
<outlet property="labelTextField" destination="200" id="242"/> <outlet property="labelTextField" destination="200" id="242"/>
@@ -676,9 +858,7 @@
</tableView> </tableView>
</subviews> </subviews>
<nil key="backgroundColor"/> <nil key="backgroundColor"/>
<edgeInsets key="contentInsets" left="0.0" right="0.0" top="0.0" bottom="0.0"/>
</clipView> </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"> <scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="192">
<rect key="frame" x="1" y="130" width="259" height="16"/> <rect key="frame" x="1" y="130" width="259" height="16"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
@@ -690,13 +870,14 @@
<connections> <connections>
<outlet property="nextKeyView" destination="G9J-nn-2bu" id="CZ9-f2-JDQ"/> <outlet property="nextKeyView" destination="G9J-nn-2bu" id="CZ9-f2-JDQ"/>
</connections> </connections>
<point key="canvasLocation" x="-1049" y="-1342"/> <point key="canvasLocation" x="-1015" y="-1275"/>
</scrollView> </scrollView>
</objects> </objects>
<resources> <resources>
<image name="52_EncryptedTemplate" width="16" height="16"/>
<image name="NSActionTemplate" width="15" height="15"/> <image name="NSActionTemplate" width="15" height="15"/>
<image name="NSAddTemplate" width="14" height="13"/> <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"/> <image name="NSRemoveTemplate" width="14" height="4"/>
</resources> </resources>
</document> </document>

View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14313.18" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies> <dependencies>
<deployment identifier="macosx"/> <deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19455"/> <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14313.18"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<objects> <objects>
@@ -14,7 +14,6 @@
<outlet property="expireDateSelectButton" destination="4" id="W6H-j5-GLf"/> <outlet property="expireDateSelectButton" destination="4" id="W6H-j5-GLf"/>
<outlet property="expiresCheckButton" destination="5" id="283"/> <outlet property="expiresCheckButton" destination="5" id="283"/>
<outlet property="searchPopupButton" destination="229" id="284"/> <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="titleTextField" destination="23" id="35"/>
<outlet property="view" destination="37" id="45"/> <outlet property="view" destination="37" id="45"/>
</connections> </connections>
@@ -22,218 +21,182 @@
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/> <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/> <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"> <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="291" height="462"/> <rect key="frame" x="0.0" y="0.0" width="257" height="291"/>
<clipView key="contentView" id="HjA-kA-fcX"> <clipView key="contentView" id="HjA-kA-fcX">
<rect key="frame" x="0.0" y="0.0" width="291" height="462"/> <rect key="frame" x="0.0" y="0.0" width="257" height="291"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<view translatesAutoresizingMaskIntoConstraints="NO" id="38" customClass="HNHUIScrollDocumentViewAdapter"> <view translatesAutoresizingMaskIntoConstraints="NO" id="38" customClass="HNHUIScrollDocumentViewAdapter">
<rect key="frame" x="0.0" y="65" width="291" height="397"/> <rect key="frame" x="0.0" y="0.0" width="257" height="291"/>
<subviews> <subviews>
<stackView distribution="fill" orientation="vertical" alignment="leading" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="GyB-8Z-S3Q"> <textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="24">
<rect key="frame" x="20" y="20" width="251" height="357"/> <rect key="frame" x="18" y="272" width="35" height="14"/>
<subviews> <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Name" id="25">
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="24"> <font key="font" metaFont="smallSystem"/>
<rect key="frame" x="-2" y="343" width="255" height="14"/> <color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Name" id="25"> <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
<font key="font" metaFont="smallSystem"/> </textFieldCell>
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/> </textField>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="23" customClass="HNHUITextField">
</textFieldCell> <rect key="frame" x="20" y="242" width="217" height="22"/>
</textField> <textFieldCell key="cell" lineBreakMode="truncatingTail" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="26">
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="23" customClass="HNHUITextField"> <font key="font" metaFont="system"/>
<rect key="frame" x="0.0" y="314" width="251" height="21"/> <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="26"> <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
<font key="font" metaFont="system"/> </textFieldCell>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> <connections>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> <outlet property="nextKeyView" destination="5" id="KV0-QE-2i4"/>
</textFieldCell> </connections>
<connections> </textField>
<outlet property="nextKeyView" destination="5" id="KV0-QE-2i4"/> <button horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="5">
</connections> <rect key="frame" x="18" y="214" width="67" height="18"/>
</textField> <constraints>
<stackView distribution="fill" orientation="horizontal" alignment="top" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="aAt-VU-kLy"> <constraint firstAttribute="height" constant="14" id="pWR-o1-KI6"/>
<rect key="frame" x="0.0" y="286" width="251" height="20"/> </constraints>
<subviews> <buttonCell key="cell" type="check" title="Expires" bezelStyle="regularSquare" imagePosition="left" lineBreakMode="truncatingMiddle" state="on" inset="2" id="32">
<button horizontalHuggingPriority="249" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="5"> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<rect key="frame" x="-2" y="3" width="213" height="18"/> <font key="font" metaFont="system"/>
<buttonCell key="cell" type="check" title="Expires" bezelStyle="regularSquare" imagePosition="left" lineBreakMode="truncatingMiddle" state="on" inset="2" id="32"> </buttonCell>
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> <connections>
<font key="font" metaFont="system"/> <action selector="toggleExpire:" target="-2" id="t1w-WN-Eud"/>
</buttonCell> <outlet property="nextKeyView" destination="4" id="Rem-Pk-yFJ"/>
<connections> </connections>
<action selector="toggleExpire:" target="-2" id="t1w-WN-Eud"/> </button>
<outlet property="nextKeyView" destination="4" id="Rem-Pk-yFJ"/> <button focusRingType="exterior" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="4">
</connections> <rect key="frame" x="205" y="210" width="32" height="25"/>
</button> <constraints>
<button focusRingType="exterior" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="4"> <constraint firstAttribute="width" constant="32" id="l5I-EF-dHs"/>
<rect key="frame" x="218" y="-2" width="34" height="23"/> </constraints>
<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">
<constraint firstAttribute="width" constant="32" id="l5I-EF-dHs"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
</constraints> <font key="font" metaFont="system"/>
<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"> </buttonCell>
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> <connections>
<font key="font" metaFont="system"/> <action selector="pickExpiryDate:" target="-1" id="KIc-p2-zJQ"/>
</buttonCell> <outlet property="nextKeyView" destination="229" id="12E-SZ-Mtu"/>
<connections> </connections>
<action selector="pickExpiryDate:" target="-1" id="KIc-p2-zJQ"/> </button>
<outlet property="nextKeyView" destination="229" id="12E-SZ-Mtu"/> <popUpButton verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="229">
</connections> <rect key="frame" x="18" y="158" width="222" height="26"/>
</button> <popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="230">
</subviews> <behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<visibilityPriorities> <font key="font" metaFont="menu"/>
<integer value="1000"/> <menu key="menu" title="OtherViews" id="231"/>
<integer value="1000"/> </popUpButtonCell>
</visibilityPriorities> <connections>
<customSpacing> <outlet property="nextKeyView" destination="240" id="XsX-U5-uZd"/>
<real value="3.4028234663852886e+38"/> </connections>
<real value="3.4028234663852886e+38"/> </popUpButton>
</customSpacing> <popUpButton verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="240">
</stackView> <rect key="frame" x="18" y="103" width="222" height="26"/>
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="264"> <popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="242">
<rect key="frame" x="-2" y="264" width="255" height="14"/> <behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Search" id="265"> <font key="font" metaFont="menu"/>
<font key="font" metaFont="smallSystem"/> <menu key="menu" title="OtherViews" id="243"/>
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/> </popUpButtonCell>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> <connections>
</textFieldCell> <outlet property="nextKeyView" destination="Fnw-qz-IZU" id="Q0q-HY-T34"/>
</textField> </connections>
<popUpButton horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="229"> </popUpButton>
<rect key="frame" x="-3" y="232" width="258" height="25"/> <textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="264">
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="230"> <rect key="frame" x="18" y="190" width="41" height="14"/>
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Search" id="265">
<font key="font" metaFont="menu"/> <font key="font" metaFont="smallSystem"/>
<menu key="menu" title="OtherViews" id="231"/> <color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
</popUpButtonCell> <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
<connections> </textFieldCell>
<outlet property="nextKeyView" destination="240" id="XsX-U5-uZd"/> </textField>
</connections> <textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="276">
</popUpButton> <rect key="frame" x="18" y="135" width="52" height="14"/>
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="276"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Autotype" id="277">
<rect key="frame" x="-2" y="214" width="255" height="14"/> <font key="font" metaFont="smallSystem"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Autotype" id="277"> <color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
<font key="font" metaFont="smallSystem"/> <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/> </textFieldCell>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> </textField>
</textFieldCell> <textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Fnw-qz-IZU" customClass="HNHUITextField">
</textField> <rect key="frame" x="20" y="50" width="217" height="22"/>
<popUpButton horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="240"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="VeF-V7-i2I">
<rect key="frame" x="-3" y="182" width="258" height="25"/> <font key="font" metaFont="system"/>
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="242"> <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/> <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
<font key="font" metaFont="menu"/> </textFieldCell>
<menu key="menu" title="OtherViews" id="243"/> <connections>
</popUpButtonCell> <outlet property="nextKeyView" destination="1Uh-eo-H0j" id="zer-UH-73e"/>
<connections> </connections>
<outlet property="nextKeyView" destination="Fnw-qz-IZU" id="Q0q-HY-T34"/> </textField>
</connections> <textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6Lw-XW-x20">
</popUpButton> <rect key="frame" x="18" y="80" width="107" height="14"/>
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6Lw-XW-x20"> <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Autotype Sequence" id="6FG-UZ-Adh">
<rect key="frame" x="-2" y="164" width="255" height="14"/> <font key="font" metaFont="smallSystem"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Autotype Sequence" id="6FG-UZ-Adh"> <color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
<font key="font" metaFont="smallSystem"/> <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/> </textFieldCell>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> </textField>
</textFieldCell> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1Uh-eo-H0j">
</textField> <rect key="frame" x="20" y="18" width="217" height="25"/>
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Fnw-qz-IZU" customClass="HNHUITextField"> <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">
<rect key="frame" x="0.0" y="135" width="251" height="21"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<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"/>
<font key="font" metaFont="system"/> </buttonCell>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> <connections>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> <action selector="showPluginData:" target="-1" id="yjJ-Xy-m4c"/>
</textFieldCell> <outlet property="nextKeyView" destination="23" id="x9e-ya-hiK"/>
<connections> </connections>
<outlet property="nextKeyView" destination="1Uh-eo-H0j" id="zer-UH-73e"/> </button>
</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> </subviews>
<constraints> <constraints>
<constraint firstItem="GyB-8Z-S3Q" firstAttribute="top" secondItem="38" secondAttribute="top" constant="20" id="BWS-cT-xmR"/> <constraint firstAttribute="trailing" secondItem="Fnw-qz-IZU" secondAttribute="trailing" constant="20" symbolic="YES" id="3Gx-EC-k0Q"/>
<constraint firstAttribute="bottom" secondItem="GyB-8Z-S3Q" secondAttribute="bottom" constant="20" id="WaU-34-yaM"/> <constraint firstItem="240" firstAttribute="top" secondItem="276" secondAttribute="bottom" constant="8" id="6Pu-PB-xxy"/>
<constraint firstAttribute="trailing" secondItem="GyB-8Z-S3Q" secondAttribute="trailing" constant="20" id="q0p-sG-MEY"/> <constraint firstItem="23" firstAttribute="leading" secondItem="38" secondAttribute="leading" constant="20" id="ABR-Ef-1ss"/>
<constraint firstItem="GyB-8Z-S3Q" firstAttribute="leading" secondItem="38" secondAttribute="leading" constant="20" symbolic="YES" id="zeA-bC-Akz"/> <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"/>
</constraints> </constraints>
</view> </view>
</subviews> </subviews>
<constraints> <constraints>
<constraint firstItem="38" firstAttribute="top" secondItem="HjA-kA-fcX" secondAttribute="top" id="Alo-CY-dgK"/> <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 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"/> <constraint firstItem="38" firstAttribute="leading" secondItem="HjA-kA-fcX" secondAttribute="leading" id="h7m-U5-sA4"/>
</constraints> </constraints>
</clipView> </clipView>
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="39"> <scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="39">
<rect key="frame" x="-100" y="-100" width="257" height="16"/> <rect key="frame" x="-100" y="-100" width="257" height="16"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
</scroller> </scroller>
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="40"> <scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="40">
<rect key="frame" x="-100" y="-100" width="15" height="201"/> <rect key="frame" x="-100" y="-100" width="15" height="201"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
</scroller> </scroller>
<point key="canvasLocation" x="-805.5" y="-499"/> <point key="canvasLocation" x="-2" y="132"/>
</scrollView> </scrollView>
</objects> </objects>
<resources> <resources>
<image name="NSActionTemplate" width="15" height="15"/> <image name="NSActionTemplate" width="14" height="14"/>
</resources> </resources>
</document> </document>

View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14313.18" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies> <dependencies>
<deployment identifier="macosx"/> <deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/> <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14313.18"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<objects> <objects>
@@ -20,13 +20,13 @@
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews> <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"> <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="60" width="445" height="320"/> <rect key="frame" x="10" y="50" width="445" height="330"/>
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="Gwf-zs-lPT"> <clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="Gwf-zs-lPT">
<rect key="frame" x="0.0" y="0.0" width="445" height="320"/> <rect key="frame" x="0.0" y="0.0" width="445" height="330"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<collectionView focusRingType="none" selectable="YES" id="58" customClass="MPCollectionView"> <collectionView focusRingType="none" selectable="YES" id="58" customClass="MPCollectionView">
<rect key="frame" x="0.0" y="0.0" width="445" height="320"/> <rect key="frame" x="0.0" y="0.0" width="445" height="330"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="primaryBackgroundColor" name="windowBackgroundColor" catalog="System" colorSpace="catalog"/> <color key="primaryBackgroundColor" name="windowBackgroundColor" catalog="System" colorSpace="catalog"/>
<connections> <connections>
@@ -40,13 +40,13 @@
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
</scroller> </scroller>
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="60"> <scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="60">
<rect key="frame" x="429" y="0.0" width="16" height="320"/> <rect key="frame" x="364" y="0.0" width="16" height="268"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
</scroller> </scroller>
</scrollView> </scrollView>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="101"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="101">
<rect key="frame" x="316" y="13" width="136" height="32"/> <rect key="frame" x="330" y="19" width="115" height="23"/>
<buttonCell key="cell" type="push" title="Use Default Icon" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="102"> <buttonCell key="cell" type="roundTextured" title="Use Default Icon" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="102">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
@@ -55,8 +55,8 @@
</connections> </connections>
</button> </button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8kv-BJ-IEk"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8kv-BJ-IEk">
<rect key="frame" x="194" y="13" width="124" height="32"/> <rect key="frame" x="214" y="19" width="108" height="23"/>
<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"> <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">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
@@ -65,8 +65,8 @@
</connections> </connections>
</button> </button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="His-4A-hcY"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="His-4A-hcY">
<rect key="frame" x="120" y="13" width="76" height="32"/> <rect key="frame" x="150" y="19" width="56" height="23"/>
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="1kM-cI-P1o"> <buttonCell key="cell" type="roundTextured" title="Cancel" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="1kM-cI-P1o">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
@@ -82,11 +82,11 @@
<constraint firstItem="57" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="10" id="111"/> <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="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="baseline" secondItem="101" secondAttribute="baseline" id="Knp-g8-7FQ"/>
<constraint firstItem="8kv-BJ-IEk" firstAttribute="leading" secondItem="His-4A-hcY" secondAttribute="trailing" constant="12" symbolic="YES" id="MZ0-p6-6MH"/> <constraint firstItem="8kv-BJ-IEk" firstAttribute="leading" secondItem="His-4A-hcY" secondAttribute="trailing" constant="8" 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="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="20" symbolic="YES" id="WT3-Nh-FrW"/> <constraint firstItem="101" firstAttribute="top" secondItem="57" secondAttribute="bottom" constant="8" symbolic="YES" id="WT3-Nh-FrW"/>
<constraint firstItem="His-4A-hcY" firstAttribute="baseline" secondItem="101" secondAttribute="baseline" id="fq3-rS-gvQ"/> <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="12" symbolic="YES" id="nvi-CZ-a6L"/> <constraint firstItem="101" firstAttribute="leading" secondItem="8kv-BJ-IEk" secondAttribute="trailing" constant="8" symbolic="YES" id="nvi-CZ-a6L"/>
</constraints> </constraints>
<point key="canvasLocation" x="-1175" y="-7"/> <point key="canvasLocation" x="-1175" y="-7"/>
</customView> </customView>
@@ -101,7 +101,7 @@
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews> <subviews>
<button translatesAutoresizingMaskIntoConstraints="NO" id="MEC-x9-zrX"> <button translatesAutoresizingMaskIntoConstraints="NO" id="MEC-x9-zrX">
<rect key="frame" x="32" y="29" width="16" height="22"/> <rect key="frame" x="32" y="32" width="16" height="16"/>
<constraints> <constraints>
<constraint firstAttribute="width" constant="16" id="cau-QV-8TQ"/> <constraint firstAttribute="width" constant="16" id="cau-QV-8TQ"/>
<constraint firstAttribute="height" constant="16" id="yHZ-qj-Rcy"/> <constraint firstAttribute="height" constant="16" id="yHZ-qj-Rcy"/>
@@ -126,7 +126,7 @@
</connections> </connections>
</button> </button>
<button translatesAutoresizingMaskIntoConstraints="NO" id="114"> <button translatesAutoresizingMaskIntoConstraints="NO" id="114">
<rect key="frame" x="8" y="6.5" width="32.5" height="36"/> <rect key="frame" x="8" y="8" width="32" height="32"/>
<constraints> <constraints>
<constraint firstAttribute="width" constant="32" id="161"/> <constraint firstAttribute="width" constant="32" id="161"/>
<constraint firstAttribute="height" constant="32" id="162"/> <constraint firstAttribute="height" constant="32" id="162"/>
@@ -161,7 +161,7 @@
</customView> </customView>
</objects> </objects>
<resources> <resources>
<image name="NSAddTemplate" width="14" height="13"/> <image name="NSAddTemplate" width="11" height="11"/>
<image name="NSRefreshFreestandingTemplate" width="15" height="15"/> <image name="NSRefreshFreestandingTemplate" width="14" height="14"/>
</resources> </resources>
</document> </document>

View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17506" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies> <dependencies>
<deployment identifier="macosx"/> <deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19529"/> <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17506"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<objects> <objects>
@@ -23,7 +23,7 @@
<rect key="frame" x="0.0" y="0.0" width="278" height="662"/> <rect key="frame" x="0.0" y="0.0" width="278" height="662"/>
<subviews> <subviews>
<imageView translatesAutoresizingMaskIntoConstraints="NO" id="2998" customClass="MPIconImageView"> <imageView translatesAutoresizingMaskIntoConstraints="NO" id="2998" customClass="MPIconImageView">
<rect key="frame" x="20" y="617" width="32" height="38"/> <rect key="frame" x="20" y="620" width="32" height="32"/>
<constraints> <constraints>
<constraint firstAttribute="width" constant="32" id="3027"/> <constraint firstAttribute="width" constant="32" id="3027"/>
<constraint firstAttribute="height" constant="32" id="3028"/> <constraint firstAttribute="height" constant="32" id="3028"/>
@@ -83,7 +83,7 @@
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2985"> <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2985">
<rect key="frame" x="82" y="194" width="116" height="24"/> <rect key="frame" x="82" y="194" width="115" height="23"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="No Selection" id="2986"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="No Selection" id="2986">
<font key="font" metaFont="system" size="20"/> <font key="font" metaFont="system" size="20"/>
<color key="textColor" name="controlShadowColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="controlShadowColor" catalog="System" colorSpace="catalog"/>
@@ -126,7 +126,7 @@
<rect key="frame" x="1" y="1" width="236" height="192"/> <rect key="frame" x="1" y="1" width="236" height="192"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<textView importsGraphics="NO" richText="NO" verticallyResizable="YES" allowsUndo="YES" allowsNonContiguousLayout="YES" smartInsertDelete="YES" id="g24-gQ-foD" customClass="HNHUITextView"> <textView importsGraphics="NO" richText="NO" verticallyResizable="YES" allowsNonContiguousLayout="YES" smartInsertDelete="YES" id="g24-gQ-foD" customClass="HNHUITextView">
<rect key="frame" x="0.0" y="0.0" width="236" height="192"/> <rect key="frame" x="0.0" y="0.0" width="236" height="192"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -204,6 +204,6 @@
</customView> </customView>
</objects> </objects>
<resources> <resources>
<image name="NSActionTemplate" width="15" height="15"/> <image name="NSActionTemplate" width="14" height="14"/>
</resources> </resources>
</document> </document>

View File

@@ -27,19 +27,19 @@
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/> <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/> <customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customView translatesAutoresizingMaskIntoConstraints="NO" id="1"> <customView translatesAutoresizingMaskIntoConstraints="NO" id="1">
<rect key="frame" x="0.0" y="0.0" width="411" height="520"/> <rect key="frame" x="0.0" y="0.0" width="417" height="664"/>
<subviews> <subviews>
<box autoresizesSubviews="NO" verticalHuggingPriority="500" borderType="line" title="Autotype" translatesAutoresizingMaskIntoConstraints="NO" id="P9N-HM-wER"> <box autoresizesSubviews="NO" verticalHuggingPriority="500" borderType="line" title="Autotype" translatesAutoresizingMaskIntoConstraints="NO" id="P9N-HM-wER">
<rect key="frame" x="17" y="115" width="377" height="385"/> <rect key="frame" x="17" y="246" width="383" height="398"/>
<view key="contentView" id="faU-Ok-HJ3"> <view key="contentView" id="faU-Ok-HJ3">
<rect key="frame" x="3" y="3" width="371" height="367"/> <rect key="frame" x="3" y="3" width="377" height="380"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<stackView distribution="fill" orientation="vertical" alignment="leading" horizontalStackHuggingPriority="250" verticalStackHuggingPriority="250" horizontalHuggingPriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="j52-9L-k7c"> <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"/> <rect key="frame" x="16" y="17" width="345" height="353"/>
<subviews> <subviews>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="hMJ-Mo-xOM"> <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="hMJ-Mo-xOM">
<rect key="frame" x="-2" y="298" width="343" height="42"/> <rect key="frame" x="-2" y="311" width="349" height="42"/>
<textFieldCell key="cell" controlSize="small" id="H37-ku-aTc"> <textFieldCell key="cell" controlSize="small" id="H37-ku-aTc">
<font key="font" metaFont="smallSystem"/> <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> <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>
@@ -48,7 +48,7 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<button horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="jai-b6-Qv4"> <button horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="jai-b6-Qv4">
<rect key="frame" x="-6" y="262" width="177" height="32"/> <rect key="frame" x="-7" y="276" width="171" height="32"/>
<buttonCell key="cell" type="push" title="Run Autotype Doctor…" bezelStyle="rounded" alignment="center" borderStyle="border" inset="2" id="NP0-R3-m6n"> <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"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
@@ -58,14 +58,14 @@
</connections> </connections>
</button> </button>
<button horizontalHuggingPriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="tik-Ar-FJg"> <button horizontalHuggingPriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="tik-Ar-FJg">
<rect key="frame" x="-2" y="245" width="343" height="18"/> <rect key="frame" x="-2" y="258" width="347" height="18"/>
<buttonCell key="cell" type="check" title="Enable global Autotype" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="1qb-Rd-jYu"> <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"/> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
</button> </button>
<stackView distribution="fill" orientation="horizontal" alignment="centerY" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" translatesAutoresizingMaskIntoConstraints="NO" id="d6A-Vb-CMt"> <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"/> <rect key="frame" x="0.0" y="230" width="281" height="21"/>
<subviews> <subviews>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="buI-Wb-o3V"> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="buI-Wb-o3V">
<rect key="frame" x="-2" y="3" width="57" height="16"/> <rect key="frame" x="-2" y="3" width="57" height="16"/>
@@ -107,14 +107,14 @@
</customSpacing> </customSpacing>
</stackView> </stackView>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="uZQ-Gd-hfu"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="uZQ-Gd-hfu">
<rect key="frame" x="-2" y="194" width="343" height="18"/> <rect key="frame" x="-2" y="205" width="347" 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"> <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"/> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
</button> </button>
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="cUt-aB-oib"> <textField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="cUt-aB-oib">
<rect key="frame" x="-2" y="146" width="343" height="42"/> <rect key="frame" x="-2" y="156" width="349" height="42"/>
<textFieldCell key="cell" controlSize="small" selectable="YES" id="VjU-Hz-cu4"> <textFieldCell key="cell" controlSize="small" selectable="YES" id="VjU-Hz-cu4">
<font key="font" metaFont="smallSystem"/> <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> <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>
@@ -123,42 +123,42 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<button horizontalHuggingPriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="DAX-V8-Say"> <button horizontalHuggingPriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="DAX-V8-Say">
<rect key="frame" x="-2" y="122" width="343" height="18"/> <rect key="frame" x="-2" y="131" width="347" 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"> <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"/> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
</button> </button>
<button horizontalHuggingPriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="8Wz-lo-AXG"> <button horizontalHuggingPriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="8Wz-lo-AXG">
<rect key="frame" x="-2" y="100" width="343" height="18"/> <rect key="frame" x="-2" y="107" width="347" 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"> <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"/> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
</button> </button>
<button horizontalHuggingPriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="TiO-ah-BlR"> <button horizontalHuggingPriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="TiO-ah-BlR">
<rect key="frame" x="-2" y="78" width="343" height="18"/> <rect key="frame" x="-2" y="83" width="347" 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"> <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"/> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
</button> </button>
<button horizontalHuggingPriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="9MH-jx-GpG"> <button horizontalHuggingPriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="9MH-jx-GpG">
<rect key="frame" x="-2" y="56" width="343" height="18"/> <rect key="frame" x="-2" y="59" width="347" 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"> <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"/> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
</button> </button>
<button horizontalHuggingPriority="249" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="VK8-z4-2ci"> <button horizontalHuggingPriority="249" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="VK8-z4-2ci">
<rect key="frame" x="-2" y="34" width="343" height="18"/> <rect key="frame" x="-2" y="35" width="347" height="18"/>
<buttonCell key="cell" type="check" title="Interpret ⌃ as ⌘" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="QfO-yG-l3F"> <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"/> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
</button> </button>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="wbP-A9-jpw"> <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="wbP-A9-jpw">
<rect key="frame" x="-2" y="0.0" width="343" height="28"/> <rect key="frame" x="-2" y="0.0" width="349" 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"> <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"/> <font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -205,20 +205,20 @@
</constraints> </constraints>
</box> </box>
<box autoresizesSubviews="NO" verticalHuggingPriority="500" borderType="line" title="Preview" translatesAutoresizingMaskIntoConstraints="NO" id="VVs-b5-cX9"> <box autoresizesSubviews="NO" verticalHuggingPriority="500" borderType="line" title="Preview" translatesAutoresizingMaskIntoConstraints="NO" id="VVs-b5-cX9">
<rect key="frame" x="17" y="16" width="377" height="95"/> <rect key="frame" x="17" y="145" width="383" height="97"/>
<view key="contentView" id="ww4-uR-8gP"> <view key="contentView" id="ww4-uR-8gP">
<rect key="frame" x="3" y="3" width="371" height="77"/> <rect key="frame" x="3" y="3" width="377" height="79"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<button translatesAutoresizingMaskIntoConstraints="NO" id="LNw-5t-TS4"> <button translatesAutoresizingMaskIntoConstraints="NO" id="LNw-5t-TS4">
<rect key="frame" x="14" y="51" width="178" height="18"/> <rect key="frame" x="14" y="52" width="182" height="18"/>
<buttonCell key="cell" type="check" title="Enable Quicklook Preview" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="ERs-ct-Eyx"> <buttonCell key="cell" type="check" title="Enable Quicklook Preview" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="ERs-ct-Eyx">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
</button> </button>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="V6l-R9-hIj"> <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="V6l-R9-hIj">
<rect key="frame" x="14" y="17" width="343" height="28"/> <rect key="frame" x="14" y="17" width="349" 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"> <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"/> <font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -239,17 +239,57 @@
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="V6l-R9-hIj" secondAttribute="trailing" constant="16" id="ivY-UD-QFJ"/> <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="V6l-R9-hIj" secondAttribute="trailing" constant="16" id="ivY-UD-QFJ"/>
</constraints> </constraints>
</box> </box>
<box title="Keychain" translatesAutoresizingMaskIntoConstraints="NO" id="ChZ-ku-FOP">
<rect key="frame" x="17" y="16" width="383" height="125"/>
<view key="contentView" id="ocY-lR-P2Z">
<rect key="frame" x="3" y="3" width="377" height="107"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="u5z-ST-gTK">
<rect key="frame" x="9" y="60" width="154" height="32"/>
<buttonCell key="cell" type="push" title="Renew TouchID Key" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="b4n-g4-CtW">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="RenewTouchIdKey:" target="-2" id="dl7-WD-Abu"/>
</connections>
</button>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="9kv-ns-mQx">
<rect key="frame" x="14" y="16" width="349" height="42"/>
<textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" id="LyC-Hd-ecK">
<font key="font" metaFont="smallSystem"/>
<string key="title">MacPass will no longer be able to unlock any Database with TouchID until it is successfully unlocked with the password and or keyfile.</string>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
<constraints>
<constraint firstAttribute="bottom" secondItem="9kv-ns-mQx" secondAttribute="bottom" constant="16" id="INC-l7-zwP"/>
<constraint firstItem="u5z-ST-gTK" firstAttribute="leading" secondItem="ocY-lR-P2Z" secondAttribute="leading" constant="16" id="KDt-yM-fh3"/>
<constraint firstItem="9kv-ns-mQx" firstAttribute="top" secondItem="u5z-ST-gTK" secondAttribute="bottom" constant="9" id="RjN-pw-qLc"/>
<constraint firstItem="9kv-ns-mQx" firstAttribute="leading" secondItem="u5z-ST-gTK" secondAttribute="leading" id="X5L-Rj-Wky"/>
<constraint firstItem="u5z-ST-gTK" firstAttribute="top" secondItem="ocY-lR-P2Z" secondAttribute="top" constant="20" symbolic="YES" id="guH-ws-dzX"/>
<constraint firstAttribute="trailing" secondItem="9kv-ns-mQx" secondAttribute="trailing" constant="16" id="icu-An-dNK"/>
<constraint firstAttribute="trailing" relation="lessThanOrEqual" secondItem="u5z-ST-gTK" secondAttribute="trailing" priority="240" constant="16" id="rni-sA-a7w"/>
</constraints>
</view>
</box>
</subviews> </subviews>
<constraints> <constraints>
<constraint firstItem="ChZ-ku-FOP" firstAttribute="trailing" secondItem="ww4-uR-8gP" secondAttribute="trailing" id="39G-i3-XQa"/>
<constraint firstItem="ChZ-ku-FOP" firstAttribute="top" secondItem="VVs-b5-cX9" secondAttribute="bottom" constant="8" symbolic="YES" id="3ub-U2-KCr"/>
<constraint firstItem="P9N-HM-wER" firstAttribute="top" secondItem="1" secondAttribute="top" constant="20" symbolic="YES" id="8fy-q5-VJy"/> <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="ChZ-ku-FOP" firstAttribute="leading" secondItem="ww4-uR-8gP" secondAttribute="leading" id="BQW-Zd-udd"/>
<constraint firstAttribute="bottom" secondItem="ChZ-ku-FOP" secondAttribute="bottom" constant="20" symbolic="YES" id="DBk-vZ-yOT"/>
<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="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 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 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="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"/> <constraint firstItem="VVs-b5-cX9" firstAttribute="leading" secondItem="P9N-HM-wER" secondAttribute="leading" id="z4a-9C-78h"/>
</constraints> </constraints>
<point key="canvasLocation" x="-1204" y="-1287"/> <point key="canvasLocation" x="-1204.5" y="-1287.5"/>
</customView> </customView>
</objects> </objects>
</document> </document>

View File

@@ -1,7 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies> <dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19455"/> <deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
</dependencies> </dependencies>
<objects> <objects>
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication"> <customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
@@ -250,7 +251,7 @@ CA
</menuItem> </menuItem>
<menuItem title="Find…" tag="1" keyEquivalent="f" id="209"> <menuItem title="Find…" tag="1" keyEquivalent="f" id="209">
<connections> <connections>
<action selector="performCustomSearch:" target="-1" id="RSR-PQ-TH1"/> <action selector="perfromCustomSearch:" target="-1" id="RSR-PQ-TH1"/>
</connections> </connections>
</menuItem> </menuItem>
</items> </items>

View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies> <dependencies>
<deployment identifier="macosx"/> <deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/> <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<objects> <objects>
@@ -29,11 +29,11 @@
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/> <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/> <customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customView id="1"> <customView id="1">
<rect key="frame" x="0.0" y="0.0" width="351" height="330"/> <rect key="frame" x="0.0" y="0.0" width="351" height="316"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews> <subviews>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="148"> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="148">
<rect key="frame" x="18" y="292" width="66" height="16"/> <rect key="frame" x="18" y="276" width="66" height="17"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Password:" id="149"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Password:" id="149">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -41,7 +41,7 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="152"> <textField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="152">
<rect key="frame" x="90" y="290" width="201" height="20"/> <rect key="frame" x="90" y="272" width="201" height="24"/>
<constraints> <constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="200" id="621"/> <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="200" id="621"/>
</constraints> </constraints>
@@ -52,11 +52,11 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<slider verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="173"> <slider verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="173">
<rect key="frame" x="88" y="256" width="205" height="28"/> <rect key="frame" x="88" y="246" width="205" height="19"/>
<sliderCell key="cell" state="on" alignment="left" maxValue="100" doubleValue="50" tickMarkPosition="above" sliderType="linear" id="174"/> <sliderCell key="cell" state="on" alignment="left" maxValue="100" doubleValue="50" tickMarkPosition="above" sliderType="linear" id="174"/>
</slider> </slider>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="178"> <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="178">
<rect key="frame" x="18" y="265" width="66" height="16"/> <rect key="frame" x="18" y="248" width="66" height="17"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Length:" id="179"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Length:" id="179">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -64,7 +64,7 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="182"> <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="182">
<rect key="frame" x="299" y="261" width="32" height="21"/> <rect key="frame" x="299" y="244" width="32" height="22"/>
<constraints> <constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="32" id="eVc-Kg-bCi"/> <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="32" id="eVc-Kg-bCi"/>
</constraints> </constraints>
@@ -76,13 +76,13 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<box autoresizesSubviews="NO" borderType="line" title="Character options" translatesAutoresizingMaskIntoConstraints="NO" id="332"> <box autoresizesSubviews="NO" borderType="line" title="Character options" translatesAutoresizingMaskIntoConstraints="NO" id="332">
<rect key="frame" x="17" y="102" width="317" height="120"/> <rect key="frame" x="17" y="88" width="317" height="119"/>
<view key="contentView" id="f93-Su-hga"> <view key="contentView" id="f93-Su-hga">
<rect key="frame" x="3" y="3" width="311" height="102"/> <rect key="frame" x="3" y="3" width="311" height="101"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="411"> <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="411">
<rect key="frame" x="16" y="44" width="279" height="21"/> <rect key="frame" x="16" y="42" width="279" height="22"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="412" customClass="HNHUITextFieldCell"> <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"/> <font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -90,7 +90,7 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<button verticalHuggingPriority="750" tag="1" translatesAutoresizingMaskIntoConstraints="NO" id="452"> <button verticalHuggingPriority="750" tag="1" translatesAutoresizingMaskIntoConstraints="NO" id="452">
<rect key="frame" x="16" y="73" width="36" height="19"/> <rect key="frame" x="16" y="72" 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"> <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"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
<font key="font" metaFont="cellTitle"/> <font key="font" metaFont="cellTitle"/>
@@ -100,7 +100,7 @@
</connections> </connections>
</button> </button>
<button verticalHuggingPriority="750" tag="2" translatesAutoresizingMaskIntoConstraints="NO" id="456"> <button verticalHuggingPriority="750" tag="2" translatesAutoresizingMaskIntoConstraints="NO" id="456">
<rect key="frame" x="60" y="73" width="34" height="19"/> <rect key="frame" x="60" y="72" width="33" height="19"/>
<buttonCell key="cell" type="roundRect" title="a-z" bezelStyle="roundedRect" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="457"> <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"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
<font key="font" metaFont="cellTitle"/> <font key="font" metaFont="cellTitle"/>
@@ -110,7 +110,7 @@
</connections> </connections>
</button> </button>
<button verticalHuggingPriority="750" tag="4" translatesAutoresizingMaskIntoConstraints="NO" id="460"> <button verticalHuggingPriority="750" tag="4" translatesAutoresizingMaskIntoConstraints="NO" id="460">
<rect key="frame" x="102" y="73" width="36" height="19"/> <rect key="frame" x="101" y="72" width="35" height="19"/>
<buttonCell key="cell" type="roundRect" title="0-9" bezelStyle="roundedRect" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="461"> <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"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
<font key="font" metaFont="cellTitle"/> <font key="font" metaFont="cellTitle"/>
@@ -120,7 +120,7 @@
</connections> </connections>
</button> </button>
<button verticalHuggingPriority="750" tag="8" translatesAutoresizingMaskIntoConstraints="NO" id="464"> <button verticalHuggingPriority="750" tag="8" translatesAutoresizingMaskIntoConstraints="NO" id="464">
<rect key="frame" x="146" y="73" width="32" height="19"/> <rect key="frame" x="144" y="72" width="32" height="19"/>
<buttonCell key="cell" type="roundRect" title="#!?" bezelStyle="roundedRect" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="465"> <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"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
<font key="font" metaFont="cellTitle"/> <font key="font" metaFont="cellTitle"/>
@@ -130,7 +130,7 @@
</connections> </connections>
</button> </button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="468"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="468">
<rect key="frame" x="186" y="73" width="58" height="19"/> <rect key="frame" x="184" y="72" width="58" height="19"/>
<buttonCell key="cell" type="roundRect" title="Custom" bezelStyle="roundedRect" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="469"> <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"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
<font key="font" metaFont="cellTitle"/> <font key="font" metaFont="cellTitle"/>
@@ -140,7 +140,7 @@
</connections> </connections>
</button> </button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="RDM-JY-oF9"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="RDM-JY-oF9">
<rect key="frame" x="14" y="19" width="226" height="18"/> <rect key="frame" x="14" y="18" width="222" 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"> <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"/> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
@@ -172,8 +172,8 @@
</constraints> </constraints>
</box> </box>
<button verticalHuggingPriority="750" horizontalCompressionResistancePriority="749" translatesAutoresizingMaskIntoConstraints="NO" id="494"> <button verticalHuggingPriority="750" horizontalCompressionResistancePriority="749" translatesAutoresizingMaskIntoConstraints="NO" id="494">
<rect key="frame" x="218" y="13" width="120" height="32"/> <rect key="frame" x="231" y="19" width="100" height="23"/>
<buttonCell key="cell" type="push" title="Use Password" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="495"> <buttonCell key="cell" type="roundTextured" title="Use Password" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="495">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
@@ -182,14 +182,14 @@
</connections> </connections>
</button> </button>
<button translatesAutoresizingMaskIntoConstraints="NO" id="500"> <button translatesAutoresizingMaskIntoConstraints="NO" id="500">
<rect key="frame" x="18" y="81" width="208" height="18"/> <rect key="frame" x="18" y="68" width="204" height="18"/>
<buttonCell key="cell" type="check" title="Copy password to pasteboard" bezelStyle="regularSquare" imagePosition="left" inset="2" id="501"> <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"/> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
</button> </button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="509"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="509">
<rect key="frame" x="298" y="288" width="34" height="23"/> <rect key="frame" x="299" y="273" width="32" 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"> <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"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
@@ -199,8 +199,8 @@
</connections> </connections>
</button> </button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="613"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="613">
<rect key="frame" x="144" y="13" width="76" height="32"/> <rect key="frame" x="167" y="19" width="56" height="23"/>
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="614"> <buttonCell key="cell" type="roundTextured" title="Cancel" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="614">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
@@ -209,11 +209,11 @@
</connections> </connections>
</button> </button>
<levelIndicator verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="635"> <levelIndicator verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="635">
<rect key="frame" x="90" y="228" width="173" height="18"/> <rect key="frame" x="90" y="213" width="173" height="18"/>
<levelIndicatorCell key="cell" alignment="left" doubleValue="10" maxValue="90" warningValue="55" criticalValue="30" levelIndicatorStyle="continuousCapacity" id="636" customClass="HNHUILevelIndicatorCell"/> <levelIndicatorCell key="cell" alignment="left" doubleValue="10" maxValue="90" warningValue="55" criticalValue="30" levelIndicatorStyle="continuousCapacity" id="636" customClass="HNHUILevelIndicatorCell"/>
</levelIndicator> </levelIndicator>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="646"> <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="646">
<rect key="frame" x="18" y="230" width="66" height="16"/> <rect key="frame" x="18" y="215" width="66" height="17"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Entropy:" id="647"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Entropy:" id="647">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -221,7 +221,7 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="652"> <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="652">
<rect key="frame" x="269" y="230" width="64" height="16"/> <rect key="frame" x="269" y="215" width="64" height="17"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="25000 bit" id="653"> <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"/> <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"/> <font key="font" metaFont="system"/>
@@ -230,8 +230,8 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="yil-UB-jtO"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="yil-UB-jtO">
<rect key="frame" x="13" y="13" width="102" height="32"/> <rect key="frame" x="20" y="19" width="82" height="23"/>
<buttonCell key="cell" type="push" title="Set Default" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Wvs-Md-Ob8"> <buttonCell key="cell" type="roundTextured" title="Set Default" bezelStyle="texturedRounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Wvs-Md-Ob8">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<connections> <connections>
@@ -240,7 +240,7 @@
</buttonCell> </buttonCell>
</button> </button>
<button translatesAutoresizingMaskIntoConstraints="NO" id="4yb-SC-vau"> <button translatesAutoresizingMaskIntoConstraints="NO" id="4yb-SC-vau">
<rect key="frame" x="18" y="59" width="235" height="18"/> <rect key="frame" x="18" y="48" width="231" height="18"/>
<buttonCell key="cell" type="check" title="Use default only for selected entry" bezelStyle="regularSquare" imagePosition="left" inset="2" id="cfZ-5F-Nge"> <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"/> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/> <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="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 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 firstAttribute="bottom" secondItem="613" secondAttribute="bottom" constant="20" symbolic="YES" id="617"/>
<constraint firstItem="494" firstAttribute="leading" secondItem="613" secondAttribute="trailing" constant="12" symbolic="YES" id="618"/> <constraint firstItem="494" firstAttribute="leading" secondItem="613" secondAttribute="trailing" constant="8" symbolic="YES" id="618"/>
<constraint firstItem="173" firstAttribute="leading" secondItem="635" secondAttribute="leading" id="642"/> <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="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"/> <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 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 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="635" firstAttribute="leading" secondItem="152" secondAttribute="leading" id="680"/>
<constraint firstItem="613" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="yil-UB-jtO" secondAttribute="trailing" constant="12" symbolic="YES" id="59d-1n-jSa"/> <constraint firstItem="613" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="yil-UB-jtO" secondAttribute="trailing" constant="8" symbolic="YES" id="59d-1n-jSa"/>
<constraint firstItem="646" firstAttribute="trailing" secondItem="178" secondAttribute="trailing" id="6kR-jk-E8r"/> <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="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="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 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 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="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="20" symbolic="YES" id="SoR-gh-uhq"/> <constraint firstItem="613" firstAttribute="top" relation="greaterThanOrEqual" secondItem="4yb-SC-vau" secondAttribute="bottom" constant="8" symbolic="YES" id="SoR-gh-uhq"/>
<constraint firstAttribute="bottom" secondItem="yil-UB-jtO" secondAttribute="bottom" constant="20" id="eYK-Hw-fyy"/> <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 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"/> <constraint firstItem="646" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="jPa-QR-GAy"/>
@@ -297,6 +297,6 @@
</customView> </customView>
</objects> </objects>
<resources> <resources>
<image name="NSRefreshTemplate" width="14" height="16"/> <image name="NSRefreshTemplate" width="11" height="15"/>
</resources> </resources>
</document> </document>

View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies> <dependencies>
<deployment identifier="macosx"/> <deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="18122"/> <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<objects> <objects>
@@ -24,13 +24,13 @@
<window title="Change Password" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="1"> <window title="Change Password" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="1">
<windowStyleMask key="styleMask" titled="YES" closable="YES"/> <windowStyleMask key="styleMask" titled="YES" closable="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/> <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="1090" y="652" width="446" height="307"/> <rect key="contentRect" x="1090" y="652" width="369" height="164"/>
<rect key="screenRect" x="0.0" y="0.0" width="1680" height="1025"/> <rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
<view key="contentView" verticalHuggingPriority="251" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="2"> <view key="contentView" verticalHuggingPriority="251" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="2">
<rect key="frame" x="0.0" y="0.0" width="369" height="217"/> <rect key="frame" x="0.0" y="0.0" width="363" height="220"/>
<subviews> <subviews>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="68"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="68">
<rect key="frame" x="213" y="13" width="143" height="32"/> <rect key="frame" x="200" y="13" width="149" height="32"/>
<buttonCell key="cell" type="push" title="Change Password" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="69"> <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"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
@@ -40,7 +40,7 @@
</connections> </connections>
</button> </button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="72"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="72">
<rect key="frame" x="139" y="13" width="76" height="32"/> <rect key="frame" x="118" y="13" width="82" height="32"/>
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="73"> <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"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
@@ -53,7 +53,7 @@ Gw
</connections> </connections>
</button> </button>
<gridView horizontalHuggingPriority="251" verticalHuggingPriority="750" xPlacement="leading" yPlacement="bottom" rowAlignment="none" translatesAutoresizingMaskIntoConstraints="NO" id="0Iv-td-ACj"> <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"/> <rect key="frame" x="20" y="61" width="323" height="139"/>
<rows> <rows>
<gridRow id="Ljm-xA-9NW"/> <gridRow id="Ljm-xA-9NW"/>
<gridRow id="Dv9-ND-6rX"/> <gridRow id="Dv9-ND-6rX"/>
@@ -71,7 +71,7 @@ Gw
<gridCell row="Ljm-xA-9NW" column="uaf-ph-2zN" id="1U3-Im-v9n"/> <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"> <gridCell row="Ljm-xA-9NW" column="7oF-Xq-5de" id="2bp-dG-V6t">
<textField key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="12"> <textField key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="12">
<rect key="frame" x="90" y="123" width="204" height="14"/> <rect key="frame" x="84" y="125" width="204" height="14"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="PASSWORD_ERROR" id="14"> <textFieldCell key="cell" sendsActionOnEndEditing="YES" title="PASSWORD_ERROR" id="14">
<font key="font" metaFont="smallSystem"/> <font key="font" metaFont="smallSystem"/>
<color key="textColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <color key="textColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
@@ -82,7 +82,7 @@ Gw
<gridCell row="Ljm-xA-9NW" column="clB-mU-Eba" id="blk-az-oHS"/> <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"> <gridCell row="Dv9-ND-6rX" column="uaf-ph-2zN" id="JUU-XQ-60P">
<button key="contentView" horizontalHuggingPriority="252" translatesAutoresizingMaskIntoConstraints="NO" id="yKc-I9-uzv"> <button key="contentView" horizontalHuggingPriority="252" translatesAutoresizingMaskIntoConstraints="NO" id="yKc-I9-uzv">
<rect key="frame" x="-2" y="96" width="88" height="22"/> <rect key="frame" x="-2" y="97" width="84" height="24"/>
<buttonCell key="cell" type="check" title="Password:" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="OQz-DA-SoY"> <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"/> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
@@ -91,7 +91,7 @@ Gw
</gridCell> </gridCell>
<gridCell row="Dv9-ND-6rX" column="7oF-Xq-5de" id="cw2-er-epO"> <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"> <secureTextField key="contentView" horizontalHuggingPriority="253" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="9" customClass="HNHUISecureTextField">
<rect key="frame" x="92" y="97" width="200" height="20"/> <rect key="frame" x="86" y="99" width="200" height="20"/>
<constraints> <constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="200" id="gTV-5A-Fyo"/> <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="200" id="gTV-5A-Fyo"/>
</constraints> </constraints>
@@ -105,21 +105,10 @@ Gw
</secureTextFieldCell> </secureTextFieldCell>
</secureTextField> </secureTextField>
</gridCell> </gridCell>
<gridCell row="Dv9-ND-6rX" column="clB-mU-Eba" id="ykQ-xV-MfJ"> <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"> <gridCell row="mNb-JP-3YX" column="uaf-ph-2zN" id="DTm-fw-duK">
<textField key="contentView" horizontalHuggingPriority="252" verticalHuggingPriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="10"> <textField key="contentView" horizontalHuggingPriority="252" verticalHuggingPriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="10">
<rect key="frame" x="37" y="71" width="51" height="16"/> <rect key="frame" x="31" y="73" width="51" height="16"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Repeat:" id="16"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Repeat:" id="16">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -128,8 +117,8 @@ Gw
</textField> </textField>
</gridCell> </gridCell>
<gridCell row="mNb-JP-3YX" column="7oF-Xq-5de" id="OBv-b8-DJs"> <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"> <secureTextField key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="11" customClass="HNHUISecureTextField">
<rect key="frame" x="92" y="71" width="200" height="20"/> <rect key="frame" x="86" y="73" 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"> <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"/> <font key="font" size="13" name="Menlo-Regular"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -140,11 +129,22 @@ Gw
</secureTextFieldCell> </secureTextFieldCell>
</secureTextField> </secureTextField>
</gridCell> </gridCell>
<gridCell row="mNb-JP-3YX" column="clB-mU-Eba" id="erv-Ur-nvi"/> <gridCell row="mNb-JP-3YX" column="clB-mU-Eba" id="erv-Ur-nvi">
<button key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="7">
<rect key="frame" x="292" y="72" width="31" height="21"/>
<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>
</gridCell>
<gridCell row="vQK-bD-mNH" column="uaf-ph-2zN" id="5U0-j9-rrv"/> <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"> <gridCell row="vQK-bD-mNH" column="7oF-Xq-5de" id="8JE-Wh-Sad">
<textField key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ibK-Px-Fvt"> <textField key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ibK-Px-Fvt">
<rect key="frame" x="90" y="51" width="204" height="14"/> <rect key="frame" x="84" y="53" width="204" height="14"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="KEY_ERROR" id="EOD-dE-TFa"> <textFieldCell key="cell" sendsActionOnEndEditing="YES" title="KEY_ERROR" id="EOD-dE-TFa">
<font key="font" metaFont="smallSystem"/> <font key="font" metaFont="smallSystem"/>
<color key="textColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <color key="textColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
@@ -155,7 +155,7 @@ Gw
<gridCell row="vQK-bD-mNH" column="clB-mU-Eba" id="fyu-1E-DpO"/> <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"> <gridCell row="DIe-Hz-bd0" column="uaf-ph-2zN" id="Pjk-hs-Pb5">
<textField key="contentView" horizontalHuggingPriority="252" verticalHuggingPriority="749" translatesAutoresizingMaskIntoConstraints="NO" id="5"> <textField key="contentView" horizontalHuggingPriority="252" verticalHuggingPriority="749" translatesAutoresizingMaskIntoConstraints="NO" id="5">
<rect key="frame" x="39" y="26" width="49" height="19"/> <rect key="frame" x="33" y="28" width="49" height="19"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Keyfile:" id="22"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Keyfile:" id="22">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -165,7 +165,7 @@ Gw
</gridCell> </gridCell>
<gridCell row="DIe-Hz-bd0" column="7oF-Xq-5de" id="o9J-f7-adq"> <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"> <pathControl key="contentView" verticalHuggingPriority="750" allowsExpansionToolTips="YES" translatesAutoresizingMaskIntoConstraints="NO" id="4" customClass="MPPathControl">
<rect key="frame" x="89" y="22" width="206" height="25"/> <rect key="frame" x="83" y="24" width="206" height="25"/>
<pathCell key="cell" selectable="YES" editable="YES" alignment="left" pathStyle="popUp" id="23" customClass="MPPathCell"> <pathCell key="cell" selectable="YES" editable="YES" alignment="left" pathStyle="popUp" id="23" customClass="MPPathCell">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</pathCell> </pathCell>
@@ -173,8 +173,8 @@ Gw
</gridCell> </gridCell>
<gridCell row="DIe-Hz-bd0" column="clB-mU-Eba" id="miK-hQ-pkN"> <gridCell row="DIe-Hz-bd0" column="clB-mU-Eba" id="miK-hQ-pkN">
<button key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8"> <button key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8">
<rect key="frame" x="291" y="19" width="45" height="31"/> <rect key="frame" x="292" y="27" width="31" height="20"/>
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSStopProgressTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="19"> <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"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
@@ -186,8 +186,8 @@ Gw
<gridCell row="TQt-iq-lMT" column="uaf-ph-2zN" id="nAI-ge-Vjb"/> <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"> <gridCell row="TQt-iq-lMT" column="7oF-Xq-5de" id="dT5-pB-M7d">
<button key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="6"> <button key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="6">
<rect key="frame" x="85" y="-7" width="214" height="32"/> <rect key="frame" x="86" y="-1" width="200" height="23"/>
<buttonCell key="cell" type="push" title="Generate Keyfile" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="21"> <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"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
@@ -213,11 +213,11 @@ Gw
<constraint firstItem="68" firstAttribute="top" secondItem="0Iv-td-ACj" secondAttribute="bottom" constant="20" symbolic="YES" id="s84-KY-RXX"/> <constraint firstItem="68" firstAttribute="top" secondItem="0Iv-td-ACj" secondAttribute="bottom" constant="20" symbolic="YES" id="s84-KY-RXX"/>
</constraints> </constraints>
</view> </view>
<point key="canvasLocation" x="-272" y="-447.5"/> <point key="canvasLocation" x="-295" y="-412"/>
</window> </window>
</objects> </objects>
<resources> <resources>
<image name="NSQuickLookTemplate" width="21" height="13"/> <image name="NSQuickLookTemplate" width="19" height="12"/>
<image name="NSStopProgressTemplate" width="14" height="13"/> <image name="NSStopProgressTemplate" width="11" height="11"/>
</resources> </resources>
</document> </document>

View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="18122" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies> <dependencies>
<deployment identifier="macosx"/> <deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/> <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="18122"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<objects> <objects>
@@ -16,6 +16,8 @@
<outlet property="messageInfoTextField" destination="268" id="ahE-sq-QzR"/> <outlet property="messageInfoTextField" destination="268" id="ahE-sq-QzR"/>
<outlet property="passwordTextField" destination="338" id="495"/> <outlet property="passwordTextField" destination="338" id="495"/>
<outlet property="togglePasswordButton" destination="408" id="493"/> <outlet property="togglePasswordButton" destination="408" id="493"/>
<outlet property="touchIdButton" destination="mQA-C0-JyU" id="fM3-PG-1OB"/>
<outlet property="touchIdEnabledButton" destination="Hs8-Tc-ezo" id="9Go-LQ-mSw"/>
<outlet property="unlockButton" destination="2" id="ZRr-Ui-ExP"/> <outlet property="unlockButton" destination="2" id="ZRr-Ui-ExP"/>
<outlet property="view" destination="1" id="143"/> <outlet property="view" destination="1" id="143"/>
</connections> </connections>
@@ -25,19 +27,6 @@
<customView horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="1"> <customView horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="1">
<rect key="frame" x="0.0" y="0.0" width="508" height="526"/> <rect key="frame" x="0.0" y="0.0" width="508" height="526"/>
<subviews> <subviews>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2">
<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"/>
<string key="keyEquivalent" base64-UTF8="YES">
DQ
</string>
</buttonCell>
<connections>
<action selector="_submit:" target="-2" id="KZN-ap-nDc"/>
</connections>
</button>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="17"> <textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="17">
<rect key="frame" x="108" y="226" width="45" height="16"/> <rect key="frame" x="108" y="226" width="45" height="16"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Keyfile" id="18"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Keyfile" id="18">
@@ -53,7 +42,7 @@ DQ
</pathCell> </pathCell>
</pathControl> </pathControl>
<imageView translatesAutoresizingMaskIntoConstraints="NO" id="262"> <imageView translatesAutoresizingMaskIntoConstraints="NO" id="262">
<rect key="frame" x="230" y="305" width="48" height="48"/> <rect key="frame" x="230" y="332" width="48" height="48"/>
<constraints> <constraints>
<constraint firstAttribute="height" constant="48" id="273"/> <constraint firstAttribute="height" constant="48" id="273"/>
<constraint firstAttribute="width" constant="48" id="456"/> <constraint firstAttribute="width" constant="48" id="456"/>
@@ -61,7 +50,7 @@ DQ
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyUpOrDown" image="02_MessageBoxWarningTemplate" id="263"/> <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyUpOrDown" image="02_MessageBoxWarningTemplate" id="263"/>
</imageView> </imageView>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="268"> <textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="268">
<rect key="frame" x="199" y="281" width="110" height="16"/> <rect key="frame" x="199" y="308" width="110" height="16"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Wrong password!" id="269"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Wrong password!" id="269">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -86,15 +75,15 @@ DQ
</connections> </connections>
</secureTextField> </secureTextField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="408"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="408">
<rect key="frame" x="351" y="246" width="50" height="32"/> <rect key="frame" x="357" y="251" width="32" height="23"/>
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSQuickLookTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="409"> <buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" 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"/> <behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
</button> </button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="486"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="486">
<rect key="frame" x="351" y="216" width="50" height="32"/> <rect key="frame" x="357" y="221" width="32" height="23"/>
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSStopProgressTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="487"> <buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" 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"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
@@ -109,34 +98,80 @@ DQ
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
</button> </button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2pb-ZG-spA"> <stackView distribution="fill" orientation="horizontal" alignment="top" spacing="12" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="tck-n8-s0U" userLabel="SubmitButtonContainer">
<rect key="frame" x="249" y="169" width="76" height="32"/> <rect key="frame" x="164" y="176" width="224" height="20"/>
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="erj-mR-UyO"> <subviews>
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2pb-ZG-spA">
<font key="font" metaFont="system"/> <rect key="frame" x="-7" y="-7" width="76" height="32"/>
<string key="keyEquivalent" base64-UTF8="YES"> <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"/>
<string key="keyEquivalent" base64-UTF8="YES">
Gw Gw
</string> </string>
</buttonCell> </buttonCell>
<connections> <connections>
<action selector="_submit:" target="-2" id="aVF-1d-1Hq"/> <action selector="_submit:" target="-2" id="aVF-1d-1Hq"/>
</connections> </connections>
</button> </button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="mQA-C0-JyU">
<rect key="frame" x="67" y="-7" width="88" height="32"/>
<buttonCell key="cell" type="push" title="Touch ID" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="W9h-1u-9kq">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="unlockWithTouchID:" target="-2" id="1yL-6V-t8q"/>
</connections>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2">
<rect key="frame" x="153" y="-7" 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"/>
<string key="keyEquivalent" base64-UTF8="YES">
DQ
</string>
</buttonCell>
<connections>
<action selector="_submit:" target="-2" id="KZN-ap-nDc"/>
</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 hidden="YES" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="txI-yI-5nE"> <textField hidden="YES" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="txI-yI-5nE">
<rect key="frame" x="157" y="204" width="195" height="14"/> <rect key="frame" x="157" y="204" width="195" height="14"/>
<textFieldCell key="cell" selectable="YES" title="key_file_warnig" id="f6J-5f-ZvP"> <textFieldCell key="cell" selectable="YES" title="key_file_warnig" id="f6J-5f-ZvP">
<font key="font" metaFont="smallSystem"/> <font key="font" usesAppearanceFont="YES"/>
<color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>
</textField> </textField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Hs8-Tc-ezo">
<rect key="frame" x="66" y="287" width="76" height="18"/>
<buttonCell key="cell" type="check" title="TouchID" bezelStyle="regularSquare" imagePosition="left" allowsMixedState="YES" inset="2" id="h3C-Z4-x7N">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="touchIdEnabledChanged:" target="-2" id="3pR-xA-wbI"/>
</connections>
</button>
</subviews> </subviews>
<constraints> <constraints>
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="2" secondAttribute="bottom" constant="20" symbolic="YES" id="122"/>
<constraint firstItem="262" firstAttribute="top" relation="greaterThanOrEqual" secondItem="1" secondAttribute="top" constant="20" symbolic="YES" id="276"/> <constraint firstItem="262" firstAttribute="top" relation="greaterThanOrEqual" secondItem="1" secondAttribute="top" constant="20" symbolic="YES" id="276"/>
<constraint firstAttribute="centerX" secondItem="262" secondAttribute="centerX" id="286"/> <constraint firstAttribute="centerX" secondItem="262" secondAttribute="centerX" id="286"/>
<constraint firstAttribute="centerY" secondItem="338" secondAttribute="centerY" id="386"/> <constraint firstAttribute="centerY" secondItem="338" secondAttribute="centerY" id="386"/>
<constraint firstItem="338" firstAttribute="top" secondItem="268" secondAttribute="bottom" constant="8" symbolic="YES" id="400"/>
<constraint firstItem="268" firstAttribute="top" secondItem="262" secondAttribute="bottom" constant="8" symbolic="YES" id="402"/> <constraint firstItem="268" firstAttribute="top" secondItem="262" secondAttribute="bottom" constant="8" symbolic="YES" id="402"/>
<constraint firstItem="408" firstAttribute="top" secondItem="338" secondAttribute="top" id="411"/> <constraint firstItem="408" firstAttribute="top" secondItem="338" secondAttribute="top" id="411"/>
<constraint firstItem="268" firstAttribute="centerX" secondItem="338" secondAttribute="centerX" id="447"/> <constraint firstItem="268" firstAttribute="centerX" secondItem="338" secondAttribute="centerX" id="447"/>
@@ -150,18 +185,21 @@ Gw
<constraint firstItem="486" firstAttribute="leading" secondItem="241" secondAttribute="trailing" constant="8" symbolic="YES" id="489"/> <constraint firstItem="486" firstAttribute="leading" secondItem="241" secondAttribute="trailing" constant="8" symbolic="YES" id="489"/>
<constraint firstItem="486" firstAttribute="leading" secondItem="408" secondAttribute="leading" id="490"/> <constraint firstItem="486" firstAttribute="leading" secondItem="408" secondAttribute="leading" id="490"/>
<constraint firstItem="408" firstAttribute="trailing" secondItem="486" secondAttribute="trailing" id="492"/> <constraint firstItem="408" firstAttribute="trailing" secondItem="486" secondAttribute="trailing" id="492"/>
<constraint firstItem="2" firstAttribute="trailing" secondItem="486" secondAttribute="trailing" id="496"/> <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="Hs8-Tc-ezo" secondAttribute="trailing" constant="20" symbolic="YES" id="4Zq-48-2fD"/>
<constraint firstItem="2pb-ZG-spA" firstAttribute="baseline" secondItem="2" secondAttribute="baseline" id="9nK-MH-Ozs"/> <constraint firstItem="tck-n8-s0U" firstAttribute="top" secondItem="txI-yI-5nE" secondAttribute="bottom" constant="8" id="6tz-an-3SW"/>
<constraint firstItem="408" firstAttribute="leading" secondItem="338" secondAttribute="trailing" constant="8" symbolic="YES" id="7qE-8F-QgB"/>
<constraint firstItem="txI-yI-5nE" firstAttribute="trailing" secondItem="241" secondAttribute="trailing" id="AVL-HO-SMq"/> <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"/> <constraint firstItem="17" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="EOa-K4-v7J"/>
<constraint firstItem="338" firstAttribute="leading" secondItem="d8O-Ha-rrS" secondAttribute="trailing" constant="8" symbolic="YES" id="KYs-Ia-SVl"/> <constraint firstItem="338" firstAttribute="leading" secondItem="d8O-Ha-rrS" secondAttribute="trailing" constant="8" symbolic="YES" id="KYs-Ia-SVl"/>
<constraint firstItem="2pb-ZG-spA" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="SUS-76-os4"/> <constraint firstItem="Hs8-Tc-ezo" firstAttribute="leading" secondItem="d8O-Ha-rrS" secondAttribute="leading" id="MO7-cs-9KQ"/>
<constraint firstItem="2" firstAttribute="top" secondItem="txI-yI-5nE" secondAttribute="bottom" constant="8" symbolic="YES" id="jJs-hc-O2O"/> <constraint firstItem="d8O-Ha-rrS" firstAttribute="top" secondItem="Hs8-Tc-ezo" secondAttribute="bottom" constant="17" id="Rhp-Gn-AaI"/>
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="tck-n8-s0U" secondAttribute="bottom" constant="20" symbolic="YES" id="Sny-FR-cY1"/>
<constraint firstItem="tck-n8-s0U" firstAttribute="trailing" secondItem="486" secondAttribute="trailing" id="UtJ-18-p5u"/>
<constraint firstItem="Hs8-Tc-ezo" firstAttribute="firstBaseline" secondItem="268" secondAttribute="firstBaseline" constant="20" id="e94-Kz-Ohn"/>
<constraint firstItem="d8O-Ha-rrS" firstAttribute="centerY" secondItem="338" secondAttribute="centerY" id="kgB-jV-OGy"/> <constraint firstItem="d8O-Ha-rrS" firstAttribute="centerY" secondItem="338" secondAttribute="centerY" id="kgB-jV-OGy"/>
<constraint firstItem="txI-yI-5nE" firstAttribute="top" secondItem="241" secondAttribute="bottom" constant="8" symbolic="YES" id="lfg-eB-T2O"/> <constraint firstItem="txI-yI-5nE" firstAttribute="top" secondItem="241" secondAttribute="bottom" constant="8" symbolic="YES" id="lfg-eB-T2O"/>
<constraint firstItem="txI-yI-5nE" firstAttribute="leading" secondItem="241" secondAttribute="leading" id="nGY-6Q-Vwy"/> <constraint firstItem="txI-yI-5nE" firstAttribute="leading" secondItem="241" secondAttribute="leading" id="nGY-6Q-Vwy"/>
<constraint firstItem="d8O-Ha-rrS" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="vxq-YP-UhR"/> <constraint firstItem="d8O-Ha-rrS" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="vxq-YP-UhR"/>
<constraint firstItem="2" firstAttribute="leading" secondItem="2pb-ZG-spA" secondAttribute="trailing" constant="12" id="ytJ-5Z-5rT"/>
</constraints> </constraints>
<point key="canvasLocation" x="-127" y="-46"/> <point key="canvasLocation" x="-127" y="-46"/>
</customView> </customView>

View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<dependencies> <dependencies>
<deployment identifier="macosx"/> <deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/> <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14460.31"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<objects> <objects>
@@ -20,11 +20,11 @@
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/> <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/> <customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customView id="Hz6-mo-xeY"> <customView id="Hz6-mo-xeY">
<rect key="frame" x="0.0" y="0.0" width="410" height="214"/> <rect key="frame" x="0.0" y="0.0" width="410" height="220"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews> <subviews>
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="KQ1-tZ-qja" customClass="HNHUISecureTextField"> <textField horizontalHuggingPriority="249" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="KQ1-tZ-qja" customClass="HNHUISecureTextField">
<rect key="frame" x="20" y="72" width="262" height="20"/> <rect key="frame" x="20" y="74" width="278" height="24"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" enabled="NO" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="Wi0-xp-KgI"> <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"/> <font key="font" size="13" name="Menlo-Regular"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
@@ -32,27 +32,28 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="hKI-WP-N93"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="hKI-WP-N93">
<rect key="frame" x="347" y="65" width="50" height="32"/> <rect key="frame" x="361.5" y="74" width="29" height="23"/>
<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"> <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" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/> <behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
</button> </button>
<scrollView horizontalLineScroll="26" horizontalPageScroll="10" verticalLineScroll="26" verticalPageScroll="10" hasVerticalScroller="NO" usesPredominantAxisScrolling="NO" verticalScrollElasticity="none" translatesAutoresizingMaskIntoConstraints="NO" id="MVS-ug-wys"> <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="100" width="370" height="64"/> <rect key="frame" x="20" y="106" width="370" height="64"/>
<clipView key="contentView" drawsBackground="NO" id="8aa-cB-mUF"> <clipView key="contentView" drawsBackground="NO" id="8aa-cB-mUF">
<rect key="frame" x="1" y="1" width="368" height="62"/> <rect key="frame" x="1" y="0.0" width="368" height="63"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <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"> <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="39"/> <rect key="frame" x="0.0" y="0.0" width="368" height="40"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask"/>
<size key="intercellSpacing" width="3" height="2"/> <size key="intercellSpacing" width="3" height="2"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/> <color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
<tableColumns> <tableColumns>
<tableColumn width="356" minWidth="40" maxWidth="1000" id="Q1b-ir-hyW"> <tableColumn width="365" minWidth="40" maxWidth="1000" id="Q1b-ir-hyW">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border"> <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
</tableHeaderCell> </tableHeaderCell>
@@ -103,13 +104,13 @@
<rect key="frame" x="-100" y="-100" width="15" height="102"/> <rect key="frame" x="-100" y="-100" width="15" height="102"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
</scroller> </scroller>
<tableHeaderView key="headerView" wantsLayer="YES" id="GRO-H1-N4r"> <tableHeaderView key="headerView" id="GRO-H1-N4r">
<rect key="frame" x="0.0" y="0.0" width="368" height="23"/> <rect key="frame" x="0.0" y="0.0" width="368" height="23"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
</tableHeaderView> </tableHeaderView>
</scrollView> </scrollView>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="k8l-uy-C3l"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="k8l-uy-C3l">
<rect key="frame" x="319" y="13" width="78" height="32"/> <rect key="frame" x="313" y="13" width="83" height="32"/>
<buttonCell key="cell" type="push" title="Submit" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="8vP-Ka-vsA"> <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"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
@@ -119,8 +120,8 @@
</connections> </connections>
</button> </button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Y8X-Bm-qLt"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Y8X-Bm-qLt">
<rect key="frame" x="283" y="65" width="70" height="32"/> <rect key="frame" x="305.5" y="74" width="49" height="23"/>
<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"> <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">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
@@ -129,7 +130,7 @@
</connections> </connections>
</button> </button>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="e2q-qh-Zlv"> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="e2q-qh-Zlv">
<rect key="frame" x="167" y="48" width="76" height="16"/> <rect key="frame" x="167" y="49" width="76" height="17"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="StatusLabel" id="M3h-q8-FLO"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="StatusLabel" id="M3h-q8-FLO">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@@ -137,7 +138,7 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="wAr-f2-ZUQ"> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="wAr-f2-ZUQ">
<rect key="frame" x="18" y="172" width="374" height="22"/> <rect key="frame" x="18" y="178" width="374" height="22"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="MessageLabel" id="sHz-kg-YJQ"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="MessageLabel" id="sHz-kg-YJQ">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@@ -173,6 +174,6 @@
</customView> </customView>
</objects> </objects>
<resources> <resources>
<image name="NSQuickLookTemplate" width="21" height="13"/> <image name="NSQuickLookTemplate" width="19" height="12"/>
</resources> </resources>
</document> </document>

View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<dependencies> <dependencies>
<deployment identifier="macosx"/> <deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/> <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<objects> <objects>
@@ -19,7 +19,7 @@
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews> <subviews>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="BDL-W9-psF"> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="BDL-W9-psF">
<rect key="frame" x="18" y="342" width="237" height="16"/> <rect key="frame" x="18" y="341" width="237" height="17"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Please pick a field value to be inserted" id="aJS-22-6Va"> <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"/> <font key="font" metaFont="system"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@@ -27,7 +27,7 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="n1E-iQ-yd7"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="n1E-iQ-yd7">
<rect key="frame" x="387" y="13" width="74" height="32"/> <rect key="frame" x="381" y="13" width="79" height="32"/>
<buttonCell key="cell" type="push" title="Select" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="6Wi-9i-Tcb"> <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"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
@@ -40,20 +40,21 @@ DQ
</connections> </connections>
</button> </button>
<scrollView autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nlF-dy-Ttg"> <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="60" width="434" height="274"/> <rect key="frame" x="20" y="61" width="434" height="272"/>
<clipView key="contentView" id="am4-w0-FSd"> <clipView key="contentView" id="am4-w0-FSd">
<rect key="frame" x="1" y="1" width="432" height="272"/> <rect key="frame" x="1" y="0.0" width="432" height="271"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <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"> <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="445" height="249"/> <rect key="frame" x="0.0" y="0.0" width="436" height="248"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask"/>
<size key="intercellSpacing" width="3" height="2"/> <size key="intercellSpacing" width="3" height="2"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/> <color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
<tableColumns> <tableColumns>
<tableColumn width="118" minWidth="40" maxWidth="1000" id="0H9-DW-Jyj"> <tableColumn width="118" minWidth="40" maxWidth="1000" id="0H9-DW-Jyj">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" title="Field"> <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="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
</tableHeaderCell> </tableHeaderCell>
@@ -65,11 +66,11 @@ DQ
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/> <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
<prototypeCellViews> <prototypeCellViews>
<tableCellView identifier="DataCell" id="s1C-7e-04S"> <tableCellView identifier="DataCell" id="s1C-7e-04S">
<rect key="frame" x="1" y="1" width="123" height="17"/> <rect key="frame" x="1" y="1" width="118" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ADN-XZ-Lq7"> <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ADN-XZ-Lq7">
<rect key="frame" x="0.0" y="0.0" width="123" height="17"/> <rect key="frame" x="0.0" y="0.0" width="118" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="e8U-mE-mZh"> <textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="e8U-mE-mZh">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
@@ -83,11 +84,11 @@ DQ
</connections> </connections>
</tableCellView> </tableCellView>
<tableCellView identifier="HeaderCell" id="wpe-VG-m1j"> <tableCellView identifier="HeaderCell" id="wpe-VG-m1j">
<rect key="frame" x="1" y="20" width="123" height="17"/> <rect key="frame" x="1" y="20" width="118" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6sH-Uk-P1B"> <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6sH-Uk-P1B">
<rect key="frame" x="0.0" y="0.0" width="123" height="17"/> <rect key="frame" x="0.0" y="0.0" width="118" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Header View Cell" id="kTy-VO-Xlg"> <textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Header View Cell" id="kTy-VO-Xlg">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
@@ -104,6 +105,7 @@ DQ
</tableColumn> </tableColumn>
<tableColumn width="312" minWidth="40" maxWidth="1000" id="rVo-ud-5fs"> <tableColumn width="312" minWidth="40" maxWidth="1000" id="rVo-ud-5fs">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" title="Value"> <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="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
</tableHeaderCell> </tableHeaderCell>
@@ -123,15 +125,15 @@ DQ
</subviews> </subviews>
</clipView> </clipView>
<scroller key="horizontalScroller" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="RHy-ph-0lP"> <scroller key="horizontalScroller" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="RHy-ph-0lP">
<rect key="frame" x="1" y="257" width="432" height="16"/> <rect key="frame" x="1" y="255" width="432" height="16"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
</scroller> </scroller>
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="b5D-WW-IPI"> <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"/> <rect key="frame" x="224" y="17" width="15" height="102"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
</scroller> </scroller>
<tableHeaderView key="headerView" wantsLayer="YES" id="jX4-Gp-btT"> <tableHeaderView key="headerView" id="jX4-Gp-btT">
<rect key="frame" x="0.0" y="0.0" width="445" height="23"/> <rect key="frame" x="0.0" y="0.0" width="436" height="23"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
</tableHeaderView> </tableHeaderView>
</scrollView> </scrollView>

View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14313.18" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<dependencies> <dependencies>
<deployment identifier="macosx"/> <deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/> <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14313.18"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<objects> <objects>
@@ -15,24 +15,25 @@
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/> <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/> <customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customView id="Hz6-mo-xeY"> <customView id="Hz6-mo-xeY">
<rect key="frame" x="0.0" y="0.0" width="287" height="472"/> <rect key="frame" x="0.0" y="0.0" width="287" height="474"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews> <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"> <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="48" width="255" height="382"/> <rect key="frame" x="16" y="50" width="255" height="382"/>
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="cgV-6Q-xC5"> <clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="cgV-6Q-xC5">
<rect key="frame" x="1" y="1" width="253" height="380"/> <rect key="frame" x="1" y="1" width="253" height="380"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <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"> <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"/> <rect key="frame" x="0.0" y="0.0" width="253" height="380"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask"/>
<size key="intercellSpacing" width="3" height="2"/> <size key="intercellSpacing" width="3" height="2"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/> <color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
<tableColumns> <tableColumns>
<tableColumn width="241" minWidth="40" maxWidth="1000" id="t3Y-fx-P5b"> <tableColumn width="250" minWidth="40" maxWidth="1000" id="t3Y-fx-P5b">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left"> <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="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" white="0.33333298560000002" alpha="1" colorSpace="calibratedWhite"/> <color key="backgroundColor" white="0.33333298560000002" alpha="1" colorSpace="calibratedWhite"/>
</tableHeaderCell> </tableHeaderCell>
@@ -71,11 +72,11 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="K3k-BF-ag9"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="K3k-BF-ag9">
<rect key="frame" x="210" y="4" width="46" height="32"/> <rect key="frame" x="217" y="8" width="32" height="25"/>
<constraints> <constraints>
<constraint firstAttribute="width" constant="32" id="UXw-HR-Aqw"/> <constraint firstAttribute="width" constant="32" id="UXw-HR-Aqw"/>
</constraints> </constraints>
<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"> <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">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
@@ -106,22 +107,21 @@
</connections> </connections>
</tableView> </tableView>
</subviews> </subviews>
<nil key="backgroundColor"/>
</clipView> </clipView>
<constraints> <constraints>
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="200" id="PWI-m3-nSC"/> <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="200" id="PWI-m3-nSC"/>
</constraints> </constraints>
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="x6X-UZ-xSg"> <scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="x6X-UZ-xSg">
<rect key="frame" x="1" y="317" width="253" height="16"/> <rect key="frame" x="1" y="317" width="253" height="16"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
</scroller> </scroller>
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="YJP-Wl-Ugv"> <scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="NO" id="YJP-Wl-Ugv">
<rect key="frame" x="224" y="17" width="15" height="102"/> <rect key="frame" x="224" y="17" width="15" height="102"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
</scroller> </scroller>
</scrollView> </scrollView>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ZhC-nS-vfd"> <textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ZhC-nS-vfd">
<rect key="frame" x="18" y="438" width="63" height="14"/> <rect key="frame" x="18" y="440" width="63" height="14"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Plugin data" id="unO-bO-8v0"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Plugin data" id="unO-bO-8v0">
<font key="font" metaFont="smallSystem"/> <font key="font" metaFont="smallSystem"/>
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
@@ -129,8 +129,8 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="wUR-gA-36a"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="wUR-gA-36a">
<rect key="frame" x="172" y="13" width="102" height="32"/> <rect key="frame" x="186" y="18" width="81" height="25"/>
<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"> <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">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
@@ -154,6 +154,6 @@
</customView> </customView>
</objects> </objects>
<resources> <resources>
<image name="NSRemoveTemplate" width="14" height="4"/> <image name="NSRemoveTemplate" width="11" height="11"/>
</resources> </resources>
</document> </document>

View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="15705" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies> <dependencies>
<deployment identifier="macosx"/> <deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/> <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="15705"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<objects> <objects>
@@ -22,19 +22,19 @@
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/> <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/> <customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customView translatesAutoresizingMaskIntoConstraints="NO" id="Hz6-mo-xeY"> <customView translatesAutoresizingMaskIntoConstraints="NO" id="Hz6-mo-xeY">
<rect key="frame" x="0.0" y="0.0" width="607" height="542"/> <rect key="frame" x="0.0" y="0.0" width="607" height="502"/>
<subviews> <subviews>
<box borderType="line" title="Box" titlePosition="noTitle" translatesAutoresizingMaskIntoConstraints="NO" id="vBs-Ga-aq0"> <box borderType="line" title="Box" titlePosition="noTitle" translatesAutoresizingMaskIntoConstraints="NO" id="vBs-Ga-aq0">
<rect key="frame" x="175" y="56" width="415" height="330"/> <rect key="frame" x="175" y="46" width="415" height="306"/>
<view key="contentView" id="tD5-Na-7XI"> <view key="contentView" id="tD5-Na-7XI">
<rect key="frame" x="3" y="3" width="409" height="324"/> <rect key="frame" x="3" y="3" width="409" height="300"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<customView translatesAutoresizingMaskIntoConstraints="NO" id="wIk-iw-Tcz"> <customView translatesAutoresizingMaskIntoConstraints="NO" id="wIk-iw-Tcz">
<rect key="frame" x="20" y="20" width="369" height="284"/> <rect key="frame" x="20" y="20" width="369" height="260"/>
<subviews> <subviews>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="qPL-FR-ky7"> <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="qPL-FR-ky7">
<rect key="frame" x="18" y="248" width="333" height="16"/> <rect key="frame" x="18" y="224" width="333" height="16"/>
<textFieldCell key="cell" controlSize="mini" sendsActionOnEndEditing="YES" title="Plugin Settings Info" id="OOr-SW-jZb"> <textFieldCell key="cell" controlSize="mini" sendsActionOnEndEditing="YES" title="Plugin Settings Info" id="OOr-SW-jZb">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@@ -59,14 +59,14 @@
</view> </view>
</box> </box>
<button translatesAutoresizingMaskIntoConstraints="NO" id="CqP-oK-S8k"> <button translatesAutoresizingMaskIntoConstraints="NO" id="CqP-oK-S8k">
<rect key="frame" x="18" y="459" width="163" height="18"/> <rect key="frame" x="18" y="422" width="159" height="18"/>
<buttonCell key="cell" type="check" title="Load unsecure Plugins" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="C4B-6z-ZqX"> <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"/> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
</button> </button>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="aoG-FD-ds8"> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="aoG-FD-ds8">
<rect key="frame" x="18" y="424" width="571" height="28"/> <rect key="frame" x="18" y="388" width="571" height="28"/>
<textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" id="2bX-8S-9XM"> <textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" id="2bX-8S-9XM">
<font key="font" metaFont="smallSystem"/> <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> <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,20 +75,21 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<scrollView autohidesScrollers="YES" horizontalLineScroll="37" horizontalPageScroll="10" verticalLineScroll="37" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fCk-fL-jU8"> <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="60" width="150" height="324"/> <rect key="frame" x="20" y="50" width="150" height="300"/>
<clipView key="contentView" id="lTL-Q2-k45"> <clipView key="contentView" id="lTL-Q2-k45">
<rect key="frame" x="1" y="1" width="148" height="322"/> <rect key="frame" x="1" y="1" width="148" height="298"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<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"> <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="322"/> <rect key="frame" x="0.0" y="0.0" width="148" height="298"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask"/>
<size key="intercellSpacing" width="3" height="2"/> <size key="intercellSpacing" width="3" height="2"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/> <color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
<tableColumns> <tableColumns>
<tableColumn width="136" minWidth="40" maxWidth="1000" id="kNH-wp-Drp"> <tableColumn width="145" minWidth="40" maxWidth="1000" id="kNH-wp-Drp">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border"> <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
</tableHeaderCell> </tableHeaderCell>
@@ -153,13 +154,12 @@
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
</scroller> </scroller>
</scrollView> </scrollView>
<segmentedControl verticalHuggingPriority="750" id="B9Q-hq-K4N"> <segmentedControl verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="B9Q-hq-K4N">
<rect key="frame" x="17" y="18" width="63" height="36"/> <rect key="frame" x="20" y="19" width="71" height="23"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <segmentedCell key="cell" borderStyle="border" alignment="left" style="texturedSquare" trackingMode="momentary" id="cj3-R6-g1E">
<segmentedCell key="cell" borderStyle="border" alignment="left" style="rounded" trackingMode="momentary" id="cj3-R6-g1E">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<segments> <segments>
<segment image="NSAddTemplate" width="24"/> <segment image="NSAddTemplate" width="32"/>
<segment image="NSRemoveTemplate" width="32" tag="1"/> <segment image="NSRemoveTemplate" width="32" tag="1"/>
</segments> </segments>
</segmentedCell> </segmentedCell>
@@ -168,8 +168,8 @@
</connections> </connections>
</segmentedControl> </segmentedControl>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="SNe-cc-CZs"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="SNe-cc-CZs">
<rect key="frame" x="400" y="13" width="194" height="32"/> <rect key="frame" x="413" y="19" width="174" height="23"/>
<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"> <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">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
@@ -178,21 +178,21 @@
</connections> </connections>
</button> </button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="XIl-03-JZP"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="XIl-03-JZP">
<rect key="frame" x="18" y="391" width="254" height="18"/> <rect key="frame" x="18" y="356" width="250" 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"> <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"/> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
</button> </button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="K0z-aD-K2P"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="K0z-aD-K2P">
<rect key="frame" x="18" y="505" width="247" height="18"/> <rect key="frame" x="18" y="466" width="243" height="18"/>
<buttonCell key="cell" type="check" title="Download current Plugin information" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="uHR-uL-Ddm"> <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"/> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
</button> </button>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="nrf-Hz-0vB"> <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="nrf-Hz-0vB">
<rect key="frame" x="18" y="484" width="349" height="14"/> <rect key="frame" x="18" y="446" 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"> <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"/> <font key="font" metaFont="smallSystem"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> <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="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="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="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="20" symbolic="YES" id="r4X-iM-iYU"/> <constraint firstItem="SNe-cc-CZs" firstAttribute="top" secondItem="vBs-Ga-aq0" secondAttribute="bottom" constant="8" 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 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 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="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="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"/> <constraint firstItem="aoG-FD-ds8" firstAttribute="top" secondItem="CqP-oK-S8k" secondAttribute="bottom" constant="8" symbolic="YES" id="zSW-h3-BrT"/>
</constraints> </constraints>
<point key="canvasLocation" x="169" y="6"/> <point key="canvasLocation" x="179" y="115"/>
</customView> </customView>
</objects> </objects>
<resources> <resources>
<image name="NSAddTemplate" width="14" height="13"/> <image name="NSAddTemplate" width="11" height="11"/>
<image name="NSRemoveTemplate" width="14" height="4"/> <image name="NSRemoveTemplate" width="11" height="11"/>
</resources> </resources>
</document> </document>

View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<dependencies> <dependencies>
<deployment identifier="macosx"/> <deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/> <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<objects> <objects>
@@ -15,25 +15,26 @@
</customObject> </customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/> <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/> <customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customView misplaced="YES" id="Hz6-mo-xeY"> <customView id="Hz6-mo-xeY">
<rect key="frame" x="0.0" y="0.0" width="628" height="488"/> <rect key="frame" x="0.0" y="0.0" width="638" height="513"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews> <subviews>
<scrollView autohidesScrollers="YES" horizontalLineScroll="26" horizontalPageScroll="10" verticalLineScroll="26" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="V1g-KK-vjw"> <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="72" width="573" height="372"/> <rect key="frame" x="20" y="74" width="598" height="419"/>
<clipView key="contentView" id="Sqy-VI-iH4"> <clipView key="contentView" id="Sqy-VI-iH4">
<rect key="frame" x="1" y="1" width="571" height="370"/> <rect key="frame" x="1" y="0.0" width="596" height="418"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <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"> <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="608" height="347"/> <rect key="frame" x="0.0" y="0.0" width="599" height="395"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask"/>
<size key="intercellSpacing" width="3" height="2"/> <size key="intercellSpacing" width="3" height="2"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/> <color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
<tableColumns> <tableColumns>
<tableColumn width="145" minWidth="10" maxWidth="3.4028234663852886e+38" id="Nzo-rR-Hfx"> <tableColumn width="145" minWidth="10" maxWidth="3.4028234663852886e+38" id="Nzo-rR-Hfx">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left" title="Plugin"> <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="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</tableHeaderCell> </tableHeaderCell>
@@ -45,11 +46,11 @@
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/> <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
<prototypeCellViews> <prototypeCellViews>
<tableCellView id="Uuc-Kh-oDl"> <tableCellView id="Uuc-Kh-oDl">
<rect key="frame" x="1" y="1" width="150" height="17"/> <rect key="frame" x="1" y="1" width="145" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6fB-f9-l44"> <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6fB-f9-l44">
<rect key="frame" x="0.0" y="0.0" width="150" height="17"/> <rect key="frame" x="0.0" y="0.0" width="145" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="DRt-Gz-DUm"> <textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="DRt-Gz-DUm">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
@@ -66,6 +67,7 @@
</tableColumn> </tableColumn>
<tableColumn width="88" minWidth="10" maxWidth="3.4028234663852886e+38" id="hFg-AD-SqD"> <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"> <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="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</tableHeaderCell> </tableHeaderCell>
@@ -77,7 +79,7 @@
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/> <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
<prototypeCellViews> <prototypeCellViews>
<tableCellView id="AKl-7g-maS"> <tableCellView id="AKl-7g-maS">
<rect key="frame" x="154" y="1" width="88" height="17"/> <rect key="frame" x="149" y="1" width="88" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="gZz-x5-KVH"> <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="gZz-x5-KVH">
@@ -98,6 +100,7 @@
</tableColumn> </tableColumn>
<tableColumn width="357" minWidth="10" maxWidth="3.4028234663852886e+38" id="g1Q-BS-vCR"> <tableColumn width="357" minWidth="10" maxWidth="3.4028234663852886e+38" id="g1Q-BS-vCR">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left" title="Status"> <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="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</tableHeaderCell> </tableHeaderCell>
@@ -109,11 +112,11 @@
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/> <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
<prototypeCellViews> <prototypeCellViews>
<tableCellView id="RMm-PO-UNp" customClass="MPPluginStatusTableCellView"> <tableCellView id="RMm-PO-UNp" customClass="MPPluginStatusTableCellView">
<rect key="frame" x="245" y="1" width="361" height="17"/> <rect key="frame" x="240" y="1" width="357" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="RBa-0B-xVt"> <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="RBa-0B-xVt">
<rect key="frame" x="0.0" y="1" width="96" height="16"/> <rect key="frame" x="0.0" y="0.0" width="96" height="17"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="ZIf-CU-gh7"> <textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="ZIf-CU-gh7">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -121,7 +124,7 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="tVV-rz-Aff"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="tVV-rz-Aff">
<rect key="frame" x="294" y="-1" width="48" height="19"/> <rect key="frame" x="291" y="-1" width="46" 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"> <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"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="smallSystem"/> <font key="font" metaFont="smallSystem"/>
@@ -157,20 +160,20 @@
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="400" id="gYM-eK-y5v"/> <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="400" id="gYM-eK-y5v"/>
</constraints> </constraints>
<scroller key="horizontalScroller" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="ajb-Vb-WhY"> <scroller key="horizontalScroller" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="ajb-Vb-WhY">
<rect key="frame" x="1" y="355" width="571" height="16"/> <rect key="frame" x="1" y="402" width="596" height="16"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
</scroller> </scroller>
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="3eJ-oK-GNt"> <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"/> <rect key="frame" x="224" y="17" width="15" height="102"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
</scroller> </scroller>
<tableHeaderView key="headerView" wantsLayer="YES" id="uVe-04-Now"> <tableHeaderView key="headerView" id="uVe-04-Now">
<rect key="frame" x="0.0" y="0.0" width="608" height="23"/> <rect key="frame" x="0.0" y="0.0" width="599" height="23"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
</tableHeaderView> </tableHeaderView>
</scrollView> </scrollView>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="bGv-Zc-Vrk"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="bGv-Zc-Vrk">
<rect key="frame" x="13" y="13" width="82" height="32"/> <rect key="frame" x="14" y="13" width="87" height="32"/>
<buttonCell key="cell" type="push" title="Refresh" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="NZw-nO-lZ3"> <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"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
@@ -180,7 +183,7 @@
</connections> </connections>
</button> </button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Pkh-la-7FU"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Pkh-la-7FU">
<rect key="frame" x="514" y="13" width="66" height="32"/> <rect key="frame" x="552" y="13" width="72" height="32"/>
<buttonCell key="cell" type="push" title="Done" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="j9a-fn-Pye"> <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"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
@@ -190,7 +193,7 @@
</connections> </connections>
</button> </button>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="d2Q-7O-ilP"> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="d2Q-7O-ilP">
<rect key="frame" x="110" y="48" width="72" height="16"/> <rect key="frame" x="110" y="49" width="72" height="17"/>
<textFieldCell key="cell" lineBreakMode="clipping" title="Updated at" id="DhR-ED-6gV"> <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"/> <dateFormatter key="formatter" dateStyle="short" timeStyle="medium" doesRelativeDateFormatting="YES" id="0Ll-SA-lFN"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
@@ -199,7 +202,7 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="fjQ-ni-Ayx"> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="fjQ-ni-Ayx">
<rect key="frame" x="18" y="48" width="88" height="16"/> <rect key="frame" x="18" y="49" width="88" height="17"/>
<textFieldCell key="cell" lineBreakMode="clipping" title="Last updated:" id="ntD-sJ-NRw"> <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"/> <dateFormatter key="formatter" dateStyle="short" timeStyle="medium" doesRelativeDateFormatting="YES" id="fJu-2Q-skm"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>

View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="15702" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<dependencies> <dependencies>
<deployment identifier="macosx"/> <deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/> <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="15702"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<objects> <objects>
@@ -18,11 +18,11 @@
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/> <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/> <customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customView id="c22-O7-iKe"> <customView id="c22-O7-iKe">
<rect key="frame" x="0.0" y="0.0" width="219" height="209"/> <rect key="frame" x="0.0" y="0.0" width="207" height="213"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews> <subviews>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="IZP-Gd-jdU"> <popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="IZP-Gd-jdU">
<rect key="frame" x="10" y="146" width="96" height="25"/> <rect key="frame" x="13" y="151" width="83" height="23"/>
<popUpButtonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="KPf-xE-gde"> <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"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/> <font key="font" metaFont="menu"/>
@@ -37,7 +37,7 @@
</connections> </connections>
</popUpButton> </popUpButton>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="IFf-vC-3vk" customClass="HNHUITextField"> <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="IFf-vC-3vk" customClass="HNHUITextField">
<rect key="frame" x="13" y="99" width="186" height="21"/> <rect key="frame" x="13" y="101" width="174" height="21"/>
<constraints> <constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="100" id="Seu-01-P53"/> <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="100" id="Seu-01-P53"/>
</constraints> </constraints>
@@ -48,14 +48,14 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="T2o-aJ-JmD"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="T2o-aJ-JmD">
<rect key="frame" x="148" y="13" width="58" height="32"/> <rect key="frame" x="149" y="19" width="38" height="23"/>
<buttonCell key="cell" type="push" title="Use" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Kqx-qm-nMG"> <buttonCell key="cell" type="roundTextured" title="Use" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Kqx-qm-nMG">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
</button> </button>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="VR5-Rx-ueN"> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="VR5-Rx-ueN">
<rect key="frame" x="108" y="178" width="24" height="14"/> <rect key="frame" x="102" y="182" width="24" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Key" id="K1t-OZ-ACe"> <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Key" id="K1t-OZ-ACe">
<font key="font" metaFont="smallSystem"/> <font key="font" metaFont="smallSystem"/>
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
@@ -63,7 +63,7 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="sZo-ie-Asw"> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="sZo-ie-Asw">
<rect key="frame" x="11" y="178" width="58" height="14"/> <rect key="frame" x="11" y="182" width="58" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Reference" id="r1V-VE-ngy"> <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Reference" id="r1V-VE-ngy">
<font key="font" metaFont="smallSystem"/> <font key="font" metaFont="smallSystem"/>
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
@@ -71,10 +71,10 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<popUpButton horizontalHuggingPriority="249" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="b4e-k2-WPS"> <popUpButton horizontalHuggingPriority="249" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="b4e-k2-WPS">
<rect key="frame" x="107" y="146" width="96" height="25"/> <rect key="frame" x="104" y="151" width="83" height="23"/>
<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"> <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"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/> <font key="font" metaFont="system"/>
<menu key="menu" id="j2A-qj-k7L"> <menu key="menu" id="j2A-qj-k7L">
<items> <items>
<menuItem title="Matching" state="on" id="yT1-XL-k6a"> <menuItem title="Matching" state="on" id="yT1-XL-k6a">
@@ -88,7 +88,7 @@
</connections> </connections>
</popUpButton> </popUpButton>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="WTJ-he-uTu"> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="WTJ-he-uTu">
<rect key="frame" x="11" y="128" width="37" height="14"/> <rect key="frame" x="11" y="130" width="37" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Match" id="9ce-da-syF"> <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Match" id="9ce-da-syF">
<font key="font" metaFont="smallSystem"/> <font key="font" metaFont="smallSystem"/>
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
@@ -96,7 +96,7 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="mcC-bG-cCz"> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="mcC-bG-cCz">
<rect key="frame" x="11" y="77" width="92" height="14"/> <rect key="frame" x="11" y="79" width="92" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Reference String" id="gik-Ha-hRd"> <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Reference String" id="gik-Ha-hRd">
<font key="font" metaFont="smallSystem"/> <font key="font" metaFont="smallSystem"/>
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
@@ -104,7 +104,7 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="b36-T7-1tO" customClass="HNHUITextField"> <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="b36-T7-1tO" customClass="HNHUITextField">
<rect key="frame" x="13" y="48" width="186" height="21"/> <rect key="frame" x="13" y="50" width="174" height="21"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="Reference" drawsBackground="YES" id="dr9-x8-kKk"> <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"/> <font key="font" metaFont="system"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>

View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies> <dependencies>
<deployment identifier="macosx"/> <deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19455"/> <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<objects> <objects>
@@ -11,7 +11,6 @@
<outlet property="browserPopup" destination="ehI-gq-lsb" id="YMy-L1-pQw"/> <outlet property="browserPopup" destination="ehI-gq-lsb" id="YMy-L1-pQw"/>
<outlet property="doubleClickTitlePopup" destination="40" id="aKJ-q9-xjb"/> <outlet property="doubleClickTitlePopup" destination="40" id="aKJ-q9-xjb"/>
<outlet property="doubleClickURLPopup" destination="13" id="fGP-5I-0XK"/> <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="generatePasswordOnEntriesCheckButton" destination="yxq-YK-61i" id="0SK-CT-Wdn"/>
<outlet property="hideAfterCopyToClipboardCheckButton" destination="vT4-wF-ned" id="d7e-vc-cAQ"/> <outlet property="hideAfterCopyToClipboardCheckButton" destination="vT4-wF-ned" id="d7e-vc-cAQ"/>
<outlet property="updatePasswordOnTemplateEntriesCheckButton" destination="LPY-sM-hjS" id="wav-op-uck"/> <outlet property="updatePasswordOnTemplateEntriesCheckButton" destination="LPY-sM-hjS" id="wav-op-uck"/>
@@ -21,45 +20,24 @@
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/> <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/> <customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customView translatesAutoresizingMaskIntoConstraints="NO" id="1"> <customView translatesAutoresizingMaskIntoConstraints="NO" id="1">
<rect key="frame" x="0.0" y="0.0" width="449" height="478"/> <rect key="frame" x="0.0" y="0.0" width="449" height="338"/>
<subviews> <subviews>
<box autoresizesSubviews="NO" horizontalHuggingPriority="249" verticalHuggingPriority="500" borderType="line" title="Entry Table" translatesAutoresizingMaskIntoConstraints="NO" id="2"> <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"/> <rect key="frame" x="17" y="194" width="415" height="96"/>
<view key="contentView" id="cfa-nq-Kzt"> <view key="contentView" id="cfa-nq-Kzt">
<rect key="frame" x="3" y="3" width="409" height="86"/> <rect key="frame" x="3" y="3" width="409" height="78"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="9"> <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="9">
<rect key="frame" x="18" y="49" width="134" height="16"/> <rect key="frame" x="18" y="51" width="134" height="16"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Double-click on URL:" id="10"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Double-click on URL:" id="10">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="36"> <popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="13">
<rect key="frame" x="18" y="19" width="134" height="16"/> <rect key="frame" x="155" y="44" width="110" height="25"/>
<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"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="40">
<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="menu"/>
<menu key="menu" title="OtherViews" id="42">
<items>
<menuItem title="Opens Inspector" state="on" id="44"/>
<menuItem title="Is Ignored" id="43"/>
</items>
</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"> <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"/> <behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/> <font key="font" metaFont="menu"/>
@@ -71,28 +49,71 @@
</menu> </menu>
</popUpButtonCell> </popUpButtonCell>
</popUpButton> </popUpButton>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="36">
<rect key="frame" x="18" y="21" 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"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="40">
<rect key="frame" x="155" y="16" width="140" height="23"/>
<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="menu"/>
<menu key="menu" title="OtherViews" id="42">
<items>
<menuItem title="Opens Inspector" state="on" id="44"/>
<menuItem title="Is Ignored" id="43"/>
</items>
</menu>
</popUpButtonCell>
</popUpButton>
</subviews> </subviews>
<constraints> <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="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 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="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="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="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 firstItem="36" firstAttribute="leading" secondItem="cfa-nq-Kzt" secondAttribute="leading" constant="20" symbolic="YES" id="eqy-R2-mpP"/>
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="40" secondAttribute="bottom" constant="20" symbolic="YES" id="lle-u8-JWP"/> <constraint firstAttribute="bottom" secondItem="40" secondAttribute="bottom" constant="20" symbolic="YES" id="lle-u8-JWP"/>
</constraints> </constraints>
</view> </view>
<constraints> <constraints>
<constraint firstItem="13" firstAttribute="leading" secondItem="9" secondAttribute="trailing" constant="8" symbolic="YES" id="1WE-nm-pp2"/> <constraint firstItem="13" firstAttribute="leading" secondItem="9" secondAttribute="trailing" constant="8" symbolic="YES" id="1WE-nm-pp2"/>
<constraint firstAttribute="height" constant="100" id="AfY-wN-l34"/> <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 firstItem="40" firstAttribute="top" secondItem="13" secondAttribute="bottom" constant="10" symbolic="YES" id="YWX-K2-P8C"/> <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="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"/> <constraint firstItem="40" firstAttribute="leading" secondItem="36" secondAttribute="trailing" constant="8" symbolic="YES" id="tsy-wg-saI"/>
</constraints> </constraints>
</box> </box>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ehI-gq-lsb">
<rect key="frame" x="112" y="294" 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>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="lOo-NI-b07">
<rect key="frame" x="18" y="301" 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>
<box horizontalHuggingPriority="249" borderType="line" title="New Entries" translatesAutoresizingMaskIntoConstraints="NO" id="Xvt-tP-TbR"> <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"/> <rect key="frame" x="17" y="94" width="415" height="96"/>
<view key="contentView" id="g0i-00-sng"> <view key="contentView" id="g0i-00-sng">
<rect key="frame" x="3" y="3" width="409" height="78"/> <rect key="frame" x="3" y="3" width="409" height="78"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
@@ -124,7 +145,7 @@
</view> </view>
</box> </box>
<box horizontalHuggingPriority="249" title="Clipboard" translatesAutoresizingMaskIntoConstraints="NO" id="Kff-Xp-hAT"> <box horizontalHuggingPriority="249" title="Clipboard" translatesAutoresizingMaskIntoConstraints="NO" id="Kff-Xp-hAT">
<rect key="frame" x="17" y="94" width="415" height="74"/> <rect key="frame" x="17" y="16" width="415" height="74"/>
<view key="contentView" id="Ntf-zj-VZL"> <view key="contentView" id="Ntf-zj-VZL">
<rect key="frame" x="3" y="3" width="409" height="56"/> <rect key="frame" x="3" y="3" width="409" height="56"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
@@ -145,87 +166,25 @@
</constraints> </constraints>
</view> </view>
</box> </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> </subviews>
<constraints> <constraints>
<constraint firstItem="2" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="5"/> <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="trailing" secondItem="2" secondAttribute="trailing" constant="20" symbolic="YES" id="8"/>
<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 firstItem="Kff-Xp-hAT" firstAttribute="top" secondItem="Xvt-tP-TbR" secondAttribute="bottom" constant="8" symbolic="YES" id="3RL-tm-4wu"/>
<constraint firstAttribute="trailing" secondItem="8Z8-mS-hfg" secondAttribute="trailing" constant="20" symbolic="YES" id="5Hg-na-QAc"/> <constraint firstAttribute="bottom" secondItem="Kff-Xp-hAT" secondAttribute="bottom" constant="20" symbolic="YES" id="8k6-1d-wPj"/>
<constraint firstItem="Xvt-tP-TbR" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="BH4-4y-uma"/> <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="2" secondAttribute="bottom" constant="8" symbolic="YES" id="FVK-Uf-kLv"/> <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="ehI-gq-lsb" firstAttribute="leading" secondItem="lOo-NI-b07" secondAttribute="trailing" constant="8" symbolic="YES" id="KxB-TG-rH5"/>
<constraint firstItem="8Z8-mS-hfg" firstAttribute="top" secondItem="1" secondAttribute="top" constant="20" symbolic="YES" id="ScX-YY-rgS"/> <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 firstAttribute="trailing" secondItem="Kff-Xp-hAT" secondAttribute="trailing" constant="20" symbolic="YES" id="VLC-2A-Vdd"/> <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="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 firstAttribute="trailing" secondItem="Xvt-tP-TbR" secondAttribute="trailing" constant="20" id="anU-nC-YAw"/>
<constraint firstAttribute="trailing" secondItem="CLc-Vg-aWg" secondAttribute="trailing" constant="20" symbolic="YES" id="fXu-pq-O8Q"/> <constraint firstItem="lOo-NI-b07" firstAttribute="firstBaseline" secondItem="ehI-gq-lsb" secondAttribute="firstBaseline" id="gFK-Ce-Q3b"/>
<constraint firstItem="CLc-Vg-aWg" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="wyw-aC-Vkj"/> <constraint firstItem="lOo-NI-b07" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="kaP-lB-tDY"/>
<constraint firstItem="8Z8-mS-hfg" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="xdM-IO-cz3"/>
</constraints> </constraints>
<point key="canvasLocation" x="-906.5" y="-199.5"/> <point key="canvasLocation" x="-752" y="-257"/>
</customView> </customView>
</objects> </objects>
</document> </document>

View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies> <dependencies>
<deployment identifier="macosx"/> <deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19455"/> <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<objects> <objects>
@@ -16,16 +16,16 @@
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/> <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/> <customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customView misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="336"> <customView misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="336">
<rect key="frame" x="0.0" y="0.0" width="691" height="331"/> <rect key="frame" x="0.0" y="0.0" width="695" height="523"/>
<subviews> <subviews>
<scrollView focusRingType="none" borderType="none" autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="54"> <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="691" height="308"/> <rect key="frame" x="0.0" y="0.0" width="695" height="524"/>
<clipView key="contentView" id="4tt-2K-SPF"> <clipView key="contentView" id="4tt-2K-SPF">
<rect key="frame" x="0.0" y="0.0" width="691" height="308"/> <rect key="frame" x="0.0" y="0.0" width="695" height="524"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" alternatingRowBackgroundColors="YES" rowSizeStyle="automatic" headerView="676" viewBased="YES" id="55" customClass="MPTableView"> <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="691" height="285"/> <rect key="frame" x="0.0" y="0.0" width="695" height="501"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<size key="intercellSpacing" width="3" height="2"/> <size key="intercellSpacing" width="3" height="2"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
@@ -44,11 +44,11 @@
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/> <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
<prototypeCellViews> <prototypeCellViews>
<tableCellView identifier="StringCell" id="269"> <tableCellView identifier="StringCell" id="269">
<rect key="frame" x="11" y="1" width="110" height="17"/> <rect key="frame" x="1" y="1" width="105" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="270"> <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="270">
<rect key="frame" x="1" y="1" width="108" height="16"/> <rect key="frame" x="1" y="1" width="103" height="16"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="271"> <textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="271">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -80,11 +80,11 @@
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/> <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
<prototypeCellViews> <prototypeCellViews>
<tableCellView identifier="ImageCell" id="297"> <tableCellView identifier="ImageCell" id="297">
<rect key="frame" x="124" y="1" width="144" height="17"/> <rect key="frame" x="108.5" y="1" width="144" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<imageView translatesAutoresizingMaskIntoConstraints="NO" id="298"> <imageView translatesAutoresizingMaskIntoConstraints="NO" id="298">
<rect key="frame" x="3" y="-3" width="17" height="23"/> <rect key="frame" x="3" y="0.0" width="17" height="17"/>
<constraints> <constraints>
<constraint firstAttribute="width" constant="17" id="312"/> <constraint firstAttribute="width" constant="17" id="312"/>
<constraint firstAttribute="height" constant="17" id="T73-FC-KyN"/> <constraint firstAttribute="height" constant="17" id="T73-FC-KyN"/>
@@ -128,7 +128,7 @@
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/> <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
<prototypeCellViews> <prototypeCellViews>
<tableCellView identifier="PasswordCell" id="428"> <tableCellView identifier="PasswordCell" id="428">
<rect key="frame" x="271" y="1" width="118" height="17"/> <rect key="frame" x="255.5" y="1" width="118" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="429" customClass="NSSecureTextField"> <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="429" customClass="NSSecureTextField">
@@ -164,7 +164,7 @@
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/> <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
<prototypeCellViews> <prototypeCellViews>
<tableCellView id="421"> <tableCellView id="421">
<rect key="frame" x="393" y="1" width="113" height="17"/> <rect key="frame" x="377" y="1" width="113" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="422"> <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="422">
@@ -187,7 +187,7 @@
</tableCellView> </tableCellView>
</prototypeCellViews> </prototypeCellViews>
</tableColumn> </tableColumn>
<tableColumn width="165" minWidth="10" maxWidth="3.4028234663852886e+38" id="614"> <tableColumn width="200" minWidth="10" maxWidth="3.4028234663852886e+38" id="614">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left"> <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left">
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
@@ -199,14 +199,14 @@
</textFieldCell> </textFieldCell>
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/> <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
<prototypeCellViews> <prototypeCellViews>
<tableCellView identifier="MonospacedStringCell" id="616"> <tableCellView id="616">
<rect key="frame" x="509" y="1" width="169" height="17"/> <rect key="frame" x="493" y="1" width="200" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="617"> <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="617">
<rect key="frame" x="1" y="2" width="167" height="14"/> <rect key="frame" x="1" y="1" width="198" height="16"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="618"> <textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="618">
<font key="font" size="12" name="Menlo-Regular"/> <font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>
@@ -228,15 +228,15 @@
</subviews> </subviews>
</clipView> </clipView>
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="56"> <scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="56">
<rect key="frame" x="0.0" y="484" width="690" height="16"/> <rect key="frame" x="0.0" y="579" width="694" height="16"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
</scroller> </scroller>
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="58"> <scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="58">
<rect key="frame" x="224" y="17" width="15" height="102"/> <rect key="frame" x="224" y="17" width="15" height="102"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
</scroller> </scroller>
<tableHeaderView key="headerView" wantsLayer="YES" id="676"> <tableHeaderView key="headerView" id="676">
<rect key="frame" x="0.0" y="0.0" width="691" height="23"/> <rect key="frame" x="0.0" y="0.0" width="695" height="23"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
</tableHeaderView> </tableHeaderView>
</scrollView> </scrollView>
@@ -251,6 +251,6 @@
</customView> </customView>
</objects> </objects>
<resources> <resources>
<image name="NSActionTemplate" width="15" height="15"/> <image name="NSActionTemplate" width="14" height="14"/>
</resources> </resources>
</document> </document>

View File

@@ -27,13 +27,10 @@
#import "MPIconHelper.h" #import "MPIconHelper.h"
@interface NSImage (MPTintedImage) @interface NSImage (MPTintedImage)
@end @end
@implementation NSImage (MPTintedImage) @implementation NSImage (MPTintedImage)
- (NSImage *)imageWithTintColor:(NSColor *)tintColor { - (NSImage *)imageWithTintColor:(NSColor *)tintColor {
/* only tint templated images! */ /* only tint tempated images! */
if(NO == self.template) { if(NO == self.template) {
return self; return self;
} }
@@ -45,7 +42,6 @@
image.template = NO; image.template = NO;
return image; return image;
} }
@end @end
@implementation KPKNode (IconImage) @implementation KPKNode (IconImage)
@@ -67,7 +63,7 @@
if(self.timeInfo.isExpired) { if(self.timeInfo.isExpired) {
const BOOL isGroup = [self isKindOfClass:[KPKGroup class]]; const BOOL isGroup = [self isKindOfClass:[KPKGroup class]];
return [[MPIconHelper icon:(isGroup ? MPIconExpiredGroup : MPIconExpiredEntry)] imageWithTintColor:NSColor.systemRedColor]; return [MPIconHelper icon:(isGroup ? MPIconExpiredGroup : MPIconExpiredEntry)];
} }
if(self.icon) { if(self.icon) {
return self.icon.image; return self.icon.image;

View File

@@ -21,17 +21,41 @@
// //
#import "MPAddEntryContextMenuDelegate.h" #import "MPAddEntryContextMenuDelegate.h"
#import "MPContextMenuHelper.h" #import "MPDocument.h"
#import "MPDocumentWindowController.h"
#import "MPActionHelper.h"
#import "KPKNode+IconImage.h"
#import "KeePassKit/KeePassKit.h" #import "KeePassKit/KeePassKit.h"
#define EDIT_TEMPLATES_ITEM_TAG 10;
@implementation MPAddEntryContextMenuDelegate @implementation MPAddEntryContextMenuDelegate
- (void)menuNeedsUpdate:(NSMenu *)menu { - (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 removeAllItems];
NSArray<NSMenuItem *> *items = [MPContextMenuHelper contextMenuItemsWithCreateFromTemplateEntriesItems]; [menu addItemWithTitle:NSLocalizedString(@"EDIT_TEMPLATE_GROUP", "Menu item on the add entry context menu to edit template groups") action:[MPActionHelper actionOfType:MPActionEditTemplateGroup] keyEquivalent:@""];
for(NSMenuItem *item in items) {
[menu addItem:item]; [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:@""];
} }
} }

View File

@@ -1,17 +0,0 @@
//
// 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

View File

@@ -1,22 +0,0 @@
//
// 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

View File

@@ -1,22 +0,0 @@
<?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>

View File

@@ -36,9 +36,8 @@ APPKIT_EXTERN NSString *const MPDidChangeStoredKeyFilesSettings;
@property (strong) IBOutlet NSMenu *exportMenu; @property (strong) IBOutlet NSMenu *exportMenu;
@property (strong, readonly) MPEntryContextMenuDelegate *itemActionMenuDelegate; @property (strong, readonly) MPEntryContextMenuDelegate *itemActionMenuDelegate;
@property (readonly) BOOL isTerminating;
@property (nonatomic) BOOL isAllowedToStoreKeyFile; @property (nonatomic, assign) BOOL isAllowedToStoreKeyFile;
- (IBAction)checkForUpdates:(id)sender; - (IBAction)checkForUpdates:(id)sender;
- (IBAction)showPreferences:(id)sender; - (IBAction)showPreferences:(id)sender;

View File

@@ -92,7 +92,6 @@ typedef NS_OPTIONS(NSInteger, MPAppStartupState) {
_userNotificationCenterDelegate = [[MPUserNotificationCenterDelegate alloc] init]; _userNotificationCenterDelegate = [[MPUserNotificationCenterDelegate alloc] init];
self.itemActionMenuDelegate = [[MPEntryContextMenuDelegate alloc] init]; self.itemActionMenuDelegate = [[MPEntryContextMenuDelegate alloc] init];
_shouldOpenFile = NO; _shouldOpenFile = NO;
_isTerminating = NO;
self.startupState = MPAppStartupStateNone; self.startupState = MPAppStartupStateNone;
[NSNotificationCenter.defaultCenter addObserver:self [NSNotificationCenter.defaultCenter addObserver:self
@@ -186,7 +185,6 @@ typedef NS_OPTIONS(NSInteger, MPAppStartupState) {
} }
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender { - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender {
_isTerminating = YES;
[self hideWelcomeWindow]; [self hideWelcomeWindow];
if(MPTemporaryFileStorageCenter.defaultCenter.hasPendingStorages) { if(MPTemporaryFileStorageCenter.defaultCenter.hasPendingStorages) {
dispatch_async(dispatch_get_main_queue(), ^{ dispatch_async(dispatch_get_main_queue(), ^{

View File

@@ -40,4 +40,11 @@ FOUNDATION_EXPORT NSString *const MPPluginUTI;
FOUNDATION_EXPORT NSString *const MPBundleHelpURLKey; FOUNDATION_EXPORT NSString *const MPBundleHelpURLKey;
FOUNDATION_EXPORT NSString *const MPBundlePluginRepositoryURLKey; FOUNDATION_EXPORT NSString *const MPBundlePluginRepositoryURLKey;
FOUNDATION_EXPORT NSString *const MPPluginCompatibilityURLKey; FOUNDATION_EXPORT NSString *const MPPluginCompatibilityURLKey;
/**
Keychain Keys
*/
extern NSString *const TouchIdUnlockPublicKeyTag;
extern NSString *const TouchIdUnlockPrivateKeyTag;
#endif #endif

View File

@@ -31,3 +31,6 @@ NSString *const MPBundleHelpURLKey = @"MPHelpURL";
NSString *const MPBundlePluginRepositoryURLKey = @"MPPluginRepositoryURL"; NSString *const MPBundlePluginRepositoryURLKey = @"MPPluginRepositoryURL";
NSString *const MPPluginCompatibilityURLKey = @"MPPluginCompatibilityURLKey"; NSString *const MPPluginCompatibilityURLKey = @"MPPluginCompatibilityURLKey";
NSString *const TouchIdUnlockPublicKeyTag = @"com.hicknhacksoftware.macpass.publickey";
NSString *const TouchIdUnlockPrivateKeyTag = @"com.hicknhacksoftware.macpass.privatekey";

View File

@@ -52,12 +52,7 @@
self.cell = cell; self.cell = cell;
self.focusRingType = NSFocusRingTypeNone; self.focusRingType = NSFocusRingTypeNone;
if (@available(macOS 11.0, *)) { self.segmentStyle = NSSegmentStyleTexturedSquare;
self.segmentStyle = NSSegmentStyleSeparated;
}
else {
self.segmentStyle = NSSegmentStyleTexturedSquare;
}
self.segmentCount = MPContextButtonSegmentCount; self.segmentCount = MPContextButtonSegmentCount;
cell.trackingMode = NSSegmentSwitchTrackingMomentary; cell.trackingMode = NSSegmentSwitchTrackingMomentary;
[cell setWidth:31 forSegment:MPContextButtonSegmentButton]; [cell setWidth:31 forSegment:MPContextButtonSegmentButton];

View File

@@ -37,11 +37,11 @@ typedef NS_OPTIONS(NSUInteger, MPContextMenuItemsFlags) {
}; };
@interface MPContextMenuHelper : NSTableCellView @interface MPContextMenuHelper : NSTableCellView
/* /*
Creates an array of menuitems to be used as a menu 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 Automatically sets up actions, so you need to take care of the responder chain
*/ */
+ (NSArray <NSMenuItem *> *)contextMenuItemsWithItems:(MPContextMenuItemsFlags)flags; + (NSArray <NSMenuItem *> *)contextMenuItemsWithItems:(MPContextMenuItemsFlags)flags;
+ (NSArray <NSMenuItem *> *)contextMenuItemsWithCreateFromTemplateEntriesItems;
@end @end

View File

@@ -22,13 +22,9 @@
#import "MPContextMenuHelper.h" #import "MPContextMenuHelper.h"
#import "MPActionHelper.h" #import "MPActionHelper.h"
#import "MPDocument.h"
#import "MPFlagsHelper.h" #import "MPFlagsHelper.h"
#import "KPKNode+IconImage.h"
#import <KeePassKit/KeePassKit.h>
static void MPContextmenuHelperBeginSection(NSMutableArray *items) { static void MPContextmenuHelperBeginSection(NSMutableArray *items) {
if(items.count > 0) { if(items.count > 0) {
[items addObject:[NSMenuItem separatorItem]]; [items addObject:[NSMenuItem separatorItem]];
@@ -37,38 +33,6 @@ static void MPContextmenuHelperBeginSection(NSMutableArray *items) {
@implementation MPContextMenuHelper @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 { + (NSArray<NSMenuItem *> *)contextMenuItemsWithItems:(MPContextMenuItemsFlags)flags {
BOOL const insertCreate = MPIsFlagSetInOptions(MPContextMenuCreate, flags); BOOL const insertCreate = MPIsFlagSetInOptions(MPContextMenuCreate, flags);
@@ -80,7 +44,7 @@ static void MPContextmenuHelperBeginSection(NSMutableArray *items) {
BOOL const insertHistory = MPIsFlagSetInOptions(MPContextMenuHistory, flags); BOOL const insertHistory = MPIsFlagSetInOptions(MPContextMenuHistory, flags);
BOOL const insertShowGroupInOutline = MPIsFlagSetInOptions(MPContextMenuShowGroupInOutline, flags); BOOL const insertShowGroupInOutline = MPIsFlagSetInOptions(MPContextMenuShowGroupInOutline, flags);
NSMutableArray *items = [NSMutableArray arrayWithCapacity:15]; NSMutableArray *items = [NSMutableArray arrayWithCapacity:10];
if(insertCreate) { if(insertCreate) {
NSMenuItem *newGroup = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"NEW_GROUP", @"Menu item to create a new group") NSMenuItem *newGroup = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"NEW_GROUP", @"Menu item to create a new group")
@@ -90,20 +54,7 @@ static void MPContextmenuHelperBeginSection(NSMutableArray *items) {
action:[MPActionHelper actionOfType:MPActionAddEntry] action:[MPActionHelper actionOfType:MPActionAddEntry]
keyEquivalent:@"n"]; keyEquivalent:@"n"];
[items addObjectsFromArray:@[ newGroup, newEntry ]]; [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) { if(insertDuplicate) {
MPContextmenuHelperBeginSection(items); MPContextmenuHelperBeginSection(items);

View File

@@ -51,16 +51,11 @@ typedef NS_ENUM(NSUInteger, MPDatabaseSettingsTab) {
/* AES */ /* AES */
@property (weak) IBOutlet NSTextField *aesEncryptionRoundsTextField; @property (weak) IBOutlet NSTextField *aesEncryptionRoundsTextField;
/* Argon2d */ /* Argon2 */
@property (weak) IBOutlet NSTextField *argon2dThreadsTextField; @property (weak) IBOutlet NSTextField *argon2ThreadsTextField;
@property (weak) IBOutlet NSTextField *argon2dIterationsTextField; @property (weak) IBOutlet NSTextField *argon2IterationsTextField;
@property (weak) IBOutlet NSTextField *argon2dMemoryTextField; @property (weak) IBOutlet NSTextField *argon2MemoryTextField;
@property (weak) IBOutlet NSStepper *argon2dMemoryStepper; @property (weak) IBOutlet NSStepper *argon2MemoryStepper;
/* Argon2id */
@property (weak) IBOutlet NSTextField *argon2idThreadsTextField;
@property (weak) IBOutlet NSTextField *argon2idIterationsTextField;
@property (weak) IBOutlet NSTextField *argon2idMemoryTextField;
@property (weak) IBOutlet NSStepper *argon2idMemoryStepper;
/* Advanced Tab*/ /* Advanced Tab*/
@property (weak) IBOutlet NSButton *enableHistoryCheckButton; @property (weak) IBOutlet NSButton *enableHistoryCheckButton;

View File

@@ -39,8 +39,7 @@
NSString *_missingFeature; NSString *_missingFeature;
} }
@property (assign) NSInteger argon2dMemory; @property (assign) NSInteger argon2Memory;
@property (assign) NSInteger argon2idMemory;
@property (assign) BOOL enableHistory; @property (assign) BOOL enableHistory;
@property (assign) NSInteger maxiumHistoryItems; @property (assign) NSInteger maxiumHistoryItems;
@@ -108,6 +107,7 @@
/* General */ /* General */
KPKMetaData *metaData = ((MPDocument *)self.document).tree.metaData; KPKMetaData *metaData = ((MPDocument *)self.document).tree.metaData;
/* TODO move settingsChanged updates to KeePassKit as it's the models responsibility */ /* TODO move settingsChanged updates to KeePassKit as it's the models responsibility */
metaData.settingsChanged = NSDate.date;
metaData.databaseDescription = self.databaseDescriptionTextView.string; metaData.databaseDescription = self.databaseDescriptionTextView.string;
metaData.databaseName = self.databaseNameTextField.stringValue; metaData.databaseName = self.databaseNameTextField.stringValue;
@@ -164,28 +164,21 @@
/* Security */ /* Security */
metaData.cipherUUID = self.cipherPopupButton.selectedItem.representedObject; metaData.cipherUUID = self.cipherPopupButton.selectedItem.representedObject;
NSUUID *selectedKdfUUID = self.keyDerivationSettingsTabView.selectedTabViewItem.identifier;
KPKAESKeyDerivation *aesKdf = [[KPKAESKeyDerivation alloc] initWithParameters:[KPKAESKeyDerivation defaultParameters]]; KPKAESKeyDerivation *aesKdf = [[KPKAESKeyDerivation alloc] initWithParameters:[KPKAESKeyDerivation defaultParameters]];
KPKArgon2DKeyDerivation *argon2dKdf = [[KPKArgon2DKeyDerivation alloc] initWithParameters:[KPKArgon2DKeyDerivation defaultParameters]]; KPKArgon2DKeyDerivation *argon2Kdf = [[KPKArgon2DKeyDerivation alloc] initWithParameters:[KPKArgon2DKeyDerivation defaultParameters]];
KPKArgon2IDKeyDerivation *argon2idKdf = [[KPKArgon2IDKeyDerivation alloc] initWithParameters:[KPKArgon2IDKeyDerivation defaultParameters]]; // FIXME: add Argon2id support!
NSUUID *selectedKdfUUID = self.keyDerivationSettingsTabView.selectedTabViewItem.identifier;
if([selectedKdfUUID isEqual:aesKdf.uuid]) { if([selectedKdfUUID isEqual:aesKdf.uuid]) {
aesKdf.rounds = self.aesEncryptionRoundsTextField.integerValue; aesKdf.rounds = self.aesEncryptionRoundsTextField.integerValue;
metaData.keyDerivationParameters = aesKdf.parameters; metaData.keyDerivationParameters = aesKdf.parameters;
} }
else if([selectedKdfUUID isEqual:argon2dKdf.uuid]) { else if([selectedKdfUUID isEqual:argon2Kdf.uuid]) {
argon2Kdf.iterations = self.argon2IterationsTextField.integerValue;
argon2dKdf.iterations = self.argon2dIterationsTextField.integerValue; argon2Kdf.memory = self.argon2Memory;
argon2dKdf.memory = self.argon2dMemory; argon2Kdf.threads = self.argon2ThreadsTextField.intValue;
argon2dKdf.threads = self.argon2dThreadsTextField.intValue; metaData.keyDerivationParameters = argon2Kdf.parameters;
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 */ /* Changes to metadata aren't backed by undomanager, thus we need to manually set the document dirty */
@@ -197,21 +190,12 @@
[self dismissSheet:0]; [self dismissSheet:0];
} }
- (IBAction)benchmarkParametersForDelay:(id)sender { - (IBAction)benchmarkRounds:(id)sender {
NSUUID *selectedKdfUUID = self.keyDerivationSettingsTabView.selectedTabViewItem.identifier; self.createKeyDerivationParametersButton.enabled = NO;
if([selectedKdfUUID isEqual:[KPKAESKeyDerivation uuid]]) { [KPKAESKeyDerivation parametersForDelay:1 completionHandler:^(NSDictionary * _Nonnull options) {
self.createKeyDerivationParametersButton.enabled = NO; self.aesEncryptionRoundsTextField.integerValue = [options[KPKAESRoundsOption] unsignedInteger64Value];
[KPKAESKeyDerivation parametersForDelay:1 completionHandler:^(NSDictionary * _Nonnull options) { self.createKeyDerivationParametersButton.enabled = YES;
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 { - (void)updateView {
@@ -291,57 +275,42 @@
[self.keyDerivationPopupButton selectItemAtIndex:kdfIndex]; [self.keyDerivationPopupButton selectItemAtIndex:kdfIndex];
[self.keyDerivationSettingsTabView selectTabViewItemWithIdentifier:keyDerivation.uuid]; [self.keyDerivationSettingsTabView selectTabViewItemWithIdentifier:keyDerivation.uuid];
/* 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]) { if([keyDerivation isMemberOfClass:KPKAESKeyDerivation.class]) {
/* set to database values */ /* set to database values */
KPKAESKeyDerivation *aesKdf = (KPKAESKeyDerivation *)keyDerivation; KPKAESKeyDerivation *aesKdf = (KPKAESKeyDerivation *)keyDerivation;
self.aesEncryptionRoundsTextField.integerValue = aesKdf.rounds; self.aesEncryptionRoundsTextField.integerValue = aesKdf.rounds;
self.createKeyDerivationParametersButton.enabled = YES; self.createKeyDerivationParametersButton.enabled = YES;
/* fill defaults for Argon2 */
KPKArgon2DKeyDerivation *argon2Kdf = [[KPKArgon2DKeyDerivation alloc] initWithParameters:[KPKArgon2DKeyDerivation defaultParameters]];
self.argon2IterationsTextField.integerValue = argon2Kdf.iterations;
self.argon2Memory = argon2Kdf.memory;
self.argon2ThreadsTextField.integerValue = argon2Kdf.threads;
} }
else if([keyDerivation isMemberOfClass:KPKArgon2DKeyDerivation.class]) { else if([keyDerivation isMemberOfClass:KPKArgon2DKeyDerivation.class]) {
/* set to database value */ /* set to database value */
KPKArgon2DKeyDerivation *argon2dKdf = (KPKArgon2DKeyDerivation *)keyDerivation; KPKArgon2DKeyDerivation *argon2Kdf = (KPKArgon2DKeyDerivation *)keyDerivation;
self.argon2dMemory = argon2dKdf.memory; self.argon2Memory = argon2Kdf.memory;
self.argon2dThreadsTextField.integerValue = argon2dKdf.threads; self.argon2ThreadsTextField.integerValue = argon2Kdf.threads;
self.argon2dIterationsTextField.integerValue = argon2dKdf.iterations; 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:KPKArgon2IDKeyDerivation.class]) { else if([keyDerivation isMemberOfClass:KPKArgon2IDKeyDerivation.class]) {
/* set to database value */ // TODO: implement setup!
KPKArgon2IDKeyDerivation *argon2idKdf = (KPKArgon2IDKeyDerivation *)keyDerivation;
self.argon2idMemory = argon2idKdf.memory;
self.argon2idThreadsTextField.integerValue = argon2idKdf.threads;
self.argon2idIterationsTextField.integerValue = argon2idKdf.iterations;
} }
else { else {
NSAssert(NO, @"Unkown key derivation"); NSAssert(NO, @"Unkown key derivation");
} }
self.argon2dMemoryStepper.minValue = 8*1024; // 8KB minimum self.argon2MemoryStepper.minValue = 8*1024; // 8KB minimum
self.argon2dMemoryStepper.maxValue = NSIntegerMax; self.argon2MemoryStepper.maxValue = NSIntegerMax;
self.argon2dMemoryStepper.increment = 1024*1024; // 1 megabytes steps self.argon2MemoryStepper.increment = 1024*1024; // 1 megabytes steps
[self.argon2dMemoryTextField bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(argon2dMemory)) options:nil]; [self.argon2MemoryTextField bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(argon2Memory)) options:nil];
[self.argon2dMemoryStepper bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(argon2dMemory)) options:nil]; [self.argon2MemoryStepper bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(argon2Memory)) 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]; NSUInteger cipherIndex = [self.cipherPopupButton.menu indexOfItemWithRepresentedObject:metaData.cipherUUID];
[self.cipherPopupButton selectItemAtIndex:cipherIndex]; [self.cipherPopupButton selectItemAtIndex:cipherIndex];

View File

@@ -42,20 +42,17 @@ NSString *const kMPDocumentSearchResultsKey = @"kMPDocumentSearchResul
- (void)enterSearchWithContext:(MPEntrySearchContext *)context { - (void)enterSearchWithContext:(MPEntrySearchContext *)context {
/* the search context is loaded via defaults */ /* the search context is loaded via defaults */
self.searchContext = context; self.searchContext = context;
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(updateSearch:) name:KPKTreeDidAddEntryNotification object:self.tree]; [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(updateSearch:) name:NSUndoManagerDidRedoChangeNotification object:self.undoManager];
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(updateSearch:) name:KPKTreeDidAddGroupNotification object:self.tree]; [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(updateSearch:) name:NSUndoManagerDidUndoChangeNotification object:self.undoManager];
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(updateSearch:) name:KPKTreeDidRemoveEntryNotification object:self.tree]; /* Do not do this since it seems to break the undo/redo grouping completly!
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(updateSearch:) name:KPKTreeDidRemoveGroupNotification object:self.tree]; [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(updateSearch:) name:NSUndoManagerDidCloseUndoGroupNotification object:self.undoManager];
*/
[NSNotificationCenter.defaultCenter postNotificationName:MPDocumentDidEnterSearchNotification object:self]; [NSNotificationCenter.defaultCenter postNotificationName:MPDocumentDidEnterSearchNotification object:self];
[self updateSearch:self]; [self updateSearch:self];
/* clear selection */
self.selectedGroups = nil;
self.selectedEntries = nil;
} }
#pragma mark Actions #pragma mark Actions
- (IBAction)performCustomSearch:(id)sender { - (IBAction)perfromCustomSearch:(id)sender {
[self enterSearchWithContext:[MPEntrySearchContext userContext]]; [self enterSearchWithContext:[MPEntrySearchContext userContext]];
} }
@@ -77,12 +74,11 @@ NSString *const kMPDocumentSearchResultsKey = @"kMPDocumentSearchResul
} }
- (void)exitSearch:(id)sender { - (void)exitSearch:(id)sender {
[NSNotificationCenter.defaultCenter removeObserver:self name:NSUndoManagerDidUndoChangeNotification object:self.undoManager];
[NSNotificationCenter.defaultCenter removeObserver:self name:KPKTreeDidAddEntryNotification object:self.tree]; [NSNotificationCenter.defaultCenter removeObserver:self name:NSUndoManagerDidRedoChangeNotification object:self.undoManager];
[NSNotificationCenter.defaultCenter removeObserver:self name:KPKTreeDidAddGroupNotification object:self.tree]; /* No need to do this since we did not register in the first place see [MPDocument enterSearchWithContext:]
[NSNotificationCenter.defaultCenter removeObserver:self name:KPKTreeDidRemoveEntryNotification object:self.tree]; [NSNotificationCenter.defaultCenter removeObserver:self name:NSUndoManagerDidCloseUndoGroupNotification object:self.undoManager];
[NSNotificationCenter.defaultCenter removeObserver:self name:KPKTreeDidRemoveGroupNotification object:self.tree]; */
self.searchContext = nil; self.searchContext = nil;
[NSNotificationCenter.defaultCenter postNotificationName:MPDocumentDidExitSearchNotification object:self]; [NSNotificationCenter.defaultCenter postNotificationName:MPDocumentDidExitSearchNotification object:self];
} }

View File

@@ -108,13 +108,13 @@ FOUNDATION_EXPORT NSString *const MPDocumentGroupKey;
/** /**
* Decrypts the database with the given password and keyfile * Decrypts the database with the given password and keyfile
* *
* @param password The password to unlock the db with, can be nil. This is not the same as an empty string @"" * @param compositeKey The CompositeKey to unlock the db.
* @param keyFileURL URL for the keyfile to use, can be nil * @param keyFileURL URL for the keyfile that was used to create the compositeKey. Can be nil.
* @param error Pointer to an NSError pointer of error reporting. * @param error Pointer to an NSError pointer of error reporting.
* *
* @return YES if the document was unlocked sucessfully, NO otherwise. Consult the error object for details * @return YES if the document was unlocked sucessfully, NO otherwise. Consult the error object for details
*/ */
- (BOOL)unlockWithPassword:(NSString *)password keyFileURL:(NSURL *)keyFileURL error:(NSError *__autoreleasing*)error; - (BOOL)unlockWithPassword:(KPKCompositeKey *)compositeKey keyFileURL:(NSURL *)keyFileURL error:(NSError *__autoreleasing*)error;
/** /**
* Changes the password of the database. Some sanity checks are applied and the change is aborted if the new values aren't valid * Changes the password of the database. Some sanity checks are applied and the change is aborted if the new values aren't valid
* *
@@ -259,7 +259,7 @@ FOUNDATION_EXTERN NSString *const MPDocumentDidChangeSearchResults;
FOUNDATION_EXTERN NSString *const kMPDocumentSearchResultsKey; FOUNDATION_EXTERN NSString *const kMPDocumentSearchResultsKey;
@interface MPDocument (Search) @interface MPDocument (Search)
- (IBAction)performCustomSearch:(id)sender; - (IBAction)perfromCustomSearch:(id)sender;
- (void)enterSearchWithContext:(MPEntrySearchContext *)context; - (void)enterSearchWithContext:(MPEntrySearchContext *)context;
/* Should be called by the NSSearchTextField to update the search string */ /* Should be called by the NSSearchTextField to update the search string */

View File

@@ -147,11 +147,6 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
[self addWindowController:windowController]; [self addWindowController:windowController];
} }
- (void)canCloseDocumentWithDelegate:(id)delegate shouldCloseSelector:(nullable SEL)shouldCloseSelector contextInfo:(nullable void *)contextInfo {
[super canCloseDocumentWithDelegate:delegate shouldCloseSelector:shouldCloseSelector contextInfo:contextInfo];
}
- (BOOL)canAsynchronouslyWriteToURL:(NSURL *)url ofType:(NSString *)typeName forSaveOperation:(NSSaveOperationType)saveOperation { - (BOOL)canAsynchronouslyWriteToURL:(NSURL *)url ofType:(NSString *)typeName forSaveOperation:(NSSaveOperationType)saveOperation {
return YES; return YES;
} }
@@ -175,7 +170,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
NSLocalizedRecoverySuggestionErrorKey : NSLocalizedString(@"WARNING_ON_SAVE_NO_PASSWORD_OR_KEY_SET_SUGGESTION", ""), NSLocalizedRecoverySuggestionErrorKey : NSLocalizedString(@"WARNING_ON_SAVE_NO_PASSWORD_OR_KEY_SET_SUGGESTION", ""),
NSLocalizedRecoveryOptionsErrorKey : @[ NSLocalizedString(@"CHANGE_PASSWORD_WITH_DOTS", ""), NSLocalizedString(@"CANCEL", "") ], NSLocalizedRecoveryOptionsErrorKey : @[ NSLocalizedString(@"CHANGE_PASSWORD_WITH_DOTS", ""), NSLocalizedString(@"CANCEL", "") ],
NSRecoveryAttempterErrorKey : recovery NSRecoveryAttempterErrorKey : recovery
}; };
if(outError != NULL) { if(outError != NULL) {
*outError = [NSError errorWithDomain:MPDefaultErrorDomain code:MPErrorNoPasswordOrKeyFile userInfo:userInfo]; *outError = [NSError errorWithDomain:MPDefaultErrorDomain code:MPErrorNoPasswordOrKeyFile userInfo:userInfo];
} }
@@ -245,6 +240,13 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
- (void)close { - (void)close {
[self _cleanupLock]; [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; self.tree = nil;
[super close]; [super close];
} }
@@ -427,18 +429,14 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
MPPasswordInputController *passwordInputController = [[MPPasswordInputController alloc] init]; MPPasswordInputController *passwordInputController = [[MPPasswordInputController alloc] init];
[passwordInputController requestPasswordWithMessage:NSLocalizedString(@"EXTERN_CHANGE_OF_MASTERKEY", @"The master key was changed by an external program!") [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!") 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) { completionHandler:^BOOL(KPKCompositeKey *compositeKey, NSURL* keyURL, BOOL didCancel, NSError *__autoreleasing *error) {
[self.windowForSheet endSheet:sheet returnCode:(didCancel ? NSModalResponseCancel : NSModalResponseOK)]; [self.windowForSheet endSheet:sheet returnCode:(didCancel ? NSModalResponseCancel : NSModalResponseOK)];
if(!didCancel) { if(!didCancel) {
NSData *keyFileData = keyURL ? [NSData dataWithContentsOfURL:keyURL] : nil; [self _mergeWithContentsFromURL:url key:compositeKey options:options];
KPKCompositeKey *compositeKey = [[KPKCompositeKey alloc] init]; }
[compositeKey addKey:[KPKKey keyWithPassword:password]]; // just return yes regardless since we will display the sheet again if needed!
[compositeKey addKey:[KPKKey keyWithKeyFileData:keyFileData]]; return YES;
[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; sheet.contentViewController = passwordInputController;
[self.windowForSheet beginSheet:sheet completionHandler:^(NSModalResponse returnCode) { /* nothing to do, rest is done in other handler! */ }]; [self.windowForSheet beginSheet:sheet completionHandler:^(NSModalResponse returnCode) { /* nothing to do, rest is done in other handler! */ }];
} }
@@ -499,13 +497,9 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
} }
- (BOOL)unlockWithPassword:(NSString *)password keyFileURL:(NSURL *)keyFileURL error:(NSError *__autoreleasing*)error { - (BOOL)unlockWithPassword:(KPKCompositeKey *)compositeKey keyFileURL:(NSURL *)keyFileURL error:(NSError *__autoreleasing*)error{
// TODO: Make this API asynchronous // TODO: Make this API asynchronous
NSData *keyFileData = keyFileURL ? [NSData dataWithContentsOfURL:keyFileURL] : nil; self.compositeKey = compositeKey;
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]; self.tree = [[KPKTree alloc] initWithData:self.encryptedData key:self.compositeKey error:error];
BOOL isUnlocked = (nil != self.tree); BOOL isUnlocked = (nil != self.tree);
@@ -679,9 +673,8 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
KPKEntry *newEntry = [self.tree createEntry:parent]; KPKEntry *newEntry = [self.tree createEntry:parent];
/* setting properties on entries is undoable, but we do not want to record this so disable on creation */ /* setting properties on entries is undoable, but we do not want to record this so disable on creation */
BOOL wasUndoEnabeld = self.undoManager.isUndoRegistrationEnabled;
KPK_SCOPED_DISABLE_UNDO_BEGIN(self.undoManager) [self.undoManager disableUndoRegistration];
newEntry.title = NSLocalizedString(@"DEFAULT_ENTRY_TITLE", @"Title for a newly created entry"); newEntry.title = NSLocalizedString(@"DEFAULT_ENTRY_TITLE", @"Title for a newly created entry");
if([self.tree.metaData.defaultUserName length] > 0) { if([self.tree.metaData.defaultUserName length] > 0) {
newEntry.username = self.tree.metaData.defaultUserName; newEntry.username = self.tree.metaData.defaultUserName;
@@ -695,9 +688,10 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
newEntry.password = defaultPassword; newEntry.password = defaultPassword;
} }
} }
/* re-enable undo/redo if we did turn it off */
KPK_SCOPED_DISABLE_UNDO_END if(wasUndoEnabeld) {
[self.undoManager enableUndoRegistration];
}
[newEntry addToGroup:parent]; [newEntry addToGroup:parent];
[newEntry.undoManager setActionName:NSLocalizedString(@"NEW_ENTRY", "Action name for a newly created entry")]; [newEntry.undoManager setActionName:NSLocalizedString(@"NEW_ENTRY", "Action name for a newly created entry")];
[NSNotificationCenter.defaultCenter postNotificationName:MPDocumentDidAddEntryNotification [NSNotificationCenter.defaultCenter postNotificationName:MPDocumentDidAddEntryNotification
@@ -715,13 +709,14 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
} }
KPKGroup *newGroup = [self.tree createGroup:parent]; KPKGroup *newGroup = [self.tree createGroup:parent];
/* setting properties on entries is undoable, but we do not want to record this so disable on creation */ /* setting properties on entries is undoable, but we do not want to record this so disable on creation */
KPK_SCOPED_DISABLE_UNDO_BEGIN(self.undoManager); BOOL wasUndoEnabeld = self.undoManager.isUndoRegistrationEnabled;
[self.undoManager disableUndoRegistration];
newGroup.title = NSLocalizedString(@"DEFAULT_GROUP_NAME", @"Title for a newly created group"); newGroup.title = NSLocalizedString(@"DEFAULT_GROUP_NAME", @"Title for a newly created group");
newGroup.iconId = MPIconFolder; newGroup.iconId = MPIconFolder;
/* re-enable undo/redo if we did turn it off */
KPK_SCOPED_DISABLE_UNDO_END; if(wasUndoEnabeld) {
[self.undoManager enableUndoRegistration];
}
[newGroup addToGroup:parent]; [newGroup addToGroup:parent];
[newGroup.undoManager setActionName:NSLocalizedString(@"NEW_GROUP", "Action name for a newly created group")]; [newGroup.undoManager setActionName:NSLocalizedString(@"NEW_GROUP", "Action name for a newly created group")];
[NSNotificationCenter.defaultCenter postNotificationName:MPDocumentDidAddGroupNotification [NSNotificationCenter.defaultCenter postNotificationName:MPDocumentDidAddGroupNotification
@@ -849,16 +844,16 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
} }
- (void)duplicateEntryWithOptions:(KPKCopyOptions)options { - (void)duplicateEntryWithOptions:(KPKCopyOptions)options {
KPKEntry *lastDuplicate; KPKEntry *duplicate;
for(KPKEntry *entry in self.selectedEntries) { for(KPKEntry *entry in self.selectedEntries) {
lastDuplicate = [entry copyWithTitle:nil options:options]; duplicate = [entry copyWithTitle:nil options:options];
[lastDuplicate addToGroup:entry.parent]; [duplicate addToGroup:entry.parent];
} }
[self.undoManager setActionName:[NSString stringWithFormat:NSLocalizedString(@"DUPLICATE_ENTRIES_ACTION_NAME", @"Action name for duplicating entries"), self.selectedEntries.count]]; [self.undoManager setActionName:[NSString stringWithFormat:NSLocalizedString(@"DUPLICATE_ENTRIES_ACTION_NAME", @"Action name for duplicating entries"), self.selectedEntries.count]];
if(lastDuplicate) { if(duplicate) {
[NSNotificationCenter.defaultCenter postNotificationName:MPDocumentDidAddEntryNotification [NSNotificationCenter.defaultCenter postNotificationName:MPDocumentDidAddEntryNotification
object:self object:self
userInfo:@{ MPDocumentEntryKey: lastDuplicate }]; userInfo:@{ MPDocumentEntryKey: duplicate }];
} }
} }
@@ -895,10 +890,6 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
KPKGroup *targetGroup = targetGroups.count == 1 ? targetGroups.firstObject : nil; KPKGroup *targetGroup = targetGroups.count == 1 ? targetGroups.firstObject : nil;
if(self.encrypted || self.isReadOnly) { if(self.encrypted || self.isReadOnly) {
if(anItem.action == @selector(revertDocumentToSaved:) ||
anItem.action == @selector(browseDocumentVersions:)) {
return YES;
}
return NO; return NO;
} }

View File

@@ -31,8 +31,6 @@
#import "KeePassKit/KeePassKit.h" #import "KeePassKit/KeePassKit.h"
#import "KPKFormat+MPUTIDetection.h" #import "KPKFormat+MPUTIDetection.h"
#import "NSApplication+MPAdditions.h"
@interface MPDocumentController () @interface MPDocumentController ()
@property (strong) IBOutlet NSView *accessoryView; @property (strong) IBOutlet NSView *accessoryView;
@@ -45,14 +43,6 @@
@implementation MPDocumentController @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 { - (void)beginOpenPanel:(NSOpenPanel *)openPanel forTypes:(NSArray *)inTypes completionHandler:(void (^)(NSInteger))completionHandler {
self.openPanel = openPanel; self.openPanel = openPanel;
if(!self.accessoryView) { if(!self.accessoryView) {
@@ -93,16 +83,6 @@
[super addDocument:document]; [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 { - (BOOL)reopenLastDocument {
if(self.documents.count > 0) { if(self.documents.count > 0) {
return YES; // The document is already open return YES; // The document is already open
@@ -113,12 +93,7 @@
} }
else { else {
NSString *lastPath = [NSUserDefaults.standardUserDefaults stringForKey:kMPSettingsKeyLastDatabasePath]; 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; BOOL isFileURL = documentUrl.fileURL;
if(isFileURL) { if(isFileURL) {

View File

@@ -106,24 +106,4 @@
[NSUserDefaults.standardUserDefaults setBool:!inspector.collapsed forKey:kMPSettingsKeyShowInspector]; [NSUserDefaults.standardUserDefaults setBool:!inspector.collapsed forKey:kMPSettingsKeyShowInspector];
} }
- (id)supplementalTargetForAction:(SEL)action sender:(id)sender {
// NSLog(@"Looking for target for action:%@", NSStringFromSelector(action));
for(NSViewController *childViewController in self.childViewControllers) {
if([childViewController respondsToSelector:action]) {
// NSLog(@"Found target:%@ for action:%@", childViewController, NSStringFromSelector(action));
return childViewController;
}
else {
id target = [childViewController supplementalTargetForAction:action sender:sender];
if(!target) {
// NSLog(@"No target for action:%@", NSStringFromSelector(action));
continue;
}
// NSLog(@"Found supplemental target:%@ for action:%@", target, NSStringFromSelector(action));
return target;
}
}
return [super supplementalTargetForAction:action sender:sender];
}
@end @end

View File

@@ -64,10 +64,19 @@
- (IBAction)delete:(id)sender; - (IBAction)delete:(id)sender;
- (IBAction)duplicateEntryWithOptions:(id)sender; - (IBAction)duplicateEntryWithOptions:(id)sender;
- (IBAction)pickExpiryDate:(id)sender;
- (IBAction)performAutotypeForEntry:(id)sender; - (IBAction)performAutotypeForEntry:(id)sender;
- (IBAction)showGroupInOutline:(id)sender; - (IBAction)showGroupInOutline:(id)sender;
/* actions relayed to MPEntryViewController */
- (IBAction)copyUsername:(id)sender;
- (IBAction)copyPassword:(id)sender;
- (IBAction)copyCustomAttribute:(id)sender;
- (IBAction)copyAsReference:(id)sender;
- (IBAction)copyURL:(id)sender;
- (IBAction)openURL:(id)sender;
#pragma mark Helper #pragma mark Helper
- (IBAction)fixAutotype:(id)sender; - (IBAction)fixAutotype:(id)sender;

View File

@@ -100,17 +100,9 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
[super windowDidLoad]; [super windowDidLoad];
self.window.delegate = self.documentWindowDelegate; self.window.delegate = self.documentWindowDelegate;
//self.window.styleMask |= NSWindowStyleMaskFullSizeContentView;
if (@available(macOS 11.0, *)) { if (@available(macOS 11.0, *)) {
/* let the user decide how to dipsplay the toolbar */ self.window.toolbarStyle = NSWindowToolbarStyleExpanded;
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]]; [self.window registerForDraggedTypes:@[NSURLPboardType]];
@@ -164,8 +156,8 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
/* enqueue async into main to catch some cases, where the UI would not set the responder correctly */ /* enqueue async into main to catch some cases, where the UI would not set the responder correctly */
MPDocumentWindowController * __weak welf = self; MPDocumentWindowController * __weak welf = self;
dispatch_async(dispatch_get_main_queue(), ^{ dispatch_async(dispatch_get_main_queue(), ^{
NSResponder *responder = ((MPViewController *)contentViewController).reconmendedFirstResponder; NSResponder *responder = ((MPViewController *)contentViewController).reconmendedFirstResponder;
[welf.window makeFirstResponder:responder]; [welf.window makeFirstResponder:responder];
}); });
} }
} }
@@ -189,10 +181,6 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
- (void)_didUnlockDatabase:(NSNotification *)notification { - (void)_didUnlockDatabase:(NSNotification *)notification {
[self showEntries]; [self showEntries];
BOOL focusSearchAfterUnlock = [NSUserDefaults.standardUserDefaults boolForKey:kMPSettingsKeyFocusSearchAfterUnlock];
if(focusSearchAfterUnlock) {
[self.document performCustomSearch:self];
}
/* Show password reminders */ /* Show password reminders */
[self _presentPasswordIntervalAlerts]; [self _presentPasswordIntervalAlerts];
} }
@@ -337,12 +325,11 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
self.passwordInputController = [[MPPasswordInputController alloc] init]; self.passwordInputController = [[MPPasswordInputController alloc] init];
} }
self.contentViewController = self.passwordInputController; self.contentViewController = self.passwordInputController;
[self.passwordInputController requestPasswordWithMessage:message cancelLabel:nil completionHandler:^BOOL(NSString *password, NSURL *keyURL, BOOL didCancel, NSError *__autoreleasing *error) { [self.passwordInputController requestPasswordWithMessage:message cancelLabel:nil completionHandler:^BOOL(KPKCompositeKey* compositeKey, NSURL* keyURL, BOOL didCancel, NSError *__autoreleasing *error) {
if(didCancel) { if(didCancel) {
return NO; return NO;
} }
return [((MPDocument *)self.document) unlockWithPassword:password keyFileURL:keyURL error:error]; return [((MPDocument *)self.document) unlockWithPassword:compositeKey keyFileURL:keyURL error:error ];
}]; }];
} }
@@ -441,6 +428,16 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
}]; }];
} }
- (void)pickExpiryDate:(id)sender {
// FIXME: use propert responder chain
[self.splitViewController.inspectorViewController pickExpiryDate:sender];
}
- (void)showPluginData:(id)sender {
// FIXME: use propert responder chain
[self.splitViewController.inspectorViewController showPluginData:sender];
}
- (void)toggleInspector:(id)sender { - (void)toggleInspector:(id)sender {
[self.splitViewController toggleInspector:sender]; [self.splitViewController toggleInspector:sender];
} }
@@ -477,6 +474,7 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
- (void)showEntries { - (void)showEntries {
self.contentViewController = self.splitViewController; self.contentViewController = self.splitViewController;
[self.splitViewController showOutline]; [self.splitViewController showOutline];
} }
- (void)showGroupInOutline:(id)sender { - (void)showGroupInOutline:(id)sender {
@@ -487,6 +485,32 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
[self.splitViewController.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.splitViewController.entryViewController copyUsername:sender];
}
- (void)copyPassword:(id)sender {
[self.splitViewController.entryViewController copyPassword:sender];
}
- (void)copyCustomAttribute:(id)sender {
[self.splitViewController.entryViewController copyCustomAttribute:sender];
}
- (void)copyAsReference:(id)sender {
[self.splitViewController.entryViewController copyAsReference:sender];
}
- (void)copyURL:(id)sender {
[self.splitViewController.entryViewController copyURL:sender];
}
- (void)openURL:(id)sender {
[self.splitViewController.entryViewController openURL:sender];
}
#pragma mark Validation #pragma mark Validation
- (BOOL)validateMenuItem:(NSMenuItem *)menuItem { - (BOOL)validateMenuItem:(NSMenuItem *)menuItem {
return ([self.document validateMenuItem:menuItem]); return ([self.document validateMenuItem:menuItem]);

View File

@@ -28,12 +28,13 @@
@implementation MPDocumentWindowDelegate @implementation MPDocumentWindowDelegate
- (NSDragOperation)draggingEntered:(id<NSDraggingInfo>)sender { - (NSDragOperation)draggingEntered:(id<NSDraggingInfo>)sender {
MPDocument *document = sender.draggingDestinationWindow.windowController.document;
MPDocument *document = [[[sender draggingDestinationWindow] windowController] document];
if(document.encrypted) { if(document.encrypted) {
return NSDragOperationNone; return NSDragOperationNone;
} }
NSPasteboard *draggingPasteBoard = sender.draggingPasteboard; NSPasteboard *draggingPasteBoard = [sender draggingPasteboard];
NSArray *arrayOfURLs = [draggingPasteBoard readObjectsForClasses:@[NSURL.class] options:nil]; NSArray *arrayOfURLs = [draggingPasteBoard readObjectsForClasses:@[NSURL.class] options:nil];
BOOL ok = YES; BOOL ok = YES;
@@ -51,7 +52,7 @@
} }
- (BOOL)performDragOperation:(id<NSDraggingInfo>)sender { - (BOOL)performDragOperation:(id<NSDraggingInfo>)sender {
NSPasteboard *draggingPasteBoard = sender.draggingPasteboard; NSPasteboard *draggingPasteBoard = [sender draggingPasteboard];
NSArray *arrayOfURLs = [draggingPasteBoard readObjectsForClasses:@[NSURL.class] options:nil]; NSArray *arrayOfURLs = [draggingPasteBoard readObjectsForClasses:@[NSURL.class] options:nil];
NSURL *url = arrayOfURLs.lastObject; NSURL *url = arrayOfURLs.lastObject;
@@ -59,7 +60,7 @@
return NO; return NO;
} }
/* Currently not working, as the underlying operations do not get the undomanager */ /* 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; KPKGroup *parentGroup = document.selectedGroups.count == 1 ? document.selectedGroups.firstObject : document.root;
[document.undoManager beginUndoGrouping]; [document.undoManager beginUndoGrouping];
KPKEntry *entry = [document createEntry:parentGroup]; KPKEntry *entry = [document createEntry:parentGroup];

View File

@@ -1,35 +0,0 @@
//
// 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 <MPAttributeInspectorEditor, HNHUITextFieldDelegate>
@property (strong) IBOutlet NSTextField *keyTextField;
@property (strong) IBOutlet HNHUISecureTextField *valueTextField;
@property (strong) IBOutlet NSButton *generatePasswordButton;
@property (strong) IBOutlet NSButton *toggleProtectedButton;
@property (strong) IBOutlet NSButton *removeButton;
@property (strong) IBOutlet NSButton *actionButton;
@property SEL attributeSelector; // set this if the editor is bound to a default attributes
- (void)updateValuesAndEditing;
- (void)performCopyForText:(NSString *)text;
@end
NS_ASSUME_NONNULL_END

View File

@@ -1,253 +0,0 @@
//
// 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"
#import "MPInspectorEditorView.h"
NSString *nameForDefaultKey(NSString *key) {
static NSDictionary *mapping;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
mapping = @{ kKPKTitleKey: NSLocalizedString(@"TITTLE_ATTRIBUTE_KEY", @"Localized name for title attribute"),
kKPKUsernameKey: NSLocalizedString(@"USERNAME_ATTRIBUTE_KEY", @"Localized name for username attribute"),
kKPKPasswordKey: NSLocalizedString(@"PASSWORD_ATTRIBUTE_KEY", @"Localized name for password attribute"),
kKPKURLKey: NSLocalizedString(@"URL_ATTRIBUTE_KEY", @"Localized name for URL attribute") };
});
return mapping[key];
}
@interface MPEntryAttributeViewController ()
@property (nonatomic, readonly, getter=isDefaultAttributeEditor) BOOL defaultAttributeEditor;
@property (nonatomic, readonly, getter=isPasswordAttributeEditor) BOOL passwordAttributeEditor;
@end
@implementation MPEntryAttributeViewController
@synthesize isEditor = _isEditor;
- (instancetype)initWithNibName:(NSNibName)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if(self) {
_isEditor = NO;
}
return self;
}
- (instancetype)initWithCoder:(NSCoder *)coder {
self = [super initWithCoder:coder];
if(self) {
_isEditor = NO;
NSString *selectorString = [coder decodeObjectOfClass:NSString.class forKey:NSStringFromSelector(@selector(attributeSelector))];
if(selectorString) {
self.attributeSelector = NSSelectorFromString(selectorString);
}
}
return self;
}
- (void)encodeWithCoder:(NSCoder *)coder {
[super encodeWithCoder:coder];
// editor state will be set to NO after decoding
[coder encodeObject:NSStringFromSelector(self.attributeSelector) forKey:NSStringFromSelector(@selector(attributeSelector))];
}
- (void)viewDidLoad {
[super viewDidLoad];
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didEnterMouse:) name:MPInspectorEditorViewMouseEnteredNotification object:self.view];
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didExitMouse:) name:MPInspectorEditorViewMouseExitedNotification object:self.view];
self.toggleProtectedButton.action = @selector(toggleDisplay:);
self.toggleProtectedButton.target = self.valueTextField;
self.actionButton.action = @selector(_copyText:);
self.actionButton.target = self;
self.actionButton.hidden = YES;
self.actionButton.title = NSLocalizedString(@"COPY", "Button title for copying an attribute value");
NSDictionary *bindingOptions = @{ NSNullPlaceholderBindingOption : NSLocalizedString(@"NONE", "Placeholder text for input fields if no entry or group is selected"),
NSConditionallySetsHiddenBindingOption : @(NO),
NSConditionallySetsEnabledBindingOption : @(NO),
NSConditionallySetsEditableBindingOption : @(NO) };
NSString *valueKeyPath = [NSString stringWithFormat:@"%@.%@", NSStringFromSelector(@selector(representedObject)), NSStringFromSelector(@selector(value))];
if(self.isDefaultAttributeEditor) {
valueKeyPath = [NSString stringWithFormat:@"%@.%@.%@", NSStringFromSelector(@selector(representedObject)),NSStringFromSelector(@selector(entry)), NSStringFromSelector(self.attributeSelector)];
}
[self.valueTextField bind:NSValueBinding
toObject:self
withKeyPath:valueKeyPath
options:bindingOptions];
if(!self.isDefaultAttributeEditor) {
NSString *keyKeyPath = [NSString stringWithFormat:@"%@.%@", NSStringFromSelector(@selector(representedObject)), NSStringFromSelector(@selector(key))];
[self.keyTextField bind:NSValueBinding
toObject:self
withKeyPath:keyKeyPath
options:bindingOptions];
}
if(self.isPasswordAttributeEditor) {
self.toggleProtectedButton.image = [NSImage imageNamed:NSImageNameQuickLookTemplate];
NSFont *font = [NSFont fontWithName:@"Menlo-Regular" size:13.0];
self.valueTextField.font = font;
// TODO: setup pretty password value transformer
}
[self updateValuesAndEditing];
}
- (KPKAttribute *)representedAttribute {
if([self.representedObject isKindOfClass:KPKAttribute.class]) {
return (KPKAttribute *)self.representedObject;
}
return nil;
}
- (BOOL)isDefaultAttributeEditor {
return (self.attributeSelector != NULL);
}
- (BOOL)isPasswordAttributeEditor {
return self.attributeSelector == @selector(password);
}
- (void)setIsEditor:(BOOL)isEditor {
_isEditor = isEditor;
[self updateValuesAndEditing];
}
- (void)setRepresentedObject:(id)representedObject {
if(self.representedAttribute) {
[NSNotificationCenter.defaultCenter removeObserver:self
name:KPKDidChangeAttributeNotification
object:self.representedObject];
}
super.representedObject = representedObject;
if(self.representedAttribute) {
[NSNotificationCenter.defaultCenter addObserver:self
selector:(@selector(_didChangeAttribute:))
name:KPKDidChangeAttributeNotification
object:self.representedAttribute];
}
// bind with read-only setup and value transformer for names?
if(self.isDefaultAttributeEditor) {
[self.keyTextField unbind:NSValueBinding];
NSString *localizedKey = nameForDefaultKey(self.representedAttribute.key);
if(localizedKey) {
self.keyTextField.stringValue = localizedKey;
}
else {
self.keyTextField.stringValue = self.representedAttribute.key ? self.representedAttribute.key : @"";
}
}
[self updateValuesAndEditing];
}
- (void)_copyText:(id)sender {
[self performCopyForText:self.valueTextField.stringValue];
}
- (BOOL)textField:(NSTextField *)textField textView:(NSTextView *)textView performAction:(SEL)action {
if(action != @selector(copy:)) {
return YES;
}
// Only copy action
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];
}
[self performCopyForText:selectedValue];
return NO;
}
- (void)performCopyForText:(NSString *)text {
MPPasteboardOverlayInfoType info = MPPasteboardOverlayInfoCustom;
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:text overlayInfo:info name:name atView:self.view];
}
- (void)_didChangeAttribute:(NSNotification *)notification {
[self updateValuesAndEditing];
}
- (void)updateValuesAndEditing {
// values
self.view.hidden = self.isEditor ? NO : self.representedAttribute.value.length == 0;
self.valueTextField.showPassword = !self.representedAttribute.protect;
// editor
self.keyTextField.editable = !self.isDefaultAttributeEditor && self.isEditor;
self.valueTextField.editable = self.isEditor;
self.keyTextField.selectable = YES;
self.valueTextField.selectable = YES;
self.toggleProtectedButton.hidden = self.isDefaultAttributeEditor ? !self.isPasswordAttributeEditor : NO;
self.generatePasswordButton.hidden = self.isEditor ? !self.isPasswordAttributeEditor : YES;
self.removeButton.hidden = !self.isEditor ? YES : self.isDefaultAttributeEditor;
// set draws background first, since bezeld might have side effects
self.valueTextField.drawsBackground = self.isEditor;
self.valueTextField.bordered = self.isEditor;
self.valueTextField.bezeled = self.isEditor;
}
- (void)_didEnterMouse:(NSNotification *)notification {
self.actionButton.hidden = self.isEditor;
}
- (void)_didExitMouse:(NSNotification *)notification {
self.actionButton.hidden = YES;
}
- (void)objectDidBeginEditing:(id<NSEditor>)editor {
[self.view.window.windowController.document objectDidBeginEditing:editor];
[super objectDidBeginEditing:editor];
}
- (void)objectDidEndEditing:(id<NSEditor>)editor {
[self.view.window.windowController.document objectDidEndEditing:editor];
[super objectDidEndEditing:editor];
}
- (void)commitEditingWithDelegate:(nullable id)delegate didCommitSelector:(nullable SEL)didCommitSelector contextInfo:(nullable void *)contextInfo {
[super commitEditingWithDelegate:delegate didCommitSelector:didCommitSelector contextInfo:contextInfo];
}
@end

View File

@@ -1,123 +0,0 @@
<?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="MPEntryAttributeViewController">
<connections>
<outlet property="actionButton" destination="gab-tS-gBb" id="gvk-hn-Erc"/>
<outlet property="generatePasswordButton" destination="5gR-99-IVJ" id="SFB-s9-2CX"/>
<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" customClass="MPInspectorEditorView">
<rect key="frame" x="0.0" y="0.0" width="436" height="50"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews>
<stackView distribution="fill" orientation="vertical" alignment="leading" spacing="2" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="No7-P9-4cl">
<rect key="frame" x="0.0" y="0.0" width="436" height="50"/>
<subviews>
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="m8q-FN-S8D">
<rect key="frame" x="-2" y="36" width="440" 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="centerY" 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="436" height="34"/>
<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="7" width="236" 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" 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>
<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="234" y="0.0" 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="269" y="0.0" 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>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="5gR-99-IVJ">
<rect key="frame" x="304" y="0.0" width="90" height="32"/>
<buttonCell key="cell" type="push" title="Generate" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="IwJ-ml-b4v">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="showPasswordGenerator:" target="-1" id="L0a-eV-dW3"/>
</connections>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="gab-tS-gBb">
<rect key="frame" x="386" y="2" width="56" height="27"/>
<buttonCell key="cell" type="push" title="Copy" bezelStyle="rounded" alignment="center" controlSize="small" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="0GH-rx-Fg4">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
</button>
</subviews>
<visibilityPriorities>
<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"/>
</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="-527" 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>

View File

@@ -36,7 +36,14 @@
@property (weak) IBOutlet NSTabView *tabView; @property (weak) IBOutlet NSTabView *tabView;
@property (strong) IBOutlet NSView *generalView; @property (strong) IBOutlet NSView *generalView;
//@property (weak) IBOutlet NSTextField *titleTextField; @property (weak) IBOutlet NSTextField *titleTextField;
@property (weak) IBOutlet NSTextField *usernameTextField;
@property (weak) IBOutlet NSTextField *URLTextField;
@property (weak) IBOutlet HNHUISecureTextField *passwordTextField;
@property (weak) IBOutlet NSButton *generatePasswordButton;
@property (weak) IBOutlet NSButton *togglePassword;
@property (weak) IBOutlet NSButton *pickExpireDateButton;
@property (weak) IBOutlet NSButton *expiresCheckButton;
@property (weak) IBOutlet NSTokenField *tagsTokenField; @property (weak) IBOutlet NSTokenField *tagsTokenField;
@property (weak) IBOutlet NSTextField *uuidTextField; @property (weak) IBOutlet NSTextField *uuidTextField;
@@ -92,6 +99,4 @@
- (IBAction)toggleQuicklookPreview:(id)sender; - (IBAction)toggleQuicklookPreview:(id)sender;
- (IBAction)toggleExpire:(NSButton*)sender; - (IBAction)toggleExpire:(NSButton*)sender;
- (IBAction)toggleEdit:(id)sender;
@end @end

View File

@@ -33,9 +33,6 @@
#import "MPReferenceBuilderViewController.h" #import "MPReferenceBuilderViewController.h"
#import "MPTOTPViewController.h" #import "MPTOTPViewController.h"
#import "MPTOTPSetupViewController.h" #import "MPTOTPSetupViewController.h"
#import "MPEntryAttributeViewController.h"
#import "MPNodeExpirationViewController.h"
#import "MPNodeIconViewController.h"
#import "MPPrettyPasswordTransformer.h" #import "MPPrettyPasswordTransformer.h"
#import "NSString+MPPasswordCreation.h" #import "NSString+MPPasswordCreation.h"
@@ -78,21 +75,12 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
MPWindowTitleComboBoxDelegate *_windowTitleMenuDelegate; MPWindowTitleComboBoxDelegate *_windowTitleMenuDelegate;
MPTagsTokenFieldDelegate *_tagTokenFieldDelegate; MPTagsTokenFieldDelegate *_tagTokenFieldDelegate;
MPAddCustomFieldContextMenuDelegate *_addCustomFieldContextMenuDelegate; MPAddCustomFieldContextMenuDelegate *_addCustomFieldContextMenuDelegate;
NSMutableArray<NSViewController<MPAttributeInspectorEditor> *> *_customAttributeEditorViewControllers;
} }
@property (nonatomic, assign) BOOL showPassword; @property (nonatomic, assign) BOOL showPassword;
@property (nonatomic, assign) MPEntryTab activeTab; @property (nonatomic, assign) MPEntryTab activeTab;
@property (nonatomic, readonly) KPKEntry *representedEntry; @property (nonatomic, readonly) KPKEntry *representedEntry;
@property (strong) MPTOTPViewController *totpViewController; @property (strong) MPTOTPViewController *totpViewController;
@property (strong) MPEntryAttributeViewController *titleEditorViewController;
@property (strong) MPEntryAttributeViewController *usernameEditorViewController;
@property (strong) MPEntryAttributeViewController *passwordEditorViewController;
@property (strong) MPEntryAttributeViewController *urlEditorViewController;
@property (strong) MPNodeExpirationViewController *expiresEditorViewController;
@property (strong) MPNodeIconViewController *iconViewController;
@property (strong) MPTemporaryFileStorage *quicklookStorage; @property (strong) MPTemporaryFileStorage *quicklookStorage;
@@ -123,7 +111,6 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
_customFieldTableDelegate.viewController = self; _customFieldTableDelegate.viewController = self;
_addCustomFieldContextMenuDelegate.viewController = self; _addCustomFieldContextMenuDelegate.viewController = self;
_customAttributeEditorViewControllers = [[NSMutableArray alloc] init];
_activeTab = MPEntryTabGeneral; _activeTab = MPEntryTabGeneral;
} }
return self; return self;
@@ -137,23 +124,8 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
} }
- (void)setRepresentedObject:(id)representedObject { - (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];
[NSNotificationCenter.defaultCenter removeObserver:self name:KPKWillAddAttributeNotification object:self.representedEntry];
[NSNotificationCenter.defaultCenter removeObserver:self name:KPKDidAddAttributeNotification object:self.representedEntry];
}
super.representedObject = representedObject; super.representedObject = representedObject;
self.totpViewController.representedObject = self.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];
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_willAddAttribute:) name:KPKWillAddAttributeNotification object:self.representedEntry];
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didAddAttribute:) name:KPKDidAddAttributeNotification object:self.representedEntry];
}
} }
- (void)viewDidLoad { - (void)viewDidLoad {
@@ -208,16 +180,15 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
self.windowTitleComboBox.delegate = _windowTitleMenuDelegate; self.windowTitleComboBox.delegate = _windowTitleMenuDelegate;
//[self.passwordTextField bind:NSStringFromSelector(@selector(showPassword)) toObject:self withKeyPath:NSStringFromSelector(@selector(showPassword)) options:nil]; [self.passwordTextField bind:NSStringFromSelector(@selector(showPassword)) toObject:self withKeyPath:NSStringFromSelector(@selector(showPassword)) options:nil];
//[self.togglePassword bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(showPassword)) options:nil]; [self.togglePassword bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(showPassword)) options:nil];
self.tagsTokenField.delegate = _tagTokenFieldDelegate; self.tagsTokenField.delegate = _tagTokenFieldDelegate;
[self _setupAttributeEditors]; [self _setupTOPTView];
[self _updateEditors];
[self _setupCustomFieldsButton]; [self _setupCustomFieldsButton];
[self _setupViewBindings]; [self _setupViewBindings];
[self _updateFieldVisibilty];
} }
- (void)registerNotificationsForDocument:(MPDocument *)document { - (void)registerNotificationsForDocument:(MPDocument *)document {
@@ -335,17 +306,6 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
} }
} }
- (void)toggleEdit:(id)sender {
// commit changes in editors!
self.titleEditorViewController.isEditor = !self.titleEditorViewController.isEditor;
self.usernameEditorViewController.isEditor = !self.usernameEditorViewController.isEditor;
self.passwordEditorViewController.isEditor = !self.passwordEditorViewController.isEditor;
self.urlEditorViewController.isEditor = !self.urlEditorViewController.isEditor;
self.expiresEditorViewController.isEditor = !self.expiresEditorViewController.isEditor;
self.iconViewController.isEditor = !self.iconViewController.isEditor;
//self.totpViewController.isEditor = !self.totpViewController.isEditor;
}
- (BOOL)validateMenuItem:(NSMenuItem *)menuItem { - (BOOL)validateMenuItem:(NSMenuItem *)menuItem {
switch([MPActionHelper typeForAction:menuItem.action]) { switch([MPActionHelper typeForAction:menuItem.action]) {
case MPActionToggleQuicklook: { case MPActionToggleQuicklook: {
@@ -416,7 +376,7 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
} }
- (IBAction)showPasswordGenerator:(id)sender { - (IBAction)showPasswordGenerator:(id)sender {
//self.generatePasswordButton.enabled = NO; self.generatePasswordButton.enabled = NO;
MPPasswordCreatorViewController *viewController = [[MPPasswordCreatorViewController alloc] init]; MPPasswordCreatorViewController *viewController = [[MPPasswordCreatorViewController alloc] init];
viewController.allowsEntryDefaults = YES; viewController.allowsEntryDefaults = YES;
viewController.representedObject = self.representedObject; viewController.representedObject = self.representedObject;
@@ -446,7 +406,7 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
self.showCustomEntrySequenceAutotypeBuilderButton.enabled = YES; self.showCustomEntrySequenceAutotypeBuilderButton.enabled = YES;
} }
else if([viewController isKindOfClass:MPPasswordCreatorViewController.class]) { else if([viewController isKindOfClass:MPPasswordCreatorViewController.class]) {
//self.generatePasswordButton.enabled = YES; self.generatePasswordButton.enabled = YES;
} }
[super dismissViewController:viewController]; [super dismissViewController:viewController];
} }
@@ -504,23 +464,24 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
#pragma mark - #pragma mark -
#pragma mark Entry Selection #pragma mark Entry Selection
- (void)_updateEntryValues {
// TODO implement binding less model update
}
- (void)_setupViewBindings { - (void)_setupViewBindings {
/* Disable for history view */ /* Disable for history view */
NSArray *inputs = @[ NSArray *inputs = @[self.titleTextField,
self.tagsTokenField, self.passwordTextField,
self.addAttachmentButton, self.usernameTextField,
self.addCustomFieldButton, self.URLTextField,
self.addWindowAssociationButton, self.expiresCheckButton,
self.removeWindowAssociationButton, self.tagsTokenField,
self.enableAutotypeCheckButton, self.generatePasswordButton,
self.obfuscateAutotypeCheckButton, self.addAttachmentButton,
self.customEntrySequenceTextField, self.addCustomFieldButton,
self.windowTitleComboBox, self.addWindowAssociationButton,
self.associationSequenceTextField]; self.removeWindowAssociationButton,
self.enableAutotypeCheckButton,
self.obfuscateAutotypeCheckButton,
self.customEntrySequenceTextField,
self.windowTitleComboBox,
self.associationSequenceTextField];
for(NSControl *control in inputs) { for(NSControl *control in inputs) {
[control bind:NSEnabledBinding [control bind:NSEnabledBinding
@@ -533,6 +494,35 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
NSDictionary *nullPlaceholderBindingOptionsDict = @{ NSNullPlaceholderBindingOption: NSLocalizedString(@"NONE", "Placeholder text for input fields if no entry or group is selected")}; NSDictionary *nullPlaceholderBindingOptionsDict = @{ NSNullPlaceholderBindingOption: NSLocalizedString(@"NONE", "Placeholder text for input fields if no entry or group is selected")};
NSDictionary *prettyPasswordBindingOptionsDict = @{ NSNullPlaceholderBindingOption: nullPlaceholderBindingOptionsDict[NSNullPlaceholderBindingOption], NSValueTransformerNameBindingOption : MPPrettyPasswordTransformerName }; NSDictionary *prettyPasswordBindingOptionsDict = @{ NSNullPlaceholderBindingOption: nullPlaceholderBindingOptionsDict[NSNullPlaceholderBindingOption], NSValueTransformerNameBindingOption : MPPrettyPasswordTransformerName };
[self.titleTextField bind:NSValueBinding
toObject:self
withKeyPath:[NSString stringWithFormat:@"%@.%@", NSStringFromSelector(@selector(representedObject)), NSStringFromSelector(@selector(title))]
options:nullPlaceholderBindingOptionsDict];
[self.passwordTextField bind:NSValueBinding
toObject:self
withKeyPath:[NSString stringWithFormat:@"%@.%@", NSStringFromSelector(@selector(representedObject)), NSStringFromSelector(@selector(password))]
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))]
options:nil];
[self.tagsTokenField bind:NSValueBinding [self.tagsTokenField bind:NSValueBinding
toObject:self toObject:self
withKeyPath:[NSString stringWithFormat:@"%@.%@", NSStringFromSelector(@selector(representedObject)), NSStringFromSelector(@selector(tags))] withKeyPath:[NSString stringWithFormat:@"%@.%@", NSStringFromSelector(@selector(representedObject)), NSStringFromSelector(@selector(tags))]
@@ -604,80 +594,26 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
//[self.addCustomFieldButton setEnabled:NO forSegment:MPContextButtonSegmentContextButton]; //[self.addCustomFieldButton setEnabled:NO forSegment:MPContextButtonSegmentContextButton];
} }
- (void)_setupAttributeEditors { - (void)_updateFieldVisibilty {
self.iconViewController = [[MPNodeIconViewController alloc] init];
[self addChildViewController:self.iconViewController];
[self.fieldsStackView addArrangedSubview:self.iconViewController.view];
self.titleEditorViewController = [[MPEntryAttributeViewController alloc] init];
[self addChildViewController:self.titleEditorViewController];
self.titleEditorViewController.attributeSelector = @selector(title);
[self.fieldsStackView addArrangedSubview:self.titleEditorViewController.view];
self.usernameEditorViewController = [[MPEntryAttributeViewController alloc] init];
[self addChildViewController:self.usernameEditorViewController];
self.usernameEditorViewController.attributeSelector = @selector(username);
[self.fieldsStackView addArrangedSubview:self.usernameEditorViewController.view];
self.passwordEditorViewController = [[MPEntryAttributeViewController alloc] init];
[self addChildViewController:self.passwordEditorViewController];
self.passwordEditorViewController.attributeSelector = @selector(password);
[self.fieldsStackView addArrangedSubview:self.passwordEditorViewController.view];
self.urlEditorViewController = [[MPEntryAttributeViewController alloc] init];
[self addChildViewController:self.urlEditorViewController];
self.urlEditorViewController.attributeSelector = @selector(url);
[self.fieldsStackView addArrangedSubview:self.urlEditorViewController.view];
self.totpViewController = [[MPTOTPViewController alloc] init];
[self addChildViewController:self.totpViewController];
//self.totpViewController.isEditor = NO;
[self.fieldsStackView addArrangedSubview:self.totpViewController.view];
self.expiresEditorViewController = [[MPNodeExpirationViewController alloc] init];
[self addChildViewController:self.expiresEditorViewController];
self.expiresEditorViewController.isEditor = NO;
[self.fieldsStackView addArrangedSubview:self.expiresEditorViewController.view];
} }
- (void)_updateEditors { - (void)_setupTOPTView {
self.iconViewController.representedObject = self.representedObject; self.totpViewController = [[MPTOTPViewController alloc] init];
self.totpViewController.representedObject = self.representedObject;
self.expiresEditorViewController.representedObject = self.representedEntry.timeInfo;
self.titleEditorViewController.representedObject = [self.representedEntry attributeWithKey:kKPKTitleKey]; NSInteger urlindex = [self.fieldsStackView.arrangedSubviews indexOfObject:self.URLTextField];
self.usernameEditorViewController.representedObject = [self.representedEntry attributeWithKey:kKPKUsernameKey]; NSAssert(urlindex != NSNotFound, @"Missing reference view. This should not happen!");
self.passwordEditorViewController.representedObject = [self.representedEntry attributeWithKey:kKPKPasswordKey]; [self addChildViewController:self.totpViewController];
self.urlEditorViewController.representedObject = [self.representedEntry attributeWithKey:kKPKURLKey]; [self.fieldsStackView insertArrangedSubview:self.totpViewController.view atIndex:urlindex - 1];
// update custom field editors
for(NSViewController *vc in _customAttributeEditorViewControllers) {
[self.fieldsStackView removeView:vc.view];
[vc removeFromParentViewController];
}
[_customAttributeEditorViewControllers removeAllObjects];
for(KPKAttribute *attribute in self.representedEntry.customAttributes) {
MPEntryAttributeViewController *vc = [[MPEntryAttributeViewController alloc] init];
// FIXME: Correcly set editor starte based on current state
vc.isEditor = NO;
vc.representedObject = attribute;
[self.fieldsStackView addArrangedSubview:vc.view];
[self addChildViewController:vc];
[_customAttributeEditorViewControllers addObject:vc];
}
} }
#pragma mark - #pragma mark -
#pragma mark HNHUITextFieldDelegate #pragma mark HNHUITextFieldDelegate
- (BOOL)textField:(NSTextField *)textField allowServicesForTextView:(NSTextView *)textView { - (BOOL)textField:(NSTextField *)textField allowServicesForTextView:(NSTextView *)textView {
/* disallow servies for password fields */ /* disallow servies for password fields */
if(textField == self.passwordTextField) {
/* return NO;
FIXME: Add to MPEntryPasswordViewController }
if(textField == self.passwordTextField) {
return NO;
}
*/
NSInteger index = MPCustomFieldIndexFromTag(textField.tag); NSInteger index = MPCustomFieldIndexFromTag(textField.tag);
if(index > -1) { if(index > -1) {
KPKAttribute *attribute = _customFieldsController.arrangedObjects[index]; KPKAttribute *attribute = _customFieldsController.arrangedObjects[index];
@@ -699,9 +635,9 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
} }
/*- (NSArray<NSString *> *)control:(NSControl *)control textView:(NSTextView *)textView completions:(NSArray<NSString *> *)words forPartialWordRange:(NSRange)charRange indexOfSelectedItem:(NSInteger *)index { /*- (NSArray<NSString *> *)control:(NSControl *)control textView:(NSTextView *)textView completions:(NSArray<NSString *> *)words forPartialWordRange:(NSRange)charRange indexOfSelectedItem:(NSInteger *)index {
return @[ @"{USERNAME}", @"{PASSWORD}", @"{URL}", @"{TITLE}" ]; return @[ @"{USERNAME}", @"{PASSWORD}", @"{URL}", @"{TITLE}" ];
} }
*/ */
- (BOOL)textField:(NSTextField *)textField textView:(NSTextView *)textView performAction:(SEL)action { - (BOOL)textField:(NSTextField *)textField textView:(NSTextView *)textView performAction:(SEL)action {
if(action == @selector(copy:)) { if(action == @selector(copy:)) {
@@ -714,25 +650,27 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
if(selectedValue.length == 0) { if(selectedValue.length == 0) {
return YES; return YES;
} }
/* FIXME: Add to AttributeViewController if(textField == self.usernameTextField) {
if(textField == self.usernameTextField) { info = MPPasteboardOverlayInfoUsername;
info = MPPasteboardOverlayInfoUsername; }
} else if(textField == self.passwordTextField) {
else if(textField == self.passwordTextField) { info = MPPasteboardOverlayInfoPassword;
info = MPPasteboardOverlayInfoPassword; }
} else if(textField == self.URLTextField) {
else if(textField == self.URLTextField) { info = MPPasteboardOverlayInfoURL;
info = MPPasteboardOverlayInfoURL; }
} else if(textField == self.uuidTextField) {
else*/ if(textField == self.uuidTextField) { name = NSLocalizedString(@"UUID", "Displayed name when uuid field was copied");
name = NSLocalizedString(@"UUID", "Displayed name when uuid field was copied"); }
} else if(textField == self.titleTextField) {
else { name = NSLocalizedString(@"TITLE", "Displayed name when title field was copied");
NSInteger index = MPCustomFieldIndexFromTag(textField.tag); }
if(index > -1) { else {
name = [_customFieldsController.arrangedObjects[index] key]; NSInteger index = MPCustomFieldIndexFromTag(textField.tag);
} if(index > -1) {
} name = [_customFieldsController.arrangedObjects[index] key];
}
}
[MPPasteBoardController.defaultController copyObject:selectedValue overlayInfo:info name:name atView:self.view]; [MPPasteBoardController.defaultController copyObject:selectedValue overlayInfo:info name:name atView:self.view];
return NO; return NO;
} }
@@ -740,13 +678,9 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
} }
- (IBAction)toggleExpire:(NSButton*)sender { - (IBAction)toggleExpire:(NSButton*)sender {
if([sender state] == NSOnState && [self.representedEntry.timeInfo.expirationDate isEqualToDate:NSDate.distantFuture]) {
/* [NSApp sendAction:self.pickExpireDateButton.action to:nil from:self.pickExpireDateButton];
FIXME: Add to expiredViewController }
if([sender state] == NSOnState && [self.representedEntry.timeInfo.expirationDate isEqualToDate:NSDate.distantFuture]) {
[NSApp sendAction:self.pickExpireDateButton.action to:nil from:self.pickExpireDateButton];
}
*/
} }
#pragma mark - #pragma mark -
@@ -754,6 +688,7 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
- (void)_didAddEntry:(NSNotification *)notification { - (void)_didAddEntry:(NSNotification *)notification {
[self.tabView selectTabViewItemAtIndex:MPEntryTabGeneral]; [self.tabView selectTabViewItemAtIndex:MPEntryTabGeneral];
[self.titleTextField becomeFirstResponder];
} }
- (void)_didChangeCurrentItem:(NSNotification *)notificiation { - (void)_didChangeCurrentItem:(NSNotification *)notificiation {
@@ -763,35 +698,7 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
#pragma mark - #pragma mark -
#pragma mark KPKEntry Notifications #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 { - (void)_didChangeAttribute:(NSNotification *)notification {
} }
- (void)_willAddAttribute:(NSNotification *)notification {
}
- (void)_didAddAttribute:(NSNotification *)notification {
// TODO: add attribute editor to stackview
}
- (void)_willRemoveAttribute:(NSNotification *)notification {
// TODO: remove attribute editor form stackview
}
- (void)_didRemoveAttribute:(NSNotification *)notification {
}
@end @end

View File

@@ -49,8 +49,6 @@
#import "HNHUi/HNHUi.h" #import "HNHUi/HNHUi.h"
#import "MPOpenURLHandler.h"
#import "MPNotifications.h" #import "MPNotifications.h"
#define STATUS_BAR_ANIMATION_TIME 0.15 #define STATUS_BAR_ANIMATION_TIME 0.15
@@ -71,7 +69,6 @@ NSString *const MPEntryTableHistoryColumnIdentifier = @"MPEntryTableHistoryColum
NSString *const _MPTableImageCellView = @"ImageCell"; NSString *const _MPTableImageCellView = @"ImageCell";
NSString *const _MPTableStringCellView = @"StringCell"; NSString *const _MPTableStringCellView = @"StringCell";
NSString *const _MPTableSecurCellView = @"PasswordCell"; NSString *const _MPTableSecurCellView = @"PasswordCell";
NSString *const _MPTableMonoSpacedStringCellView = @"MonospacedStringCell";
@interface MPEntryViewController () { @interface MPEntryViewController () {
BOOL _isDisplayingContextBar; BOOL _isDisplayingContextBar;
@@ -79,6 +76,7 @@ NSString *const _MPTableMonoSpacedStringCellView = @"MonospacedStringCell";
} }
@property (strong) MPContextBarViewController *contextBarViewController; @property (strong) MPContextBarViewController *contextBarViewController;
@property (strong) NSArray *filteredEntries;
@property (weak) IBOutlet NSTableView *entryTable; @property (weak) IBOutlet NSTableView *entryTable;
@property (assign) MPDisplayMode displayMode; @property (assign) MPDisplayMode displayMode;
@@ -89,7 +87,6 @@ NSString *const _MPTableMonoSpacedStringCellView = @"MonospacedStringCell";
@property (strong) NSLayoutConstraint *contextBarTopConstraint; @property (strong) NSLayoutConstraint *contextBarTopConstraint;
@property (nonatomic, strong) MPEntryTableDataSource *dataSource; @property (nonatomic, strong) MPEntryTableDataSource *dataSource;
@property (nonatomic) BOOL displayClearTextPasswords;
@end @end
@@ -108,13 +105,6 @@ NSString *const _MPTableMonoSpacedStringCellView = @"MonospacedStringCell";
_dataSource = [[MPEntryTableDataSource alloc] init]; _dataSource = [[MPEntryTableDataSource alloc] init];
_dataSource.viewController = self; _dataSource.viewController = self;
_contextBarViewController = [[MPContextBarViewController alloc] init]; _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]; [self _setupEntryBindings];
} }
return self; return self;
@@ -217,7 +207,7 @@ NSString *const _MPTableMonoSpacedStringCellView = @"MonospacedStringCell";
// bind NSArrayController sorting so that sort order gets auto-saved // bind NSArrayController sorting so that sort order gets auto-saved
// see: http://simx.me/technonova/software_development/sort_descriptors_nstableview_bindings_a.html // see: http://simx.me/technonova/software_development/sort_descriptors_nstableview_bindings_a.html
[self.entryArrayController bind:NSSortDescriptorsBinding [self.entryArrayController bind:NSSortDescriptorsBinding
toObject:NSUserDefaultsController.sharedUserDefaultsController toObject:[NSUserDefaultsController sharedUserDefaultsController]
withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyEntryTableSortDescriptors] withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyEntryTableSortDescriptors]
options:@{ NSValueTransformerNameBindingOption: NSUnarchiveFromDataTransformerName }]; options:@{ NSValueTransformerNameBindingOption: NSUnarchiveFromDataTransformerName }];
@@ -234,17 +224,6 @@ NSString *const _MPTableMonoSpacedStringCellView = @"MonospacedStringCell";
} }
} }
- (void)setDisplayClearTextPasswords:(BOOL)displayClearTextPasswords {
if(_displayClearTextPasswords == displayClearTextPasswords) {
return;
}
_displayClearTextPasswords = displayClearTextPasswords;
NSTableColumn *passwordColumn = [self.entryTable tableColumnWithIdentifier:MPEntryTablePasswordColumnIdentifier];
if(!passwordColumn.isHidden) {
[self.entryTable reloadData];
}
}
- (NSResponder *)reconmendedFirstResponder { - (NSResponder *)reconmendedFirstResponder {
return self.entryTable; return self.entryTable;
} }
@@ -294,7 +273,6 @@ NSString *const _MPTableMonoSpacedStringCellView = @"MonospacedStringCell";
BOOL isHistoryColumn = [tableColumn.identifier isEqualToString:MPEntryTableHistoryColumnIdentifier]; BOOL isHistoryColumn = [tableColumn.identifier isEqualToString:MPEntryTableHistoryColumnIdentifier];
NSTableCellView *view = nil; NSTableCellView *view = nil;
BOOL displayClearTextPasswords = [NSUserDefaults.standardUserDefaults boolForKey:kMPSettingsKeyDisplayClearTextPasswordsInEntryList];
if(isTitleColumn || isGroupColumn) { if(isTitleColumn || isGroupColumn) {
view = [tableView makeViewWithIdentifier:_MPTableImageCellView owner:self]; view = [tableView makeViewWithIdentifier:_MPTableImageCellView owner:self];
[view.textField unbind:NSValueBinding]; [view.textField unbind:NSValueBinding];
@@ -325,7 +303,7 @@ NSString *const _MPTableMonoSpacedStringCellView = @"MonospacedStringCell";
[view.imageView bind:NSValueBinding toObject:view withKeyPath:parentIconImageKeyPath options:nil]; [view.imageView bind:NSValueBinding toObject:view withKeyPath:parentIconImageKeyPath options:nil];
} }
} }
else if(isPasswordColum && !displayClearTextPasswords) { else if(isPasswordColum) {
view = [tableView makeViewWithIdentifier:_MPTableSecurCellView owner:self]; view = [tableView makeViewWithIdentifier:_MPTableSecurCellView owner:self];
NSString *passwordKeyPath = [NSString stringWithFormat:@"%@.%@", NSString *passwordKeyPath = [NSString stringWithFormat:@"%@.%@",
NSStringFromSelector(@selector(objectValue)), NSStringFromSelector(@selector(objectValue)),
@@ -333,19 +311,15 @@ NSString *const _MPTableMonoSpacedStringCellView = @"MonospacedStringCell";
NSDictionary *options = @{ NSValueTransformerBindingOption : [NSValueTransformer valueTransformerForName:MPStringLengthValueTransformerName] }; NSDictionary *options = @{ NSValueTransformerBindingOption : [NSValueTransformer valueTransformerForName:MPStringLengthValueTransformerName] };
[view.textField bind:NSValueBinding toObject:view withKeyPath:passwordKeyPath options:options]; [view.textField bind:NSValueBinding toObject:view withKeyPath:passwordKeyPath options:options];
} }
else { else {
if(isPasswordColum) { view = [tableView makeViewWithIdentifier:_MPTableStringCellView owner:self];
view = [tableView makeViewWithIdentifier:_MPTableMonoSpacedStringCellView owner:self];
}
else {
view = [tableView makeViewWithIdentifier:_MPTableStringCellView owner:self];
}
[view.textField unbind:NSValueBinding]; [view.textField unbind:NSValueBinding];
view.textField.stringValue = @""; view.textField.stringValue = @"";
if(!isModifedColumn && !isCreatedColumn) { if(!isModifedColumn && !isCreatedColumn) {
/* clean up old formatter that might be left */ /* clean up old formatter that might be left */
view.textField.formatter = nil; view.textField.formatter = nil;
} }
if(isModifedColumn || isCreatedColumn) { if(isModifedColumn || isCreatedColumn) {
if(!view.textField.formatter) { if(!view.textField.formatter) {
/* Just use one formatter instance since it's expensive to create */ /* Just use one formatter instance since it's expensive to create */
@@ -409,12 +383,6 @@ NSString *const _MPTableMonoSpacedStringCellView = @"MonospacedStringCell";
NSStringFromSelector(@selector(history))]; NSStringFromSelector(@selector(history))];
[view.textField bind:NSValueBinding toObject:view withKeyPath:historyCountKeyPath options:nil]; [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; return view;
} }
@@ -433,7 +401,7 @@ NSString *const _MPTableMonoSpacedStringCellView = @"MonospacedStringCell";
return; // Not the right table view return; // Not the right table view
} }
/* do not update the current item if we are not in focus! */ /* do not update the current item if we are not in focus! */
if(self.displayMode == MPDisplayModeSearchResults || tableView.window.firstResponder == self.entryTable) { if(tableView.window.firstResponder == self.entryTable) {
MPDocument *document = self.windowController.document; MPDocument *document = self.windowController.document;
document.selectedEntries = self.entryArrayController.selectedObjects; document.selectedEntries = self.entryArrayController.selectedObjects;
} }
@@ -533,8 +501,9 @@ NSString *const _MPTableMonoSpacedStringCellView = @"MonospacedStringCell";
- (void)_didUpdateSearchResults:(NSNotification *)notification { - (void)_didUpdateSearchResults:(NSNotification *)notification {
NSArray *result = notification.userInfo[kMPDocumentSearchResultsKey]; NSArray *result = notification.userInfo[kMPDocumentSearchResultsKey];
NSAssert(result != nil, @"Results should never be nil"); NSAssert(result != nil, @"Resutls should never be nil");
self.entryArrayController.content = result; self.filteredEntries = result;
self.entryArrayController.content = self.filteredEntries;
[self.entryTable tableColumnWithIdentifier:MPEntryTableParentColumnIdentifier].hidden = NO; [self.entryTable tableColumnWithIdentifier:MPEntryTableParentColumnIdentifier].hidden = NO;
[self _updateContextBar]; [self _updateContextBar];
} }
@@ -543,6 +512,7 @@ NSString *const _MPTableMonoSpacedStringCellView = @"MonospacedStringCell";
- (void)_didExitSearch:(NSNotification *)notification { - (void)_didExitSearch:(NSNotification *)notification {
[self.entryTable tableColumnWithIdentifier:MPEntryTableParentColumnIdentifier].hidden = YES; [self.entryTable tableColumnWithIdentifier:MPEntryTableParentColumnIdentifier].hidden = YES;
self.entryArrayController.content = nil; self.entryArrayController.content = nil;
self.filteredEntries = nil;
self.displayMode = MPDisplayModeEntries; self.displayMode = MPDisplayModeEntries;
[self _updateContextBar]; [self _updateContextBar];
MPDocument *document = notification.object; MPDocument *document = notification.object;
@@ -551,7 +521,6 @@ NSString *const _MPTableMonoSpacedStringCellView = @"MonospacedStringCell";
- (void)_didEnterSearch:(NSNotification *)notification { - (void)_didEnterSearch:(NSNotification *)notification {
self.displayMode = MPDisplayModeSearchResults; self.displayMode = MPDisplayModeSearchResults;
// FIXME: update selection?
[self _updateContextBar]; [self _updateContextBar];
} }
@@ -679,6 +648,7 @@ NSString *const _MPTableMonoSpacedStringCellView = @"MonospacedStringCell";
[headerMenu addItemWithTitle:NSLocalizedString(@"CREATED", "Menu item to toggle display of created 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:@""]; [headerMenu addItemWithTitle:NSLocalizedString(@"HISTORY", "Menu item to toggle display of history count column in entry table") action:NULL keyEquivalent:@""];
NSArray *identifier = @[ MPEntryTableTitleColumnIdentifier, NSArray *identifier = @[ MPEntryTableTitleColumnIdentifier,
MPEntryTableUserNameColumnIdentifier, MPEntryTableUserNameColumnIdentifier,
MPEntryTablePasswordColumnIdentifier, MPEntryTablePasswordColumnIdentifier,
@@ -696,14 +666,6 @@ NSString *const _MPTableMonoSpacedStringCellView = @"MonospacedStringCell";
[item bind:NSValueBinding toObject:column withKeyPath:NSHiddenBinding options:options]; [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; self.entryTable.headerView.menu = headerMenu;
} }
@@ -754,7 +716,27 @@ NSString *const _MPTableMonoSpacedStringCellView = @"MonospacedStringCell";
KPKEntry *selectedEntry = nodes.count == 1 ? [nodes.firstObject asEntry] : nil; KPKEntry *selectedEntry = nodes.count == 1 ? [nodes.firstObject asEntry] : nil;
NSString *expandedURL = [selectedEntry.url kpk_finalValueForEntry:selectedEntry]; NSString *expandedURL = [selectedEntry.url kpk_finalValueForEntry:selectedEntry];
if(expandedURL.length > 0) { if(expandedURL.length > 0) {
[MPOpenURLHandler.sharedHandler openURL:expandedURL]; 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);
}
} }
} }

View File

@@ -1,17 +0,0 @@
//
// 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

View File

@@ -1,66 +0,0 @@
//
// 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

View File

@@ -1,177 +0,0 @@
<?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>

View File

@@ -27,15 +27,14 @@
@interface MPGroupInspectorViewController : MPViewController @interface MPGroupInspectorViewController : MPViewController
@property (strong) IBOutlet NSView *contentView; @property (strong) IBOutlet NSView *contentView;
@property (strong) IBOutlet HNHUITextField *titleTextField; @property (weak) IBOutlet HNHUITextField *titleTextField;
@property (strong) IBOutlet NSButton *expiresCheckButton; @property (weak) IBOutlet NSButton *expiresCheckButton;
@property (strong) IBOutlet NSButton *expireDateSelectButton; @property (weak) IBOutlet NSButton *expireDateSelectButton;
@property (strong) IBOutlet NSPopUpButton *searchPopupButton; @property (weak) IBOutlet NSPopUpButton *searchPopupButton;
@property (strong) IBOutlet NSPopUpButton *autotypePopupButton; @property (weak) IBOutlet NSPopUpButton *autotypePopupButton;
@property (strong) IBOutlet HNHUITextField *autotypeSequenceTextField; @property (weak) IBOutlet HNHUITextField *autotypeSequenceTextField;
@property (strong) IBOutlet NSTokenField *tagsTokenField;
- (void)registerNotificationsForDocument:(MPDocument *)document; - (void)registerNotificationsForDocument:(MPDocument *)document;
@end @end

View File

@@ -62,17 +62,17 @@
scrollView.showBottomShadow = NO; scrollView.showBottomShadow = NO;
scrollView.hasVerticalRuler = YES; scrollView.hasVerticalRuler = YES;
scrollView.drawsBackground = NO; scrollView.drawsBackground = NO;
/*scrollView.translatesAutoresizingMaskIntoConstraints = NO; scrollView.translatesAutoresizingMaskIntoConstraints = NO;
NSView *clipView = scrollView.contentView; NSView *clipView = scrollView.contentView;
//scrollView.documentView = self.contentView; scrollView.documentView = self.contentView;
NSDictionary *views = NSDictionaryOfVariableBindings(_contentView); NSDictionary *views = NSDictionaryOfVariableBindings(_contentView);
[clipView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[_contentView]|" [clipView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[_contentView]|"
options:0 options:0
metrics:nil metrics:nil
views:views]]; views:views]];
[self.view layoutSubtreeIfNeeded];*/ [self.view layoutSubtreeIfNeeded];
NSMenu *autotypeMenu = self.autotypePopupButton.menu; NSMenu *autotypeMenu = self.autotypePopupButton.menu;
NSMenuItem *inheritAutotype = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"AUTOTYPE_INHERIT", "Inherit autotype settings menu item") action:NULL keyEquivalent:@""]; NSMenuItem *inheritAutotype = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"AUTOTYPE_INHERIT", "Inherit autotype settings menu item") action:NULL keyEquivalent:@""];
@@ -127,10 +127,6 @@
toObject:self toObject:self
withKeyPath:[NSString stringWithFormat:@"%@.%@", NSStringFromSelector(@selector(representedObject)), NSStringFromSelector(@selector(isSearchEnabled))] withKeyPath:[NSString stringWithFormat:@"%@.%@", NSStringFromSelector(@selector(representedObject)), NSStringFromSelector(@selector(isSearchEnabled))]
options:nil]; options:nil];
[self.tagsTokenField bind:NSValueBinding
toObject:self
withKeyPath:[NSString stringWithFormat:@"%@.%@", NSStringFromSelector(@selector(representedObject)), NSStringFromSelector(@selector(tags))]
options:nullPlaceholderOptionsDict];
} }
- (IBAction)toggleExpire:(NSButton*)sender { - (IBAction)toggleExpire:(NSButton*)sender {
KPKGroup *group = self.representedObject; KPKGroup *group = self.representedObject;

View File

@@ -1,49 +0,0 @@
//
// MPInspectorEditor.h
// MacPass
//
// Created by Michael Starke on 14.10.21.
// Copyright © 2021 HicknHack Software GmbH. All rights reserved.
//
#import <Foundation/Foundation.h>
@class KPKAttribute;
@class KPKEntry;
@class KPKTimeInfo;
@class KPKNode;
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
/// NodeInspectorEditors require the represented object to be a KPKNode
@protocol MPNodeInspectorEditor <MPInspectorEditor>
@required
@property (nonatomic, nullable, readonly, strong) KPKNode *representedNode;
@end
/// EntryInspectorEditors require the represented object to be a KPKEnty
@protocol MPEntryInspectorEditor <MPInspectorEditor>
@required
@property (nonatomic, nullable, readonly, strong) KPKEntry *representedEntry;
@end
/// AttributeInspectorEditors require the represented object to be a KPKAttribute
@protocol MPAttributeInspectorEditor <MPInspectorEditor>
@required
@property (nonatomic, nullable, readonly, strong) KPKAttribute *representedAttribute;
@end
/// TimeInfoInpspectorEditors require the represented object to be a KPKTimeInfo
@protocol MPTimeInfoInpspectorEditor <MPInspectorEditor>
@required
@property (nonatomic, nullable, readonly, strong) KPKTimeInfo *representedTimeInfo;
@end
NS_ASSUME_NONNULL_END

View File

@@ -1,21 +0,0 @@
//
// MPInspectorEditorView.h
// MacPass
//
// Created by Michael Starke on 08.03.22.
// Copyright © 2022 HicknHack Software GmbH. All rights reserved.
//
#import <Cocoa/Cocoa.h>
NS_ASSUME_NONNULL_BEGIN
FOUNDATION_EXPORT NSString *const MPInspectorEditorViewMouseEnteredNotification;
FOUNDATION_EXPORT NSString *const MPInspectorEditorViewMouseExitedNotification;
@interface MPInspectorEditorView : NSView
@end
NS_ASSUME_NONNULL_END

View File

@@ -1,50 +0,0 @@
//
// MPInspectorEditorView.m
// MacPass
//
// Created by Michael Starke on 08.03.22.
// Copyright © 2022 HicknHack Software GmbH. All rights reserved.
//
#import "MPInspectorEditorView.h"
NSString *const MPInspectorEditorViewMouseEnteredNotification = @"com.hicknhacksoftware.macpass.MPInspectorEditorViewMouseEnteredNotification";
NSString *const MPInspectorEditorViewMouseExitedNotification = @"com.hicknhacksoftware.macpass.MPInspectorEditorViewMouseExitedNotification";
@interface MPInspectorEditorView ()
@property (strong) NSTrackingArea *trackingArea;
@end
@implementation MPInspectorEditorView
- (void)mouseEntered:(NSEvent *)event {
[NSNotificationCenter.defaultCenter postNotificationName:MPInspectorEditorViewMouseEnteredNotification object:self];
}
- (void)mouseExited:(NSEvent *)event {
[NSNotificationCenter.defaultCenter postNotificationName:MPInspectorEditorViewMouseExitedNotification object:self];
}
- (void)createTrackingArea {
self.trackingArea = [[NSTrackingArea alloc] initWithRect:self.bounds options:NSTrackingActiveAlways|NSTrackingMouseEnteredAndExited owner:self userInfo:nil];
[self addTrackingArea:self.trackingArea];
NSPoint mouseLocation = self.window.mouseLocationOutsideOfEventStream;
mouseLocation = [self convertPoint:mouseLocation fromView:nil];
if(NSPointInRect(mouseLocation, self.bounds)) {
[self mouseEntered:NSApp.currentEvent];
}
else {
[self mouseExited:NSApp.currentEvent];
}
}
- (void)updateTrackingAreas {
[self removeTrackingArea:self.trackingArea];
[self createTrackingArea];
[super updateTrackingAreas];
}
@end

View File

@@ -81,7 +81,6 @@ typedef NS_ENUM(NSUInteger, MPContentTab) {
} }
- (void)awakeFromNib { - (void)awakeFromNib {
// TODO: Convert to NSTabViewController?
self.noSelectionInfo.cell.backgroundStyle = NSBackgroundStyleRaised; self.noSelectionInfo.cell.backgroundStyle = NSBackgroundStyleRaised;
self.itemImageView.cell.backgroundStyle = NSBackgroundStyleRaised; self.itemImageView.cell.backgroundStyle = NSBackgroundStyleRaised;
[self.tabView bind:NSSelectedIndexBinding toObject:self withKeyPath:NSStringFromSelector(@selector(activeTab)) options:nil]; [self.tabView bind:NSSelectedIndexBinding toObject:self withKeyPath:NSStringFromSelector(@selector(activeTab)) options:nil];
@@ -106,10 +105,6 @@ typedef NS_ENUM(NSUInteger, MPContentTab) {
[groupTabView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[groupView]|" options:0 metrics:nil views:views]]; [groupTabView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[groupView]|" options:0 metrics:nil views:views]];
groupTabItem.initialFirstResponder = groupView; groupTabItem.initialFirstResponder = groupView;
[self addChildViewController:self.entryViewController];
[self addChildViewController:self.groupViewController];
[self.view layout];} [self.view layout];}
- (void)registerNotificationsForDocument:(MPDocument *)document { - (void)registerNotificationsForDocument:(MPDocument *)document {
@@ -222,20 +217,4 @@ typedef NS_ENUM(NSUInteger, MPContentTab) {
} }
- (id)supplementalTargetForAction:(SEL)action sender:(id)sender {
for(NSViewController *childViewController in self.childViewControllers) {
if([childViewController respondsToSelector:action]) {
return childViewController;
}
else {
id target = [childViewController supplementalTargetForAction:action sender:sender];
if(!target) {
continue;
}
return target;
}
}
return [super supplementalTargetForAction:action sender:sender];
}
@end @end

View File

@@ -24,6 +24,7 @@
#import "MPSettingsHelper.h" #import "MPSettingsHelper.h"
#import "MPIconHelper.h" #import "MPIconHelper.h"
#import "MPAutotypeDoctor.h" #import "MPAutotypeDoctor.h"
#import "MPConstants.h"
#import "DDHotKeyCenter.h" #import "DDHotKeyCenter.h"
#import "DDHotKey+MacPassAdditions.h" #import "DDHotKey+MacPassAdditions.h"
@@ -82,13 +83,9 @@
} }
- (void)willShowTab { - (void)willShowTab {
if(!_hotKey) { _hotKey = [DDHotKey hotKeyWithKeyData:[NSUserDefaults.standardUserDefaults dataForKey:kMPSettingsKeyGlobalAutotypeKeyDataKey]];
_hotKey = [DDHotKey hotKeyWithKeyData:[NSUserDefaults.standardUserDefaults dataForKey:kMPSettingsKeyGlobalAutotypeKeyDataKey]]; /* Change any invalid hotkeys to valid ones? */
} self.hotKeyTextField.hotKey = self.hotKey;
/* 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 - #pragma mark -
@@ -133,4 +130,32 @@
- (void)runAutotypeDoctor:(id)sender { - (void)runAutotypeDoctor:(id)sender {
[MPAutotypeDoctor.defaultDoctor runChecksAndPresentResults]; [MPAutotypeDoctor.defaultDoctor runChecksAndPresentResults];
} }
#pragma mark -
#pragma mark Keychain Actions
- (IBAction)RenewTouchIdKey:(id)sender {
NSData* publicKeyTag = [TouchIdUnlockPublicKeyTag dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *publicKeyQuery = @{
(id)kSecClass: (id)kSecClassKey,
(id)kSecAttrApplicationTag: publicKeyTag,
(id)kSecReturnRef: @YES,
};
OSStatus status = SecItemDelete((__bridge CFDictionaryRef)publicKeyQuery);
if (status != errSecSuccess) {
NSString* description = (__bridge NSString*)SecCopyErrorMessageString(status, NULL);
NSLog(@"Error while trying to delete public key from Keychain: %@", description);
}
NSData* privateKeyTag = [TouchIdUnlockPrivateKeyTag dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *privateKeyQuery = @{
(id)kSecClass: (id)kSecClassKey,
(id)kSecAttrApplicationTag: privateKeyTag,
(id)kSecReturnRef: @YES,
};
status = SecItemDelete((__bridge CFDictionaryRef)privateKeyQuery);
if (status != errSecSuccess) {
NSString* description = (__bridge NSString*)SecCopyErrorMessageString(status, NULL);
NSLog(@"Error while trying to delete private key from Keychain: %@", description);
}
}
@end @end

View File

@@ -28,7 +28,12 @@ uint16_t const kMPUnknownKeyCode = UINT16_MAX;
- (MPModifiedKey)modifiedKeyValue { - (MPModifiedKey)modifiedKeyValue {
MPModifiedKey key; MPModifiedKey key;
[self getValue:&key size:sizeof(MPModifiedKey)]; if(@available(macOS 10.13, *)) {
[self getValue:&key size:sizeof(MPModifiedKey)];
}
else {
[self getValue:&key];
}
return key; return key;
} }

View File

@@ -1,18 +0,0 @@
//
// MPNodeExpirationViewController.h
// MacPass
//
// Created by Michael Starke on 22.10.21.
// Copyright © 2021 HicknHack Software GmbH. All rights reserved.
//
#import <Cocoa/Cocoa.h>
#import "MPInspectorEditor.h"
NS_ASSUME_NONNULL_BEGIN
@interface MPNodeExpirationViewController : NSViewController <MPTimeInfoInpspectorEditor>
@end
NS_ASSUME_NONNULL_END

View File

@@ -1,78 +0,0 @@
//
// MPNodeExpirationViewController.m
// MacPass
//
// Created by Michael Starke on 22.10.21.
// Copyright © 2021 HicknHack Software GmbH. All rights reserved.
//
#import "MPNodeExpirationViewController.h"
#import "MPInspectorViewController.h"
#import "MPValueTransformerHelper.h"
#import <KeePassKit/KeePassKit.h>
@interface MPNodeExpirationViewController ()
@property (strong) IBOutlet NSButton *expiredCheckButton;
@property (strong) IBOutlet NSButton *pickExpireDateButton;
@end
@implementation MPNodeExpirationViewController
@synthesize isEditor = _isEditor;
- (void)viewDidLoad {
[super viewDidLoad];
self.pickExpireDateButton.action = @selector(pickExpiryDate:);
[self _updateValues];
}
- (KPKTimeInfo *)representedTimeInfo {
if([self.representedObject isKindOfClass:KPKTimeInfo.class]) {
return self.representedObject;
}
return nil;
}
- (void)setRepresentedObject:(id)representedObject {
if(self.representedTimeInfo) {
[NSNotificationCenter.defaultCenter removeObserver:self name:KPKWillChangeTimeInfoNotification object:self.representedTimeInfo];
[NSNotificationCenter.defaultCenter removeObserver:self name:KPKDidChangeTimeInfoNotification object:self.representedTimeInfo];
}
super.representedObject = representedObject;
if(self.representedTimeInfo) {
[NSNotificationCenter.defaultCenter addObserver:self
selector:(@selector(_willChangeTimeInfo:))
name:KPKWillChangeTimeInfoNotification
object:self.representedTimeInfo];
[NSNotificationCenter.defaultCenter addObserver:self
selector:(@selector(_didChangeTimeInfo:))
name:KPKDidChangeTimeInfoNotification
object:self.representedTimeInfo];
}
[self _updateValues];
}
- (void)setIsEditor:(BOOL)isEditor {
[self _updateValues];
}
- (void)_updateValues {
self.view.hidden = !self.representedTimeInfo.expires;
self.expiredCheckButton.state = HNHUIStateForBool(self.representedTimeInfo.expires);
NSValueTransformer *dateTransformer = [NSValueTransformer valueTransformerForName:MPExpiryDateValueTransformerName];
self.expiredCheckButton.title = [dateTransformer transformedValue:self.representedTimeInfo.expirationDate];
self.expiredCheckButton.enabled = self.isEditor;
self.pickExpireDateButton.enabled = self.isEditor;
}
- (void)_willChangeTimeInfo:(NSNotification *)notification {}
- (void)_didChangeTimeInfo:(NSNotification *)notification {
[self _updateValues];
}
@end

View File

@@ -1,69 +0,0 @@
<?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="MPNodeExpirationViewController">
<connections>
<outlet property="expiredCheckButton" destination="HAQ-Wk-M7P" id="C1J-nJ-Cdz"/>
<outlet property="pickExpireDateButton" destination="G7C-WZ-ad7" id="zvU-TW-Mar"/>
<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="187" height="22"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews>
<stackView distribution="fill" orientation="horizontal" alignment="centerY" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" horizontalHuggingPriority="248" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="l8k-GC-FnL">
<rect key="frame" x="0.0" y="0.0" width="187" height="22"/>
<subviews>
<button horizontalHuggingPriority="249" horizontalCompressionResistancePriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="HAQ-Wk-M7P">
<rect key="frame" x="-2" y="2" width="150" height="18"/>
<buttonCell key="cell" type="check" title="Expires" bezelStyle="regularSquare" imagePosition="left" lineBreakMode="truncatingMiddle" state="on" inset="2" id="7kV-WE-lr3">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="G7C-WZ-ad7">
<rect key="frame" x="149" y="-6" 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="hgC-Qj-aTs">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="pickExpiryDate:" target="-1" id="EGg-Lx-7s5"/>
</connections>
</button>
</subviews>
<constraints>
<constraint firstAttribute="bottom" secondItem="G7C-WZ-ad7" secondAttribute="bottom" constant="1" id="62i-sg-sio"/>
<constraint firstItem="G7C-WZ-ad7" firstAttribute="top" secondItem="l8k-GC-FnL" secondAttribute="top" constant="1" id="QLH-zK-eyP"/>
</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="l8k-GC-FnL" secondAttribute="bottom" id="6uR-g8-FVH"/>
<constraint firstItem="l8k-GC-FnL" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" id="AuC-c3-JPv"/>
<constraint firstItem="l8k-GC-FnL" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="Qvv-5F-nde"/>
<constraint firstAttribute="trailing" secondItem="l8k-GC-FnL" secondAttribute="trailing" id="ckb-kh-R60"/>
</constraints>
<point key="canvasLocation" x="-91.5" y="-41"/>
</customView>
</objects>
<resources>
<image name="NSActionTemplate" width="15" height="15"/>
</resources>
</document>

View File

@@ -1,18 +0,0 @@
//
// MPNodeIconViewController.h
// MacPass
//
// Created by Michael Starke on 02.03.22.
// Copyright © 2022 HicknHack Software GmbH. All rights reserved.
//
#import <Cocoa/Cocoa.h>
#import "MPInspectorEditor.h"
NS_ASSUME_NONNULL_BEGIN
@interface MPNodeIconViewController : NSViewController <MPNodeInspectorEditor>
@end
NS_ASSUME_NONNULL_END

View File

@@ -1,56 +0,0 @@
//
// MPNodeIconViewController.m
// MacPass
//
// Created by Michael Starke on 02.03.22.
// Copyright © 2022 HicknHack Software GmbH. All rights reserved.
//
#import "MPNodeIconViewController.h"
#import <KeePassKit/KeePassKit.h>
#import "MPEntryInspectorViewController.h"
#import "KPKNode+IconImage.h"
@interface MPNodeIconViewController ()
@property (strong) IBOutlet NSButton *imageButton;
@property (strong) IBOutlet NSTextField *textField;
@property (copy) NSUUID *iconUUID;
@property NSUInteger iconId;
@end
@implementation MPNodeIconViewController
@synthesize isEditor = _isEditor;
- (void)viewDidLoad {
[super viewDidLoad];
//self.imageView.cell.backgroundStyle = NSBackgroundStyleRaised;
[self.imageButton bind:NSImageBinding
toObject:self
withKeyPath:[NSString stringWithFormat:@"%@.%@", NSStringFromSelector(@selector(representedObject)), NSStringFromSelector(@selector(iconImage))]
options:@{NSConditionallySetsEnabledBindingOption: @NO}];
[self.textField bind:NSValueBinding
toObject:self
withKeyPath:[NSString stringWithFormat:@"%@.%@", NSStringFromSelector(@selector(representedObject)), NSStringFromSelector(@selector(title))]
options:@{NSNullPlaceholderBindingOption:NSLocalizedString(@"NO_TITLE", @"Fallback to items with no title")}];
[self _updateValueAndEditing];
}
- (KPKNode *)representedNode {
if([self.representedObject isKindOfClass:KPKNode.class]) {
return (KPKNode *)self.representedObject;
}
return nil;
}
- (void)setIsEditor:(BOOL)isEditor {
_isEditor = isEditor;
[self _updateValueAndEditing];
}
- (void)_updateValueAndEditing {
self.imageButton.enabled = self.isEditor;
}
@end

View File

@@ -1,68 +0,0 @@
<?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="MPNodeIconViewController">
<connections>
<outlet property="imageButton" destination="EO8-71-AW8" id="kgk-Bm-Hwv"/>
<outlet property="textField" destination="xou-fD-adZ" id="n93-XV-5dq"/>
<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="495" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews>
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="xou-fD-adZ">
<rect key="frame" x="38" y="8" width="406" height="16"/>
<textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="aKF-2z-5ob">
<font key="font" metaFont="system"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="0HE-hi-9Hm">
<rect key="frame" x="443" y="-1" width="58" height="32"/>
<buttonCell key="cell" type="push" title="Edit" alternateTitle="Done" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="ueF-MQ-zDV">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="toggleEdit:" target="-1" id="cBO-qZ-fN3"/>
</connections>
</button>
<button translatesAutoresizingMaskIntoConstraints="NO" id="EO8-71-AW8">
<rect key="frame" x="0.0" y="0.0" width="32" height="32"/>
<constraints>
<constraint firstAttribute="height" constant="32" id="TEp-1p-b6O"/>
<constraint firstAttribute="width" constant="32" id="vue-ta-TCV"/>
</constraints>
<buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" imagePosition="only" alignment="center" imageScaling="proportionallyUpOrDown" inset="2" id="hbo-qV-oVP">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="pickIcon:" target="-1" id="8Ad-dS-w36"/>
</connections>
</button>
</subviews>
<constraints>
<constraint firstItem="0HE-hi-9Hm" firstAttribute="centerY" secondItem="Hz6-mo-xeY" secondAttribute="centerY" id="4rk-Ut-1ch"/>
<constraint firstItem="EO8-71-AW8" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" id="AxG-ML-ibN"/>
<constraint firstItem="xou-fD-adZ" firstAttribute="centerY" secondItem="Hz6-mo-xeY" secondAttribute="centerY" id="EYw-Zm-iiO"/>
<constraint firstItem="0HE-hi-9Hm" firstAttribute="leading" secondItem="xou-fD-adZ" secondAttribute="trailing" constant="8" symbolic="YES" id="J5A-t9-uim"/>
<constraint firstAttribute="trailing" secondItem="0HE-hi-9Hm" secondAttribute="trailing" constant="1" id="QL9-uh-tCj"/>
<constraint firstItem="xou-fD-adZ" firstAttribute="leading" secondItem="EO8-71-AW8" secondAttribute="trailing" constant="8" symbolic="YES" id="TFI-Xr-6JG"/>
<constraint firstItem="EO8-71-AW8" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="bYm-Dz-12l"/>
<constraint firstAttribute="bottom" secondItem="EO8-71-AW8" secondAttribute="bottom" id="uhZ-Es-YcW"/>
</constraints>
<point key="canvasLocation" x="231.5" y="-13.5"/>
</customView>
</objects>
</document>

View File

@@ -1,17 +0,0 @@
//
// MPNodeTagViewController.h
// MacPass
//
// Created by Michael Starke on 15.03.22.
// Copyright © 2022 HicknHack Software GmbH. All rights reserved.
//
#import <Cocoa/Cocoa.h>
NS_ASSUME_NONNULL_BEGIN
@interface MPNodeTagViewController : NSViewController
@end
NS_ASSUME_NONNULL_END

View File

@@ -1,22 +0,0 @@
//
// MPNodeTagViewController.m
// MacPass
//
// Created by Michael Starke on 15.03.22.
// Copyright © 2022 HicknHack Software GmbH. All rights reserved.
//
#import "MPNodeTagViewController.h"
@interface MPNodeTagViewController ()
@end
@implementation MPNodeTagViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do view setup here.
}
@end

View File

@@ -1,22 +0,0 @@
<?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="MPNodeTagViewController">
<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="140" y="147"/>
</customView>
</objects>
</document>

View File

@@ -34,7 +34,7 @@
} }
- (BOOL)getObjectValue:(out id __nullable * __nullable)obj forString:(NSString *)string errorDescription:(out NSString * __nullable * __nullable)error { - (BOOL)getObjectValue:(out id __nullable * __nullable)obj forString:(NSString *)string errorDescription:(out NSString * __nullable * __nullable)error {
/* If super can parse without an error, all is fine */ /* If super can pase without an error, all is fine */
if([super getObjectValue:obj forString:string errorDescription:error]) { if([super getObjectValue:obj forString:string errorDescription:error]) {
return YES; return YES;
} }

View File

@@ -1,23 +0,0 @@
//
// MPOpenURLHandler.h
// MacPass
//
// Created by Michael Starke on 11.11.21.
// Copyright © 2021 HicknHack Software GmbH. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface MPOpenURLHandler : NSObject
@property (class, strong, readonly) MPOpenURLHandler *sharedHandler;
- (instancetype)init NS_UNAVAILABLE;
- (void)openURL:(NSString *)url;
- (BOOL)supportsPrivateBrowsingForBundleId:(NSString *)bundleId;
@end
NS_ASSUME_NONNULL_END

View File

@@ -1,86 +0,0 @@
//
// MPOpenURLHandler.m
// MacPass
//
// Created by Michael Starke on 11.11.21.
// Copyright © 2021 HicknHack Software GmbH. All rights reserved.
//
#import "MPOpenURLHandler.h"
#import "MPSettingsHelper.h"
@implementation MPOpenURLHandler
static MPOpenURLHandler *_defaultInstance;
+ (MPOpenURLHandler *)sharedHandler {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_defaultInstance = [[MPOpenURLHandler alloc] _init];
});
return _defaultInstance;
}
- (instancetype)init {
return _defaultInstance;
}
- (NSArray<NSString *>*)privateBrowsingArgsForBundleId:(NSString *)bundleId {
static NSDictionary *privateBrowsingArgs;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
privateBrowsingArgs = @{ @"com.google.Chrome" : @[@"--incognito"] };
});
return privateBrowsingArgs[bundleId];
}
- (instancetype)_init {
NSAssert(_defaultInstance == nil, @"Multiple instances of MPLockDaemon not allowed!");
self = [super init];
return self;
}
- (void)openURL:(NSString *)url {
NSURL *webURL = [NSURL URLWithString:url];
NSString *scheme = webURL.scheme;
if(!scheme) {
webURL = [NSURL URLWithString:[NSString stringWithFormat:@"http://%@", url]];
}
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);
}
}
- (BOOL)supportsPrivateBrowsingForBundleId:(NSString *)bundleId {
return (nil != [self privateBrowsingArgsForBundleId:bundleId]);
}
- (NSArray<NSString *>*)_launchArgumentsForBrowserBundleID:(NSString *)bundleId {
BOOL usePrivateBrowsing = [NSUserDefaults.standardUserDefaults boolForKey:kMPSettingsKeyUsePrivateBrowsingWhenOpeningURLs];
NSMutableArray<NSString *> *args = [[NSMutableArray alloc] init];
if(usePrivateBrowsing) {
NSArray<NSString *>* privateArgs = [self privateBrowsingArgsForBundleId:bundleId];
if(privateArgs) {
[args addObjectsFromArray:privateArgs];
}
}
return [args copy];
}
@end

View File

@@ -225,7 +225,7 @@ NSString *const _MPOutlinveViewHeaderViewIdentifier = @"HeaderCell";
#pragma mark Notifications #pragma mark Notifications
- (void)registerNotificationsForDocument:(MPDocument *)document { - (void)registerNotificationsForDocument:(MPDocument *)document {
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didAddGroup:) name:MPDocumentDidAddGroupNotification object:document]; [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didAddGroup:) name:MPDocumentDidAddGroupNotification object:document];
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didRevertDocument:) name:MPDocumentDidRevertNotification object:document]; [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didRevertDocument:) name:MPDocumentDidRevertNotification object:document];
} }
- (void)clearSelection { - (void)clearSelection {

View File

@@ -150,39 +150,10 @@ typedef NS_ENUM(NSUInteger, MPPasswordEditKeyError) {
- (IBAction)generateKey:(id)sender { - (IBAction)generateKey:(id)sender {
MPDocument *document = self.document; MPDocument *document = self.document;
KPKFileVersion fileVersion = document.tree.minimumVersion; NSData *data = [NSData kpk_generateKeyfileDataForFormat:document.tree.minimumVersion.format];
NSArray *fileTypes = @[];
KPKKeyFileType keyFileType;
if(fileVersion.format == KPKDatabaseFormatUnknown) {
return;
}
else if(fileVersion.format == KPKDatabaseFormatKdb) {
fileTypes = @[@"key"];
keyFileType = KPKKeyFileTypeBinary;
}
else {
if(fileVersion.version <= kKPKKdbxFileVersion3) {
keyFileType = KPKKeyFileTypeXMLVersion1;
fileTypes = @[@"key"];
}
// else if(fileVersion.version <=kKPKKdbxFileVersion4) {
// keyFileType = KPKKeyFileTypeXMLVersion1;
// fileTypes = @[@"key"];
// }
else if(fileVersion.version <= kKPKKdbxFileVersion4_1) {
keyFileType = KPKKeyFileTypeXMLVersion2;
fileTypes = @[@"keyx"];
}
else {
return;
}
}
NSData *data = [NSData kpk_generateKeyfileDataOfType:keyFileType];
if(data) { if(data) {
NSSavePanel *savePanel = [NSSavePanel savePanel]; NSSavePanel *savePanel = [NSSavePanel savePanel];
savePanel.allowedFileTypes = fileTypes; savePanel.allowedFileTypes = @[@"key", @"xml"];
savePanel.canCreateDirectories = YES; savePanel.canCreateDirectories = YES;
savePanel.title = NSLocalizedString(@"SAVE_KEYFILE", "Button title to save the generated key file"); savePanel.title = NSLocalizedString(@"SAVE_KEYFILE", "Button title to save the generated key file");
[savePanel beginWithCompletionHandler:^(NSInteger result) { [savePanel beginWithCompletionHandler:^(NSInteger result) {

View File

@@ -21,14 +21,14 @@
// //
#import "MPViewController.h" #import "MPViewController.h"
#import "KeePassKit/KeePassKit.h"
@class KPKCompositeKey; @class KPKCompositeKey;
@interface MPPasswordInputController : MPViewController <NSTouchBarDelegate> @interface MPPasswordInputController : MPViewController <NSTouchBarDelegate>
typedef BOOL (^passwordInputCompletionBlock)(NSString *password, NSURL *keyURL, BOOL didCancel, NSError *__autoreleasing*error); typedef BOOL (^passwordInputCompletionBlock)(KPKCompositeKey *key, NSURL* keyFileURL, BOOL didCancel, NSError *__autoreleasing*error);
- (void)requestPasswordWithCompletionHandler:(passwordInputCompletionBlock)completionHandler;
- (void)requestPasswordWithMessage:(NSString *)message cancelLabel:(NSString *)cancelLabel completionHandler:(passwordInputCompletionBlock)completionHandler; - (void)requestPasswordWithMessage:(NSString *)message cancelLabel:(NSString *)cancelLabel completionHandler:(passwordInputCompletionBlock)completionHandler;

View File

@@ -27,6 +27,9 @@
#import "MPSettingsHelper.h" #import "MPSettingsHelper.h"
#import "MPPathControl.h" #import "MPPathControl.h"
#import "MPTouchBarButtonCreator.h" #import "MPTouchBarButtonCreator.h"
#import "MPSettingsHelper.h"
#import "MPConstants.h"
#import "MPTouchIdCompositeKeyStore.h"
#import "HNHUi/HNHUi.h" #import "HNHUi/HNHUi.h"
@@ -44,6 +47,8 @@
@property (weak) IBOutlet NSButton *enablePasswordCheckBox; @property (weak) IBOutlet NSButton *enablePasswordCheckBox;
@property (weak) IBOutlet NSButton *unlockButton; @property (weak) IBOutlet NSButton *unlockButton;
@property (weak) IBOutlet NSButton *cancelButton; @property (weak) IBOutlet NSButton *cancelButton;
@property (weak) IBOutlet NSButton *touchIdButton;
@property (weak) IBOutlet NSButton *touchIdEnabledButton;
@property (copy) NSString *message; @property (copy) NSString *message;
@property (copy) NSString *cancelLabel; @property (copy) NSString *cancelLabel;
@@ -81,6 +86,13 @@
[self.enablePasswordCheckBox bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(enablePassword)) options:nil]; [self.enablePasswordCheckBox bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(enablePassword)) options:nil];
[self.togglePasswordButton bind:NSEnabledBinding toObject:self withKeyPath:NSStringFromSelector(@selector(enablePassword)) options:nil]; [self.togglePasswordButton bind:NSEnabledBinding toObject:self withKeyPath:NSStringFromSelector(@selector(enablePassword)) options:nil];
[self.passwordTextField bind:NSEnabledBinding toObject:self withKeyPath:NSStringFromSelector(@selector(enablePassword)) options:nil]; [self.passwordTextField bind:NSEnabledBinding toObject:self withKeyPath:NSStringFromSelector(@selector(enablePassword)) options:nil];
NSUserDefaultsController *defaultsController = [NSUserDefaultsController sharedUserDefaultsController];
[self.touchIdEnabledButton bind:NSValueBinding toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyEntryTouchIdEnabled] options:nil];
self.touchIdEnabledButton.hidden = true;
if (@available(macOS 10.13.4, *)) {
self.touchIdEnabledButton.hidden = false;
[self _touchIdUpdateToolTip];
}
[self _reset]; [self _reset];
} }
@@ -95,10 +107,6 @@
[self _reset]; [self _reset];
} }
- (void)requestPasswordWithCompletionHandler:(passwordInputCompletionBlock)completionHandler {
[self requestPasswordWithMessage:nil cancelLabel:nil completionHandler:completionHandler];
}
#pragma mark Properties #pragma mark Properties
- (void)setEnablePassword:(BOOL)enablePassword { - (void)setEnablePassword:(BOOL)enablePassword {
if(_enablePassword != enablePassword) { if(_enablePassword != enablePassword) {
@@ -127,8 +135,24 @@
NSString *password = self.enablePassword ? self.passwordTextField.stringValue : nil; NSString *password = self.enablePassword ? self.passwordTextField.stringValue : nil;
BOOL cancel = (sender == self.cancelButton); BOOL cancel = (sender == self.cancelButton);
BOOL result = self.completionHandler(password, self.keyPathControl.URL, cancel, &error); NSURL* keyURL = self.keyPathControl.URL;
if(cancel || result) { NSData *keyFileData = keyURL ? [NSData dataWithContentsOfURL:keyURL] : nil;
KPKKey* passwordKey = [KPKKey keyWithPassword:password];
KPKKey* fileKey = [KPKKey keyWithKeyFileData:keyFileData];
KPKCompositeKey* compositeKey = [[KPKCompositeKey alloc] init];
[compositeKey addKey:passwordKey];
[compositeKey addKey:fileKey];
/* After the completion handler finished we no longer have a windowController set */
NSString* documentKey = NULL;
bool documentKeyValid = [self _touchIdGetKeyForCurrentDocument:&documentKey];
BOOL result = self.completionHandler(compositeKey, keyURL, cancel, &error);
if(result) {
if(documentKeyValid) {
[self _touchIdUpdateKeyForCurrentDocument:compositeKey forDocumentKey:documentKey];
}
return;
}
if(cancel) {
return; return;
} }
[self _showError:error]; [self _showError:error];
@@ -138,6 +162,203 @@
} }
} }
- (void) _touchIdUpdateKeyForCurrentDocument: (KPKCompositeKey*)compositeKey forDocumentKey: (NSString*) documentKey{
NSData* encryptedKey = [self _touchIdEncryptCompositeKey:compositeKey];
[MPTouchIdCompositeKeyStore.defaultStore save:encryptedKey forDocumentKey:documentKey];
}
- (void) _touchIdCreateAndAddRSAKeyPair {
CFErrorRef error = NULL;
NSString* publicKeyLabel = @"MacPass TouchID Feature Public Key";
NSString* privateKeyLabel = @"MacPass TouchID Feature Private Key";
NSData* publicKeyTag = [TouchIdUnlockPublicKeyTag dataUsingEncoding:NSUTF8StringEncoding];
NSData* privateKeyTag = [TouchIdUnlockPrivateKeyTag dataUsingEncoding:NSUTF8StringEncoding];
SecAccessControlRef access = NULL;
if (@available(macOS 10.13.4, *)) {
SecAccessControlCreateFlags flags = kSecAccessControlBiometryCurrentSet;
if (@available(macOS 10.15, *)) {
flags |= kSecAccessControlWatch | kSecAccessControlOr;
}
access = SecAccessControlCreateWithFlags(kCFAllocatorDefault,
kSecAttrAccessibleWhenUnlockedThisDeviceOnly,
flags,
&error);
if(access == NULL) {
NSError *err = CFBridgingRelease(error);
NSLog(@"Error while trying to create AccessControl for TouchID unlock feature: %@", [err description]);
return;
}
NSDictionary* attributes = @{
(id)kSecAttrKeyType: (id)kSecAttrKeyTypeRSA,
(id)kSecAttrKeySizeInBits: @2048,
(id)kSecAttrSynchronizable: @NO,
(id)kSecPrivateKeyAttrs:
@{ (id)kSecAttrIsPermanent: @YES,
(id)kSecAttrApplicationTag: privateKeyTag,
(id)kSecAttrLabel: privateKeyLabel,
(id)kSecAttrAccessControl: (__bridge id)access
},
(id)kSecPublicKeyAttrs:
@{ (id)kSecAttrIsPermanent: @YES,
(id)kSecAttrApplicationTag: publicKeyTag,
(id)kSecAttrLabel: publicKeyLabel,
},
};
SecKeyRef result = SecKeyCreateRandomKey((__bridge CFDictionaryRef)attributes, &error);
if(result == NULL) {
NSError *err = CFBridgingRelease(error);
NSLog(@"Error while trying to create a RSA keypair for TouchID unlock feature: %@", [err description]);
}
else {
CFRelease(result);
}
}
else {
return;
}
}
- (NSData*) _touchIdEncryptCompositeKey: (KPKCompositeKey*) compositeKey {
NSData* encryptedKey = nil;
NSData* keyData = [NSKeyedArchiver archivedDataWithRootObject:compositeKey];
NSData* tag = [TouchIdUnlockPublicKeyTag dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *getquery = @{
(id)kSecClass: (id)kSecClassKey,
(id)kSecAttrApplicationTag: tag,
(id)kSecReturnRef: @YES,
};
SecKeyRef publicKey = NULL;
OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)getquery, (CFTypeRef *)&publicKey);
if (status != errSecSuccess) {
[self _touchIdCreateAndAddRSAKeyPair];
OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)getquery, (CFTypeRef *)&publicKey);
if (status != errSecSuccess) {
NSString* description = (__bridge NSString*)SecCopyErrorMessageString(status, NULL);
NSLog(@"Error while trying to query public key from Keychain: %@", description);
return nil;
}
}
SecKeyAlgorithm algorithm = kSecKeyAlgorithmRSAEncryptionOAEPSHA256AESGCM;
BOOL canEncrypt = SecKeyIsAlgorithmSupported(publicKey, kSecKeyOperationTypeEncrypt, algorithm);
if(canEncrypt) {
CFErrorRef error = NULL;
encryptedKey = (NSData*)CFBridgingRelease(SecKeyCreateEncryptedData(publicKey, algorithm, (__bridge CFDataRef)keyData, &error));
if (!encryptedKey) {
NSError *err = CFBridgingRelease(error);
NSLog(@"Error while trying to decrypt the CompositeKey for TouchID unlock: %@", [err description]);
}
}
else {
NSLog(@"The key retreived from the Keychain is unable to encrypt data");
}
if (publicKey) {
CFRelease(publicKey);
}
return encryptedKey;
}
- (KPKCompositeKey*) _touchIdDecryptCompositeKey: (NSData*) encryptedKey {
KPKCompositeKey* result = nil;
if(encryptedKey != nil) {
NSData* tag = [TouchIdUnlockPrivateKeyTag dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *queryPrivateKey = @{
(id)kSecClass: (id)kSecClassKey,
(id)kSecAttrApplicationTag: tag,
(id)kSecAttrKeyType: (id)kSecAttrKeyTypeRSA,
(id)kSecReturnRef: @YES,
};
SecKeyRef privateKey = NULL;
OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)queryPrivateKey, (CFTypeRef *)&privateKey);
if (status == errSecSuccess) {
SecKeyAlgorithm algorithm = kSecKeyAlgorithmRSAEncryptionOAEPSHA256AESGCM;
BOOL canDecrypt = SecKeyIsAlgorithmSupported(privateKey, kSecKeyOperationTypeDecrypt, algorithm);
if(canDecrypt) {
CFErrorRef error = NULL;
NSData* clearText = (NSData*)CFBridgingRelease(SecKeyCreateDecryptedData(privateKey, algorithm, (__bridge CFDataRef)encryptedKey, &error));
if (clearText) {
result = [NSKeyedUnarchiver unarchiveObjectWithData:clearText];
}
else {
NSError *err = CFBridgingRelease(error);
NSLog(@"Error while trying to decrypt password for TouchID unlock: %@", [err description]);
}
}
else {
NSLog(@"Key does not support decryption");
}
}
else {
NSString* description = (__bridge NSString*)SecCopyErrorMessageString(status, NULL);
NSLog(@"Error while trying to retrive private key for decryption: %@", description);
}
if (privateKey) {
CFRelease(privateKey);
}
}
return result;
}
- (bool) _touchIdGetKeyForCurrentDocument: (NSString**) result {
*result = NULL;
NSDocument* currentDocument = self.windowController.document;
if(currentDocument != NULL && currentDocument.fileURL != NULL && currentDocument.fileURL.lastPathComponent != NULL) {
*result = [NSString stringWithFormat:kMPSettingsKeyEntryTouchIdDatabaseEncryptedKeyFormat, currentDocument.fileURL.lastPathComponent];
return true;
}
return false;
}
- (bool) _touchIdIsUnlockAvailable {
NSData* unused = NULL;
bool encryptedKeyAvailableForDocument = [self _touchIdGetEncrypedKeyMaterial:&unused];
return encryptedKeyAvailableForDocument;
}
- (bool) _touchIdGetEncrypedKeyMaterial: (NSData**) result {
NSString* documentKey = NULL;
*result = NULL;
if(![self _touchIdGetKeyForCurrentDocument:&documentKey]) {
return false;
}
return [MPTouchIdCompositeKeyStore.defaultStore load:result forDocumentKey:documentKey];
}
- (IBAction)unlockWithTouchID:(id)sender {
NSData* encryptedKey = NULL;
if(![self _touchIdGetEncrypedKeyMaterial:&encryptedKey]) {
[self.touchIdButton setEnabled:false];
return;
}
KPKCompositeKey* compositeKey = [self _touchIdDecryptCompositeKey:encryptedKey];
if(compositeKey == NULL) {
[self.touchIdButton setEnabled:false];
return;
}
NSError* error;
bool success = self.completionHandler(compositeKey, NULL, false, &error);
if(success) {
return;
}
[self.touchIdButton setEnabled:false];
[self _showError:error];
}
- (IBAction)touchIdEnabledChanged:(id)sender {
[self _touchIdUpdateToolTip];
}
- (void) _touchIdUpdateToolTip {
switch(self.touchIdEnabledButton.state) {
case NSControlStateValueOn:
self.touchIdEnabledButton.toolTip = NSLocalizedString(@"TOOLTIP_TOUCHID_ENABELD", @"Tooltip displayed when TouchID is is fully enabeld");
case NSControlStateValueOff:
self.touchIdEnabledButton.toolTip = NSLocalizedString(@"TOOLTIP_TOUCHID_DISABLED", @"Tooltip displayed when TouchID is disabled");
case NSControlStateValueMixed:
default:
self.touchIdEnabledButton.toolTip = NSLocalizedString(@"TOOLTIP_TOUCHID_TRANSIENT", @"Tooltip displayed when TouchID is in transient (inmemory) mode");
}
}
- (IBAction)resetKeyFile:(id)sender { - (IBAction)resetKeyFile:(id)sender {
/* If the reset was triggered by ourselves we want to preselect the keyfile */ /* If the reset was triggered by ourselves we want to preselect the keyfile */
if(sender == self) { if(sender == self) {
@@ -153,6 +374,9 @@
self.enablePassword = YES; self.enablePassword = YES;
self.passwordTextField.stringValue = @""; self.passwordTextField.stringValue = @"";
self.messageInfoTextField.hidden = (nil == self.message); self.messageInfoTextField.hidden = (nil == self.message);
self.touchIdButton.hidden = ![self _touchIdIsUnlockAvailable];
[self.touchIdButton setEnabled:true];
if(self.message) { if(self.message) {
self.messageInfoTextField.stringValue = self.message; self.messageInfoTextField.stringValue = self.message;
self.messageImageView.image = [NSImage imageNamed:NSImageNameInfo]; self.messageImageView.image = [NSImage imageNamed:NSImageNameInfo];
@@ -236,5 +460,4 @@
} }
} }
@end @end

View File

@@ -22,8 +22,6 @@
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
typedef NS_ENUM(NSUInteger, MPPasteboardOverlayInfoType) { typedef NS_ENUM(NSUInteger, MPPasteboardOverlayInfoType) {
MPPasteboardOverlayInfoPassword, MPPasteboardOverlayInfoPassword,
MPPasteboardOverlayInfoUsername, MPPasteboardOverlayInfoUsername,
@@ -32,22 +30,6 @@ typedef NS_ENUM(NSUInteger, MPPasteboardOverlayInfoType) {
MPPasteboardOverlayInfoReference // overlay info that a reference that was copied MPPasteboardOverlayInfoReference // overlay info that a reference that was copied
}; };
typedef MPPasteboardOverlayInfoType MPPasteboardContentInfoType;
@interface MPPasteBoardContentInfo : NSObject
@property (readonly, strong) NSImage *image;
@property (readonly, strong) NSString *label;
+ (instancetype)contentInforForCustomField:(NSString *)name;
+ (instancetype)passwordContentInfo; // creates a content info approporate for passwords
+ (instancetype)urlContentInfo; // creates a content info apprpriate for urls
- (instancetype)initWithImage:(NSImage * _Nullable)image label:(NSString * _Nullable)label NS_DESIGNATED_INITIALIZER;
- (instancetype)initWithType:(MPPasteboardContentInfoType)type;
@end
@interface MPPasteBoardController : NSObject @interface MPPasteBoardController : NSObject
/** /**
@@ -88,9 +70,6 @@ FOUNDATION_EXPORT NSString *const MPPasteBoardControllerDidClearClipboard;
@param name a custom name @param name a custom name
@param view the view that initiated the copy action @param view the view that initiated the copy action
*/ */
- (void)copyObject:(id<NSPasteboardWriting>)object overlayInfo:(MPPasteboardOverlayInfoType)overlayInfoType name:(NSString * _Nullable)name atView:(NSView *)view; - (void)copyObject:(id<NSPasteboardWriting>)object overlayInfo:(MPPasteboardOverlayInfoType)overlayInfoType name:(NSString *)name atView:(NSView *)view;
- (void)copyObject:(id<NSPasteboardWriting>)object contentInfo:(MPPasteBoardContentInfo *)info atView:(NSView *)view;
@end @end
NS_ASSUME_NONNULL_END

View File

@@ -22,7 +22,6 @@
#import "MPPasteBoardController.h" #import "MPPasteBoardController.h"
#import "MPSettingsHelper.h" #import "MPSettingsHelper.h"
#import "MPIconHelper.h"
#import "MPOverlayWindowController.h" #import "MPOverlayWindowController.h"
/* Notifications */ /* Notifications */
@@ -127,10 +126,6 @@ NSString *const MPPasteBoardTypeSource = @"org.nspasteboard.source";
self.isEmpty = NO; self.isEmpty = NO;
} }
- (void)copyObject:(id<NSPasteboardWriting>)object contentInfo:(MPPasteBoardContentInfo *)info atView:(nonnull NSView *)view{
[self copyObject:object overlayInfo:MPPasteboardOverlayInfoCustom name:info.label atView:view];
}
- (void)copyObject:(id<NSPasteboardWriting>)object overlayInfo:(MPPasteboardOverlayInfoType)overlayInfoType name:(NSString *)name atView:(NSView *)view{ - (void)copyObject:(id<NSPasteboardWriting>)object overlayInfo:(MPPasteboardOverlayInfoType)overlayInfoType name:(NSString *)name atView:(NSView *)view{
if(!object) { if(!object) {
return; return;
@@ -140,27 +135,27 @@ NSString *const MPPasteBoardTypeSource = @"org.nspasteboard.source";
NSString *infoText = nil; NSString *infoText = nil;
switch(overlayInfoType) { switch(overlayInfoType) {
case MPPasteboardOverlayInfoPassword: case MPPasteboardOverlayInfoPassword:
infoImage = [MPIconHelper icon:MPIconPassword]; infoImage = [NSBundle.mainBundle imageForResource:@"00_PasswordTemplate"];
infoText = NSLocalizedString(@"COPIED_PASSWORD", @"Password was copied to the pasteboard"); infoText = NSLocalizedString(@"COPIED_PASSWORD", @"Password was copied to the pasteboard");
break; break;
case MPPasteboardOverlayInfoURL: case MPPasteboardOverlayInfoURL:
infoImage = [MPIconHelper icon:MPIconPackageNetwork]; infoImage = [NSBundle.mainBundle imageForResource:@"01_PackageNetworkTemplate"];
infoText = NSLocalizedString(@"COPIED_URL", @"URL was copied to the pasteboard"); infoText = NSLocalizedString(@"COPIED_URL", @"URL was copied to the pasteboard");
break; break;
case MPPasteboardOverlayInfoUsername: case MPPasteboardOverlayInfoUsername:
infoImage = [MPIconHelper icon:MPIconIdentity]; infoImage = [NSBundle.mainBundle imageForResource:@"09_IdentityTemplate"];
infoText = NSLocalizedString(@"COPIED_USERNAME", @"Username was copied to the pasteboard"); infoText = NSLocalizedString(@"COPIED_USERNAME", @"Username was copied to the pasteboard");
break; break;
case MPPasteboardOverlayInfoCustom: case MPPasteboardOverlayInfoCustom:
infoImage = [MPIconHelper icon:MPIconPassword]; infoImage = [NSBundle.mainBundle imageForResource:@"00_PasswordTemplate"];
infoText = [NSString stringWithFormat:NSLocalizedString(@"COPIED_FIELD_%@", "Field name that was copied to the pasteboard"), name]; infoText = [NSString stringWithFormat:NSLocalizedString(@"COPIED_FIELD_%@", "Field name that was copied to the pasteboard"), name];
break; break;
case MPPasteboardOverlayInfoReference: case MPPasteboardOverlayInfoReference:
infoImage = [MPIconHelper icon:MPIconKlipper]; infoImage = [NSBundle.mainBundle imageForResource:@"04_KlipperTemplate"];
infoText = name; infoText = name;
break; break;

View File

@@ -41,7 +41,7 @@ NSString *const MPPathControlDidSetURLNotification = @"MPPathControlDidSetURLNot
- (instancetype)initWithCoder:(NSCoder *)coder { - (instancetype)initWithCoder:(NSCoder *)coder {
/* FIXME: this doesn't work well anymore. Need more work, see: https://www.mikeash.com/pyblog/custom-nscells-done-right.html */ /* FIXME: this doesn't work well anymore. Need more work, see: https://www.mikeash.com/pyblog/custom-nscells-done-right.html */
self = [super initWithCoder:coder]; self = [super initWithCoder:coder];
self.delegate = self; self.delegate = self;
[self _setupCell]; [self _setupCell];
return self; return self;
} }
@@ -68,24 +68,11 @@ NSString *const MPPathControlDidSetURLNotification = @"MPPathControlDidSetURLNot
if([self.delegate respondsToSelector:@selector(pathControl:willDisplayOpenPanel:)]) { if([self.delegate respondsToSelector:@selector(pathControl:willDisplayOpenPanel:)]) {
[self.delegate pathControl:self willDisplayOpenPanel:panel]; [self.delegate pathControl:self willDisplayOpenPanel:panel];
} }
// fall back to modal sheet when browsing Versions. Otherwise we would get kicked out of the TimeMachien UI [panel beginWithCompletionHandler:^(NSModalResponse result) {
// #1206 See Unable to use Time Machine function when have a KeyFile if(result == NSModalResponseOK) {
// Setting NSDocumentRevisionsDebugMode=1 will prevent TimeMachien from exiting even when the openPanel is not shown as sheet self.URL = panel.URLs.firstObject;
NSDocument *document = self.window.windowController.document; }
if(document.isInViewingMode) { }];
[panel beginSheetModalForWindow:self.window completionHandler:^(NSModalResponse result) {
if(result == NSModalResponseOK) {
self.URL = panel.URLs.firstObject;
}
}];
}
else {
[panel beginWithCompletionHandler:^(NSModalResponse result) {
if(result == NSModalResponseOK) {
self.URL = panel.URLs.firstObject;
}
}];
}
} }
- (void)pathControl:(NSPathControl *)pathControl willDisplayOpenPanel:(NSOpenPanel *)openPanel { - (void)pathControl:(NSPathControl *)pathControl willDisplayOpenPanel:(NSOpenPanel *)openPanel {

View File

@@ -49,7 +49,7 @@ FOUNDATION_EXPORT NSString *const MPPluginDescriptionInfoDictionaryKey;
@param host plugin host hosting the pluing - MacPass @param host plugin host hosting the pluing - MacPass
@return the plugin instance ready for use @return the plugin instance ready for use
*/ */
- (instancetype)initWithPluginHost:(MPPluginHost *)host NS_DESIGNATED_INITIALIZER NS_REQUIRES_SUPER; - (instancetype)initWithPluginHost:(MPPluginHost *)host NS_DESIGNATED_INITIALIZER;
- (instancetype)init NS_UNAVAILABLE; - (instancetype)init NS_UNAVAILABLE;
- (void)didLoadPlugin; - (void)didLoadPlugin;
@@ -81,6 +81,7 @@ FOUNDATION_EXPORT NSString *const MPPluginDescriptionInfoDictionaryKey;
- (NSString *)windowTitleForRunningApplication:(NSRunningApplication *)runningApplication; - (NSString *)windowTitleForRunningApplication:(NSRunningApplication *)runningApplication;
@end @end
#pragma mark Proposed Plugin Protocolls #pragma mark Proposed Plugin Protocolls
/* /*

View File

@@ -1,17 +0,0 @@
//
// MPSecurityDatabaseSettingsViewController.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 MPSecurityDatabaseSettingsViewController : NSViewController
@end
NS_ASSUME_NONNULL_END

View File

@@ -1,22 +0,0 @@
//
// MPSecurityDatabaseSettingsViewController.m
// MacPass
//
// Created by Michael Starke on 18.11.21.
// Copyright © 2021 HicknHack Software GmbH. All rights reserved.
//
#import "MPSecurityDatabaseSettingsViewController.h"
@interface MPSecurityDatabaseSettingsViewController ()
@end
@implementation MPSecurityDatabaseSettingsViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do view setup here.
}
@end

View File

@@ -1,19 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11134" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11134"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="MPSecurityDatabaseSettingsViewController">
<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"/>
</customView>
</objects>
</document>

Some files were not shown because too many files have changed in this diff Show More