mirror of
https://github.com/MacPass/MacPass.git
synced 2026-01-30 21:38:19 +00:00
Compare commits
350 Commits
0.7.10
...
feature/ed
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
72718274b0 | ||
|
|
200e4e259a | ||
|
|
217d1adca9 | ||
|
|
14b9fd8d8f | ||
|
|
36ad08ba25 | ||
|
|
9bb1d3e38c | ||
|
|
5547aad7c3 | ||
|
|
d746fdd5c8 | ||
|
|
ae59557407 | ||
|
|
7b24e4cbde | ||
|
|
ce24b1b57c | ||
|
|
7113b9f355 | ||
|
|
401d0d1b2f | ||
|
|
cea10e83b1 | ||
|
|
0572431a51 | ||
|
|
0be721aec8 | ||
|
|
7eca854b8d | ||
|
|
f761eb7c13 | ||
|
|
a790103cd2 | ||
|
|
101cf7f6bd | ||
|
|
8be69ca779 | ||
|
|
e985d23fa5 | ||
|
|
b690d6051e | ||
|
|
fe7b4e2746 | ||
|
|
5b211bb519 | ||
|
|
0a6ba80f01 | ||
|
|
43e667a157 | ||
|
|
2956a2e7c1 | ||
|
|
af960b0b38 | ||
|
|
c1155bd061 | ||
|
|
9c9f6f0bf5 | ||
|
|
66ad8cee17 | ||
|
|
7376a5c887 | ||
|
|
4bf130232f | ||
|
|
89268ef88e | ||
|
|
59c37e696f | ||
|
|
e2d6a7ddad | ||
|
|
e6a7992084 | ||
|
|
ca31d4638f | ||
|
|
a40049a425 | ||
|
|
2ec0945a51 | ||
|
|
fccc0921b7 | ||
|
|
1e78d3b0ae | ||
|
|
4f2888b759 | ||
|
|
9d032dcbf4 | ||
|
|
07fba98d64 | ||
|
|
95184ed2ec | ||
|
|
5d4d0a626b | ||
|
|
bb38973fa7 | ||
|
|
dc4cbc6777 | ||
|
|
12406bf10f | ||
|
|
096fdc4384 | ||
|
|
29d349a0a0 | ||
|
|
7c9c75e103 | ||
|
|
7198b0cbf7 | ||
|
|
6b7fdc081b | ||
|
|
43bc4d7ae1 | ||
|
|
31b062423a | ||
|
|
6dcd03f6f2 | ||
|
|
eedc804558 | ||
|
|
65f2582e3c | ||
|
|
2e46d7c121 | ||
|
|
59b28b4872 | ||
|
|
d1e99c6bc7 | ||
|
|
2181898acd | ||
|
|
466ca92757 | ||
|
|
3ea8937d11 | ||
|
|
cc0a855712 | ||
|
|
3ea790eeb3 | ||
|
|
f1bf8ab9f6 | ||
|
|
1ee3bc13be | ||
|
|
05d4381045 | ||
|
|
fb27d330d6 | ||
|
|
d83332a92d | ||
|
|
299b48870d | ||
|
|
fc186aaf2c | ||
|
|
98730e7f24 | ||
|
|
8d5006ba34 | ||
|
|
1873032d3c | ||
|
|
3cf0e5644e | ||
|
|
8b9c998ec7 | ||
|
|
f0e530bda5 | ||
|
|
a34c0eed4e | ||
|
|
83f8158b21 | ||
|
|
f28bcb527a | ||
|
|
6cd443278f | ||
|
|
ea2796dd28 | ||
|
|
0b681f8d40 | ||
|
|
d4fc747d72 | ||
|
|
33a4188bba | ||
|
|
16be427a92 | ||
|
|
48fc70018e | ||
|
|
adcf77f1d7 | ||
|
|
32b31a3ea8 | ||
|
|
f1d0d410f1 | ||
|
|
af63b0ec4d | ||
|
|
85e55626b0 | ||
|
|
3c4eac6707 | ||
|
|
84f35d6005 | ||
|
|
9e14e8301d | ||
|
|
1b04e5cfa2 | ||
|
|
8884e61e10 | ||
|
|
781234ef8c | ||
|
|
08a49121b0 | ||
|
|
92592a8049 | ||
|
|
5b6483fdab | ||
|
|
3b4d05f676 | ||
|
|
7d5edd1c98 | ||
|
|
5652abfb1e | ||
|
|
b478b47d3d | ||
|
|
8cc4c2717a | ||
|
|
f3815f7fa4 | ||
|
|
93f6a62bb5 | ||
|
|
174d9c2650 | ||
|
|
0b240d3ade | ||
|
|
b30279e42e | ||
|
|
ef896468bb | ||
|
|
b3ad2df29e | ||
|
|
3cfbbb1f16 | ||
|
|
4addd907d4 | ||
|
|
7ef88b7e88 | ||
|
|
b19a79095a | ||
|
|
cc982f2395 | ||
|
|
fa1094632e | ||
|
|
d0f8c3eafb | ||
|
|
51f3d6627f | ||
|
|
c50598b8a0 | ||
|
|
e7a5eab982 | ||
|
|
5e10d3712e | ||
|
|
04b8e221cb | ||
|
|
059c794b9b | ||
|
|
0078fae707 | ||
|
|
76906972f2 | ||
|
|
98bb204a2f | ||
|
|
fa08e22cf3 | ||
|
|
5457d4dde0 | ||
|
|
e4fadce3d0 | ||
|
|
ea9f41bfef | ||
|
|
e27526b399 | ||
|
|
b58d5179a2 | ||
|
|
399cf44d45 | ||
|
|
797733130f | ||
|
|
bb3df31d4f | ||
|
|
e3b3014084 | ||
|
|
8496ae20cf | ||
|
|
58399d66be | ||
|
|
95da40de44 | ||
|
|
df7b68b019 | ||
|
|
21b0e4c0f2 | ||
|
|
57601798bd | ||
|
|
de0319abae | ||
|
|
fd88b2c506 | ||
|
|
b6df969bf4 | ||
|
|
62032cd7d0 | ||
|
|
8c017e65c2 | ||
|
|
15dce5f0b6 | ||
|
|
d22750fefc | ||
|
|
f25db6b418 | ||
|
|
f010ec057d | ||
|
|
57c3d558f3 | ||
|
|
90093850f9 | ||
|
|
6bd6c65dfa | ||
|
|
ac20664b7a | ||
|
|
7a4d80fd47 | ||
|
|
06413b26df | ||
|
|
53ae6dca84 | ||
|
|
4fabee0213 | ||
|
|
90a0aef2cc | ||
|
|
9fe9c6a41d | ||
|
|
68ccb8e1ad | ||
|
|
acd2e1bc0f | ||
|
|
18e2115119 | ||
|
|
d466c6d026 | ||
|
|
a58766146f | ||
|
|
dc31a81d48 | ||
|
|
48491c0712 | ||
|
|
b98b5635d5 | ||
|
|
fa85da3f82 | ||
|
|
bb73628484 | ||
|
|
baaf10d6f3 | ||
|
|
4caea9080e | ||
|
|
1e43e608ed | ||
|
|
b04c252a69 | ||
|
|
03c1d5ecee | ||
|
|
0f7604ac88 | ||
|
|
784afaee97 | ||
|
|
e99f2e2619 | ||
|
|
1c76e50192 | ||
|
|
9716bfc8e8 | ||
|
|
e08b116aa0 | ||
|
|
7c9460d027 | ||
|
|
3807b0a0b7 | ||
|
|
65626e3b11 | ||
|
|
e2b35c6552 | ||
|
|
501501fce1 | ||
|
|
381d4b1cac | ||
|
|
c4d7025163 | ||
|
|
301ab03266 | ||
|
|
8407186a38 | ||
|
|
c0a64a1bc3 | ||
|
|
8e3bca062b | ||
|
|
927a4bf86e | ||
|
|
e82e2fe4a2 | ||
|
|
499b7fdd6b | ||
|
|
0f2300a981 | ||
|
|
9d153a4397 | ||
|
|
2ad4bd2abc | ||
|
|
bda0a25fe0 | ||
|
|
7095d55670 | ||
|
|
e4946bd91b | ||
|
|
0913aba1cf | ||
|
|
6b10539a3f | ||
|
|
c4d9c10cb8 | ||
|
|
badd22793d | ||
|
|
e03660b184 | ||
|
|
768f49ab0b | ||
|
|
18c7930dba | ||
|
|
f626266fa7 | ||
|
|
171d6e4bdc | ||
|
|
af65d4029b | ||
|
|
4e8e9279d3 | ||
|
|
077d5412a4 | ||
|
|
6f1fcad0ca | ||
|
|
c759aeddd9 | ||
|
|
641ba2a3fd | ||
|
|
be2b5072bf | ||
|
|
c5694293a5 | ||
|
|
1404f9e336 | ||
|
|
f19fd2e3ac | ||
|
|
01f7f2baa0 | ||
|
|
6aef0b198d | ||
|
|
d00048a7d7 | ||
|
|
4ba40b1d77 | ||
|
|
58cc929ad9 | ||
|
|
431f9ce22c | ||
|
|
8f4f3f7053 | ||
|
|
fe7c647bcf | ||
|
|
208c3e6c31 | ||
|
|
da795b52de | ||
|
|
c4fe593e8f | ||
|
|
67eee29fdf | ||
|
|
0617b0e601 | ||
|
|
85ba893724 | ||
|
|
96f6b157c7 | ||
|
|
2d7a01df10 | ||
|
|
99ea0d7a14 | ||
|
|
d7f6bcc6c3 | ||
|
|
0df8eba2b6 | ||
|
|
16ca18623e | ||
|
|
417540d272 | ||
|
|
7b2b17e42a | ||
|
|
e63ea8c110 | ||
|
|
afc0e637f1 | ||
|
|
ee7d1df3c3 | ||
|
|
3731e92339 | ||
|
|
f609ba9795 | ||
|
|
64ad7d9c08 | ||
|
|
8b3cc34ab5 | ||
|
|
0662a729a0 | ||
|
|
c5d5b6c787 | ||
|
|
406cb0f6c0 | ||
|
|
e6cb17caf6 | ||
|
|
c277d3f001 | ||
|
|
d6c8674d7b | ||
|
|
d946e80e65 | ||
|
|
55fca262ef | ||
|
|
2f42e1498c | ||
|
|
0e5caab72a | ||
|
|
e3352efe49 | ||
|
|
b028ef51f9 | ||
|
|
ae9278c4b5 | ||
|
|
86d4defc78 | ||
|
|
c85a9cdce1 | ||
|
|
9409887942 | ||
|
|
40c62954e4 | ||
|
|
c6f93ef59a | ||
|
|
5eef186ab2 | ||
|
|
6c60d72ef9 | ||
|
|
217b311783 | ||
|
|
8cd5273082 | ||
|
|
3e8a320598 | ||
|
|
0197bdc5bc | ||
|
|
a425acea4d | ||
|
|
c4222a3159 | ||
|
|
bd0fe6baf8 | ||
|
|
b2999ca8a8 | ||
|
|
77d96976ec | ||
|
|
a4b9b0be8b | ||
|
|
8e52da7069 | ||
|
|
228170c717 | ||
|
|
2216a14729 | ||
|
|
77f3f23cfe | ||
|
|
07ae4675d4 | ||
|
|
f2279863db | ||
|
|
df68d0140f | ||
|
|
1b6efbfd0c | ||
|
|
626bb35f80 | ||
|
|
e6bb9ad191 | ||
|
|
4cfe54b65c | ||
|
|
2b2e5ddbea | ||
|
|
334451471e | ||
|
|
4069052c86 | ||
|
|
7be5190ada | ||
|
|
7a1510b77b | ||
|
|
f16c767cbd | ||
|
|
3f76188bf5 | ||
|
|
1215b7317b | ||
|
|
e5ba73589b | ||
|
|
9ba902471c | ||
|
|
b1568c5eef | ||
|
|
8535579de2 | ||
|
|
6ec89e146c | ||
|
|
09a7a15141 | ||
|
|
9b77790ddc | ||
|
|
16cdd4dd4f | ||
|
|
0a7fcc415c | ||
|
|
ff72632b3b | ||
|
|
b6a7240534 | ||
|
|
f10735f96f | ||
|
|
ba538d05af | ||
|
|
3639913e6d | ||
|
|
b87e20ca7e | ||
|
|
c7bdce46ff | ||
|
|
11bea5fa32 | ||
|
|
e8a6af086c | ||
|
|
f1033c1006 | ||
|
|
264866dff0 | ||
|
|
631741d30b | ||
|
|
6897f9e51c | ||
|
|
21a5b5d6bb | ||
|
|
3817bf503f | ||
|
|
2beb033572 | ||
|
|
01b1372dda | ||
|
|
d048ea47a6 | ||
|
|
2a8766eccb | ||
|
|
a2078f721a | ||
|
|
68bdcb461f | ||
|
|
ec8ce8ec29 | ||
|
|
95275d9c8a | ||
|
|
09eb1dcf41 | ||
|
|
224ca6c65b | ||
|
|
10dd3e352d | ||
|
|
2103eb8875 | ||
|
|
3b7bf0d77b | ||
|
|
bc47fb592c | ||
|
|
81dce1928a | ||
|
|
05f820a4a3 | ||
|
|
d3a575fce3 | ||
|
|
0455628d72 | ||
|
|
9d0dc1630d |
1
.github/FUNDING.yml
vendored
1
.github/FUNDING.yml
vendored
@@ -1 +1,2 @@
|
|||||||
|
github: mstarke
|
||||||
custom: https://flattr.com/thing/1550529/mstarkeMacPass-on-GitHub
|
custom: https://flattr.com/thing/1550529/mstarkeMacPass-on-GitHub
|
||||||
|
|||||||
77
.github/workflows/nightly.yml
vendored
Normal file
77
.github/workflows/nightly.yml
vendored
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
name: Nightly
|
||||||
|
|
||||||
|
on:
|
||||||
|
#push:
|
||||||
|
# branches: [ master ]
|
||||||
|
#pull_request:
|
||||||
|
# branches: [ master ]
|
||||||
|
schedule:
|
||||||
|
- cron: '0 23 * * *'
|
||||||
|
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
nightly:
|
||||||
|
runs-on: macos-10.15
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Bootstrap Carthage
|
||||||
|
run: carthage bootstrap --platform macOS
|
||||||
|
|
||||||
|
- name: Install xcpretty
|
||||||
|
run: gem install xcpretty --no-document --quiet
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
set -o pipefail
|
||||||
|
xcodebuild clean
|
||||||
|
xcodebuild build -configuration release -project MacPass.xcodeproj -scheme MacPass CODE_SIGNING_REQUIRED=NO -derivedDataPath ./build | xcpretty -c
|
||||||
|
|
||||||
|
- name: Export Localizations
|
||||||
|
run: |
|
||||||
|
xcodebuild -project MacPass.xcodeproj -exportLocalizations -localizationPath Localisations -exportLanguage de
|
||||||
|
xcodebuild -project MacPass.xcodeproj -exportLocalizations -localizationPath Localisations -exportLanguage en
|
||||||
|
xcodebuild -project MacPass.xcodeproj -exportLocalizations -localizationPath Localisations -exportLanguage es
|
||||||
|
xcodebuild -project MacPass.xcodeproj -exportLocalizations -localizationPath Localisations -exportLanguage fr
|
||||||
|
xcodebuild -project MacPass.xcodeproj -exportLocalizations -localizationPath Localisations -exportLanguage it
|
||||||
|
xcodebuild -project MacPass.xcodeproj -exportLocalizations -localizationPath Localisations -exportLanguage nl
|
||||||
|
xcodebuild -project MacPass.xcodeproj -exportLocalizations -localizationPath Localisations -exportLanguage ru
|
||||||
|
xcodebuild -project MacPass.xcodeproj -exportLocalizations -localizationPath Localisations -exportLanguage sv-SE
|
||||||
|
xcodebuild -project MacPass.xcodeproj -exportLocalizations -localizationPath Localisations -exportLanguage zh-Hans
|
||||||
|
|
||||||
|
- name: Zip Localizations
|
||||||
|
run: zip -9ry Localisations.zip Localisations
|
||||||
|
|
||||||
|
- name: Package Release
|
||||||
|
run: |
|
||||||
|
cd ./build/Build/Products/Release
|
||||||
|
zip -9ry MacPass-continuous.zip MacPass.app
|
||||||
|
|
||||||
|
- name: Create MD5 Hash
|
||||||
|
run: |
|
||||||
|
cd ./build/Build/Products/Release
|
||||||
|
shasum -a 256 MacPass-continuous.zip > MacPass-continuous.zip.sha256
|
||||||
|
|
||||||
|
#- name: Release
|
||||||
|
# uses: eine/tip@master
|
||||||
|
# with:
|
||||||
|
# token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
# tag: continuous
|
||||||
|
# files: |
|
||||||
|
# Localisations.zip
|
||||||
|
# ./build/Build/Products/Release/MacPass-continuous.zip
|
||||||
|
# ./build/Build/Products/Release/MacPass-continuous.zip.sha256
|
||||||
|
|
||||||
|
- name: Release
|
||||||
|
uses: softprops/action-gh-release@v1
|
||||||
|
if: startsWith(github.ref, 'refs/tags/')
|
||||||
|
with:
|
||||||
|
tag_name: continuous
|
||||||
|
files: |
|
||||||
|
Localisations.zip
|
||||||
|
./build/Build/Products/Release/MacPass-continuous.zip
|
||||||
|
./build/Build/Products/Release/MacPass-continuous.zip.sha256
|
||||||
3
.gitmodules
vendored
3
.gitmodules
vendored
@@ -1,6 +1,3 @@
|
|||||||
[submodule "DDHotKey"]
|
[submodule "DDHotKey"]
|
||||||
path = DDHotKey
|
path = DDHotKey
|
||||||
url = https://github.com/mstarke/DDHotKey.git
|
url = https://github.com/mstarke/DDHotKey.git
|
||||||
[submodule "TransformerKit"]
|
|
||||||
path = TransformerKit
|
|
||||||
url = https://github.com/mattt/TransformerKit.git
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
osx_image: xcode10.2
|
osx_image: xcode12.2
|
||||||
xcode_project: MacPass.xcodeproj
|
xcode_project: MacPass.xcodeproj
|
||||||
xcode_scheme: MacPass
|
xcode_scheme: MacPass
|
||||||
language: objective-c
|
language: objective-c
|
||||||
|
|||||||
Binary file not shown.
15
AutotypeOverlay/AOAppDelegate.h
Normal file
15
AutotypeOverlay/AOAppDelegate.h
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
//
|
||||||
|
// 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
|
||||||
|
|
||||||
80
AutotypeOverlay/AOAppDelegate.m
Normal file
80
AutotypeOverlay/AOAppDelegate.m
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
//
|
||||||
|
// 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
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"colors" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
{
|
||||||
|
"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
|
||||||
|
}
|
||||||
|
}
|
||||||
6
AutotypeOverlay/Assets.xcassets/Contents.json
Normal file
6
AutotypeOverlay/Assets.xcassets/Contents.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
||||||
5
AutotypeOverlay/AutotypeOverlay.entitlements
Normal file
5
AutotypeOverlay/AutotypeOverlay.entitlements
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<?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>
|
||||||
696
AutotypeOverlay/Base.lproj/MainMenu.xib
Normal file
696
AutotypeOverlay/Base.lproj/MainMenu.xib
Normal file
@@ -0,0 +1,696 @@
|
|||||||
|
<?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>
|
||||||
8
AutotypeOverlay/Info.plist
Normal file
8
AutotypeOverlay/Info.plist
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<?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>
|
||||||
16
AutotypeOverlay/main.m
Normal file
16
AutotypeOverlay/main.m
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
//
|
||||||
|
// 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);
|
||||||
|
}
|
||||||
@@ -4,18 +4,21 @@ Thanks for taking the time to contribute to MacPass! This documents describes a
|
|||||||
|
|
||||||
## Translations
|
## Translations
|
||||||
MacPass has translations for a few languages. If you can translate to another language, or you think a translation is wrong, follow the next steps to add or improve a translation:
|
MacPass has translations for a few languages. If you can translate to another language, or you think a translation is wrong, follow the next steps to add or improve a translation:
|
||||||
- You can use a XLIFF editor for translating the strings. For example [XLIFFTool](https://itunes.apple.com/us/app/xlifftool/id1074282695)
|
|
||||||
- For a new localization only:
|
- Get a XLIFF editor for translating localization files. For example [XLIFFTool](https://itunes.apple.com/us/app/xlifftool/id1074282695)
|
||||||
- Select MacPass in the project navigator
|
- Get the current XLIFF export for your language. You can either download the `Localizations.zip` on the [Continous release](https://github.com/MacPass/MacPass/releases) or you can export them in Xcode:
|
||||||
- Select the MacPass project in the project and targets list
|
- For a new localization only:
|
||||||
- Open the info tab and click the `+` button un the localizations section.
|
- Select MacPass in the project navigator
|
||||||
- Choose the language you want to translate
|
- Select the MacPass project in the project and targets list
|
||||||
- Select all resources and click finish, now the new language is available for export in the next step
|
- Open the info tab and click the `+` button un the localizations section.
|
||||||
- Export the XLIFF file
|
- Choose the language you want to translate
|
||||||
- Select the MacPass project in XCode
|
- Select all resources and click finish, now the new language is available for export in the next step
|
||||||
- Go to `Editor -> Export for Localization`
|
- For present localizations directly Export the XLIFF file
|
||||||
- Select the language you want to translate
|
- Select the MacPass project in Xcode
|
||||||
- Now use your XLIFF editor and save the file if you are done with your translations
|
- Go to `Editor -> Export for Localization`
|
||||||
|
- Select the language you want to translate
|
||||||
|
- Now use your XLIFF editor and save the file after you are done with your translations
|
||||||
- Go back to XCode and use `Editor -> Import Localization` to import the changes
|
- Go back to XCode and use `Editor -> Import Localization` to import the changes
|
||||||
|
- Open a Pull Request with your changes.
|
||||||
|
|
||||||
Alternatively, you can open an issue to ask a dev to create the XLIFF file for you and send it back after you've finished localising.
|
Alternatively, you can open an issue to ask a dev to create the XLIFF file for you and send it back after you've finished localising.
|
||||||
|
|||||||
5
Cartfile
5
Cartfile
@@ -1,3 +1,4 @@
|
|||||||
github "sparkle-project/Sparkle" ~> 1.22
|
github "sparkle-project/Sparkle" ~> 1.22
|
||||||
github "MacPass/KeePassKit" ~> 2.4
|
github "MacPass/TransformerKit" "a8b5bb73cc327ec6798569b865c32fec5eb2289f"
|
||||||
github "mstarke/HNHUi" ~> 3.0
|
github "MacPass/KeePassKit" ~> 3.2.0
|
||||||
|
github "mstarke/HNHUi" ~> 6.0
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
github "MacPass/KeePassKit" "2.4.7"
|
github "MacPass/KeePassKit" "3.2.1"
|
||||||
github "mstarke/HNHUi" "3.0"
|
github "MacPass/KissXML" "933f04fe5ad95c2be07ec0c2f801e140007f20fa"
|
||||||
github "robbiehanson/KissXML" "5.2.3"
|
github "MacPass/TransformerKit" "a8b5bb73cc327ec6798569b865c32fec5eb2289f"
|
||||||
github "sparkle-project/Sparkle" "1.22.0"
|
github "mstarke/HNHUi" "6.0.1"
|
||||||
|
github "sparkle-project/Sparkle" "1.27.1"
|
||||||
|
|||||||
2
DDHotKey
2
DDHotKey
Submodule DDHotKey updated: c7735ee66a...a996a0a398
@@ -1,7 +1,7 @@
|
|||||||
MacPass, a KeePass compatible Password Manager for OS X
|
MacPass, a KeePass compatible Password Manager for OS X
|
||||||
Copyright (C) 2012-2016 Michael Starke, and all MacPass contributors
|
Copyright (C) 2012-2016 Michael Starke, and all MacPass contributors
|
||||||
A full list of contributors can be found at
|
A full list of contributors can be found at
|
||||||
<https://github.com/mstarke/MacPass/graphs/contributors>
|
<https://github.com/MacPass/MacPass/graphs/contributors>
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
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
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,78 @@
|
|||||||
|
<?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>
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<Scheme
|
<Scheme
|
||||||
LastUpgradeVersion = "1030"
|
LastUpgradeVersion = "1250"
|
||||||
version = "2.0">
|
version = "2.0">
|
||||||
<BuildAction
|
<BuildAction
|
||||||
parallelizeBuildables = "YES"
|
parallelizeBuildables = "YES"
|
||||||
@@ -26,20 +26,8 @@
|
|||||||
buildConfiguration = "Debug"
|
buildConfiguration = "Debug"
|
||||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
codeCoverageEnabled = "YES"
|
shouldUseLaunchSchemeArgsEnv = "NO"
|
||||||
shouldUseLaunchSchemeArgsEnv = "NO">
|
codeCoverageEnabled = "YES">
|
||||||
<Testables>
|
|
||||||
<TestableReference
|
|
||||||
skipped = "NO">
|
|
||||||
<BuildableReference
|
|
||||||
BuildableIdentifier = "primary"
|
|
||||||
BlueprintIdentifier = "4C45FB19178E09ED0010007D"
|
|
||||||
BuildableName = "MacPassTests.xctest"
|
|
||||||
BlueprintName = "MacPassTests"
|
|
||||||
ReferencedContainer = "container:MacPass.xcodeproj">
|
|
||||||
</BuildableReference>
|
|
||||||
</TestableReference>
|
|
||||||
</Testables>
|
|
||||||
<MacroExpansion>
|
<MacroExpansion>
|
||||||
<BuildableReference
|
<BuildableReference
|
||||||
BuildableIdentifier = "primary"
|
BuildableIdentifier = "primary"
|
||||||
@@ -61,8 +49,18 @@
|
|||||||
isEnabled = "YES">
|
isEnabled = "YES">
|
||||||
</EnvironmentVariable>
|
</EnvironmentVariable>
|
||||||
</EnvironmentVariables>
|
</EnvironmentVariables>
|
||||||
<AdditionalOptions>
|
<Testables>
|
||||||
</AdditionalOptions>
|
<TestableReference
|
||||||
|
skipped = "NO">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "4C45FB19178E09ED0010007D"
|
||||||
|
BuildableName = "MacPassTests.xctest"
|
||||||
|
BlueprintName = "MacPassTests"
|
||||||
|
ReferencedContainer = "container:MacPass.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</TestableReference>
|
||||||
|
</Testables>
|
||||||
</TestAction>
|
</TestAction>
|
||||||
<LaunchAction
|
<LaunchAction
|
||||||
buildConfiguration = "Debug"
|
buildConfiguration = "Debug"
|
||||||
@@ -107,8 +105,6 @@
|
|||||||
isEnabled = "NO">
|
isEnabled = "NO">
|
||||||
</EnvironmentVariable>
|
</EnvironmentVariable>
|
||||||
</EnvironmentVariables>
|
</EnvironmentVariables>
|
||||||
<AdditionalOptions>
|
|
||||||
</AdditionalOptions>
|
|
||||||
</LaunchAction>
|
</LaunchAction>
|
||||||
<ProfileAction
|
<ProfileAction
|
||||||
buildConfiguration = "Release"
|
buildConfiguration = "Release"
|
||||||
|
|||||||
@@ -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="12120" systemVersion="16F73" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="12120"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<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 id="Hz6-mo-xeY">
|
<customView misplaced="YES" id="Hz6-mo-xeY">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="392" height="210"/>
|
<rect key="frame" x="0.0" y="0.0" width="392" height="220"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<tokenField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Jzn-UC-Ok8">
|
<tokenField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Jzn-UC-Ok8">
|
||||||
<rect key="frame" x="20" y="50" width="352" height="66"/>
|
<rect key="frame" x="20" y="60" 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,30 +31,30 @@
|
|||||||
</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="215" y="18" width="157" height="25"/>
|
<rect key="frame" x="201" y="13" width="178" height="32"/>
|
||||||
<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">
|
<buttonCell key="cell" type="push" title="Set Autotype Sequence" bezelStyle="rounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="aOD-Ih-Sft">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<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" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7xF-eN-vs3">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="7xF-eN-vs3">
|
||||||
<rect key="frame" x="18" y="176" width="207" height="14"/>
|
<rect key="frame" x="18" y="186" width="207" height="14"/>
|
||||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Available Commands and Placeholders" id="lug-97-H9D">
|
<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"/>
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9Kw-lW-ASe">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="9Kw-lW-ASe">
|
||||||
<rect key="frame" x="18" y="124" width="107" height="14"/>
|
<rect key="frame" x="18" y="134" width="107" height="14"/>
|
||||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Autotype Sequence" id="8ny-Qk-Jvo">
|
<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"/>
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<tokenField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="k06-gn-ahB">
|
<tokenField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="k06-gn-ahB">
|
||||||
<rect key="frame" x="20" y="146" width="352" height="22"/>
|
<rect key="frame" x="20" y="156" 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="8" symbolic="YES" id="ZCK-9U-M92"/>
|
<constraint firstItem="lS4-1R-Bhp" firstAttribute="top" secondItem="Jzn-UC-Ok8" secondAttribute="bottom" constant="20" symbolic="YES" id="ZCK-9U-M92"/>
|
||||||
<constraint firstItem="k06-gn-ahB" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="hJ8-Oo-CDZ"/>
|
<constraint firstItem="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"/>
|
||||||
|
|||||||
@@ -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="14490.70" 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="14490.70"/>
|
<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>
|
||||||
@@ -11,102 +11,15 @@
|
|||||||
<outlet property="contextTableView" destination="Ih2-lo-t2W" id="8uy-Mz-1vc"/>
|
<outlet property="contextTableView" destination="Ih2-lo-t2W" id="8uy-Mz-1vc"/>
|
||||||
<outlet property="messageTextField" destination="kDw-2l-7gQ" id="7bW-as-yGU"/>
|
<outlet property="messageTextField" destination="kDw-2l-7gQ" id="7bW-as-yGU"/>
|
||||||
<outlet property="selectAutotypeContextButton" destination="V5B-Qq-GN8" id="mqv-H3-N01"/>
|
<outlet property="selectAutotypeContextButton" destination="V5B-Qq-GN8" id="mqv-H3-N01"/>
|
||||||
|
<outlet property="targetApplicationImageView" destination="bWJ-Ub-c10" id="vTC-FO-QQO"/>
|
||||||
<outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
|
<outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
|
||||||
</connections>
|
</connections>
|
||||||
</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 translatesAutoresizingMaskIntoConstraints="NO" id="Hz6-mo-xeY">
|
<customView translatesAutoresizingMaskIntoConstraints="NO" id="Hz6-mo-xeY">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="480" height="241"/>
|
<rect key="frame" x="0.0" y="0.0" width="480" height="201"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<scrollView wantsLayer="YES" autohidesScrollers="YES" horizontalLineScroll="38" horizontalPageScroll="10" verticalLineScroll="38" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7cB-re-3ys">
|
|
||||||
<rect key="frame" x="20" y="61" width="440" height="118"/>
|
|
||||||
<clipView key="contentView" id="WSc-o2-GsZ">
|
|
||||||
<rect key="frame" x="1" y="1" width="438" height="116"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
||||||
<subviews>
|
|
||||||
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" alternatingRowBackgroundColors="YES" columnReordering="NO" multipleSelection="NO" emptySelection="NO" autosaveColumns="NO" typeSelect="NO" rowHeight="36" viewBased="YES" id="Ih2-lo-t2W">
|
|
||||||
<rect key="frame" x="0.0" y="0.0" width="438" height="116"/>
|
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
|
||||||
<size key="intercellSpacing" width="3" height="2"/>
|
|
||||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<tableColumns>
|
|
||||||
<tableColumn width="435" minWidth="40" maxWidth="1000" id="wTy-0L-yzY">
|
|
||||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
|
|
||||||
<font key="font" metaFont="smallSystem"/>
|
|
||||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</tableHeaderCell>
|
|
||||||
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="PKW-gr-yqN">
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</textFieldCell>
|
|
||||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES"/>
|
|
||||||
<prototypeCellViews>
|
|
||||||
<tableCellView id="vkI-FK-7wg">
|
|
||||||
<rect key="frame" x="1" y="1" width="435" height="17"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
||||||
<subviews>
|
|
||||||
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Utl-Gl-ETE">
|
|
||||||
<rect key="frame" x="2" y="1" width="14" height="14"/>
|
|
||||||
<constraints>
|
|
||||||
<constraint firstAttribute="width" relation="lessThanOrEqual" constant="32" id="N48-cx-w8q"/>
|
|
||||||
<constraint firstAttribute="height" relation="lessThanOrEqual" constant="32" id="mde-14-jf7"/>
|
|
||||||
</constraints>
|
|
||||||
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="NSActionTemplate" id="gT4-lt-7Ir"/>
|
|
||||||
</imageView>
|
|
||||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsExpansionToolTips="YES" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Dxk-A7-QSy">
|
|
||||||
<rect key="frame" x="22" y="0.0" width="413" height="17"/>
|
|
||||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" allowsUndo="NO" sendsActionOnEndEditing="YES" title="Content" id="TN3-3a-LaA">
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</textFieldCell>
|
|
||||||
</textField>
|
|
||||||
</subviews>
|
|
||||||
<constraints>
|
|
||||||
<constraint firstAttribute="bottom" secondItem="Dxk-A7-QSy" secondAttribute="bottom" id="0Ds-yc-1wj"/>
|
|
||||||
<constraint firstItem="Dxk-A7-QSy" firstAttribute="top" secondItem="vkI-FK-7wg" secondAttribute="top" id="3KK-oo-Ogk"/>
|
|
||||||
<constraint firstItem="Dxk-A7-QSy" firstAttribute="leading" secondItem="Utl-Gl-ETE" secondAttribute="trailing" constant="8" symbolic="YES" id="L0l-PB-4Dt"/>
|
|
||||||
<constraint firstAttribute="trailing" secondItem="Dxk-A7-QSy" secondAttribute="trailing" constant="2" id="kOy-Jo-rYe"/>
|
|
||||||
<constraint firstItem="Utl-Gl-ETE" firstAttribute="leading" secondItem="vkI-FK-7wg" secondAttribute="leading" constant="2" id="rRi-nE-1Z3"/>
|
|
||||||
<constraint firstItem="Utl-Gl-ETE" firstAttribute="top" secondItem="vkI-FK-7wg" secondAttribute="top" constant="2" id="sJf-FS-87E"/>
|
|
||||||
</constraints>
|
|
||||||
<connections>
|
|
||||||
<outlet property="imageView" destination="Utl-Gl-ETE" id="5dQ-R4-kfV"/>
|
|
||||||
<outlet property="textField" destination="Dxk-A7-QSy" id="8uP-9M-aOd"/>
|
|
||||||
</connections>
|
|
||||||
</tableCellView>
|
|
||||||
</prototypeCellViews>
|
|
||||||
</tableColumn>
|
|
||||||
</tableColumns>
|
|
||||||
<connections>
|
|
||||||
<action trigger="doubleAction" selector="selectAutotypeContext:" target="-2" id="NoK-fa-xIL"/>
|
|
||||||
<outlet property="dataSource" destination="-2" id="4ld-qs-eNP"/>
|
|
||||||
<outlet property="delegate" destination="-2" id="ibb-G8-tPQ"/>
|
|
||||||
</connections>
|
|
||||||
</tableView>
|
|
||||||
</subviews>
|
|
||||||
</clipView>
|
|
||||||
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="Xgd-fL-vdl">
|
|
||||||
<rect key="frame" x="1" y="235" width="92" height="16"/>
|
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
|
||||||
</scroller>
|
|
||||||
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="5cX-o7-7ZJ">
|
|
||||||
<rect key="frame" x="224" y="17" width="15" height="102"/>
|
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
|
||||||
</scroller>
|
|
||||||
</scrollView>
|
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" preferredMaxLayoutWidth="330" translatesAutoresizingMaskIntoConstraints="NO" id="kDw-2l-7gQ">
|
|
||||||
<rect key="frame" x="18" y="187" width="444" height="34"/>
|
|
||||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="There are multiple matches for the current window. Please select which match should be used." id="gcf-gb-ZsF">
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</textFieldCell>
|
|
||||||
</textField>
|
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="zBX-HB-tR7">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="zBX-HB-tR7">
|
||||||
<rect key="frame" x="236" y="13" width="82" height="32"/>
|
<rect key="frame" x="236" y="13" width="82" height="32"/>
|
||||||
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="60p-7v-Nje">
|
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="60p-7v-Nje">
|
||||||
@@ -133,25 +46,146 @@ DQ
|
|||||||
<action selector="selectAutotypeContext:" target="-2" id="a2F-ID-uOd"/>
|
<action selector="selectAutotypeContext:" target="-2" id="a2F-ID-uOd"/>
|
||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
|
<stackView distribution="fill" orientation="vertical" alignment="centerX" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="82Y-g7-4wV">
|
||||||
|
<rect key="frame" x="20" y="109" width="440" height="72"/>
|
||||||
|
<subviews>
|
||||||
|
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="bWJ-Ub-c10">
|
||||||
|
<rect key="frame" x="204" y="40" width="32" height="32"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="height" relation="lessThanOrEqual" constant="128" id="Rzo-8n-W92"/>
|
||||||
|
<constraint firstAttribute="width" relation="lessThanOrEqual" constant="128" id="uhc-Ce-lb8"/>
|
||||||
|
</constraints>
|
||||||
|
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyUpOrDown" image="NSApplicationIcon" id="d6x-JH-Lw2"/>
|
||||||
|
</imageView>
|
||||||
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="kDw-2l-7gQ">
|
||||||
|
<rect key="frame" x="-2" y="0.0" width="444" height="32"/>
|
||||||
|
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="There are multiple matches for the current window. Please select which match should be used." id="gcf-gb-ZsF">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</subviews>
|
||||||
|
<visibilityPriorities>
|
||||||
|
<integer value="1000"/>
|
||||||
|
<integer value="1000"/>
|
||||||
|
</visibilityPriorities>
|
||||||
|
<customSpacing>
|
||||||
|
<real value="3.4028234663852886e+38"/>
|
||||||
|
<real value="3.4028234663852886e+38"/>
|
||||||
|
</customSpacing>
|
||||||
|
</stackView>
|
||||||
|
<scrollView wantsLayer="YES" verticalCompressionResistancePriority="250" autohidesScrollers="YES" horizontalLineScroll="38" horizontalPageScroll="10" verticalLineScroll="38" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7cB-re-3ys">
|
||||||
|
<rect key="frame" x="20" y="61" width="440" height="40"/>
|
||||||
|
<clipView key="contentView" id="WSc-o2-GsZ">
|
||||||
|
<rect key="frame" x="1" y="1" width="438" height="38"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" alternatingRowBackgroundColors="YES" columnReordering="NO" multipleSelection="NO" emptySelection="NO" autosaveColumns="NO" typeSelect="NO" rowHeight="36" viewBased="YES" id="Ih2-lo-t2W">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="438" height="38"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<size key="intercellSpacing" width="3" height="2"/>
|
||||||
|
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<tableColumns>
|
||||||
|
<tableColumn width="435" minWidth="40" maxWidth="1000" id="wTy-0L-yzY">
|
||||||
|
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
|
||||||
|
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</tableHeaderCell>
|
||||||
|
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="PKW-gr-yqN">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES"/>
|
||||||
|
<prototypeCellViews>
|
||||||
|
<tableCellView id="vkI-FK-7wg" customClass="MPExtendedTableCellView">
|
||||||
|
<rect key="frame" x="1" y="1" width="435" height="36"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Utl-Gl-ETE">
|
||||||
|
<rect key="frame" x="2" y="20" width="14" height="14"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="width" relation="lessThanOrEqual" constant="32" id="N48-cx-w8q"/>
|
||||||
|
<constraint firstAttribute="height" relation="lessThanOrEqual" constant="32" id="mde-14-jf7"/>
|
||||||
|
</constraints>
|
||||||
|
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="NSActionTemplate" id="gT4-lt-7Ir"/>
|
||||||
|
</imageView>
|
||||||
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsExpansionToolTips="YES" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Dxk-A7-QSy">
|
||||||
|
<rect key="frame" x="22" y="20" width="413" height="16"/>
|
||||||
|
<textFieldCell key="cell" lineBreakMode="truncatingTail" allowsUndo="NO" sendsActionOnEndEditing="YES" title="Title" id="TN3-3a-LaA">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsExpansionToolTips="YES" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="rHv-KR-Ja6">
|
||||||
|
<rect key="frame" x="22" y="2" width="413" height="16"/>
|
||||||
|
<textFieldCell key="cell" lineBreakMode="truncatingTail" allowsUndo="NO" sendsActionOnEndEditing="YES" title="Sequence" id="bvJ-2i-eMc">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstItem="Dxk-A7-QSy" firstAttribute="top" secondItem="vkI-FK-7wg" secondAttribute="top" id="3KK-oo-Ogk"/>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="rHv-KR-Ja6" secondAttribute="bottom" constant="2" id="Fct-2X-0MX"/>
|
||||||
|
<constraint firstItem="Dxk-A7-QSy" firstAttribute="leading" secondItem="Utl-Gl-ETE" secondAttribute="trailing" constant="8" symbolic="YES" id="L0l-PB-4Dt"/>
|
||||||
|
<constraint firstItem="rHv-KR-Ja6" firstAttribute="leading" secondItem="Dxk-A7-QSy" secondAttribute="leading" id="cHl-VR-d3w"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="rHv-KR-Ja6" secondAttribute="trailing" constant="2" id="jqL-Dd-V0M"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="Dxk-A7-QSy" secondAttribute="trailing" constant="2" id="kOy-Jo-rYe"/>
|
||||||
|
<constraint firstItem="Utl-Gl-ETE" firstAttribute="leading" secondItem="vkI-FK-7wg" secondAttribute="leading" constant="2" id="rRi-nE-1Z3"/>
|
||||||
|
<constraint firstItem="Utl-Gl-ETE" firstAttribute="top" secondItem="vkI-FK-7wg" secondAttribute="top" constant="2" id="sJf-FS-87E"/>
|
||||||
|
<constraint firstItem="rHv-KR-Ja6" firstAttribute="top" secondItem="Dxk-A7-QSy" secondAttribute="bottom" constant="2" id="uTd-5E-IzI"/>
|
||||||
|
</constraints>
|
||||||
|
<connections>
|
||||||
|
<outlet property="addionalTextField" destination="rHv-KR-Ja6" id="VTf-Dz-qYp"/>
|
||||||
|
<outlet property="imageView" destination="Utl-Gl-ETE" id="5dQ-R4-kfV"/>
|
||||||
|
<outlet property="textField" destination="Dxk-A7-QSy" id="8uP-9M-aOd"/>
|
||||||
|
</connections>
|
||||||
|
</tableCellView>
|
||||||
|
</prototypeCellViews>
|
||||||
|
</tableColumn>
|
||||||
|
</tableColumns>
|
||||||
|
<connections>
|
||||||
|
<action trigger="doubleAction" selector="selectAutotypeContext:" target="-2" id="NoK-fa-xIL"/>
|
||||||
|
<outlet property="dataSource" destination="-2" id="4ld-qs-eNP"/>
|
||||||
|
<outlet property="delegate" destination="-2" id="ibb-G8-tPQ"/>
|
||||||
|
</connections>
|
||||||
|
</tableView>
|
||||||
|
</subviews>
|
||||||
|
</clipView>
|
||||||
|
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="Xgd-fL-vdl">
|
||||||
|
<rect key="frame" x="1" y="235" width="92" height="16"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
</scroller>
|
||||||
|
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="5cX-o7-7ZJ">
|
||||||
|
<rect key="frame" x="224" y="17" width="15" height="102"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
</scroller>
|
||||||
|
</scrollView>
|
||||||
</subviews>
|
</subviews>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="bottom" secondItem="V5B-Qq-GN8" secondAttribute="bottom" constant="20" id="FMz-e1-hOB"/>
|
<constraint firstAttribute="bottom" secondItem="V5B-Qq-GN8" secondAttribute="bottom" constant="20" id="FMz-e1-hOB"/>
|
||||||
<constraint firstItem="kDw-2l-7gQ" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="GcO-tk-i2z"/>
|
<constraint firstAttribute="trailing" secondItem="82Y-g7-4wV" secondAttribute="trailing" constant="20" symbolic="YES" id="Fvf-rw-waQ"/>
|
||||||
<constraint firstItem="kDw-2l-7gQ" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="20" symbolic="YES" id="OHm-6j-uPs"/>
|
|
||||||
<constraint firstAttribute="trailing" secondItem="V5B-Qq-GN8" secondAttribute="trailing" constant="20" symbolic="YES" id="SRs-hx-av7"/>
|
<constraint firstAttribute="trailing" secondItem="V5B-Qq-GN8" secondAttribute="trailing" constant="20" symbolic="YES" id="SRs-hx-av7"/>
|
||||||
<constraint firstItem="V5B-Qq-GN8" firstAttribute="leading" secondItem="zBX-HB-tR7" secondAttribute="trailing" constant="12" symbolic="YES" id="UuF-Ba-HS5"/>
|
<constraint firstItem="V5B-Qq-GN8" firstAttribute="leading" secondItem="zBX-HB-tR7" secondAttribute="trailing" constant="12" symbolic="YES" id="UuF-Ba-HS5"/>
|
||||||
<constraint firstItem="zBX-HB-tR7" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="ZNu-po-1u8"/>
|
<constraint firstItem="zBX-HB-tR7" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="ZNu-po-1u8"/>
|
||||||
<constraint firstItem="7cB-re-3ys" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="egY-ml-urP"/>
|
<constraint firstItem="7cB-re-3ys" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="egY-ml-urP"/>
|
||||||
|
<constraint firstItem="7cB-re-3ys" firstAttribute="top" secondItem="82Y-g7-4wV" secondAttribute="bottom" constant="8" symbolic="YES" id="f0g-kf-N2j"/>
|
||||||
|
<constraint firstItem="82Y-g7-4wV" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="20" symbolic="YES" id="hDi-Va-2Mb"/>
|
||||||
<constraint firstAttribute="trailing" secondItem="7cB-re-3ys" secondAttribute="trailing" constant="20" symbolic="YES" id="hqW-Hz-bFN"/>
|
<constraint firstAttribute="trailing" secondItem="7cB-re-3ys" secondAttribute="trailing" constant="20" symbolic="YES" id="hqW-Hz-bFN"/>
|
||||||
<constraint firstItem="V5B-Qq-GN8" firstAttribute="baseline" secondItem="zBX-HB-tR7" secondAttribute="baseline" id="iAg-1w-h25"/>
|
<constraint firstItem="V5B-Qq-GN8" firstAttribute="baseline" secondItem="zBX-HB-tR7" secondAttribute="baseline" id="iAg-1w-h25"/>
|
||||||
<constraint firstItem="zBX-HB-tR7" firstAttribute="top" secondItem="7cB-re-3ys" secondAttribute="bottom" constant="20" symbolic="YES" id="onA-YV-ezJ"/>
|
<constraint firstItem="zBX-HB-tR7" firstAttribute="top" secondItem="7cB-re-3ys" secondAttribute="bottom" constant="20" symbolic="YES" id="onA-YV-ezJ"/>
|
||||||
<constraint firstItem="7cB-re-3ys" firstAttribute="top" secondItem="kDw-2l-7gQ" secondAttribute="bottom" constant="8" symbolic="YES" id="ss6-Ku-XPY"/>
|
<constraint firstItem="82Y-g7-4wV" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="uoN-Et-pWh"/>
|
||||||
<constraint firstAttribute="trailing" secondItem="kDw-2l-7gQ" secondAttribute="trailing" constant="20" symbolic="YES" id="zSz-fH-fVn"/>
|
|
||||||
</constraints>
|
</constraints>
|
||||||
<point key="canvasLocation" x="176" y="-39"/>
|
<point key="canvasLocation" x="-388" y="-2744"/>
|
||||||
</customView>
|
</customView>
|
||||||
</objects>
|
</objects>
|
||||||
<resources>
|
<resources>
|
||||||
<image name="NSActionTemplate" width="14" height="14"/>
|
<image name="NSActionTemplate" width="14" height="14"/>
|
||||||
|
<image name="NSApplicationIcon" width="32" height="32"/>
|
||||||
</resources>
|
</resources>
|
||||||
</document>
|
</document>
|
||||||
|
|||||||
@@ -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="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19529" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19529"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="NSStatusAvailable" id="DWu-HI-z3k"/>
|
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="NSStatusAvailable" id="DWu-HI-z3k"/>
|
||||||
</imageView>
|
</imageView>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Pqa-Ff-7cc">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Pqa-Ff-7cc">
|
||||||
<rect key="frame" x="42" y="432" width="80" height="17"/>
|
<rect key="frame" x="42" y="433" width="80" height="16"/>
|
||||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Accessibility" id="aIL-8W-63g">
|
<textFieldCell key="cell" lineBreakMode="clipping" title="Accessibility" id="aIL-8W-63g">
|
||||||
<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"/>
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" verticalCompressionResistancePriority="751" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hY9-T0-hke">
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" verticalCompressionResistancePriority="751" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hY9-T0-hke">
|
||||||
<rect key="frame" x="42" y="368" width="340" height="56"/>
|
<rect key="frame" x="42" y="369" width="340" height="56"/>
|
||||||
<textFieldCell key="cell" controlSize="small" selectable="YES" id="6GI-KJ-Xue">
|
<textFieldCell key="cell" controlSize="small" selectable="YES" id="6GI-KJ-Xue">
|
||||||
<font key="font" metaFont="smallSystem"/>
|
<font key="font" metaFont="smallSystem"/>
|
||||||
<string key="title">MacPass will send key press events to the system when Autotype or Global Autotype is executed. Since macOS 10.14 Mojave this is only possible, if Accessibility permissions are granted to the application.</string>
|
<string key="title">MacPass will send key press events to the system when Autotype or Global Autotype is executed. Since macOS 10.14 Mojave this is only possible, if Accessibility permissions are granted to the application.</string>
|
||||||
@@ -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="38" y="320" width="236" height="32"/>
|
<rect key="frame" x="37" y="322" width="230" 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="282" width="16" height="16"/>
|
<rect key="frame" x="20" y="284" 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="175" width="340" height="98"/>
|
<rect key="frame" x="42" y="164" width="340" height="112"/>
|
||||||
<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 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 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>
|
||||||
<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="281" width="112" height="17"/>
|
<rect key="frame" x="42" y="284" 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="304" width="360" height="5"/>
|
<rect key="frame" x="20" y="306" 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="38" y="127" width="177" height="32"/>
|
<rect key="frame" x="37" y="117" width="172" 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="84" width="340" height="42"/>
|
<rect key="frame" x="42" y="74" 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="38" y="48" width="271" height="32"/>
|
<rect key="frame" x="37" y="39" width="266" 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"/>
|
||||||
@@ -140,7 +140,7 @@
|
|||||||
<constraint firstItem="d5Z-hD-bpr" firstAttribute="leading" secondItem="6vq-iM-inn" secondAttribute="leading" id="oZ8-mG-RYJ"/>
|
<constraint firstItem="d5Z-hD-bpr" firstAttribute="leading" secondItem="6vq-iM-inn" secondAttribute="leading" id="oZ8-mG-RYJ"/>
|
||||||
<constraint firstAttribute="trailing" secondItem="BHb-cd-Q0r" secondAttribute="trailing" constant="20" symbolic="YES" id="ryW-3O-g6b"/>
|
<constraint firstAttribute="trailing" secondItem="BHb-cd-Q0r" secondAttribute="trailing" constant="20" symbolic="YES" id="ryW-3O-g6b"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<point key="canvasLocation" x="-409" y="-112.5"/>
|
<point key="canvasLocation" x="-742" y="-147"/>
|
||||||
</customView>
|
</customView>
|
||||||
</objects>
|
</objects>
|
||||||
<resources>
|
<resources>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{\rtf1\ansi\ansicpg1252\cocoartf1671\cocoasubrtf200
|
{\rtf1\ansi\ansicpg1250\cocoartf2636
|
||||||
{\fonttbl\f0\fswiss\fcharset0 Helvetica-Bold;\f1\fswiss\fcharset0 Helvetica;\f2\fnil\fcharset0 SFProText-Regular;
|
\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica-Bold;\f1\fswiss\fcharset0 Helvetica;\f2\fnil\fcharset0 HelveticaNeue;
|
||||||
}
|
\f3\fnil\fcharset0 AppleColorEmoji;}
|
||||||
{\colortbl;\red255\green255\blue255;\red0\green0\blue0;\red9\green79\blue209;\red69\green60\blue204;
|
{\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;
|
||||||
@@ -14,15 +14,15 @@
|
|||||||
\f1\b0 \cf2 macpassapp.org}}
|
\f1\b0 \cf2 macpassapp.org}}
|
||||||
\f1\b0 \cf3 \
|
\f1\b0 \cf3 \
|
||||||
\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
|
||||||
{\field{\*\fldinst{HYPERLINK "https://github.com/mstarke/MacPass"}}{\fldrslt \cf3 MacPass}} \cf2 on GitHub.\
|
{\field{\*\fldinst{HYPERLINK "https://github.com/MacPass/MacPass"}}{\fldrslt \cf3 MacPass}} \cf2 on GitHub.\
|
||||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||||
|
|
||||||
\f0\b \cf2 \
|
\f0\b \cf2 \
|
||||||
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 OS X\
|
\f1\b0 \cf2 MacPass KeePass compatible client for macOS\
|
||||||
Copyright (c) 2012-2019 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\
|
||||||
the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\
|
the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\
|
||||||
@@ -37,15 +37,35 @@ You should have received a copy of the GNU General Public License along with thi
|
|||||||
\
|
\
|
||||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||||
|
|
||||||
|
\f0\b \cf0 \kerning1\expnd0\expndtw0 Sponsors:
|
||||||
|
\f2\b0\fs52 \
|
||||||
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
|
||||||
|
{\field{\*\fldinst{HYPERLINK "mailto:frank.mittelbach@latex-project.org"}}{\fldrslt
|
||||||
|
\f1\fs24 \cf0 \kerning1\expnd0\expndtw3
|
||||||
|
Frank Mittelbach}}
|
||||||
|
\f1\fs24 \kerning1\expnd0\expndtw3
|
||||||
|
\
|
||||||
|
\pard\pardeftab720\partightenfactor0
|
||||||
|
{\field{\*\fldinst{HYPERLINK "mailto:github@soebes.com"}}{\fldrslt \cf0 \kerning1\expnd0\expndtw3
|
||||||
|
Karl Heinz Marbaise}}\kerning1\expnd0\expndtw3
|
||||||
|
|
||||||
|
\f3 \kerning1\expnd0\expndtw3
|
||||||
|
\uc0\u55356 \u57225
|
||||||
|
\f1 \kerning1\expnd0\expndtw3
|
||||||
|
\
|
||||||
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
|
||||||
|
\cf0 \kerning1\expnd0\expndtw3
|
||||||
|
\
|
||||||
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||||
|
|
||||||
\f0\b \cf2 \kerning1\expnd0\expndtw0 Credits:\
|
\f0\b \cf2 \kerning1\expnd0\expndtw0 Credits:\
|
||||||
\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 \
|
||||||
Dutch translation: {\field{\*\fldinst{HYPERLINK "https://github.com/FrankKooij"}}{\fldrslt \cf3 Frank Kooij}},
|
Czech translation:\cf0 {\field{\*\fldinst{HYPERLINK "https://github.com/JiriSko"}}{\fldrslt \cf3 Ji\uc0\u345 \'ed \'8akorpil}}\cf2 \
|
||||||
\f2 \cf4 \expnd0\expndtw0\kerning0
|
\
|
||||||
{\field{\*\fldinst{HYPERLINK "https://github.com/clone1612"}}{\fldrslt
|
Dutch translation: {\field{\*\fldinst{HYPERLINK "https://github.com/FrankKooij"}}{\fldrslt \cf3 Frank Kooij}},\cf4 \expnd0\expndtw0\kerning0
|
||||||
\f1 \cf3 \kerning1\expnd0\expndtw0 Jannick Hemelhof}}
|
{\field{\*\fldinst{HYPERLINK "https://github.com/clone1612"}}{\fldrslt \cf3 \kerning1\expnd0\expndtw0 Jannick Hemelhof}}\cf0 \kerning1\expnd0\expndtw0 \
|
||||||
\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}}\
|
||||||
\
|
\
|
||||||
|
|||||||
@@ -1,21 +1,22 @@
|
|||||||
<?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="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19529" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19529"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<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="argon2IterationsTextField" destination="39N-8Q-J8b" id="af4-Ft-aDX"/>
|
<outlet property="argon2dIterationsTextField" destination="39N-8Q-J8b" id="af4-Ft-aDX"/>
|
||||||
<outlet property="argon2MemoryStepper" destination="NfL-iP-SRk" id="eAW-kb-cLh"/>
|
<outlet property="argon2dMemoryStepper" destination="NfL-iP-SRk" id="eAW-kb-cLh"/>
|
||||||
<outlet property="argon2MemoryTextField" destination="eEW-oa-V7U" id="Wig-Rk-lm0"/>
|
<outlet property="argon2dMemoryTextField" destination="eEW-oa-V7U" id="Wig-Rk-lm0"/>
|
||||||
<outlet property="argon2ThreadsTextField" destination="178-0f-guB" id="dHa-L6-gOs"/>
|
<outlet property="argon2dThreadsTextField" destination="178-0f-guB" id="dHa-L6-gOs"/>
|
||||||
|
<outlet property="argon2idIterationsTextField" destination="gqS-YX-aBl" id="R5l-uT-9Xh"/>
|
||||||
|
<outlet property="argon2idMemoryStepper" destination="qKz-Ir-3lf" id="GkI-Lv-Wz5"/>
|
||||||
|
<outlet property="argon2idMemoryTextField" destination="edk-MV-ArQ" id="QIz-wh-QxJ"/>
|
||||||
|
<outlet property="argon2idThreadsTextField" destination="aZY-o8-2Dn" id="Bzq-u5-Cnv"/>
|
||||||
<outlet property="cipherPopupButton" destination="3ek-Rg-w82" id="LbB-Fd-rqC"/>
|
<outlet property="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"/>
|
||||||
@@ -51,13 +52,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="1417"/>
|
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1415"/>
|
||||||
<view key="contentView" id="2">
|
<view key="contentView" misplaced="YES" id="2">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="553" height="484"/>
|
<rect key="frame" x="0.0" y="0.0" width="500" height="380"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="288">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="288">
|
||||||
<rect key="frame" x="480" y="13" width="59" height="32"/>
|
<rect key="frame" x="433" y="13" width="54" height="32"/>
|
||||||
<buttonCell key="cell" type="push" title="OK" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="289">
|
<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"/>
|
||||||
@@ -70,7 +71,7 @@ DQ
|
|||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="956">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="956">
|
||||||
<rect key="frame" x="398" y="13" width="82" height="32"/>
|
<rect key="frame" x="359" y="13" width="76" height="32"/>
|
||||||
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="957">
|
<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"/>
|
||||||
@@ -83,16 +84,16 @@ Gw
|
|||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<tabView translatesAutoresizingMaskIntoConstraints="NO" id="357">
|
<tabView translatesAutoresizingMaskIntoConstraints="NO" id="357">
|
||||||
<rect key="frame" x="13" y="41" width="527" height="437"/>
|
<rect key="frame" x="13" y="40" width="474" height="334"/>
|
||||||
<font key="font" metaFont="system"/>
|
<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="267"/>
|
<rect key="frame" x="10" y="33" width="454" height="264"/>
|
||||||
<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="225" width="280" height="22"/>
|
<rect key="frame" x="154" y="223" 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>
|
||||||
@@ -103,7 +104,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="201" width="78" height="17"/>
|
<rect key="frame" x="70" y="200" width="78" height="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Description:" id="257">
|
<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"/>
|
||||||
@@ -111,7 +112,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="229" width="102" height="17"/>
|
<rect key="frame" x="46" y="227" width="102" height="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Database name:" id="190">
|
<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"/>
|
||||||
@@ -119,7 +120,7 @@ Gw
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1394">
|
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1394">
|
||||||
<rect key="frame" x="152" y="73" width="71" height="25"/>
|
<rect key="frame" x="151" y="71" width="72" height="25"/>
|
||||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="1395">
|
<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"/>
|
||||||
@@ -132,7 +133,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="78" width="88" height="17"/>
|
<rect key="frame" x="60" y="77" width="88" height="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Compression:" id="1405">
|
<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"/>
|
||||||
@@ -140,7 +141,7 @@ Gw
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1434">
|
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1434">
|
||||||
<rect key="frame" x="107" y="48" width="41" height="17"/>
|
<rect key="frame" x="107" y="48" width="41" height="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Color:" id="1435">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Color:" id="1435">
|
||||||
<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"/>
|
||||||
@@ -148,7 +149,7 @@ Gw
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<colorWell translatesAutoresizingMaskIntoConstraints="NO" id="1439" customClass="HNHUIColorWell">
|
<colorWell translatesAutoresizingMaskIntoConstraints="NO" id="1439" customClass="HNHUIColorWell">
|
||||||
<rect key="frame" x="154" y="45" width="44" height="23"/>
|
<rect key="frame" x="154" y="44" width="44" height="23"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" constant="44" id="XBF-V3-71G"/>
|
<constraint firstAttribute="width" constant="44" id="XBF-V3-71G"/>
|
||||||
<constraint firstAttribute="height" constant="23" id="fgN-h5-Mr8"/>
|
<constraint firstAttribute="height" constant="23" id="fgN-h5-Mr8"/>
|
||||||
@@ -156,10 +157,10 @@ Gw
|
|||||||
<color key="color" red="0.05813049898" green="0.055541899059999997" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
<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="117" width="280" height="100"/>
|
<rect key="frame" x="154" y="115" width="280" height="100"/>
|
||||||
<clipView key="contentView" drawsBackground="NO" id="WOI-1v-RCe">
|
<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"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<textView importsGraphics="NO" verticallyResizable="YES" usesFontPanel="YES" findStyle="panel" continuousSpellChecking="YES" allowsUndo="YES" usesRuler="YES" allowsNonContiguousLayout="YES" spellingCorrection="YES" smartInsertDelete="YES" id="1531">
|
<textView importsGraphics="NO" verticallyResizable="YES" usesFontPanel="YES" findStyle="panel" continuousSpellChecking="YES" allowsUndo="YES" usesRuler="YES" allowsNonContiguousLayout="YES" spellingCorrection="YES" smartInsertDelete="YES" id="1531">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="278" height="98"/>
|
<rect key="frame" x="0.0" y="0.0" width="278" height="98"/>
|
||||||
@@ -186,7 +187,7 @@ Gw
|
|||||||
</scroller>
|
</scroller>
|
||||||
</scrollView>
|
</scrollView>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="RhU-5I-S5l">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="RhU-5I-S5l">
|
||||||
<rect key="frame" x="75" y="20" width="73" height="17"/>
|
<rect key="frame" x="75" y="20" width="73" height="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="File format:" id="bTk-YZ-x0G">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="File format:" id="bTk-YZ-x0G">
|
||||||
<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"/>
|
||||||
@@ -194,7 +195,7 @@ Gw
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1Ci-0B-yV5">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1Ci-0B-yV5">
|
||||||
<rect key="frame" x="152" y="20" width="72" height="17"/>
|
<rect key="frame" x="152" y="20" width="72" height="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="VersionInfo" id="Ush-4r-A1A">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="VersionInfo" id="Ush-4r-A1A">
|
||||||
<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"/>
|
||||||
@@ -236,11 +237,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="243"/>
|
<rect key="frame" x="10" y="33" width="454" height="288"/>
|
||||||
<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="150" y="199" width="155" height="25"/>
|
<rect key="frame" x="149" y="244" width="157" 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>
|
||||||
@@ -251,7 +252,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="205" width="73" height="17"/>
|
<rect key="frame" x="73" y="251" width="73" height="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Encryption:" id="gxY-UL-bEG">
|
<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"/>
|
||||||
@@ -259,29 +260,32 @@ 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="178"/>
|
<rect key="frame" x="17" y="16" width="420" height="224"/>
|
||||||
<view key="contentView" id="hkT-SX-Te1">
|
<view key="contentView" id="hkT-SX-Te1">
|
||||||
<rect key="frame" x="3" y="3" width="414" height="160"/>
|
<rect key="frame" x="3" y="3" width="414" height="206"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<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="251" y="18" width="143" height="23"/>
|
<rect key="frame" x="249" y="17" width="146" height="23"/>
|
||||||
<buttonCell key="cell" type="roundTextured" title="Generate Parameters" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="PoI-Er-Y8P">
|
<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="49" width="390" height="62"/>
|
<rect key="frame" x="12" y="47" width="390" 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">
|
||||||
<view key="view" id="88i-IZ-Yev">
|
<view key="view" id="88i-IZ-Yev">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="390" height="62"/>
|
<rect key="frame" x="0.0" y="0.0" width="390" height="61"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ztz-iY-hWV">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ztz-iY-hWV">
|
||||||
<rect key="frame" x="64" y="23" width="50" height="17"/>
|
<rect key="frame" x="64" y="23" width="50" height="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Rounds" id="uUQ-9s-M5E">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Rounds" id="uUQ-9s-M5E">
|
||||||
<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"/>
|
||||||
@@ -289,7 +293,7 @@ Gw
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8aq-34-rcd">
|
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8aq-34-rcd">
|
||||||
<rect key="frame" x="120" y="20" width="150" height="22"/>
|
<rect key="frame" x="120" y="20" width="150" height="21"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" constant="150" id="cdb-ED-zB3"/>
|
<constraint firstAttribute="width" constant="150" id="cdb-ED-zB3"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
@@ -314,13 +318,13 @@ Gw
|
|||||||
</constraints>
|
</constraints>
|
||||||
</view>
|
</view>
|
||||||
</tabViewItem>
|
</tabViewItem>
|
||||||
<tabViewItem label="Argon2" identifier="2" id="6qB-sH-9FI">
|
<tabViewItem label="Argon2d" identifier="2" id="6qB-sH-9FI">
|
||||||
<view key="view" id="ORc-Gq-vFd">
|
<view key="view" id="ORc-Gq-vFd">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="348" height="114"/>
|
<rect key="frame" x="0.0" y="0.0" width="348" height="111"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="aNy-eF-jKq">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="aNy-eF-jKq">
|
||||||
<rect key="frame" x="39" y="87" width="54" height="17"/>
|
<rect key="frame" x="39" y="85" width="54" height="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Threads" id="2QI-ne-N5d">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Threads" id="2QI-ne-N5d">
|
||||||
<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"/>
|
||||||
@@ -328,7 +332,7 @@ Gw
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="ml2-wP-EaZ">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="ml2-wP-EaZ">
|
||||||
<rect key="frame" x="32" y="55" width="61" height="17"/>
|
<rect key="frame" x="32" y="54" width="61" height="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Iterations" id="2ZA-Gc-JdZ">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Iterations" id="2ZA-Gc-JdZ">
|
||||||
<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"/>
|
||||||
@@ -336,7 +340,7 @@ Gw
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="178-0f-guB">
|
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="178-0f-guB">
|
||||||
<rect key="frame" x="99" y="84" width="150" height="22"/>
|
<rect key="frame" x="99" y="82" width="150" height="21"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" constant="150" id="IEL-Dn-XFa"/>
|
<constraint firstAttribute="width" constant="150" id="IEL-Dn-XFa"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
@@ -351,7 +355,7 @@ Gw
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="39N-8Q-J8b">
|
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="39N-8Q-J8b">
|
||||||
<rect key="frame" x="99" y="52" width="150" height="22"/>
|
<rect key="frame" x="99" y="51" width="150" height="21"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="9wr-x8-Wtv">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="9wr-x8-Wtv">
|
||||||
<numberFormatter key="formatter" formatterBehavior="default10_4" usesGroupingSeparator="NO" groupingSize="0" minimumIntegerDigits="0" maximumIntegerDigits="42" id="Kim-cZ-JbF">
|
<numberFormatter key="formatter" formatterBehavior="default10_4" usesGroupingSeparator="NO" groupingSize="0" minimumIntegerDigits="0" maximumIntegerDigits="42" id="Kim-cZ-JbF">
|
||||||
<real key="minimum" value="1"/>
|
<real key="minimum" value="1"/>
|
||||||
@@ -363,7 +367,7 @@ Gw
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="eEW-oa-V7U">
|
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="eEW-oa-V7U">
|
||||||
<rect key="frame" x="99" y="20" width="129" height="22"/>
|
<rect key="frame" x="99" y="20" width="129" height="21"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="M1E-89-YVm">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="M1E-89-YVm">
|
||||||
<byteCountFormatter key="formatter" countStyle="binary" allowsNonnumericFormatting="NO" id="tSh-D8-DnC"/>
|
<byteCountFormatter key="formatter" countStyle="binary" allowsNonnumericFormatting="NO" id="tSh-D8-DnC"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
@@ -372,7 +376,7 @@ Gw
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="9kV-19-lm6">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="9kV-19-lm6">
|
||||||
<rect key="frame" x="39" y="23" width="54" height="17"/>
|
<rect key="frame" x="39" y="23" width="54" height="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Memory" id="iRY-If-Kwn">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Memory" id="iRY-If-Kwn">
|
||||||
<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"/>
|
||||||
@@ -380,7 +384,7 @@ Gw
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="NfL-iP-SRk">
|
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="NfL-iP-SRk">
|
||||||
<rect key="frame" x="233" y="18" width="19" height="27"/>
|
<rect key="frame" x="233" y="17" width="19" height="28"/>
|
||||||
<stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="dvB-J3-Wmb"/>
|
<stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="dvB-J3-Wmb"/>
|
||||||
</stepper>
|
</stepper>
|
||||||
</subviews>
|
</subviews>
|
||||||
@@ -411,10 +415,105 @@ Gw
|
|||||||
</constraints>
|
</constraints>
|
||||||
</view>
|
</view>
|
||||||
</tabViewItem>
|
</tabViewItem>
|
||||||
|
<tabViewItem label="Argon2id" identifier="" id="xI9-6m-9ju">
|
||||||
|
<view key="view" id="k6k-0V-j7w">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="390" height="111"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="qKz-Ir-3lf">
|
||||||
|
<rect key="frame" x="254" y="17" width="19" height="28"/>
|
||||||
|
<stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="vGb-iO-lp5"/>
|
||||||
|
</stepper>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="vRx-5Q-dar">
|
||||||
|
<rect key="frame" x="60" y="23" width="54" height="16"/>
|
||||||
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Memory" id="mq2-0M-8jv">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="aZY-o8-2Dn">
|
||||||
|
<rect key="frame" x="120" y="82" width="150" height="21"/>
|
||||||
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="FID-Lr-sq8">
|
||||||
|
<numberFormatter key="formatter" formatterBehavior="default10_4" usesGroupingSeparator="NO" groupingSize="0" minimumIntegerDigits="0" maximumIntegerDigits="42" id="y7Q-EY-hcg">
|
||||||
|
<real key="minimum" value="1"/>
|
||||||
|
<real key="maximum" value="4294967295"/>
|
||||||
|
</numberFormatter>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="oZr-5M-43J">
|
||||||
|
<rect key="frame" x="53" y="54" width="61" height="16"/>
|
||||||
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Iterations" id="106-gi-Vnb">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="oXD-uF-jLh">
|
||||||
|
<rect key="frame" x="60" y="85" width="54" height="16"/>
|
||||||
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Threads" id="9zh-4T-smL">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="gqS-YX-aBl">
|
||||||
|
<rect key="frame" x="120" y="51" width="150" height="21"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="width" constant="150" id="ZMa-5V-8j5"/>
|
||||||
|
</constraints>
|
||||||
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="dAr-Cz-hg4">
|
||||||
|
<numberFormatter key="formatter" formatterBehavior="default10_4" usesGroupingSeparator="NO" groupingSize="0" minimumIntegerDigits="0" maximumIntegerDigits="42" id="Qas-an-0IT">
|
||||||
|
<real key="minimum" value="1"/>
|
||||||
|
<real key="maximum" value="16777215"/>
|
||||||
|
</numberFormatter>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="edk-MV-ArQ">
|
||||||
|
<rect key="frame" x="120" y="20" width="129" height="21"/>
|
||||||
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="Pqf-ww-JwE">
|
||||||
|
<byteCountFormatter key="formatter" countStyle="binary" allowsNonnumericFormatting="NO" id="WMf-04-Jeb"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="aZY-o8-2Dn" secondAttribute="trailing" constant="8" id="9cI-nd-tyn"/>
|
||||||
|
<constraint firstItem="oZr-5M-43J" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="k6k-0V-j7w" secondAttribute="leading" constant="8" id="9hh-vu-O8k"/>
|
||||||
|
<constraint firstItem="oXD-uF-jLh" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="k6k-0V-j7w" secondAttribute="leading" constant="8" id="AgJ-CV-R5A"/>
|
||||||
|
<constraint firstItem="gqS-YX-aBl" firstAttribute="top" secondItem="aZY-o8-2Dn" secondAttribute="bottom" constant="10" symbolic="YES" id="Ext-M1-ojI"/>
|
||||||
|
<constraint firstItem="gqS-YX-aBl" firstAttribute="width" secondItem="aZY-o8-2Dn" secondAttribute="width" id="IaU-gr-21m"/>
|
||||||
|
<constraint firstItem="gqS-YX-aBl" firstAttribute="leading" secondItem="oZr-5M-43J" secondAttribute="trailing" constant="8" symbolic="YES" id="Mna-7q-x0b"/>
|
||||||
|
<constraint firstItem="aZY-o8-2Dn" firstAttribute="centerX" secondItem="k6k-0V-j7w" secondAttribute="centerX" id="SAt-gT-Bzv"/>
|
||||||
|
<constraint firstItem="oXD-uF-jLh" firstAttribute="firstBaseline" secondItem="aZY-o8-2Dn" secondAttribute="firstBaseline" id="WdW-gk-jZF"/>
|
||||||
|
<constraint firstItem="oZr-5M-43J" firstAttribute="firstBaseline" secondItem="gqS-YX-aBl" secondAttribute="firstBaseline" id="di3-ie-idF"/>
|
||||||
|
<constraint firstItem="edk-MV-ArQ" firstAttribute="top" secondItem="gqS-YX-aBl" secondAttribute="bottom" constant="10" symbolic="YES" id="ee7-xM-yUV"/>
|
||||||
|
<constraint firstItem="gqS-YX-aBl" firstAttribute="leading" secondItem="aZY-o8-2Dn" secondAttribute="leading" id="fX2-vS-LbX"/>
|
||||||
|
<constraint firstItem="vRx-5Q-dar" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="k6k-0V-j7w" secondAttribute="leading" constant="20" symbolic="YES" id="hCE-RO-pFT"/>
|
||||||
|
<constraint firstItem="aZY-o8-2Dn" firstAttribute="leading" secondItem="oXD-uF-jLh" secondAttribute="trailing" constant="8" symbolic="YES" id="iLD-kh-ea0"/>
|
||||||
|
<constraint firstItem="edk-MV-ArQ" firstAttribute="leading" secondItem="vRx-5Q-dar" secondAttribute="trailing" constant="8" symbolic="YES" id="jUP-Qe-l93"/>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="edk-MV-ArQ" secondAttribute="bottom" constant="20" id="knT-Qd-N96"/>
|
||||||
|
<constraint firstItem="qKz-Ir-3lf" firstAttribute="leading" secondItem="edk-MV-ArQ" secondAttribute="trailing" constant="8" symbolic="YES" id="p8X-En-PYk"/>
|
||||||
|
<constraint firstItem="qKz-Ir-3lf" firstAttribute="trailing" secondItem="gqS-YX-aBl" secondAttribute="trailing" id="qe1-0S-kq1"/>
|
||||||
|
<constraint firstItem="vRx-5Q-dar" firstAttribute="firstBaseline" secondItem="edk-MV-ArQ" secondAttribute="firstBaseline" id="qht-hF-KQQ"/>
|
||||||
|
<constraint firstItem="aZY-o8-2Dn" firstAttribute="top" secondItem="k6k-0V-j7w" secondAttribute="top" constant="8" id="t1Z-3T-UXQ"/>
|
||||||
|
<constraint firstItem="qKz-Ir-3lf" firstAttribute="firstBaseline" secondItem="edk-MV-ArQ" secondAttribute="firstBaseline" id="uid-vB-VTE"/>
|
||||||
|
<constraint firstItem="edk-MV-ArQ" firstAttribute="leading" secondItem="gqS-YX-aBl" secondAttribute="leading" id="x0l-y0-NlL"/>
|
||||||
|
</constraints>
|
||||||
|
</view>
|
||||||
|
</tabViewItem>
|
||||||
</tabViewItems>
|
</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="130" y="116" width="155" height="25"/>
|
<rect key="frame" x="129" y="162" width="157" height="25"/>
|
||||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="Pb9-YV-rYe">
|
<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"/>
|
||||||
@@ -425,7 +524,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="122" width="63" height="17"/>
|
<rect key="frame" x="63" y="169" width="63" height="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Algorithm" id="GVd-KH-pHc">
|
<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"/>
|
||||||
@@ -470,18 +569,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="507" height="391"/>
|
<rect key="frame" x="10" y="33" width="513" height="393"/>
|
||||||
<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="355" width="145" height="18"/>
|
<rect key="frame" x="184" y="356" width="149" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Enable Entry History" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="532">
|
<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="327" width="64" height="22"/>
|
<rect key="frame" x="186" y="328" width="64" height="21"/>
|
||||||
<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>
|
||||||
@@ -493,11 +592,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="27"/>
|
<rect key="frame" x="255" y="325" width="19" height="28"/>
|
||||||
<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="330" width="139" height="17"/>
|
<rect key="frame" x="41" y="331" width="139" height="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" enabled="NO" sendsActionOnEndEditing="YES" title="Maximum history size:" id="1269">
|
<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"/>
|
||||||
@@ -505,7 +604,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="302" width="162" height="17"/>
|
<rect key="frame" x="18" y="304" width="162" height="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" enabled="NO" sendsActionOnEndEditing="YES" title="Maximum items in history:" id="558">
|
<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"/>
|
||||||
@@ -513,7 +612,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="299" width="64" height="22"/>
|
<rect key="frame" x="186" y="301" width="64" height="21"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="594">
|
<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"/>
|
||||||
@@ -521,18 +620,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="297" width="19" height="27"/>
|
<rect key="frame" x="255" y="298" width="19" height="28"/>
|
||||||
<stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="600"/>
|
<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="266" width="137" height="18"/>
|
<rect key="frame" x="184" y="268" width="141" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Enable Recycle Bin" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="536">
|
<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="184" y="236" width="38" height="25"/>
|
<rect key="frame" x="183" y="237" width="39" height="25"/>
|
||||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="679">
|
<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"/>
|
||||||
@@ -540,10 +639,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="288" width="467" height="5"/>
|
<rect key="frame" x="20" y="291" width="473" height="5"/>
|
||||||
</box>
|
</box>
|
||||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1582">
|
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1582">
|
||||||
<rect key="frame" x="63" y="200" width="117" height="17"/>
|
<rect key="frame" x="63" y="203" width="117" height="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Default Username:" id="1591">
|
<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"/>
|
||||||
@@ -551,7 +650,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="197" width="301" height="22"/>
|
<rect key="frame" x="186" y="200" width="307" height="21"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="1731">
|
<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"/>
|
||||||
@@ -559,7 +658,7 @@ Gw
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1738">
|
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1738">
|
||||||
<rect key="frame" x="184" y="153" width="38" height="25"/>
|
<rect key="frame" x="183" y="156" width="39" height="25"/>
|
||||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="1739">
|
<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"/>
|
||||||
@@ -567,7 +666,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="95" width="128" height="22"/>
|
<rect key="frame" x="186" y="98" width="128" height="21"/>
|
||||||
<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>
|
||||||
@@ -579,25 +678,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="92" width="19" height="27"/>
|
<rect key="frame" x="319" y="94" width="19" height="28"/>
|
||||||
<stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="qQV-3d-GpK"/>
|
<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="123" width="171" height="18"/>
|
<rect key="frame" x="184" y="126" width="175" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Recommend key change" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="CtU-Eq-dgy">
|
<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="71" width="129" height="18"/>
|
<rect key="frame" x="184" y="73" width="133" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Force key change" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="z6u-YT-7LE">
|
<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="43" width="128" height="22"/>
|
<rect key="frame" x="186" y="45" width="128" height="21"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="M9G-Yy-1s4">
|
<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"/>
|
||||||
@@ -606,11 +705,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="40" width="19" height="27"/>
|
<rect key="frame" x="319" y="41" width="19" height="28"/>
|
||||||
<stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="7Hw-Qf-zWf"/>
|
<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="159" width="105" height="17"/>
|
<rect key="frame" x="75" y="163" width="105" height="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Template Group:" id="1588">
|
<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"/>
|
||||||
@@ -618,10 +717,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="145" width="467" height="5"/>
|
<rect key="frame" x="20" y="149" width="473" 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="242" width="115" height="17"/>
|
<rect key="frame" x="65" y="244" width="115" height="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Recyclebin Group:" id="kI5-Kp-byE">
|
<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"/>
|
||||||
@@ -629,7 +728,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="98" width="153" height="17"/>
|
<rect key="frame" x="27" y="101" width="153" height="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Recommend key change" id="Xib-Fn-sqx">
|
<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"/>
|
||||||
@@ -637,7 +736,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="56" y="46" width="124" height="17"/>
|
<rect key="frame" x="57" y="48" width="123" height="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Enforce key change" id="5QH-N1-FHK">
|
<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"/>
|
||||||
@@ -645,7 +744,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="19" width="257" height="18"/>
|
<rect key="frame" x="184" y="20" width="261" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Force key change once after unlocking" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="pA1-aL-KjT">
|
<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"/>
|
||||||
@@ -749,7 +848,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" y="-860"/>
|
<point key="canvasLocation" x="-2020.5" y="-860.5"/>
|
||||||
</window>
|
</window>
|
||||||
</objects>
|
</objects>
|
||||||
</document>
|
</document>
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="6254" systemVersion="13F34" 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="6254"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||||
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
<customObject id="-2" userLabel="File's Owner" customClass="MPDatePickingViewController">
|
<customObject id="-2" userLabel="File's Owner" customClass="MPDatePickingViewController">
|
||||||
@@ -15,24 +16,23 @@
|
|||||||
<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="316" height="259"/>
|
<rect key="frame" x="0.0" y="0.0" width="190" height="132"/>
|
||||||
<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="91" width="277" height="148"/>
|
<rect key="frame" x="20" y="88" width="153" height="28"/>
|
||||||
<datePickerCell key="cell" borderStyle="bezel" alignment="left" datePickerStyle="clockAndCalendar" id="4">
|
<datePickerCell key="cell" borderStyle="bezel" alignment="left" id="4">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
<calendarDate key="date" timeIntervalSinceReferenceDate="-595929600" calendarFormat="%Y-%m-%d %H:%M:%S %z">
|
<date key="date" timeIntervalSinceReferenceDate="-595929600">
|
||||||
<!--1982-02-12 16:00:00 +0000-->
|
<!--1982-02-12 16:00:00 +0000-->
|
||||||
<timeZone key="timeZone" name="US/Pacific"/>
|
</date>
|
||||||
</calendarDate>
|
|
||||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
<datePickerElements key="datePickerElements" year="YES" month="YES" day="YES" hour="YES" minute="YES"/>
|
<datePickerElements key="datePickerElements" year="YES" month="YES" day="YES" hour="YES" minute="YES"/>
|
||||||
</datePickerCell>
|
</datePickerCell>
|
||||||
</datePicker>
|
</datePicker>
|
||||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="15">
|
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="15">
|
||||||
<rect key="frame" x="18" y="47" width="281" height="26"/>
|
<rect key="frame" x="17" y="44" width="157" height="25"/>
|
||||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="16">
|
<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" translatesAutoresizingMaskIntoConstraints="NO" id="25">
|
<button verticalHuggingPriority="750" horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="25">
|
||||||
<rect key="frame" x="226" y="18" width="70" height="25"/>
|
<rect key="frame" x="87" y="13" width="90" height="32"/>
|
||||||
<buttonCell key="cell" type="roundTextured" title="Use Date" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="26">
|
<buttonCell key="cell" type="push" title="Use Date" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="26">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<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" translatesAutoresizingMaskIntoConstraints="NO" id="29">
|
<button verticalHuggingPriority="750" horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="29">
|
||||||
<rect key="frame" x="162" y="18" width="56" height="25"/>
|
<rect key="frame" x="13" y="13" width="76" height="32"/>
|
||||||
<buttonCell key="cell" type="roundTextured" title="Cancel" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="30">
|
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="30">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
</buttonCell>
|
</buttonCell>
|
||||||
@@ -73,10 +73,11 @@
|
|||||||
<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="8" symbolic="YES" id="on5-xg-jcC"/>
|
<constraint firstItem="25" firstAttribute="leading" secondItem="29" secondAttribute="trailing" constant="12" symbolic="YES" id="on5-xg-jcC"/>
|
||||||
<constraint firstItem="15" firstAttribute="top" secondItem="3" secondAttribute="bottom" constant="20" symbolic="YES" id="qKB-vi-OAw"/>
|
<constraint firstItem="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>
|
||||||
|
<point key="canvasLocation" x="-89" y="77"/>
|
||||||
</customView>
|
</customView>
|
||||||
</objects>
|
</objects>
|
||||||
</document>
|
</document>
|
||||||
|
|||||||
@@ -1,14 +1,13 @@
|
|||||||
<?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="14460.31" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19529" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14460.31"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19529"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<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"/>
|
||||||
@@ -18,22 +17,16 @@
|
|||||||
<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="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"/>
|
||||||
@@ -43,11 +36,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="293" height="493"/>
|
<rect key="frame" x="0.0" y="0.0" width="273" height="493"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<segmentedControl verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="82">
|
<segmentedControl verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="82">
|
||||||
<rect key="frame" x="57" y="469" width="179" height="19"/>
|
<rect key="frame" x="62" y="468" width="150" height="21"/>
|
||||||
<segmentedCell key="cell" controlSize="small" borderStyle="border" alignment="left" style="texturedSquare" trackingMode="selectOne" id="238">
|
<segmentedCell key="cell" controlSize="small" borderStyle="border" alignment="left" style="rounded" 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"/>
|
||||||
@@ -57,26 +50,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="293" height="467"/>
|
<rect key="frame" x="0.0" y="0.0" width="273" 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="293" height="467"/>
|
<rect key="frame" x="0.0" y="0.0" width="273" 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="293" height="467"/>
|
<rect key="frame" x="0.0" y="0.0" width="273" 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="241" y="428" width="32" height="23"/>
|
<rect key="frame" x="214" y="423" width="46" height="32"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" constant="32" id="176"/>
|
<constraint firstAttribute="width" constant="32" id="176"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSAddTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" focusRingType="none" imageScaling="proportionallyDown" inset="2" id="177">
|
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSAddTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" focusRingType="none" imageScaling="proportionallyDown" inset="2" id="177">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
</buttonCell>
|
</buttonCell>
|
||||||
@@ -93,21 +86,20 @@
|
|||||||
</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="253" height="396"/>
|
<rect key="frame" x="20" y="26" width="233" height="396"/>
|
||||||
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="F3N-QI-Di5">
|
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="F3N-QI-Di5">
|
||||||
<rect key="frame" x="1" y="1" width="251" height="394"/>
|
<rect key="frame" x="1" y="1" width="231" height="394"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<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="251" height="394"/>
|
<rect key="frame" x="0.0" y="0.0" width="231" height="394"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<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="248" minWidth="40" maxWidth="1000" id="140">
|
<tableColumn width="190" minWidth="40" maxWidth="1000" id="140">
|
||||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left">
|
<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>
|
||||||
@@ -119,11 +111,11 @@
|
|||||||
<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="1" y="1" width="248" height="36"/>
|
<rect key="frame" x="11" y="1" width="199" height="36"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<imageView translatesAutoresizingMaskIntoConstraints="NO" id="144">
|
<imageView translatesAutoresizingMaskIntoConstraints="NO" id="144">
|
||||||
<rect key="frame" x="3" y="2" width="32" height="32"/>
|
<rect key="frame" x="3" y="-1" width="32" height="38"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" constant="32" id="153"/>
|
<constraint firstAttribute="width" constant="32" id="153"/>
|
||||||
<constraint firstAttribute="height" constant="32" id="154"/>
|
<constraint firstAttribute="height" constant="32" id="154"/>
|
||||||
@@ -131,7 +123,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="206" height="17"/>
|
<rect key="frame" x="41" y="10" width="157" height="16"/>
|
||||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="151">
|
<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"/>
|
||||||
@@ -152,11 +144,11 @@
|
|||||||
</connections>
|
</connections>
|
||||||
</tableCellView>
|
</tableCellView>
|
||||||
<tableCellView identifier="SelectedCell" id="141" customClass="MPSelectedAttachmentTableCellView">
|
<tableCellView identifier="SelectedCell" id="141" customClass="MPSelectedAttachmentTableCellView">
|
||||||
<rect key="frame" x="1" y="39" width="248" height="36"/>
|
<rect key="frame" x="11" y="39" width="199" height="36"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<imageView translatesAutoresizingMaskIntoConstraints="NO" id="167">
|
<imageView translatesAutoresizingMaskIntoConstraints="NO" id="167">
|
||||||
<rect key="frame" x="3" y="2" width="32" height="32"/>
|
<rect key="frame" x="3" y="-1" width="32" height="38"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="height" constant="32" id="168"/>
|
<constraint firstAttribute="height" constant="32" id="168"/>
|
||||||
<constraint firstAttribute="width" constant="32" id="169"/>
|
<constraint firstAttribute="width" constant="32" id="169"/>
|
||||||
@@ -164,7 +156,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="158" height="17"/>
|
<rect key="frame" x="41" y="10" width="106" height="16"/>
|
||||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="171">
|
<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"/>
|
||||||
@@ -172,7 +164,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="205" y="6" width="40" height="23"/>
|
<rect key="frame" x="150" y="4" width="50" height="25"/>
|
||||||
<popUpButtonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" borderStyle="border" imageScaling="proportionallyDown" inset="2" pullsDown="YES" altersStateOfSelectedItem="NO" id="nJc-UT-cas">
|
<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"/>
|
||||||
@@ -218,7 +210,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="147" width="52" height="16"/>
|
<rect key="frame" x="1" y="379" width="231" 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">
|
||||||
@@ -242,7 +234,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="293" height="467"/>
|
<rect key="frame" x="0.0" y="0.0" width="273" height="467"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
</view>
|
</view>
|
||||||
</tabViewItem>
|
</tabViewItem>
|
||||||
@@ -254,187 +246,18 @@
|
|||||||
<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="391" y="-865"/>
|
<point key="canvasLocation" x="-239" y="-1954"/>
|
||||||
</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="712"/>
|
<rect key="frame" x="0.0" y="0.0" width="291" height="840"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="52">
|
|
||||||
<rect key="frame" x="18" y="693" width="27" height="14"/>
|
|
||||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Title" id="71">
|
|
||||||
<font key="font" metaFont="smallSystem"/>
|
|
||||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</textFieldCell>
|
|
||||||
</textField>
|
|
||||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="53" customClass="HNHUITextField">
|
|
||||||
<rect key="frame" x="20" y="663" width="251" height="22"/>
|
|
||||||
<constraints>
|
|
||||||
<constraint firstAttribute="height" constant="22" id="7Xj-3i-fBY"/>
|
|
||||||
</constraints>
|
|
||||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="70">
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</textFieldCell>
|
|
||||||
<connections>
|
|
||||||
<outlet property="delegate" destination="-2" id="pQH-Xf-3pz"/>
|
|
||||||
<outlet property="nextKeyView" destination="55" id="FgE-cj-E5Z"/>
|
|
||||||
</connections>
|
|
||||||
</textField>
|
|
||||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="54">
|
|
||||||
<rect key="frame" x="18" y="637" width="58" height="14"/>
|
|
||||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Username" id="69">
|
|
||||||
<font key="font" metaFont="smallSystem"/>
|
|
||||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</textFieldCell>
|
|
||||||
</textField>
|
|
||||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="55" customClass="HNHUITextField">
|
|
||||||
<rect key="frame" x="20" y="607" width="251" height="22"/>
|
|
||||||
<constraints>
|
|
||||||
<constraint firstAttribute="height" constant="22" id="0l5-fD-0eW"/>
|
|
||||||
</constraints>
|
|
||||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="68">
|
|
||||||
<font key="font" size="13" name="Menlo-Regular"/>
|
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</textFieldCell>
|
|
||||||
<connections>
|
|
||||||
<outlet property="delegate" destination="-2" id="22y-I8-aaG"/>
|
|
||||||
<outlet property="nextKeyView" destination="60" id="ZPp-lg-TBS"/>
|
|
||||||
</connections>
|
|
||||||
</textField>
|
|
||||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="56" customClass="HNHUITextField">
|
|
||||||
<rect key="frame" x="20" y="469" width="251" height="22"/>
|
|
||||||
<constraints>
|
|
||||||
<constraint firstAttribute="height" constant="22" id="SoS-8e-rkN"/>
|
|
||||||
</constraints>
|
|
||||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="67">
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</textFieldCell>
|
|
||||||
<connections>
|
|
||||||
<outlet property="delegate" destination="-2" id="LzV-u6-mkP"/>
|
|
||||||
<outlet property="nextKeyView" destination="7" id="8Vo-ZR-aWE"/>
|
|
||||||
</connections>
|
|
||||||
</textField>
|
|
||||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="57">
|
|
||||||
<rect key="frame" x="18" y="499" width="26" height="14"/>
|
|
||||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="URL" id="66">
|
|
||||||
<font key="font" metaFont="smallSystem"/>
|
|
||||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</textFieldCell>
|
|
||||||
</textField>
|
|
||||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="58">
|
|
||||||
<rect key="frame" x="18" y="581" width="55" height="14"/>
|
|
||||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Password" id="65">
|
|
||||||
<font key="font" metaFont="smallSystem"/>
|
|
||||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</textFieldCell>
|
|
||||||
</textField>
|
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="59">
|
|
||||||
<rect key="frame" x="20" y="520" width="251" height="23"/>
|
|
||||||
<buttonCell key="cell" type="roundTextured" title="Generate" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="64">
|
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
</buttonCell>
|
|
||||||
<connections>
|
|
||||||
<action selector="showPasswordGenerator:" target="-2" id="xxV-lD-L1K"/>
|
|
||||||
<outlet property="nextKeyView" destination="56" id="rY0-PH-WBT"/>
|
|
||||||
</connections>
|
|
||||||
</button>
|
|
||||||
<secureTextField verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="60" customClass="HNHUISecureTextField">
|
|
||||||
<rect key="frame" x="20" y="551" width="211" height="22"/>
|
|
||||||
<constraints>
|
|
||||||
<constraint firstAttribute="height" constant="22" id="VFI-jo-tOU"/>
|
|
||||||
</constraints>
|
|
||||||
<secureTextFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="63">
|
|
||||||
<font key="font" size="13" name="Menlo-Regular"/>
|
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<allowedInputSourceLocales>
|
|
||||||
<string>NSAllRomanInputSourcesLocaleIdentifier</string>
|
|
||||||
</allowedInputSourceLocales>
|
|
||||||
</secureTextFieldCell>
|
|
||||||
<connections>
|
|
||||||
<outlet property="delegate" destination="-2" id="RBf-26-U9y"/>
|
|
||||||
<outlet property="nextKeyView" destination="61" id="5yc-GS-oVG"/>
|
|
||||||
</connections>
|
|
||||||
</secureTextField>
|
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="61">
|
|
||||||
<rect key="frame" x="239" y="550" width="32" height="23"/>
|
|
||||||
<constraints>
|
|
||||||
<constraint firstAttribute="width" constant="32" id="rSr-fw-11t"/>
|
|
||||||
</constraints>
|
|
||||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSQuickLookTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="62">
|
|
||||||
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
</buttonCell>
|
|
||||||
<connections>
|
|
||||||
<outlet property="nextKeyView" destination="59" id="ZRe-l9-kNq"/>
|
|
||||||
</connections>
|
|
||||||
</button>
|
|
||||||
<button horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="7">
|
|
||||||
<rect key="frame" x="18" y="441" width="67" height="18"/>
|
|
||||||
<constraints>
|
|
||||||
<constraint firstAttribute="height" constant="14" id="vgc-Xu-RJs"/>
|
|
||||||
</constraints>
|
|
||||||
<buttonCell key="cell" type="check" title="Expires" bezelStyle="regularSquare" imagePosition="left" lineBreakMode="truncatingMiddle" state="on" inset="2" id="78">
|
|
||||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
</buttonCell>
|
|
||||||
<connections>
|
|
||||||
<action selector="toggleExpire:" target="-2" id="EBe-2q-ASh"/>
|
|
||||||
<outlet property="nextKeyView" destination="8" id="SbJ-ZA-mXZ"/>
|
|
||||||
</connections>
|
|
||||||
</button>
|
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8">
|
|
||||||
<rect key="frame" x="239" y="438" width="32" height="23"/>
|
|
||||||
<constraints>
|
|
||||||
<constraint firstAttribute="width" constant="32" id="Ped-nx-uti"/>
|
|
||||||
</constraints>
|
|
||||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSActionTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="77">
|
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
</buttonCell>
|
|
||||||
<connections>
|
|
||||||
<action selector="pickExpiryDate:" target="-1" id="DQK-sp-SIL"/>
|
|
||||||
<outlet property="nextKeyView" destination="5" id="cVg-qt-OBX"/>
|
|
||||||
</connections>
|
|
||||||
</button>
|
|
||||||
<tokenField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="5">
|
|
||||||
<rect key="frame" x="20" y="332" width="251" height="77"/>
|
|
||||||
<constraints>
|
|
||||||
<constraint firstAttribute="height" constant="77" id="80"/>
|
|
||||||
</constraints>
|
|
||||||
<tokenFieldCell key="cell" selectable="YES" editable="YES" borderStyle="bezel" alignment="left" drawsBackground="YES" allowsEditingTextAttributes="YES" id="81">
|
|
||||||
<font key="font" metaFont="cellTitle"/>
|
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</tokenFieldCell>
|
|
||||||
<connections>
|
|
||||||
<outlet property="nextKeyView" destination="193" id="Kb5-0L-Lkd"/>
|
|
||||||
</connections>
|
|
||||||
</tokenField>
|
|
||||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6">
|
|
||||||
<rect key="frame" x="18" y="417" width="29" height="14"/>
|
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Tags" id="79">
|
|
||||||
<font key="font" metaFont="smallSystem"/>
|
|
||||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</textFieldCell>
|
|
||||||
</textField>
|
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="0U8-TS-giU">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="0U8-TS-giU">
|
||||||
<rect key="frame" x="18" y="80" width="32" height="14"/>
|
<rect key="frame" x="18" y="77" width="32" height="14"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" title="UUID" id="vTq-N1-5oa">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" title="UUID" id="vTq-N1-5oa">
|
||||||
<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"/>
|
||||||
@@ -442,10 +265,7 @@
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="IpW-b2-jWu" customClass="HNHUITextField">
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="IpW-b2-jWu" customClass="HNHUITextField">
|
||||||
<rect key="frame" x="20" y="50" width="251" height="22"/>
|
<rect key="frame" x="20" y="48" width="251" height="21"/>
|
||||||
<constraints>
|
|
||||||
<constraint firstAttribute="height" constant="22" id="Zfy-mh-1TF"/>
|
|
||||||
</constraints>
|
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="Hml-NR-AeS">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="Hml-NR-AeS">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
@@ -456,19 +276,18 @@
|
|||||||
</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="20" y="19" width="251" height="23"/>
|
<rect key="frame" x="13" y="13" width="265" height="32"/>
|
||||||
<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">
|
<buttonCell key="cell" type="push" title="Show Plugin Data" bezelStyle="rounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="X9y-K7-lix">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<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="216" y="101" width="55" height="23"/>
|
<rect key="frame" x="219" y="97" width="55" height="24"/>
|
||||||
<segmentedCell key="cell" borderStyle="border" alignment="left" style="texturedRounded" trackingMode="selectOne" id="POU-2t-8fl">
|
<segmentedCell key="cell" borderStyle="border" alignment="left" style="separated" 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"/>
|
||||||
@@ -480,68 +299,66 @@
|
|||||||
<outlet property="nextKeyView" destination="QSX-Xo-tcH" id="P9m-Wl-V3E"/>
|
<outlet property="nextKeyView" destination="QSX-Xo-tcH" id="P9m-Wl-V3E"/>
|
||||||
</connections>
|
</connections>
|
||||||
</segmentedControl>
|
</segmentedControl>
|
||||||
|
<stackView distribution="fill" orientation="vertical" alignment="leading" horizontalStackHuggingPriority="250" verticalStackHuggingPriority="250" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="dx3-E2-FFt">
|
||||||
|
<rect key="frame" x="20" y="721" width="251" height="99"/>
|
||||||
|
<subviews>
|
||||||
|
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6">
|
||||||
|
<rect key="frame" x="-2" y="85" width="255" height="14"/>
|
||||||
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Tags" id="79">
|
||||||
|
<font key="font" metaFont="smallSystem"/>
|
||||||
|
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
<tokenField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="5">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="251" height="77"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="height" constant="77" id="80"/>
|
||||||
|
</constraints>
|
||||||
|
<tokenFieldCell key="cell" selectable="YES" editable="YES" borderStyle="bezel" alignment="left" drawsBackground="YES" allowsEditingTextAttributes="YES" id="81">
|
||||||
|
<font key="font" metaFont="cellTitle"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</tokenFieldCell>
|
||||||
|
<connections>
|
||||||
|
<outlet property="nextKeyView" destination="193" id="Kb5-0L-Lkd"/>
|
||||||
|
</connections>
|
||||||
|
</tokenField>
|
||||||
|
</subviews>
|
||||||
|
<visibilityPriorities>
|
||||||
|
<integer value="1000"/>
|
||||||
|
<integer value="1000"/>
|
||||||
|
</visibilityPriorities>
|
||||||
|
<customSpacing>
|
||||||
|
<real value="3.4028234663852886e+38"/>
|
||||||
|
<real value="3.4028234663852886e+38"/>
|
||||||
|
</customSpacing>
|
||||||
|
</stackView>
|
||||||
</subviews>
|
</subviews>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstItem="52" firstAttribute="top" secondItem="4" secondAttribute="top" constant="5" id="11"/>
|
|
||||||
<constraint firstItem="52" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" symbolic="YES" id="12"/>
|
|
||||||
<constraint firstItem="53" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" symbolic="YES" id="13"/>
|
|
||||||
<constraint firstItem="53" firstAttribute="top" secondItem="52" secondAttribute="bottom" constant="8" symbolic="YES" id="14"/>
|
|
||||||
<constraint firstAttribute="trailing" secondItem="53" secondAttribute="trailing" constant="20" symbolic="YES" id="15"/>
|
|
||||||
<constraint firstItem="54" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" symbolic="YES" id="16"/>
|
|
||||||
<constraint firstItem="54" firstAttribute="top" secondItem="53" secondAttribute="bottom" constant="12" id="17"/>
|
|
||||||
<constraint firstItem="55" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" symbolic="YES" id="18"/>
|
|
||||||
<constraint firstItem="55" firstAttribute="top" secondItem="54" secondAttribute="bottom" constant="8" symbolic="YES" id="19"/>
|
|
||||||
<constraint firstAttribute="trailing" secondItem="55" secondAttribute="trailing" constant="20" symbolic="YES" id="20"/>
|
|
||||||
<constraint firstItem="57" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" symbolic="YES" id="21"/>
|
|
||||||
<constraint firstItem="56" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" symbolic="YES" id="23"/>
|
|
||||||
<constraint firstItem="56" firstAttribute="top" secondItem="57" secondAttribute="bottom" constant="8" symbolic="YES" id="24"/>
|
|
||||||
<constraint firstAttribute="trailing" secondItem="56" secondAttribute="trailing" constant="20" symbolic="YES" id="25"/>
|
|
||||||
<constraint firstItem="58" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" symbolic="YES" id="26"/>
|
|
||||||
<constraint firstItem="60" firstAttribute="top" secondItem="58" secondAttribute="bottom" constant="8" symbolic="YES" id="29"/>
|
|
||||||
<constraint firstItem="60" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" symbolic="YES" id="30"/>
|
|
||||||
<constraint firstItem="59" firstAttribute="top" secondItem="61" secondAttribute="bottom" constant="8" symbolic="YES" id="31"/>
|
|
||||||
<constraint firstItem="59" firstAttribute="top" secondItem="60" secondAttribute="bottom" constant="8" symbolic="YES" id="32"/>
|
|
||||||
<constraint firstItem="59" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" symbolic="YES" id="33"/>
|
|
||||||
<constraint firstAttribute="trailing" secondItem="59" secondAttribute="trailing" constant="20" symbolic="YES" id="34"/>
|
|
||||||
<constraint firstItem="61" firstAttribute="leading" secondItem="60" secondAttribute="trailing" constant="8" symbolic="YES" id="40"/>
|
|
||||||
<constraint firstAttribute="trailing" secondItem="61" secondAttribute="trailing" constant="20" symbolic="YES" id="41"/>
|
|
||||||
<constraint firstItem="7" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" symbolic="YES" id="42"/>
|
|
||||||
<constraint firstItem="7" firstAttribute="centerY" secondItem="8" secondAttribute="centerY" id="43"/>
|
|
||||||
<constraint firstItem="6" firstAttribute="top" secondItem="7" secondAttribute="bottom" constant="12" id="44"/>
|
|
||||||
<constraint firstItem="6" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" symbolic="YES" id="45"/>
|
|
||||||
<constraint firstAttribute="trailing" secondItem="8" secondAttribute="trailing" constant="20" symbolic="YES" id="47"/>
|
|
||||||
<constraint firstItem="5" firstAttribute="top" secondItem="6" secondAttribute="bottom" constant="8" symbolic="YES" id="48"/>
|
|
||||||
<constraint firstItem="5" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" symbolic="YES" id="49"/>
|
|
||||||
<constraint firstAttribute="trailing" secondItem="5" secondAttribute="trailing" constant="20" symbolic="YES" id="50"/>
|
|
||||||
<constraint firstItem="QSX-Xo-tcH" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" symbolic="YES" id="2AA-hQ-mL7"/>
|
<constraint firstItem="QSX-Xo-tcH" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" symbolic="YES" id="2AA-hQ-mL7"/>
|
||||||
<constraint firstItem="IpW-b2-jWu" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" id="51R-pR-KLO"/>
|
<constraint firstItem="IpW-b2-jWu" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" id="51R-pR-KLO"/>
|
||||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="52" secondAttribute="trailing" constant="20" symbolic="YES" id="6P6-fW-kGx"/>
|
|
||||||
<constraint firstAttribute="trailing" secondItem="IpW-b2-jWu" secondAttribute="trailing" constant="20" id="D0t-s7-2hT"/>
|
<constraint firstAttribute="trailing" secondItem="IpW-b2-jWu" secondAttribute="trailing" constant="20" id="D0t-s7-2hT"/>
|
||||||
<constraint firstItem="7" firstAttribute="top" secondItem="56" secondAttribute="bottom" constant="12" id="Gh9-Lg-kcm"/>
|
<constraint firstAttribute="bottom" secondItem="QSX-Xo-tcH" secondAttribute="bottom" constant="20" symbolic="YES" id="Fpp-iu-smS"/>
|
||||||
<constraint firstItem="IpW-b2-jWu" firstAttribute="top" secondItem="0U8-TS-giU" secondAttribute="bottom" constant="8" symbolic="YES" id="HSM-Aj-X9I"/>
|
<constraint firstItem="IpW-b2-jWu" firstAttribute="top" secondItem="0U8-TS-giU" secondAttribute="bottom" constant="8" symbolic="YES" id="HSM-Aj-X9I"/>
|
||||||
<constraint firstItem="58" firstAttribute="top" secondItem="55" secondAttribute="bottom" constant="12" id="JiM-Dm-AG8"/>
|
|
||||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="57" secondAttribute="trailing" constant="20" symbolic="YES" id="N4A-wg-PdS"/>
|
|
||||||
<constraint firstItem="QSX-Xo-tcH" firstAttribute="top" secondItem="IpW-b2-jWu" secondAttribute="bottom" constant="8" symbolic="YES" id="TPp-cx-48q"/>
|
<constraint firstItem="QSX-Xo-tcH" firstAttribute="top" secondItem="IpW-b2-jWu" secondAttribute="bottom" constant="8" symbolic="YES" id="TPp-cx-48q"/>
|
||||||
<constraint firstItem="8" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="7" secondAttribute="trailing" constant="8" symbolic="YES" id="Xa5-Ir-XNC"/>
|
|
||||||
<constraint firstAttribute="bottom" secondItem="QSX-Xo-tcH" secondAttribute="bottom" constant="20" symbolic="YES" id="ZdF-5c-xDa"/>
|
|
||||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="0U8-TS-giU" secondAttribute="trailing" constant="20" symbolic="YES" id="a5R-eI-VuV"/>
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="0U8-TS-giU" secondAttribute="trailing" constant="20" symbolic="YES" id="a5R-eI-VuV"/>
|
||||||
<constraint firstItem="0U8-TS-giU" firstAttribute="top" secondItem="G9J-nn-2bu" secondAttribute="bottom" constant="8" symbolic="YES" id="aes-tv-LHA"/>
|
<constraint firstItem="0U8-TS-giU" firstAttribute="top" secondItem="G9J-nn-2bu" secondAttribute="bottom" constant="8" symbolic="YES" id="aes-tv-LHA"/>
|
||||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="54" secondAttribute="trailing" constant="20" symbolic="YES" id="cYP-oK-dVP"/>
|
<constraint firstAttribute="trailing" secondItem="dx3-E2-FFt" secondAttribute="trailing" constant="20" symbolic="YES" id="esd-fR-ZGC"/>
|
||||||
<constraint firstAttribute="trailing" secondItem="G9J-nn-2bu" secondAttribute="trailing" constant="20" symbolic="YES" id="ggu-f5-LtR"/>
|
<constraint firstAttribute="trailing" secondItem="G9J-nn-2bu" secondAttribute="trailing" constant="20" symbolic="YES" id="ggu-f5-LtR"/>
|
||||||
<constraint firstAttribute="trailing" secondItem="QSX-Xo-tcH" secondAttribute="trailing" constant="20" symbolic="YES" id="hr2-Eb-g24"/>
|
<constraint firstAttribute="trailing" secondItem="QSX-Xo-tcH" secondAttribute="trailing" constant="20" symbolic="YES" id="hr2-Eb-g24"/>
|
||||||
|
<constraint firstItem="dx3-E2-FFt" firstAttribute="top" secondItem="4" secondAttribute="top" constant="20" symbolic="YES" id="k31-5b-7n6"/>
|
||||||
<constraint firstItem="0U8-TS-giU" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" id="kLH-Bj-C5m"/>
|
<constraint firstItem="0U8-TS-giU" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" id="kLH-Bj-C5m"/>
|
||||||
<constraint firstItem="57" firstAttribute="top" secondItem="59" secondAttribute="bottom" constant="8" symbolic="YES" id="lYe-am-xJx"/>
|
<constraint firstItem="dx3-E2-FFt" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" symbolic="YES" id="sjr-Xo-zxh"/>
|
||||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="58" secondAttribute="trailing" constant="20" symbolic="YES" id="rbs-i7-bti"/>
|
|
||||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="6" secondAttribute="trailing" constant="20" symbolic="YES" id="uuh-ba-z4h"/>
|
|
||||||
<constraint firstItem="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="-679" y="-1054"/>
|
<point key="canvasLocation" x="91" y="-1780"/>
|
||||||
</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"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="kdV-Xa-8p3">
|
<button translatesAutoresizingMaskIntoConstraints="NO" id="kdV-Xa-8p3">
|
||||||
<rect key="frame" x="18" y="398" width="265" height="18"/>
|
<rect key="frame" x="18" y="399" width="263" height="16"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="height" constant="14" id="c9A-Ju-Cj9"/>
|
<constraint firstAttribute="height" constant="14" id="c9A-Ju-Cj9"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
@@ -551,7 +368,7 @@
|
|||||||
</buttonCell>
|
</buttonCell>
|
||||||
</button>
|
</button>
|
||||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="I7L-Am-Qpa">
|
<button translatesAutoresizingMaskIntoConstraints="NO" id="I7L-Am-Qpa">
|
||||||
<rect key="frame" x="18" y="378" width="265" height="18"/>
|
<rect key="frame" x="18" y="379" width="263" height="16"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="height" constant="14" id="KKP-xg-uUu"/>
|
<constraint firstAttribute="height" constant="14" id="KKP-xg-uUu"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
@@ -569,10 +386,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="328" width="221" height="22"/>
|
<rect key="frame" x="20" y="329" width="222" height="21"/>
|
||||||
<constraints>
|
|
||||||
<constraint firstAttribute="height" constant="22" id="2hC-UP-Iie"/>
|
|
||||||
</constraints>
|
|
||||||
<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"/>
|
||||||
@@ -580,7 +394,7 @@
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="iR3-FU-MYu">
|
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="iR3-FU-MYu">
|
||||||
<rect key="frame" x="18" y="306" width="265" height="14"/>
|
<rect key="frame" x="18" y="307" width="265" height="14"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="height" constant="14" id="xvF-LU-XNu"/>
|
<constraint firstAttribute="height" constant="14" id="xvF-LU-XNu"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
@@ -591,21 +405,20 @@
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<scrollView autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2YH-c2-Cwc">
|
<scrollView autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2YH-c2-Cwc">
|
||||||
<rect key="frame" x="20" y="138" width="261" height="160"/>
|
<rect key="frame" x="20" y="136" width="261" height="163"/>
|
||||||
<clipView key="contentView" id="aDE-WT-YIv">
|
<clipView key="contentView" id="aDE-WT-YIv">
|
||||||
<rect key="frame" x="1" y="1" width="259" height="158"/>
|
<rect key="frame" x="1" y="1" width="259" height="161"/>
|
||||||
<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" columnReordering="NO" columnSelection="YES" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" rowSizeStyle="automatic" viewBased="YES" id="caM-L6-UHC">
|
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" alternatingRowBackgroundColors="YES" columnReordering="NO" columnSelection="YES" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" rowSizeStyle="automatic" viewBased="YES" id="caM-L6-UHC">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="259" height="158"/>
|
<rect key="frame" x="0.0" y="0.0" width="259" height="161"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<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="256" minWidth="40" maxWidth="1000" id="Wdn-k1-39b">
|
<tableColumn width="218" minWidth="40" maxWidth="1000" id="Wdn-k1-39b">
|
||||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left">
|
<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>
|
||||||
@@ -617,12 +430,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="1" y="1" width="256" height="17"/>
|
<rect key="frame" x="11" y="1" width="227" height="17"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<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="256" height="17"/>
|
<rect key="frame" x="0.0" y="0.0" width="226" height="17"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="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"/>
|
||||||
@@ -651,10 +464,7 @@
|
|||||||
</scroller>
|
</scroller>
|
||||||
</scrollView>
|
</scrollView>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Iy9-9L-Aev">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Iy9-9L-Aev">
|
||||||
<rect key="frame" x="249" y="107" width="32" height="23"/>
|
<rect key="frame" x="256" y="106" width="26" height="23"/>
|
||||||
<constraints>
|
|
||||||
<constraint firstAttribute="width" constant="32" id="mjs-Yf-Cb2"/>
|
|
||||||
</constraints>
|
|
||||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSAddTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="5J6-uD-iK6">
|
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSAddTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="5J6-uD-iK6">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
@@ -664,10 +474,7 @@
|
|||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="AAj-Ak-z46">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="AAj-Ak-z46">
|
||||||
<rect key="frame" x="209" y="107" width="32" height="23"/>
|
<rect key="frame" x="224" y="106" width="26" height="23"/>
|
||||||
<constraints>
|
|
||||||
<constraint firstAttribute="width" constant="32" id="vWY-ez-gy9"/>
|
|
||||||
</constraints>
|
|
||||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSRemoveTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="86n-d4-lOW">
|
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSRemoveTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="86n-d4-lOW">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
@@ -677,7 +484,7 @@
|
|||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="HQa-of-iwh">
|
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="HQa-of-iwh">
|
||||||
<rect key="frame" x="18" y="90" width="265" height="14"/>
|
<rect key="frame" x="18" y="88" width="265" height="14"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="height" constant="14" id="GF5-sR-zdR"/>
|
<constraint firstAttribute="height" constant="14" id="GF5-sR-zdR"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
@@ -688,10 +495,7 @@
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<comboBox verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="rD3-Wn-ZFX">
|
<comboBox verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="rD3-Wn-ZFX">
|
||||||
<rect key="frame" x="20" y="58" width="264" height="26"/>
|
<rect key="frame" x="20" y="57" width="264" height="25"/>
|
||||||
<constraints>
|
|
||||||
<constraint firstAttribute="height" constant="20" id="rXS-QE-6cW"/>
|
|
||||||
</constraints>
|
|
||||||
<comboBoxCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" completes="NO" id="VLq-Hn-aei">
|
<comboBoxCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" completes="NO" id="VLq-Hn-aei">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
@@ -699,7 +503,7 @@
|
|||||||
</comboBoxCell>
|
</comboBoxCell>
|
||||||
</comboBox>
|
</comboBox>
|
||||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="z03-zW-GN3">
|
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="z03-zW-GN3">
|
||||||
<rect key="frame" x="18" y="40" width="265" height="14"/>
|
<rect key="frame" x="18" y="39" width="265" height="14"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="height" constant="14" id="MPq-gU-72D"/>
|
<constraint firstAttribute="height" constant="14" id="MPq-gU-72D"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
@@ -710,10 +514,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="221" height="22"/>
|
<rect key="frame" x="20" y="10" width="222" height="21"/>
|
||||||
<constraints>
|
|
||||||
<constraint firstAttribute="height" constant="22" id="oIA-8f-Jkf"/>
|
|
||||||
</constraints>
|
|
||||||
<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"/>
|
||||||
@@ -721,11 +522,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="249" y="9" width="32" height="23"/>
|
<rect key="frame" x="243" y="4" width="45" height="32"/>
|
||||||
<constraints>
|
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSActionTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="HIC-T9-j9G">
|
||||||
<constraint firstAttribute="width" constant="32" id="Ek5-IH-qGo"/>
|
|
||||||
</constraints>
|
|
||||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSActionTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="HIC-T9-j9G">
|
|
||||||
<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>
|
||||||
@@ -734,11 +532,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="249" y="326" width="32" height="23"/>
|
<rect key="frame" x="243" y="322" width="45" height="32"/>
|
||||||
<constraints>
|
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSActionTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="V5Z-qf-FVH">
|
||||||
<constraint firstAttribute="width" constant="32" id="CbR-2P-dZH"/>
|
|
||||||
</constraints>
|
|
||||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSActionTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="V5Z-qf-FVH">
|
|
||||||
<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>
|
||||||
@@ -788,24 +583,23 @@
|
|||||||
<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="39" y="-995"/>
|
<point key="canvasLocation" x="418" y="-1988"/>
|
||||||
</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="261" height="270"/>
|
<rect key="frame" x="0.0" y="0.0" width="290" height="268"/>
|
||||||
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="k8G-zp-BXZ">
|
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="k8G-zp-BXZ">
|
||||||
<rect key="frame" x="1" y="1" width="259" height="268"/>
|
<rect key="frame" x="1" y="1" width="288" 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" selectionHighlightStyle="none" columnSelection="YES" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" rowHeight="54" viewBased="YES" id="193" customClass="MPCustomFieldTableView">
|
<tableView focusRingType="none" verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" tableStyle="fullWidth" selectionHighlightStyle="none" columnSelection="YES" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" rowHeight="54" viewBased="YES" id="193">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="259" height="268"/>
|
<rect key="frame" x="0.0" y="0.0" width="288" height="266"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<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="256" minWidth="40" maxWidth="1000000" id="194">
|
<tableColumn width="218" minWidth="40" maxWidth="1000000" id="194">
|
||||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left">
|
<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>
|
||||||
@@ -816,24 +610,22 @@
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES"/>
|
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES"/>
|
||||||
<prototypeCellViews>
|
<prototypeCellViews>
|
||||||
<tableCellView identifier="SelectedCell" id="196" customClass="MPCustomFieldTableCellView">
|
<tableCellView identifier="SelectedCell" translatesAutoresizingMaskIntoConstraints="NO" id="196" customClass="MPCustomFieldTableCellView">
|
||||||
<rect key="frame" x="1" y="1" width="256" height="54"/>
|
<rect key="frame" x="1" y="1" width="227" height="53"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
||||||
<subviews>
|
<subviews>
|
||||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="199" customClass="HNHUISecureTextField">
|
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" contentType="oneTimeCode" translatesAutoresizingMaskIntoConstraints="NO" id="199" customClass="HNHUISecureTextField">
|
||||||
<rect key="frame" x="3" y="10" width="139" height="22"/>
|
<rect key="frame" x="3" y="10" width="114" height="21"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="22" id="212"/>
|
|
||||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="50" id="213"/>
|
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="50" id="213"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<textFieldCell key="cell" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="Value" drawsBackground="YES" id="214">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="Value" drawsBackground="YES" id="214" customClass="HNHUISecureTextFieldCell">
|
||||||
<font key="font" metaFont="system"/>
|
<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="40" width="223" height="14"/>
|
<rect key="frame" x="1" y="39" width="198" height="14"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="height" constant="14" id="210"/>
|
<constraint firstAttribute="height" constant="14" id="210"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
@@ -844,22 +636,16 @@
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="198">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="198">
|
||||||
<rect key="frame" x="190" y="9" width="32" height="23"/>
|
<rect key="frame" x="160" y="4" width="44" height="32"/>
|
||||||
<constraints>
|
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSRemoveTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="216">
|
||||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="32" id="215"/>
|
|
||||||
</constraints>
|
|
||||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSRemoveTemplate" imagePosition="overlaps" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="216">
|
|
||||||
<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="150" y="9" width="32" height="23"/>
|
<rect key="frame" x="118" y="4" width="44" height="32"/>
|
||||||
<constraints>
|
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSLockLockedTemplate" imagePosition="only" alignment="center" lineBreakMode="truncatingTail" borderStyle="border" inset="2" id="fat-C5-dS2">
|
||||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="32" id="JGO-sl-fdM"/>
|
<behavior key="behavior" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
||||||
</constraints>
|
|
||||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="52_EncryptedTemplate" imagePosition="overlaps" alignment="center" lineBreakMode="truncatingTail" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="fat-C5-dS2">
|
|
||||||
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
</buttonCell>
|
</buttonCell>
|
||||||
</button>
|
</button>
|
||||||
@@ -871,11 +657,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="34" id="209"/>
|
<constraint firstAttribute="trailing" secondItem="198" secondAttribute="trailing" constant="30" id="209"/>
|
||||||
<constraint firstItem="tDI-EL-JGB" firstAttribute="leading" secondItem="199" secondAttribute="trailing" constant="8" symbolic="YES" id="Wbg-bF-vD7"/>
|
<constraint firstItem="tDI-EL-JGB" firstAttribute="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="8" symbolic="YES" id="qSi-Hi-kM3"/>
|
<constraint firstItem="198" firstAttribute="leading" secondItem="tDI-EL-JGB" secondAttribute="trailing" constant="12" symbolic="YES" id="qSi-Hi-kM3"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<connections>
|
<connections>
|
||||||
<outlet property="labelTextField" destination="200" id="242"/>
|
<outlet property="labelTextField" destination="200" id="242"/>
|
||||||
@@ -890,7 +676,9 @@
|
|||||||
</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"/>
|
||||||
@@ -902,14 +690,13 @@
|
|||||||
<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="-1317" y="-1440"/>
|
<point key="canvasLocation" x="-1049" y="-1342"/>
|
||||||
</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="14" height="14"/>
|
<image name="NSAddTemplate" width="14" height="13"/>
|
||||||
<image name="NSAddTemplate" width="11" height="11"/>
|
<image name="NSLockLockedTemplate" width="14" height="15"/>
|
||||||
<image name="NSQuickLookTemplate" width="19" height="12"/>
|
<image name="NSRemoveTemplate" width="14" height="4"/>
|
||||||
<image name="NSRemoveTemplate" width="11" height="11"/>
|
|
||||||
</resources>
|
</resources>
|
||||||
</document>
|
</document>
|
||||||
|
|||||||
@@ -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="14490.70" 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="14490.70"/>
|
<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>
|
||||||
@@ -11,9 +11,11 @@
|
|||||||
<outlet property="clearPasteboardOnQuitCheckButton" destination="447" id="520"/>
|
<outlet property="clearPasteboardOnQuitCheckButton" destination="447" id="520"/>
|
||||||
<outlet property="clearPasteboardTimeoutPopup" destination="419" id="521"/>
|
<outlet property="clearPasteboardTimeoutPopup" destination="419" id="521"/>
|
||||||
<outlet property="enableAutosaveCheckButton" destination="lz3-4U-UMI" id="L5y-58-IgH"/>
|
<outlet property="enableAutosaveCheckButton" destination="lz3-4U-UMI" id="L5y-58-IgH"/>
|
||||||
|
<outlet property="faviconDownloadMethodPopup" destination="OfU-6f-oTU" id="OfU-6f-oTU-outlet"/>
|
||||||
<outlet property="fileChangeStrategyPopup" destination="wIu-Sh-2a2" id="oJo-dA-lEE"/>
|
<outlet property="fileChangeStrategyPopup" destination="wIu-Sh-2a2" id="oJo-dA-lEE"/>
|
||||||
<outlet property="idleTimeOutPopup" destination="584" id="809"/>
|
<outlet property="idleTimeOutPopup" destination="584" id="809"/>
|
||||||
<outlet property="lockOnLogoutCheckButton" destination="5SP-Vi-1sn" id="yaI-LH-R5A"/>
|
<outlet property="lockOnLogoutCheckButton" destination="5SP-Vi-1sn" id="yaI-LH-R5A"/>
|
||||||
|
<outlet property="lockOnScreenSleepCheckButton" destination="nRe-7S-HwK" id="0IB-5B-pfw"/>
|
||||||
<outlet property="lockOnSleepCheckButton" destination="630" id="810"/>
|
<outlet property="lockOnSleepCheckButton" destination="630" id="810"/>
|
||||||
<outlet property="preventUniversalClipboardSupportCheckButton" destination="nqZ-rB-mFS" id="sbx-rl-reT"/>
|
<outlet property="preventUniversalClipboardSupportCheckButton" destination="nqZ-rB-mFS" id="sbx-rl-reT"/>
|
||||||
<outlet property="rememberKeyFileCheckButton" destination="bSt-Wf-FNZ" id="aQm-EA-yAN"/>
|
<outlet property="rememberKeyFileCheckButton" destination="bSt-Wf-FNZ" id="aQm-EA-yAN"/>
|
||||||
@@ -24,16 +26,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 translatesAutoresizingMaskIntoConstraints="NO" id="1">
|
<customView translatesAutoresizingMaskIntoConstraints="NO" id="1">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="411" height="524"/>
|
<rect key="frame" x="0.0" y="0.0" width="406" height="679"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<box autoresizesSubviews="NO" verticalHuggingPriority="500" borderType="line" title="Security" translatesAutoresizingMaskIntoConstraints="NO" id="465">
|
<box autoresizesSubviews="NO" verticalHuggingPriority="500" borderType="line" title="Security" translatesAutoresizingMaskIntoConstraints="NO" id="465">
|
||||||
<rect key="frame" x="17" y="16" width="377" height="357"/>
|
<rect key="frame" x="17" y="146" width="372" height="381"/>
|
||||||
<view key="contentView" id="mNh-3L-Z6E">
|
<view key="contentView" id="mNh-3L-Z6E">
|
||||||
<rect key="frame" x="3" y="3" width="371" height="339"/>
|
<rect key="frame" x="3" y="3" width="366" height="363"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="431">
|
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="431">
|
||||||
<rect key="frame" x="14" y="311" width="120" height="17"/>
|
<rect key="frame" x="14" y="335" width="120" height="17"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="height" constant="17" id="803"/>
|
<constraint firstAttribute="height" constant="17" id="803"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
@@ -44,7 +46,7 @@
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="419">
|
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="419">
|
||||||
<rect key="frame" x="138" y="308" width="143" height="21"/>
|
<rect key="frame" x="138" y="332" width="143" height="21"/>
|
||||||
<popUpButtonCell key="cell" type="push" title="Never" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="429" id="420">
|
<popUpButtonCell key="cell" type="push" title="Never" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="429" id="420">
|
||||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="menu"/>
|
<font key="font" metaFont="menu"/>
|
||||||
@@ -62,7 +64,7 @@
|
|||||||
</popUpButtonCell>
|
</popUpButtonCell>
|
||||||
</popUpButton>
|
</popUpButton>
|
||||||
<button verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="447">
|
<button verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="447">
|
||||||
<rect key="frame" x="29" y="287" width="164" height="18"/>
|
<rect key="frame" x="29" y="311" width="164" height="18"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="height" constant="14" id="773"/>
|
<constraint firstAttribute="height" constant="14" id="773"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
@@ -72,7 +74,7 @@
|
|||||||
</buttonCell>
|
</buttonCell>
|
||||||
</button>
|
</button>
|
||||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="584">
|
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="584">
|
||||||
<rect key="frame" x="111" y="168" width="125" height="25"/>
|
<rect key="frame" x="111" y="192" width="125" height="25"/>
|
||||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="585">
|
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="585">
|
||||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="menu"/>
|
<font key="font" metaFont="menu"/>
|
||||||
@@ -89,14 +91,14 @@
|
|||||||
</popUpButtonCell>
|
</popUpButtonCell>
|
||||||
</popUpButton>
|
</popUpButton>
|
||||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="630">
|
<button translatesAutoresizingMaskIntoConstraints="NO" id="630">
|
||||||
<rect key="frame" x="29" y="149" width="119" height="18"/>
|
<rect key="frame" x="29" y="173" width="119" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Lock after sleep" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="631">
|
<buttonCell key="cell" type="check" title="Lock after sleep" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="631">
|
||||||
<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="805">
|
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="805">
|
||||||
<rect key="frame" x="14" y="173" width="93" height="17"/>
|
<rect key="frame" x="14" y="197" width="93" height="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Lock while idle" id="806">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Lock while idle" id="806">
|
||||||
<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"/>
|
||||||
@@ -110,8 +112,8 @@
|
|||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
</buttonCell>
|
</buttonCell>
|
||||||
</button>
|
</button>
|
||||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="5cV-xX-SUU">
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="5cV-xX-SUU">
|
||||||
<rect key="frame" x="18" y="41" width="335" height="56"/>
|
<rect key="frame" x="18" y="41" width="330" height="56"/>
|
||||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" id="ACh-7H-42N">
|
<textFieldCell key="cell" sendsActionOnEndEditing="YES" id="ACh-7H-42N">
|
||||||
<font key="font" metaFont="smallSystem"/>
|
<font key="font" metaFont="smallSystem"/>
|
||||||
<string key="title">Enabling this compromises security. If enabled, your preferences will contain mappings from database to keyfile. Key locations for databases without a password will not be saved.</string>
|
<string key="title">Enabling this compromises security. If enabled, your preferences will contain mappings from database to keyfile. Key locations for databases without a password will not be saved.</string>
|
||||||
@@ -120,7 +122,7 @@
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="oQr-FC-HkN">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="oQr-FC-HkN">
|
||||||
<rect key="frame" x="171" y="5" width="190" height="32"/>
|
<rect key="frame" x="166" y="5" width="190" height="32"/>
|
||||||
<buttonCell key="cell" type="push" title="Clear all stored locations" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="8Ri-2s-c39">
|
<buttonCell key="cell" type="push" title="Clear all stored locations" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="8Ri-2s-c39">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
@@ -130,21 +132,21 @@
|
|||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="5SP-Vi-1sn">
|
<button translatesAutoresizingMaskIntoConstraints="NO" id="5SP-Vi-1sn">
|
||||||
<rect key="frame" x="29" y="129" width="129" height="18"/>
|
<rect key="frame" x="29" y="151" width="129" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Lock after log out" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="Dzn-9R-JjE">
|
<buttonCell key="cell" type="check" title="Lock after log out" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="Dzn-9R-JjE">
|
||||||
<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="nqZ-rB-mFS">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="nqZ-rB-mFS">
|
||||||
<rect key="frame" x="14" y="262" width="242" height="18"/>
|
<rect key="frame" x="14" y="286" width="242" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Prevent Universal Clipboard support" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="fNy-mS-phi">
|
<buttonCell key="cell" type="check" title="Prevent Universal Clipboard support" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="fNy-mS-phi">
|
||||||
<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" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hy4-RL-dAa">
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="hy4-RL-dAa">
|
||||||
<rect key="frame" x="18" y="200" width="335" height="56"/>
|
<rect key="frame" x="18" y="224" width="330" height="56"/>
|
||||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" id="JGX-Tp-KJk">
|
<textFieldCell key="cell" sendsActionOnEndEditing="YES" id="JGX-Tp-KJk">
|
||||||
<font key="font" metaFont="smallSystem"/>
|
<font key="font" metaFont="smallSystem"/>
|
||||||
<string key="title">Disabling this compromises security. If enabled, anything copied to the Clipboard in MacPass will be available on your connected iOS devices. You should clear the clipboard on those devices manually.</string>
|
<string key="title">Disabling this compromises security. If enabled, anything copied to the Clipboard in MacPass will be available on your connected iOS devices. You should clear the clipboard on those devices manually.</string>
|
||||||
@@ -152,20 +154,30 @@
|
|||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="nRe-7S-HwK">
|
||||||
|
<rect key="frame" x="29" y="129" width="164" height="18"/>
|
||||||
|
<buttonCell key="cell" type="check" title="Lock after screen sleep" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="l3t-og-mJd">
|
||||||
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
</button>
|
||||||
</subviews>
|
</subviews>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstItem="5cV-xX-SUU" firstAttribute="leading" secondItem="mNh-3L-Z6E" secondAttribute="leading" constant="20" symbolic="YES" id="1jw-nb-bAB"/>
|
<constraint firstItem="5cV-xX-SUU" firstAttribute="leading" secondItem="mNh-3L-Z6E" secondAttribute="leading" constant="20" symbolic="YES" id="1jw-nb-bAB"/>
|
||||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="630" secondAttribute="trailing" constant="20" symbolic="YES" id="7cd-1e-eRD"/>
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="630" secondAttribute="trailing" constant="20" symbolic="YES" id="7cd-1e-eRD"/>
|
||||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="nqZ-rB-mFS" secondAttribute="trailing" constant="20" symbolic="YES" id="CL9-fA-GTJ"/>
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="nqZ-rB-mFS" secondAttribute="trailing" constant="20" symbolic="YES" id="CL9-fA-GTJ"/>
|
||||||
|
<constraint firstItem="bSt-Wf-FNZ" firstAttribute="top" secondItem="nRe-7S-HwK" secondAttribute="bottom" constant="11" id="MkJ-O0-qYd"/>
|
||||||
|
<constraint firstItem="nRe-7S-HwK" firstAttribute="leading" secondItem="447" secondAttribute="leading" id="Mrg-k2-soG"/>
|
||||||
<constraint firstItem="584" firstAttribute="top" secondItem="hy4-RL-dAa" secondAttribute="bottom" constant="8" symbolic="YES" id="SV7-PD-nId"/>
|
<constraint firstItem="584" firstAttribute="top" secondItem="hy4-RL-dAa" secondAttribute="bottom" constant="8" symbolic="YES" id="SV7-PD-nId"/>
|
||||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="bSt-Wf-FNZ" secondAttribute="trailing" constant="20" symbolic="YES" id="VQY-eq-fCM"/>
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="bSt-Wf-FNZ" secondAttribute="trailing" constant="20" symbolic="YES" id="VQY-eq-fCM"/>
|
||||||
<constraint firstItem="bSt-Wf-FNZ" firstAttribute="top" secondItem="5SP-Vi-1sn" secondAttribute="bottom" constant="11" id="WUG-Uf-FCO"/>
|
<constraint firstItem="nRe-7S-HwK" firstAttribute="top" secondItem="5SP-Vi-1sn" secondAttribute="bottom" constant="8" id="YZv-Dp-CrZ"/>
|
||||||
<constraint firstItem="5SP-Vi-1sn" firstAttribute="leading" secondItem="447" secondAttribute="leading" id="Ylr-aA-jaD"/>
|
<constraint firstItem="5SP-Vi-1sn" firstAttribute="leading" secondItem="447" secondAttribute="leading" id="Ylr-aA-jaD"/>
|
||||||
<constraint firstItem="hy4-RL-dAa" firstAttribute="top" secondItem="nqZ-rB-mFS" secondAttribute="bottom" constant="8" symbolic="YES" id="a3i-tc-gUU"/>
|
<constraint firstItem="hy4-RL-dAa" firstAttribute="top" secondItem="nqZ-rB-mFS" secondAttribute="bottom" constant="8" symbolic="YES" id="a3i-tc-gUU"/>
|
||||||
<constraint firstItem="5SP-Vi-1sn" firstAttribute="top" secondItem="630" secondAttribute="bottom" constant="6" symbolic="YES" id="acg-vp-LeB"/>
|
<constraint firstItem="5SP-Vi-1sn" firstAttribute="top" secondItem="630" secondAttribute="bottom" constant="8" id="acg-vp-LeB"/>
|
||||||
<constraint firstItem="584" firstAttribute="leading" secondItem="805" secondAttribute="trailing" constant="8" symbolic="YES" id="aoz-sS-O0n"/>
|
<constraint firstItem="584" firstAttribute="leading" secondItem="805" secondAttribute="trailing" constant="8" symbolic="YES" id="aoz-sS-O0n"/>
|
||||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="447" secondAttribute="trailing" constant="20" symbolic="YES" id="i8H-ad-IKb"/>
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="447" secondAttribute="trailing" constant="20" symbolic="YES" id="i8H-ad-IKb"/>
|
||||||
<constraint firstItem="419" firstAttribute="leading" secondItem="431" secondAttribute="trailing" constant="8" symbolic="YES" id="pN3-pB-Z5I"/>
|
<constraint firstItem="419" firstAttribute="leading" secondItem="431" secondAttribute="trailing" constant="8" symbolic="YES" id="pN3-pB-Z5I"/>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="nRe-7S-HwK" secondAttribute="trailing" constant="20" symbolic="YES" id="pgB-km-W16"/>
|
||||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="5SP-Vi-1sn" secondAttribute="trailing" constant="20" symbolic="YES" id="q0v-Wo-mHx"/>
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="5SP-Vi-1sn" secondAttribute="trailing" constant="20" symbolic="YES" id="q0v-Wo-mHx"/>
|
||||||
<constraint firstItem="nqZ-rB-mFS" firstAttribute="top" secondItem="447" secondAttribute="bottom" constant="11" id="qLm-ih-A04"/>
|
<constraint firstItem="nqZ-rB-mFS" firstAttribute="top" secondItem="447" secondAttribute="bottom" constant="11" id="qLm-ih-A04"/>
|
||||||
<constraint firstAttribute="trailing" secondItem="5cV-xX-SUU" secondAttribute="trailing" constant="20" symbolic="YES" id="qY0-io-RZ0"/>
|
<constraint firstAttribute="trailing" secondItem="5cV-xX-SUU" secondAttribute="trailing" constant="20" symbolic="YES" id="qY0-io-RZ0"/>
|
||||||
@@ -197,27 +209,27 @@
|
|||||||
</constraints>
|
</constraints>
|
||||||
</box>
|
</box>
|
||||||
<box autoresizesSubviews="NO" verticalHuggingPriority="500" borderType="line" title="File Handling" translatesAutoresizingMaskIntoConstraints="NO" id="888">
|
<box autoresizesSubviews="NO" verticalHuggingPriority="500" borderType="line" title="File Handling" translatesAutoresizingMaskIntoConstraints="NO" id="888">
|
||||||
<rect key="frame" x="17" y="375" width="377" height="129"/>
|
<rect key="frame" x="17" y="531" width="372" height="128"/>
|
||||||
<view key="contentView" id="cpg-tt-SHE">
|
<view key="contentView" id="cpg-tt-SHE">
|
||||||
<rect key="frame" x="3" y="3" width="371" height="111"/>
|
<rect key="frame" x="3" y="3" width="366" height="110"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<button verticalHuggingPriority="252" translatesAutoresizingMaskIntoConstraints="NO" id="530">
|
<button verticalHuggingPriority="252" translatesAutoresizingMaskIntoConstraints="NO" id="530">
|
||||||
<rect key="frame" x="14" y="85" width="234" height="18"/>
|
<rect key="frame" x="14" y="84" width="234" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Reopen last Database after Launch" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="531">
|
<buttonCell key="cell" type="check" title="Reopen last Database after Launch" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="531">
|
||||||
<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="lz3-4U-UMI">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="lz3-4U-UMI">
|
||||||
<rect key="frame" x="14" y="65" width="123" height="18"/>
|
<rect key="frame" x="14" y="64" width="123" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Enable Autosave" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="wG7-bi-2fi">
|
<buttonCell key="cell" type="check" title="Enable Autosave" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="wG7-bi-2fi">
|
||||||
<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" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="3Bo-Ml-1KB">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="3Bo-Ml-1KB">
|
||||||
<rect key="frame" x="18" y="45" width="335" height="14"/>
|
<rect key="frame" x="18" y="44" width="330" height="14"/>
|
||||||
<textFieldCell key="cell" controlSize="small" title="Close and open all documents for changes to take effect" id="ya5-ps-c4W">
|
<textFieldCell key="cell" controlSize="small" title="Close and open all documents for changes to take effect" id="ya5-ps-c4W">
|
||||||
<font key="font" metaFont="smallSystem"/>
|
<font key="font" metaFont="smallSystem"/>
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
@@ -225,7 +237,7 @@
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="h3w-Ms-ohK">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="h3w-Ms-ohK">
|
||||||
<rect key="frame" x="14" y="20" width="93" height="17"/>
|
<rect key="frame" x="14" y="20" width="93" height="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="If file changes:" id="QrK-hM-Xt1">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="If file changes:" id="QrK-hM-Xt1">
|
||||||
<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"/>
|
||||||
@@ -233,7 +245,7 @@
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<popUpButton verticalHuggingPriority="750" horizontalCompressionResistancePriority="749" translatesAutoresizingMaskIntoConstraints="NO" id="wIu-Sh-2a2">
|
<popUpButton verticalHuggingPriority="750" horizontalCompressionResistancePriority="749" translatesAutoresizingMaskIntoConstraints="NO" id="wIu-Sh-2a2">
|
||||||
<rect key="frame" x="111" y="14" width="38" height="25"/>
|
<rect key="frame" x="111" y="13" width="38" height="25"/>
|
||||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="1R2-5t-LWk">
|
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="1R2-5t-LWk">
|
||||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="menu"/>
|
<font key="font" metaFont="menu"/>
|
||||||
@@ -262,18 +274,71 @@
|
|||||||
<constraint firstItem="530" firstAttribute="top" secondItem="888" secondAttribute="top" constant="25" id="w7t-Jm-kXg"/>
|
<constraint firstItem="530" firstAttribute="top" secondItem="888" secondAttribute="top" constant="25" id="w7t-Jm-kXg"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
</box>
|
</box>
|
||||||
|
<box autoresizesSubviews="NO" verticalHuggingPriority="500" borderType="line" title="Network" translatesAutoresizingMaskIntoConstraints="NO" id="wD1-ag-7V5">
|
||||||
|
<rect key="frame" x="17" y="16" width="372" height="126"/>
|
||||||
|
<view key="contentView" id="bQD-ZX-d0i">
|
||||||
|
<rect key="frame" x="3" y="3" width="366" height="108"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="fl5-Xu-nZP">
|
||||||
|
<rect key="frame" x="14" y="81" width="113" height="16"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="height" constant="16" id="kK7-bB-zKY"/>
|
||||||
|
</constraints>
|
||||||
|
<textFieldCell key="cell" lineBreakMode="clipping" title="Favicon download" id="YGj-dH-duz">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
<textField autoresizesSubviews="NO" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="MWj-9m-uGk">
|
||||||
|
<rect key="frame" x="18" y="13" width="330" height="56"/>
|
||||||
|
<textFieldCell key="cell" sendsActionOnEndEditing="YES" id="DaG-1a-SET">
|
||||||
|
<font key="font" metaFont="message" size="11"/>
|
||||||
|
<string key="title">By default web site icon is downloaded directly from entry's host URL. For some websites it doesn't work and you might prefer using 3rdparty APIs. In this case only host from the URL will be used to get the icon from selected service.</string>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
<popUpButton verticalHuggingPriority="750" horizontalCompressionResistancePriority="749" translatesAutoresizingMaskIntoConstraints="NO" id="OfU-6f-oTU">
|
||||||
|
<rect key="frame" x="131" y="76" width="38" height="25"/>
|
||||||
|
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="mdi-Go-1bJ">
|
||||||
|
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||||
|
<font key="font" metaFont="menu"/>
|
||||||
|
<menu key="menu" id="Xnp-a8-ePw"/>
|
||||||
|
</popUpButtonCell>
|
||||||
|
</popUpButton>
|
||||||
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="OfU-6f-oTU" secondAttribute="trailing" constant="16" id="0Wl-LS-ePD"/>
|
||||||
|
<constraint firstItem="OfU-6f-oTU" firstAttribute="centerY" secondItem="fl5-Xu-nZP" secondAttribute="centerY" id="R81-Ij-pdy"/>
|
||||||
|
<constraint firstItem="OfU-6f-oTU" firstAttribute="leading" secondItem="fl5-Xu-nZP" secondAttribute="trailing" constant="8" id="XS0-fl-B2Z"/>
|
||||||
|
</constraints>
|
||||||
|
</view>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstItem="MWj-9m-uGk" firstAttribute="leading" secondItem="bQD-ZX-d0i" secondAttribute="leading" constant="20" id="1AE-Eu-ceQ"/>
|
||||||
|
<constraint firstItem="fl5-Xu-nZP" firstAttribute="top" secondItem="wD1-ag-7V5" secondAttribute="top" constant="26" id="OK9-PR-DfC"/>
|
||||||
|
<constraint firstItem="MWj-9m-uGk" firstAttribute="top" secondItem="fl5-Xu-nZP" secondAttribute="bottom" constant="12" id="Udz-22-4O1"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="MWj-9m-uGk" secondAttribute="trailing" constant="20" id="hA0-ra-UeU"/>
|
||||||
|
<constraint firstItem="fl5-Xu-nZP" firstAttribute="leading" secondItem="bQD-ZX-d0i" secondAttribute="leading" constant="16" id="hzo-40-wxR"/>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="MWj-9m-uGk" secondAttribute="bottom" constant="12" id="k80-DD-Y5l"/>
|
||||||
|
</constraints>
|
||||||
|
</box>
|
||||||
</subviews>
|
</subviews>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstItem="465" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="475"/>
|
<constraint firstItem="465" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="475"/>
|
||||||
<constraint firstAttribute="trailing" secondItem="465" secondAttribute="trailing" constant="20" symbolic="YES" id="525"/>
|
<constraint firstAttribute="trailing" secondItem="465" secondAttribute="trailing" constant="20" symbolic="YES" id="525"/>
|
||||||
<constraint firstItem="888" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="891"/>
|
<constraint firstItem="888" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="891"/>
|
||||||
<constraint firstAttribute="trailing" secondItem="888" secondAttribute="trailing" constant="20" symbolic="YES" id="893"/>
|
<constraint firstAttribute="trailing" secondItem="888" secondAttribute="trailing" constant="20" symbolic="YES" id="893"/>
|
||||||
<constraint firstItem="888" firstAttribute="top" secondItem="1" secondAttribute="top" constant="20" symbolic="YES" id="903"/>
|
|
||||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="400" id="918"/>
|
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="400" id="918"/>
|
||||||
<constraint firstAttribute="bottom" secondItem="465" secondAttribute="bottom" constant="20" symbolic="YES" id="uwq-az-XwJ"/>
|
<constraint firstItem="wD1-ag-7V5" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" id="3kp-Uf-fyC"/>
|
||||||
<constraint firstItem="465" firstAttribute="top" secondItem="cpg-tt-SHE" secondAttribute="bottom" constant="5" id="wyH-HB-i2U"/>
|
<constraint firstItem="wD1-ag-7V5" firstAttribute="bottom" secondItem="1" secondAttribute="bottom" constant="-20" id="EeW-K0-jec"/>
|
||||||
|
<constraint firstItem="wD1-ag-7V5" firstAttribute="top" secondItem="465" secondAttribute="bottom" constant="8" symbolic="YES" id="FsW-LX-Drs"/>
|
||||||
|
<constraint firstItem="888" firstAttribute="top" secondItem="1" secondAttribute="top" constant="20" symbolic="YES" id="ZMP-Lv-rQh"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="wD1-ag-7V5" secondAttribute="trailing" constant="20" id="ccK-FL-7Wx"/>
|
||||||
|
<constraint firstItem="465" firstAttribute="top" secondItem="888" secondAttribute="bottom" constant="8" symbolic="YES" id="wyH-HB-i2U"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<point key="canvasLocation" x="-136.5" y="-93"/>
|
<point key="canvasLocation" x="-535" y="-327.5"/>
|
||||||
</customView>
|
</customView>
|
||||||
</objects>
|
</objects>
|
||||||
</document>
|
</document>
|
||||||
|
|||||||
@@ -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="14313.18" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19455" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14313.18"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19455"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
@@ -14,6 +14,7 @@
|
|||||||
<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>
|
||||||
@@ -21,182 +22,218 @@
|
|||||||
<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="257" height="291"/>
|
<rect key="frame" x="0.0" y="0.0" width="291" height="462"/>
|
||||||
<clipView key="contentView" id="HjA-kA-fcX">
|
<clipView key="contentView" id="HjA-kA-fcX">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="257" height="291"/>
|
<rect key="frame" x="0.0" y="0.0" width="291" height="462"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<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="0.0" width="257" height="291"/>
|
<rect key="frame" x="0.0" y="65" width="291" height="397"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="24">
|
<stackView distribution="fill" orientation="vertical" alignment="leading" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="GyB-8Z-S3Q">
|
||||||
<rect key="frame" x="18" y="272" width="35" height="14"/>
|
<rect key="frame" x="20" y="20" width="251" height="357"/>
|
||||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Name" id="25">
|
<subviews>
|
||||||
<font key="font" metaFont="smallSystem"/>
|
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="24">
|
||||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
<rect key="frame" x="-2" y="343" width="255" height="14"/>
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Name" id="25">
|
||||||
</textFieldCell>
|
<font key="font" metaFont="smallSystem"/>
|
||||||
</textField>
|
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="23" customClass="HNHUITextField">
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
<rect key="frame" x="20" y="242" width="217" height="22"/>
|
</textFieldCell>
|
||||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="26">
|
</textField>
|
||||||
<font key="font" metaFont="system"/>
|
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="23" customClass="HNHUITextField">
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
<rect key="frame" x="0.0" y="314" width="251" height="21"/>
|
||||||
<color key="backgroundColor" name="textBackgroundColor" 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">
|
||||||
</textFieldCell>
|
<font key="font" metaFont="system"/>
|
||||||
<connections>
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
<outlet property="nextKeyView" destination="5" id="KV0-QE-2i4"/>
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
</connections>
|
</textFieldCell>
|
||||||
</textField>
|
<connections>
|
||||||
<button horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="5">
|
<outlet property="nextKeyView" destination="5" id="KV0-QE-2i4"/>
|
||||||
<rect key="frame" x="18" y="214" width="67" height="18"/>
|
</connections>
|
||||||
<constraints>
|
</textField>
|
||||||
<constraint firstAttribute="height" constant="14" id="pWR-o1-KI6"/>
|
<stackView distribution="fill" orientation="horizontal" alignment="top" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="aAt-VU-kLy">
|
||||||
</constraints>
|
<rect key="frame" x="0.0" y="286" width="251" height="20"/>
|
||||||
<buttonCell key="cell" type="check" title="Expires" bezelStyle="regularSquare" imagePosition="left" lineBreakMode="truncatingMiddle" state="on" inset="2" id="32">
|
<subviews>
|
||||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
<button horizontalHuggingPriority="249" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="5">
|
||||||
<font key="font" metaFont="system"/>
|
<rect key="frame" x="-2" y="3" width="213" height="18"/>
|
||||||
</buttonCell>
|
<buttonCell key="cell" type="check" title="Expires" bezelStyle="regularSquare" imagePosition="left" lineBreakMode="truncatingMiddle" state="on" inset="2" id="32">
|
||||||
<connections>
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
<action selector="toggleExpire:" target="-2" id="t1w-WN-Eud"/>
|
<font key="font" metaFont="system"/>
|
||||||
<outlet property="nextKeyView" destination="4" id="Rem-Pk-yFJ"/>
|
</buttonCell>
|
||||||
</connections>
|
<connections>
|
||||||
</button>
|
<action selector="toggleExpire:" target="-2" id="t1w-WN-Eud"/>
|
||||||
<button focusRingType="exterior" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="4">
|
<outlet property="nextKeyView" destination="4" id="Rem-Pk-yFJ"/>
|
||||||
<rect key="frame" x="205" y="210" width="32" height="25"/>
|
</connections>
|
||||||
<constraints>
|
</button>
|
||||||
<constraint firstAttribute="width" constant="32" id="l5I-EF-dHs"/>
|
<button focusRingType="exterior" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="4">
|
||||||
</constraints>
|
<rect key="frame" x="218" y="-2" width="34" height="23"/>
|
||||||
<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">
|
<constraints>
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<constraint firstAttribute="width" constant="32" id="l5I-EF-dHs"/>
|
||||||
<font key="font" metaFont="system"/>
|
</constraints>
|
||||||
</buttonCell>
|
<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">
|
||||||
<connections>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<action selector="pickExpiryDate:" target="-1" id="KIc-p2-zJQ"/>
|
<font key="font" metaFont="system"/>
|
||||||
<outlet property="nextKeyView" destination="229" id="12E-SZ-Mtu"/>
|
</buttonCell>
|
||||||
</connections>
|
<connections>
|
||||||
</button>
|
<action selector="pickExpiryDate:" target="-1" id="KIc-p2-zJQ"/>
|
||||||
<popUpButton verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="229">
|
<outlet property="nextKeyView" destination="229" id="12E-SZ-Mtu"/>
|
||||||
<rect key="frame" x="18" y="158" width="222" height="26"/>
|
</connections>
|
||||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="230">
|
</button>
|
||||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
</subviews>
|
||||||
<font key="font" metaFont="menu"/>
|
<visibilityPriorities>
|
||||||
<menu key="menu" title="OtherViews" id="231"/>
|
<integer value="1000"/>
|
||||||
</popUpButtonCell>
|
<integer value="1000"/>
|
||||||
<connections>
|
</visibilityPriorities>
|
||||||
<outlet property="nextKeyView" destination="240" id="XsX-U5-uZd"/>
|
<customSpacing>
|
||||||
</connections>
|
<real value="3.4028234663852886e+38"/>
|
||||||
</popUpButton>
|
<real value="3.4028234663852886e+38"/>
|
||||||
<popUpButton verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="240">
|
</customSpacing>
|
||||||
<rect key="frame" x="18" y="103" width="222" height="26"/>
|
</stackView>
|
||||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="242">
|
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="264">
|
||||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
<rect key="frame" x="-2" y="264" width="255" height="14"/>
|
||||||
<font key="font" metaFont="menu"/>
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Search" id="265">
|
||||||
<menu key="menu" title="OtherViews" id="243"/>
|
<font key="font" metaFont="smallSystem"/>
|
||||||
</popUpButtonCell>
|
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
<connections>
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
<outlet property="nextKeyView" destination="Fnw-qz-IZU" id="Q0q-HY-T34"/>
|
</textFieldCell>
|
||||||
</connections>
|
</textField>
|
||||||
</popUpButton>
|
<popUpButton horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="229">
|
||||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="264">
|
<rect key="frame" x="-3" y="232" width="258" height="25"/>
|
||||||
<rect key="frame" x="18" y="190" width="41" height="14"/>
|
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="230">
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Search" id="265">
|
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="smallSystem"/>
|
<font key="font" metaFont="menu"/>
|
||||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
<menu key="menu" title="OtherViews" id="231"/>
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
</popUpButtonCell>
|
||||||
</textFieldCell>
|
<connections>
|
||||||
</textField>
|
<outlet property="nextKeyView" destination="240" id="XsX-U5-uZd"/>
|
||||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="276">
|
</connections>
|
||||||
<rect key="frame" x="18" y="135" width="52" height="14"/>
|
</popUpButton>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Autotype" id="277">
|
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="276">
|
||||||
<font key="font" metaFont="smallSystem"/>
|
<rect key="frame" x="-2" y="214" width="255" height="14"/>
|
||||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Autotype" id="277">
|
||||||
<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" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Fnw-qz-IZU" customClass="HNHUITextField">
|
</textFieldCell>
|
||||||
<rect key="frame" x="20" y="50" width="217" height="22"/>
|
</textField>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="VeF-V7-i2I">
|
<popUpButton horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="240">
|
||||||
<font key="font" metaFont="system"/>
|
<rect key="frame" x="-3" y="182" width="258" height="25"/>
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="242">
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||||
</textFieldCell>
|
<font key="font" metaFont="menu"/>
|
||||||
<connections>
|
<menu key="menu" title="OtherViews" id="243"/>
|
||||||
<outlet property="nextKeyView" destination="1Uh-eo-H0j" id="zer-UH-73e"/>
|
</popUpButtonCell>
|
||||||
</connections>
|
<connections>
|
||||||
</textField>
|
<outlet property="nextKeyView" destination="Fnw-qz-IZU" id="Q0q-HY-T34"/>
|
||||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6Lw-XW-x20">
|
</connections>
|
||||||
<rect key="frame" x="18" y="80" width="107" height="14"/>
|
</popUpButton>
|
||||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Autotype Sequence" id="6FG-UZ-Adh">
|
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6Lw-XW-x20">
|
||||||
<font key="font" metaFont="smallSystem"/>
|
<rect key="frame" x="-2" y="164" 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="Autotype Sequence" id="6FG-UZ-Adh">
|
||||||
<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"/>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1Uh-eo-H0j">
|
</textFieldCell>
|
||||||
<rect key="frame" x="20" y="18" width="217" height="25"/>
|
</textField>
|
||||||
<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">
|
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Fnw-qz-IZU" customClass="HNHUITextField">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<rect key="frame" x="0.0" y="135" width="251" height="21"/>
|
||||||
<font key="font" metaFont="system"/>
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="VeF-V7-i2I">
|
||||||
</buttonCell>
|
<font key="font" metaFont="system"/>
|
||||||
<connections>
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
<action selector="showPluginData:" target="-1" id="yjJ-Xy-m4c"/>
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
<outlet property="nextKeyView" destination="23" id="x9e-ya-hiK"/>
|
</textFieldCell>
|
||||||
</connections>
|
<connections>
|
||||||
</button>
|
<outlet property="nextKeyView" destination="1Uh-eo-H0j" id="zer-UH-73e"/>
|
||||||
|
</connections>
|
||||||
|
</textField>
|
||||||
|
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="mpC-tZ-ivx">
|
||||||
|
<rect key="frame" x="-2" y="113" width="255" height="14"/>
|
||||||
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Tags" id="Rbf-K0-kWx">
|
||||||
|
<font key="font" metaFont="smallSystem"/>
|
||||||
|
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
<tokenField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="5ty-ww-t4q">
|
||||||
|
<rect key="frame" x="0.0" y="28" width="251" height="77"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="height" constant="77" id="W4K-vz-0pf"/>
|
||||||
|
</constraints>
|
||||||
|
<tokenFieldCell key="cell" selectable="YES" editable="YES" borderStyle="bezel" alignment="left" drawsBackground="YES" allowsEditingTextAttributes="YES" id="FfM-xQ-evx">
|
||||||
|
<font key="font" metaFont="cellTitle"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</tokenFieldCell>
|
||||||
|
</tokenField>
|
||||||
|
<button horizontalHuggingPriority="249" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1Uh-eo-H0j">
|
||||||
|
<rect key="frame" x="-7" y="-7" width="265" height="32"/>
|
||||||
|
<buttonCell key="cell" type="push" title="Show Plugin Data" bezelStyle="rounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="qGr-oT-WjP">
|
||||||
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<action selector="showPluginData:" target="-1" id="yjJ-Xy-m4c"/>
|
||||||
|
<outlet property="nextKeyView" destination="23" id="x9e-ya-hiK"/>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
</subviews>
|
||||||
|
<visibilityPriorities>
|
||||||
|
<integer value="1000"/>
|
||||||
|
<integer value="1000"/>
|
||||||
|
<integer value="1000"/>
|
||||||
|
<integer value="1000"/>
|
||||||
|
<integer value="1000"/>
|
||||||
|
<integer value="1000"/>
|
||||||
|
<integer value="1000"/>
|
||||||
|
<integer value="1000"/>
|
||||||
|
<integer value="1000"/>
|
||||||
|
<integer value="1000"/>
|
||||||
|
<integer value="1000"/>
|
||||||
|
<integer value="1000"/>
|
||||||
|
</visibilityPriorities>
|
||||||
|
<customSpacing>
|
||||||
|
<real value="3.4028234663852886e+38"/>
|
||||||
|
<real value="3.4028234663852886e+38"/>
|
||||||
|
<real value="3.4028234663852886e+38"/>
|
||||||
|
<real value="3.4028234663852886e+38"/>
|
||||||
|
<real value="3.4028234663852886e+38"/>
|
||||||
|
<real value="3.4028234663852886e+38"/>
|
||||||
|
<real value="3.4028234663852886e+38"/>
|
||||||
|
<real value="3.4028234663852886e+38"/>
|
||||||
|
<real value="3.4028234663852886e+38"/>
|
||||||
|
<real value="3.4028234663852886e+38"/>
|
||||||
|
<real value="3.4028234663852886e+38"/>
|
||||||
|
<real value="3.4028234663852886e+38"/>
|
||||||
|
</customSpacing>
|
||||||
|
</stackView>
|
||||||
</subviews>
|
</subviews>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="trailing" secondItem="Fnw-qz-IZU" secondAttribute="trailing" constant="20" symbolic="YES" id="3Gx-EC-k0Q"/>
|
<constraint firstItem="GyB-8Z-S3Q" firstAttribute="top" secondItem="38" secondAttribute="top" constant="20" id="BWS-cT-xmR"/>
|
||||||
<constraint firstItem="240" firstAttribute="top" secondItem="276" secondAttribute="bottom" constant="8" id="6Pu-PB-xxy"/>
|
<constraint firstAttribute="bottom" secondItem="GyB-8Z-S3Q" secondAttribute="bottom" constant="20" id="WaU-34-yaM"/>
|
||||||
<constraint firstItem="23" firstAttribute="leading" secondItem="38" secondAttribute="leading" constant="20" id="ABR-Ef-1ss"/>
|
<constraint firstAttribute="trailing" secondItem="GyB-8Z-S3Q" secondAttribute="trailing" constant="20" id="q0p-sG-MEY"/>
|
||||||
<constraint firstAttribute="trailing" secondItem="229" secondAttribute="trailing" constant="20" symbolic="YES" id="Anv-gp-aTi"/>
|
<constraint firstItem="GyB-8Z-S3Q" firstAttribute="leading" secondItem="38" secondAttribute="leading" constant="20" symbolic="YES" id="zeA-bC-Akz"/>
|
||||||
<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" verticalHuggingPriority="750" horizontal="YES" id="39">
|
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="39">
|
||||||
<rect key="frame" x="-100" y="-100" width="257" height="16"/>
|
<rect key="frame" x="-100" y="-100" width="257" height="16"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
</scroller>
|
</scroller>
|
||||||
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="40">
|
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="40">
|
||||||
<rect key="frame" x="-100" y="-100" width="15" height="201"/>
|
<rect key="frame" x="-100" y="-100" width="15" height="201"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
</scroller>
|
</scroller>
|
||||||
<point key="canvasLocation" x="-2" y="132"/>
|
<point key="canvasLocation" x="-805.5" y="-499"/>
|
||||||
</scrollView>
|
</scrollView>
|
||||||
</objects>
|
</objects>
|
||||||
<resources>
|
<resources>
|
||||||
<image name="NSActionTemplate" width="14" height="14"/>
|
<image name="NSActionTemplate" width="15" height="15"/>
|
||||||
</resources>
|
</resources>
|
||||||
</document>
|
</document>
|
||||||
|
|||||||
@@ -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="14313.18" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14313.18"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<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="50" width="445" height="330"/>
|
<rect key="frame" x="10" y="60" width="445" height="320"/>
|
||||||
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="Gwf-zs-lPT">
|
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="Gwf-zs-lPT">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="445" height="330"/>
|
<rect key="frame" x="0.0" y="0.0" width="445" height="320"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<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="330"/>
|
<rect key="frame" x="0.0" y="0.0" width="445" height="320"/>
|
||||||
<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="364" y="0.0" width="16" height="268"/>
|
<rect key="frame" x="429" y="0.0" width="16" height="320"/>
|
||||||
<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="330" y="19" width="115" height="23"/>
|
<rect key="frame" x="316" y="13" width="136" height="32"/>
|
||||||
<buttonCell key="cell" type="roundTextured" title="Use Default Icon" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="102">
|
<buttonCell key="cell" type="push" title="Use Default Icon" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="102">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<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="214" y="19" width="108" height="23"/>
|
<rect key="frame" x="194" y="13" width="124" height="32"/>
|
||||||
<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">
|
<buttonCell key="cell" type="push" title="Download Icon" bezelStyle="rounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="iaf-XW-XUo">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<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="150" y="19" width="56" height="23"/>
|
<rect key="frame" x="120" y="13" width="76" height="32"/>
|
||||||
<buttonCell key="cell" type="roundTextured" title="Cancel" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="1kM-cI-P1o">
|
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="1kM-cI-P1o">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<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="8" symbolic="YES" id="MZ0-p6-6MH"/>
|
<constraint firstItem="8kv-BJ-IEk" firstAttribute="leading" secondItem="His-4A-hcY" secondAttribute="trailing" constant="12" symbolic="YES" id="MZ0-p6-6MH"/>
|
||||||
<constraint firstItem="57" firstAttribute="top" secondItem="1" secondAttribute="top" constant="20" symbolic="YES" id="N2b-Nx-SZC"/>
|
<constraint firstItem="57" firstAttribute="top" secondItem="1" secondAttribute="top" constant="20" symbolic="YES" id="N2b-Nx-SZC"/>
|
||||||
<constraint firstItem="101" firstAttribute="top" secondItem="57" secondAttribute="bottom" constant="8" symbolic="YES" id="WT3-Nh-FrW"/>
|
<constraint firstItem="101" firstAttribute="top" secondItem="57" secondAttribute="bottom" constant="20" symbolic="YES" id="WT3-Nh-FrW"/>
|
||||||
<constraint firstItem="His-4A-hcY" firstAttribute="baseline" secondItem="101" secondAttribute="baseline" id="fq3-rS-gvQ"/>
|
<constraint firstItem="His-4A-hcY" firstAttribute="baseline" secondItem="101" secondAttribute="baseline" id="fq3-rS-gvQ"/>
|
||||||
<constraint firstItem="101" firstAttribute="leading" secondItem="8kv-BJ-IEk" secondAttribute="trailing" constant="8" symbolic="YES" id="nvi-CZ-a6L"/>
|
<constraint firstItem="101" firstAttribute="leading" secondItem="8kv-BJ-IEk" secondAttribute="trailing" constant="12" symbolic="YES" id="nvi-CZ-a6L"/>
|
||||||
</constraints>
|
</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="32" width="16" height="16"/>
|
<rect key="frame" x="32" y="29" width="16" height="22"/>
|
||||||
<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="8" width="32" height="32"/>
|
<rect key="frame" x="8" y="6.5" width="32.5" height="36"/>
|
||||||
<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="11" height="11"/>
|
<image name="NSAddTemplate" width="14" height="13"/>
|
||||||
<image name="NSRefreshFreestandingTemplate" width="14" height="14"/>
|
<image name="NSRefreshFreestandingTemplate" width="15" height="15"/>
|
||||||
</resources>
|
</resources>
|
||||||
</document>
|
</document>
|
||||||
|
|||||||
@@ -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="14313.18" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19529" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14313.18"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19529"/>
|
||||||
<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="620" width="32" height="32"/>
|
<rect key="frame" x="20" y="617" width="32" height="38"/>
|
||||||
<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"/>
|
||||||
@@ -44,7 +44,7 @@
|
|||||||
</connections>
|
</connections>
|
||||||
</imageView>
|
</imageView>
|
||||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="3013">
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="3013">
|
||||||
<rect key="frame" x="58" y="628" width="202" height="17"/>
|
<rect key="frame" x="58" y="628" width="202" height="16"/>
|
||||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" truncatesLastVisibleLine="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" title="Label" usesSingleLineMode="YES" id="3014">
|
<textFieldCell key="cell" lineBreakMode="truncatingTail" truncatesLastVisibleLine="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" title="Label" usesSingleLineMode="YES" id="3014">
|
||||||
<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"/>
|
||||||
@@ -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="115" height="24"/>
|
<rect key="frame" x="82" y="194" width="116" height="24"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="No Selection" id="2986">
|
<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" allowsNonContiguousLayout="YES" smartInsertDelete="YES" id="g24-gQ-foD" customClass="HNHUITextView">
|
<textView importsGraphics="NO" richText="NO" verticallyResizable="YES" allowsUndo="YES" allowsNonContiguousLayout="YES" smartInsertDelete="YES" id="g24-gQ-foD" customClass="HNHUITextView">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="236" height="192"/>
|
<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"/>
|
||||||
@@ -200,10 +200,10 @@
|
|||||||
<constraint firstItem="3145" firstAttribute="leading" secondItem="2894" secondAttribute="leading" id="3155"/>
|
<constraint firstItem="3145" firstAttribute="leading" secondItem="2894" secondAttribute="leading" id="3155"/>
|
||||||
<constraint firstAttribute="bottom" secondItem="3145" secondAttribute="bottom" id="PjS-Y5-YA6"/>
|
<constraint firstAttribute="bottom" secondItem="3145" secondAttribute="bottom" id="PjS-Y5-YA6"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<point key="canvasLocation" x="-224" y="-890"/>
|
<point key="canvasLocation" x="-349" y="-997"/>
|
||||||
</customView>
|
</customView>
|
||||||
</objects>
|
</objects>
|
||||||
<resources>
|
<resources>
|
||||||
<image name="NSActionTemplate" width="14" height="14"/>
|
<image name="NSActionTemplate" width="15" height="15"/>
|
||||||
</resources>
|
</resources>
|
||||||
</document>
|
</document>
|
||||||
|
|||||||
@@ -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="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
<customObject id="-2" userLabel="File's Owner" customClass="MPIntegrationPreferencesController">
|
<customObject id="-2" userLabel="File's Owner" customClass="MPIntegrationPreferencesController">
|
||||||
<connections>
|
<connections>
|
||||||
|
<outlet property="alwaysShowConfirmationBeforeAutotypeCheckBox" destination="uZQ-Gd-hfu" id="6NL-Tz-7su"/>
|
||||||
<outlet property="autotypeStackView" destination="j52-9L-k7c" id="Mxw-aa-elx"/>
|
<outlet property="autotypeStackView" destination="j52-9L-k7c" id="Mxw-aa-elx"/>
|
||||||
<outlet property="autotypeWarningTextField" destination="hMJ-Mo-xOM" id="LcH-X2-TAm"/>
|
<outlet property="autotypeWarningTextField" destination="hMJ-Mo-xOM" id="LcH-X2-TAm"/>
|
||||||
<outlet property="enableGlobalAutotypeCheckBox" destination="tik-Ar-FJg" id="yVA-bM-sSh"/>
|
<outlet property="enableGlobalAutotypeCheckBox" destination="tik-Ar-FJg" id="yVA-bM-sSh"/>
|
||||||
@@ -26,19 +27,19 @@
|
|||||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
<customObject id="-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="400" height="449"/>
|
<rect key="frame" x="0.0" y="0.0" width="411" height="520"/>
|
||||||
<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="366" height="314"/>
|
<rect key="frame" x="17" y="115" width="377" height="385"/>
|
||||||
<view key="contentView" id="faU-Ok-HJ3">
|
<view key="contentView" id="faU-Ok-HJ3">
|
||||||
<rect key="frame" x="3" y="3" width="360" height="296"/>
|
<rect key="frame" x="3" y="3" width="371" height="367"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<stackView orientation="vertical" alignment="leading" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" 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="328" height="269"/>
|
<rect key="frame" x="16" y="17" width="339" height="340"/>
|
||||||
<beginningViews>
|
<subviews>
|
||||||
<textField verticalHuggingPriority="750" fixedFrame="YES" preferredMaxLayoutWidth="328" translatesAutoresizingMaskIntoConstraints="NO" id="hMJ-Mo-xOM">
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="hMJ-Mo-xOM">
|
||||||
<rect key="frame" x="-2" y="227" width="332" height="42"/>
|
<rect key="frame" x="-2" y="298" width="343" 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>
|
||||||
@@ -46,8 +47,8 @@
|
|||||||
<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" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="jai-b6-Qv4">
|
<button horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="jai-b6-Qv4">
|
||||||
<rect key="frame" x="-6" y="191" width="177" height="32"/>
|
<rect key="frame" x="-6" y="262" width="177" height="32"/>
|
||||||
<buttonCell key="cell" type="push" title="Run Autotype Doctor…" bezelStyle="rounded" alignment="center" borderStyle="border" inset="2" id="NP0-R3-m6n">
|
<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"/>
|
||||||
@@ -56,26 +57,26 @@
|
|||||||
<action selector="runAutotypeDoctor:" target="-2" id="u2q-ab-rQY"/>
|
<action selector="runAutotypeDoctor:" target="-2" id="u2q-ab-rQY"/>
|
||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="tik-Ar-FJg">
|
<button horizontalHuggingPriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="tik-Ar-FJg">
|
||||||
<rect key="frame" x="-2" y="174" width="162" height="18"/>
|
<rect key="frame" x="-2" y="245" width="343" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Enable global Autotype" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="1qb-Rd-jYu">
|
<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 orientation="horizontal" alignment="centerY" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" fixedFrame="YES" 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="146" width="328" height="22"/>
|
<rect key="frame" x="0.0" y="218" width="281" height="21"/>
|
||||||
<beginningViews>
|
<subviews>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" 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="17"/>
|
<rect key="frame" x="-2" y="3" width="57" height="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Shortcut" id="6oN-CH-T0O">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Shortcut" id="6oN-CH-T0O">
|
||||||
<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" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Kvg-he-3c8" customClass="DDHotKeyTextField">
|
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Kvg-he-3c8" customClass="DDHotKeyTextField">
|
||||||
<rect key="frame" x="61" y="0.0" width="136" height="22"/>
|
<rect key="frame" x="61" y="0.0" width="89" height="21"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" constant="89" id="Mia-b8-HCZ"/>
|
<constraint firstAttribute="width" constant="89" id="Mia-b8-HCZ"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
@@ -85,15 +86,15 @@
|
|||||||
<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" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="f5q-EW-RHf">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="f5q-EW-RHf">
|
||||||
<rect key="frame" x="203" y="4" width="127" height="14"/>
|
<rect key="frame" x="156" y="4" width="127" height="14"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Shortcut is missing Key" id="Lxp-wI-yQy">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Shortcut is missing Key" id="Lxp-wI-yQy">
|
||||||
<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"/>
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
</beginningViews>
|
</subviews>
|
||||||
<visibilityPriorities>
|
<visibilityPriorities>
|
||||||
<integer value="1000"/>
|
<integer value="1000"/>
|
||||||
<integer value="1000"/>
|
<integer value="1000"/>
|
||||||
@@ -105,50 +106,66 @@
|
|||||||
<real value="3.4028234663852886e+38"/>
|
<real value="3.4028234663852886e+38"/>
|
||||||
</customSpacing>
|
</customSpacing>
|
||||||
</stackView>
|
</stackView>
|
||||||
<button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="DAX-V8-Say">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="uZQ-Gd-hfu">
|
||||||
<rect key="frame" x="-2" y="122" width="208" height="18"/>
|
<rect key="frame" x="-2" y="194" width="343" height="18"/>
|
||||||
|
<buttonCell key="cell" type="check" title="Always show confirmation before executing Autotype" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="rrU-70-Ara">
|
||||||
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
</button>
|
||||||
|
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="cUt-aB-oib">
|
||||||
|
<rect key="frame" x="-2" y="146" width="343" height="42"/>
|
||||||
|
<textFieldCell key="cell" controlSize="small" selectable="YES" id="VjU-Hz-cu4">
|
||||||
|
<font key="font" metaFont="smallSystem"/>
|
||||||
|
<string key="title">If enabled, a dialog will show up before Autotype is executed even if only a single match was found to prevent accidental input and wrong matches</string>
|
||||||
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
<button horizontalHuggingPriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="DAX-V8-Say">
|
||||||
|
<rect key="frame" x="-2" y="122" width="343" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Include Entry Title for matches" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="tmL-dT-D0G">
|
<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 fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="8Wz-lo-AXG">
|
<button horizontalHuggingPriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="8Wz-lo-AXG">
|
||||||
<rect key="frame" x="-2" y="100" width="206" height="18"/>
|
<rect key="frame" x="-2" y="100" width="343" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Include Entry URL for matches" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="TzR-00-Vp3">
|
<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 fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="TiO-ah-BlR">
|
<button horizontalHuggingPriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="TiO-ah-BlR">
|
||||||
<rect key="frame" x="-2" y="78" width="239" height="18"/>
|
<rect key="frame" x="-2" y="78" width="343" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Include Entry URL Host for matches" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="B1D-j9-L8x">
|
<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 fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="9MH-jx-GpG">
|
<button horizontalHuggingPriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="9MH-jx-GpG">
|
||||||
<rect key="frame" x="-2" y="56" width="210" height="18"/>
|
<rect key="frame" x="-2" y="56" width="343" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Include Entry Tags for matches" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="rbu-G7-MT8">
|
<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 verticalHuggingPriority="750" fixedFrame="YES" 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="122" height="18"/>
|
<rect key="frame" x="-2" y="34" width="343" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Interpret ⌃ as ⌘" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="QfO-yG-l3F">
|
<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" fixedFrame="YES" setsMaxLayoutWidthAtFirstLayout="YES" 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="332" height="28"/>
|
<rect key="frame" x="-2" y="0.0" width="343" height="28"/>
|
||||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="If enabled, every {CONTROL} command will be sent as ⌘. Only disable this if you are sure you need to." id="QRy-CY-ENC">
|
<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"/>
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
</beginningViews>
|
</subviews>
|
||||||
<visibilityPriorities>
|
<visibilityPriorities>
|
||||||
<integer value="1000"/>
|
<integer value="1000"/>
|
||||||
<integer value="1000"/>
|
<integer value="1000"/>
|
||||||
@@ -160,6 +177,8 @@
|
|||||||
<integer value="1000"/>
|
<integer value="1000"/>
|
||||||
<integer value="1000"/>
|
<integer value="1000"/>
|
||||||
<integer value="1000"/>
|
<integer value="1000"/>
|
||||||
|
<integer value="1000"/>
|
||||||
|
<integer value="1000"/>
|
||||||
</visibilityPriorities>
|
</visibilityPriorities>
|
||||||
<customSpacing>
|
<customSpacing>
|
||||||
<real value="3.4028234663852886e+38"/>
|
<real value="3.4028234663852886e+38"/>
|
||||||
@@ -172,6 +191,8 @@
|
|||||||
<real value="3.4028234663852886e+38"/>
|
<real value="3.4028234663852886e+38"/>
|
||||||
<real value="3.4028234663852886e+38"/>
|
<real value="3.4028234663852886e+38"/>
|
||||||
<real value="3.4028234663852886e+38"/>
|
<real value="3.4028234663852886e+38"/>
|
||||||
|
<real value="3.4028234663852886e+38"/>
|
||||||
|
<real value="3.4028234663852886e+38"/>
|
||||||
</customSpacing>
|
</customSpacing>
|
||||||
</stackView>
|
</stackView>
|
||||||
</subviews>
|
</subviews>
|
||||||
@@ -184,9 +205,9 @@
|
|||||||
</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="366" height="95"/>
|
<rect key="frame" x="17" y="16" width="377" height="95"/>
|
||||||
<view key="contentView" id="ww4-uR-8gP">
|
<view key="contentView" id="ww4-uR-8gP">
|
||||||
<rect key="frame" x="3" y="3" width="360" height="77"/>
|
<rect key="frame" x="3" y="3" width="371" height="77"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="LNw-5t-TS4">
|
<button translatesAutoresizingMaskIntoConstraints="NO" id="LNw-5t-TS4">
|
||||||
@@ -196,8 +217,8 @@
|
|||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
</buttonCell>
|
</buttonCell>
|
||||||
</button>
|
</button>
|
||||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" 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="332" height="28"/>
|
<rect key="frame" x="14" y="17" width="343" height="28"/>
|
||||||
<textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" title="If enabled attached files will be copied to a temporary location for preview and deleted after the preview is closed." id="WmI-IB-Aso">
|
<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"/>
|
||||||
@@ -220,16 +241,15 @@
|
|||||||
</box>
|
</box>
|
||||||
</subviews>
|
</subviews>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" constant="400" id="19"/>
|
|
||||||
<constraint firstItem="P9N-HM-wER" firstAttribute="top" secondItem="1" secondAttribute="top" constant="20" symbolic="YES" id="8fy-q5-VJy"/>
|
<constraint 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 firstAttribute="bottom" secondItem="VVs-b5-cX9" secondAttribute="bottom" constant="20" symbolic="YES" id="TZB-qe-7eg"/>
|
||||||
<constraint firstItem="VVs-b5-cX9" firstAttribute="top" secondItem="P9N-HM-wER" secondAttribute="bottom" constant="8" id="VCX-JW-cBe"/>
|
<constraint firstItem="VVs-b5-cX9" firstAttribute="top" secondItem="P9N-HM-wER" secondAttribute="bottom" constant="8" symbolic="YES" id="VCX-JW-cBe"/>
|
||||||
<constraint firstItem="VVs-b5-cX9" firstAttribute="trailing" secondItem="P9N-HM-wER" secondAttribute="trailing" id="k9i-4T-WY0"/>
|
<constraint 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="-558" y="-1123"/>
|
<point key="canvasLocation" x="-1204" y="-1287"/>
|
||||||
</customView>
|
</customView>
|
||||||
</objects>
|
</objects>
|
||||||
</document>
|
</document>
|
||||||
|
|||||||
250
MacPass/Base.lproj/MPTOTPSetupViewController.xib
Normal file
250
MacPass/Base.lproj/MPTOTPSetupViewController.xib
Normal file
@@ -0,0 +1,250 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19455" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||||
|
<dependencies>
|
||||||
|
<deployment version="101304" identifier="macosx"/>
|
||||||
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19455"/>
|
||||||
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
|
</dependencies>
|
||||||
|
<objects>
|
||||||
|
<customObject id="-2" userLabel="File's Owner" customClass="MPTOTPSetupViewController">
|
||||||
|
<connections>
|
||||||
|
<outlet property="algorithmPopUpButton" destination="caF-Au-ey8" id="aZJ-ee-acD"/>
|
||||||
|
<outlet property="digitCountPopUpButton" destination="aa3-XV-Chc" id="Ghc-Mp-R8f"/>
|
||||||
|
<outlet property="gridView" destination="4gl-4p-0WY" id="hvW-TB-Elg"/>
|
||||||
|
<outlet property="qrCodeImageView" destination="yS5-M0-RSB" id="s9E-ID-WQz"/>
|
||||||
|
<outlet property="secretTextField" destination="Bt8-9X-91R" id="mtn-nj-3oO"/>
|
||||||
|
<outlet property="timeStepStepper" destination="CgJ-Qt-NPu" id="JxC-E8-BXY"/>
|
||||||
|
<outlet property="timeStepTextField" destination="AdN-zI-C65" id="ebN-x3-AIN"/>
|
||||||
|
<outlet property="typePopUpButton" destination="ku7-YD-kkV" id="8zT-Y5-6Wa"/>
|
||||||
|
<outlet property="urlTextField" destination="GJN-85-eYH" id="Y1F-zI-hLu"/>
|
||||||
|
<outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
|
||||||
|
</connections>
|
||||||
|
</customObject>
|
||||||
|
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||||
|
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||||
|
<customView translatesAutoresizingMaskIntoConstraints="NO" id="Hz6-mo-xeY">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="324" height="362"/>
|
||||||
|
<subviews>
|
||||||
|
<gridView horizontalHuggingPriority="251" xPlacement="leading" yPlacement="center" rowAlignment="firstBaseline" rowSpacing="8" translatesAutoresizingMaskIntoConstraints="NO" id="4gl-4p-0WY">
|
||||||
|
<rect key="frame" x="20" y="60" width="284" height="282"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstItem="GJN-85-eYH" firstAttribute="trailing" secondItem="Bt8-9X-91R" secondAttribute="trailing" id="9fv-9s-YwU"/>
|
||||||
|
<constraint firstItem="AdN-zI-C65" firstAttribute="top" secondItem="caF-Au-ey8" secondAttribute="bottom" constant="8" symbolic="YES" id="GFv-3D-Ejx"/>
|
||||||
|
<constraint firstItem="GJN-85-eYH" firstAttribute="top" secondItem="ku7-YD-kkV" secondAttribute="bottom" constant="8" symbolic="YES" id="kxe-2P-DnD"/>
|
||||||
|
<constraint firstItem="aa3-XV-Chc" firstAttribute="top" secondItem="AdN-zI-C65" secondAttribute="bottom" constant="8" id="lWy-AW-0tB"/>
|
||||||
|
<constraint firstItem="AdN-zI-C65" firstAttribute="trailing" secondItem="Bt8-9X-91R" secondAttribute="trailing" id="xXQ-D9-G21"/>
|
||||||
|
</constraints>
|
||||||
|
<rows>
|
||||||
|
<gridRow topPadding="4" bottomPadding="4" id="T2o-We-WjN"/>
|
||||||
|
<gridRow yPlacement="fill" id="leK-j9-Cah"/>
|
||||||
|
<gridRow id="J7I-Uw-OQv"/>
|
||||||
|
<gridRow id="GmF-7D-t30"/>
|
||||||
|
<gridRow id="hS6-e9-JPg"/>
|
||||||
|
<gridRow id="QY3-TF-Rbs"/>
|
||||||
|
<gridRow id="0Jy-aF-Wst"/>
|
||||||
|
</rows>
|
||||||
|
<columns>
|
||||||
|
<gridColumn xPlacement="trailing" id="Ar1-qh-iHT"/>
|
||||||
|
<gridColumn id="Ecc-pj-MX9"/>
|
||||||
|
<gridColumn id="aZO-dP-SsW"/>
|
||||||
|
</columns>
|
||||||
|
<gridCells>
|
||||||
|
<gridCell row="T2o-We-WjN" column="Ar1-qh-iHT" rowAlignment="lastBaseline" id="19c-m3-M2s">
|
||||||
|
<textField key="contentView" horizontalHuggingPriority="252" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="hh3-nA-yHV">
|
||||||
|
<rect key="frame" x="46" y="222" width="59" height="16"/>
|
||||||
|
<textFieldCell key="cell" lineBreakMode="clipping" title="QR Code" id="PuA-kW-t29">
|
||||||
|
<font key="font" usesAppearanceFont="YES"/>
|
||||||
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</gridCell>
|
||||||
|
<gridCell row="T2o-We-WjN" column="Ecc-pj-MX9" rowAlignment="none" id="jgf-mM-CW2">
|
||||||
|
<imageView key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="yS5-M0-RSB">
|
||||||
|
<rect key="frame" x="106" y="195" width="70" height="70"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="width" constant="64" id="MhV-Ye-bQt"/>
|
||||||
|
<constraint firstAttribute="height" constant="64" id="RRz-CV-k1H"/>
|
||||||
|
</constraints>
|
||||||
|
<imageCell key="cell" selectable="YES" editable="YES" alignment="left" imageScaling="proportionallyDown" imageFrameStyle="grayBezel" id="BXB-xr-hqw"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="parseQRCode:" target="-2" id="5u9-xL-Haj"/>
|
||||||
|
</connections>
|
||||||
|
</imageView>
|
||||||
|
</gridCell>
|
||||||
|
<gridCell row="T2o-We-WjN" column="aZO-dP-SsW" xPlacement="leading" id="0bn-HV-7V1"/>
|
||||||
|
<gridCell row="leK-j9-Cah" column="Ar1-qh-iHT" rowAlignment="none" id="fgi-y3-z17">
|
||||||
|
<textField key="contentView" horizontalHuggingPriority="252" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="e3u-QK-K24">
|
||||||
|
<rect key="frame" x="61" y="148" width="44" height="21"/>
|
||||||
|
<textFieldCell key="cell" lineBreakMode="clipping" title="Secret" id="ufY-IN-5UY">
|
||||||
|
<font key="font" usesAppearanceFont="YES"/>
|
||||||
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</gridCell>
|
||||||
|
<gridCell row="leK-j9-Cah" column="Ecc-pj-MX9" yPlacement="center" id="q9e-Zx-LIY">
|
||||||
|
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Bt8-9X-91R">
|
||||||
|
<rect key="frame" x="109" y="148" width="150" height="21"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="width" constant="150" id="aN6-yG-12x"/>
|
||||||
|
</constraints>
|
||||||
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" id="N3a-bO-6va">
|
||||||
|
<font key="font" usesAppearanceFont="YES"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</gridCell>
|
||||||
|
<gridCell row="leK-j9-Cah" column="aZO-dP-SsW" id="gOO-ed-C7I"/>
|
||||||
|
<gridCell row="J7I-Uw-OQv" column="Ar1-qh-iHT" id="LYj-ea-Ou9">
|
||||||
|
<textField key="contentView" hidden="YES" horizontalHuggingPriority="252" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="W8L-ah-Kdc">
|
||||||
|
<rect key="frame" x="71" y="121" width="34" height="16"/>
|
||||||
|
<textFieldCell key="cell" lineBreakMode="clipping" title="Type" id="fNC-fH-sYi">
|
||||||
|
<font key="font" usesAppearanceFont="YES"/>
|
||||||
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</gridCell>
|
||||||
|
<gridCell row="J7I-Uw-OQv" column="Ecc-pj-MX9" id="fOz-RA-6LG">
|
||||||
|
<popUpButton key="contentView" hidden="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ku7-YD-kkV">
|
||||||
|
<rect key="frame" x="106" y="114" width="157" height="25"/>
|
||||||
|
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="WbA-Ie-Txj">
|
||||||
|
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||||
|
<font key="font" metaFont="menu"/>
|
||||||
|
<menu key="menu" id="ger-Fr-8BF"/>
|
||||||
|
</popUpButtonCell>
|
||||||
|
</popUpButton>
|
||||||
|
</gridCell>
|
||||||
|
<gridCell row="J7I-Uw-OQv" column="aZO-dP-SsW" id="mka-sc-dDD"/>
|
||||||
|
<gridCell row="GmF-7D-t30" column="Ar1-qh-iHT" yPlacement="center" id="Isd-CW-srQ">
|
||||||
|
<textField key="contentView" horizontalHuggingPriority="252" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="4Ic-Nt-YlL">
|
||||||
|
<rect key="frame" x="75" y="91" width="30" height="16"/>
|
||||||
|
<textFieldCell key="cell" lineBreakMode="clipping" title="URL" id="Kci-xp-mLu">
|
||||||
|
<font key="font" usesAppearanceFont="YES"/>
|
||||||
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</gridCell>
|
||||||
|
<gridCell row="GmF-7D-t30" column="Ecc-pj-MX9" headOfMergedCell="Fpx-eQ-WAY" id="Fpx-eQ-WAY">
|
||||||
|
<textField key="contentView" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="GJN-85-eYH">
|
||||||
|
<rect key="frame" x="109" y="89" width="150" height="21"/>
|
||||||
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" id="ZpH-Ks-BBi">
|
||||||
|
<font key="font" usesAppearanceFont="YES"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</gridCell>
|
||||||
|
<gridCell row="GmF-7D-t30" column="aZO-dP-SsW" headOfMergedCell="Fpx-eQ-WAY" id="ZXy-HZ-O3a"/>
|
||||||
|
<gridCell row="hS6-e9-JPg" column="Ar1-qh-iHT" id="5hJ-4K-a2d">
|
||||||
|
<textField key="contentView" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="yiW-Wk-6YB">
|
||||||
|
<rect key="frame" x="7" y="61" width="98" height="16"/>
|
||||||
|
<textFieldCell key="cell" lineBreakMode="clipping" title="Hash Algorithm" id="g3s-fk-k9Q">
|
||||||
|
<font key="font" usesAppearanceFont="YES"/>
|
||||||
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</gridCell>
|
||||||
|
<gridCell row="hS6-e9-JPg" column="Ecc-pj-MX9" id="6MO-n5-2Cu">
|
||||||
|
<popUpButton key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="caF-Au-ey8">
|
||||||
|
<rect key="frame" x="106" y="54" width="157" height="25"/>
|
||||||
|
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="Rxs-11-LRy">
|
||||||
|
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||||
|
<font key="font" metaFont="menu"/>
|
||||||
|
<menu key="menu" id="zev-8W-Uhl"/>
|
||||||
|
</popUpButtonCell>
|
||||||
|
</popUpButton>
|
||||||
|
</gridCell>
|
||||||
|
<gridCell row="hS6-e9-JPg" column="aZO-dP-SsW" id="56r-vv-PhT"/>
|
||||||
|
<gridCell row="QY3-TF-Rbs" column="Ar1-qh-iHT" id="jL5-XH-KYZ">
|
||||||
|
<textField key="contentView" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="JOR-bN-ZYC">
|
||||||
|
<rect key="frame" x="41" y="31" width="64" height="16"/>
|
||||||
|
<textFieldCell key="cell" lineBreakMode="clipping" title="Time step" id="hbT-mm-dIn">
|
||||||
|
<font key="font" usesAppearanceFont="YES"/>
|
||||||
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</gridCell>
|
||||||
|
<gridCell row="QY3-TF-Rbs" column="Ecc-pj-MX9" xPlacement="fill" id="bvB-9m-g1U">
|
||||||
|
<textField key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="AdN-zI-C65">
|
||||||
|
<rect key="frame" x="109" y="28" width="150" height="22"/>
|
||||||
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" id="bHO-kq-GUf">
|
||||||
|
<font key="font" usesAppearanceFont="YES"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</gridCell>
|
||||||
|
<gridCell row="QY3-TF-Rbs" column="aZO-dP-SsW" rowAlignment="none" id="oRW-3a-WxP">
|
||||||
|
<stepper key="contentView" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="CgJ-Qt-NPu">
|
||||||
|
<rect key="frame" x="262" y="25" width="19" height="28"/>
|
||||||
|
<stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="RPy-q9-wKy"/>
|
||||||
|
</stepper>
|
||||||
|
</gridCell>
|
||||||
|
<gridCell row="0Jy-aF-Wst" column="Ar1-qh-iHT" id="hWa-nU-LpX">
|
||||||
|
<textField key="contentView" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="z5V-Af-Kpa">
|
||||||
|
<rect key="frame" x="-2" y="1" width="107" height="18"/>
|
||||||
|
<textFieldCell key="cell" lineBreakMode="clipping" title="Number of Digits" id="iYF-F5-nMb">
|
||||||
|
<font key="font" usesAppearanceFont="YES"/>
|
||||||
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</gridCell>
|
||||||
|
<gridCell row="0Jy-aF-Wst" column="Ecc-pj-MX9" id="gil-83-ris">
|
||||||
|
<popUpButton key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="aa3-XV-Chc">
|
||||||
|
<rect key="frame" x="106" y="-4" width="157" height="25"/>
|
||||||
|
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="rzY-5S-dIJ">
|
||||||
|
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||||
|
<font key="font" metaFont="menu"/>
|
||||||
|
<menu key="menu" id="XCv-uH-EcW"/>
|
||||||
|
</popUpButtonCell>
|
||||||
|
</popUpButton>
|
||||||
|
</gridCell>
|
||||||
|
<gridCell row="0Jy-aF-Wst" column="aZO-dP-SsW" id="V48-br-lpl"/>
|
||||||
|
</gridCells>
|
||||||
|
</gridView>
|
||||||
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Ppm-aD-yti">
|
||||||
|
<rect key="frame" x="193" y="13" width="118" height="32"/>
|
||||||
|
<buttonCell key="cell" type="push" title="Save Settings" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="YGn-qt-RrI">
|
||||||
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<action selector="save:" target="-2" id="k3D-gK-Tch"/>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="5a5-df-HAb">
|
||||||
|
<rect key="frame" x="119" y="13" width="76" height="32"/>
|
||||||
|
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Ynh-bE-30s">
|
||||||
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<string key="keyEquivalent" base64-UTF8="YES">
|
||||||
|
Gw
|
||||||
|
</string>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<action selector="cancel:" target="-2" id="Z99-2L-Le6"/>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstItem="5a5-df-HAb" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="3Dj-2P-0OT"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="4gl-4p-0WY" secondAttribute="trailing" constant="20" symbolic="YES" id="4eg-dj-7eq"/>
|
||||||
|
<constraint firstItem="5a5-df-HAb" firstAttribute="bottom" secondItem="Ppm-aD-yti" secondAttribute="bottom" id="CZ9-Ia-TWV"/>
|
||||||
|
<constraint firstItem="Ppm-aD-yti" firstAttribute="leading" secondItem="5a5-df-HAb" secondAttribute="trailing" constant="12" symbolic="YES" id="EXf-y0-UFR"/>
|
||||||
|
<constraint firstItem="4gl-4p-0WY" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="20" symbolic="YES" id="QNT-yn-O32"/>
|
||||||
|
<constraint firstItem="Ppm-aD-yti" firstAttribute="top" secondItem="4gl-4p-0WY" secondAttribute="bottom" constant="20" symbolic="YES" id="RMh-eo-ItW"/>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="Ppm-aD-yti" secondAttribute="bottom" constant="20" symbolic="YES" id="eBG-Ns-4ur"/>
|
||||||
|
<constraint firstItem="4gl-4p-0WY" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="g3C-GL-weQ"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="Ppm-aD-yti" secondAttribute="trailing" constant="20" symbolic="YES" id="gxW-QO-gFu"/>
|
||||||
|
</constraints>
|
||||||
|
<point key="canvasLocation" x="-1402" y="-1030"/>
|
||||||
|
</customView>
|
||||||
|
</objects>
|
||||||
|
</document>
|
||||||
103
MacPass/Base.lproj/MPTOTPViewController.xib
Normal file
103
MacPass/Base.lproj/MPTOTPViewController.xib
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19455" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||||
|
<dependencies>
|
||||||
|
<deployment identifier="macosx"/>
|
||||||
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19455"/>
|
||||||
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
|
</dependencies>
|
||||||
|
<objects>
|
||||||
|
<customObject id="-2" userLabel="File's Owner" customClass="MPTOTPViewController">
|
||||||
|
<connections>
|
||||||
|
<outlet property="remainingTimeButton" destination="Hxg-bd-l1O" id="QJf-RB-7JY"/>
|
||||||
|
<outlet property="showSetupButton" destination="xge-Jc-QnB" id="BiU-0e-j2c"/>
|
||||||
|
<outlet property="toptValueTextField" destination="xBL-Jz-VQO" id="QwC-Um-82o"/>
|
||||||
|
<outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
|
||||||
|
</connections>
|
||||||
|
</customObject>
|
||||||
|
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||||
|
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||||
|
<customView id="Hz6-mo-xeY">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="480" height="43"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<stackView distribution="fill" orientation="vertical" alignment="leading" horizontalStackHuggingPriority="250" verticalStackHuggingPriority="250" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Lz5-aM-o4b">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="480" height="43"/>
|
||||||
|
<subviews>
|
||||||
|
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="r8F-6m-CG6">
|
||||||
|
<rect key="frame" x="-2" y="29" width="484" height="14"/>
|
||||||
|
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="TOTP" id="mP4-nH-7TA">
|
||||||
|
<font key="font" metaFont="smallSystem"/>
|
||||||
|
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
<stackView distribution="fill" orientation="horizontal" alignment="centerY" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="avD-My-tnu">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="479" height="21"/>
|
||||||
|
<subviews>
|
||||||
|
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="xBL-Jz-VQO" customClass="HNHUITextField">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="406" height="21"/>
|
||||||
|
<textFieldCell key="cell" lineBreakMode="truncatingTail" truncatesLastVisibleLine="YES" selectable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="Vuy-HC-UhI">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
<connections>
|
||||||
|
<outlet property="delegate" destination="-2" id="pfM-gT-aXU"/>
|
||||||
|
</connections>
|
||||||
|
</textField>
|
||||||
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Hxg-bd-l1O">
|
||||||
|
<rect key="frame" x="414" y="2" width="26" height="18"/>
|
||||||
|
<buttonCell key="cell" type="inline" title="30" bezelStyle="inline" alignment="center" enabled="NO" borderStyle="border" inset="2" id="roW-Uk-ff9">
|
||||||
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
|
<font key="font" metaFont="smallSystemBold"/>
|
||||||
|
</buttonCell>
|
||||||
|
</button>
|
||||||
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="xge-Jc-QnB">
|
||||||
|
<rect key="frame" x="441" y="-6" width="45" height="32"/>
|
||||||
|
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSActionTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="64a-Tn-vdd">
|
||||||
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<action selector="showOTPSetup:" target="-2" id="bgd-gi-zp9"/>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
</subviews>
|
||||||
|
<visibilityPriorities>
|
||||||
|
<integer value="1000"/>
|
||||||
|
<integer value="1000"/>
|
||||||
|
<integer value="1000"/>
|
||||||
|
</visibilityPriorities>
|
||||||
|
<customSpacing>
|
||||||
|
<real value="3.4028234663852886e+38"/>
|
||||||
|
<real value="3.4028234663852886e+38"/>
|
||||||
|
<real value="3.4028234663852886e+38"/>
|
||||||
|
</customSpacing>
|
||||||
|
</stackView>
|
||||||
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="avD-My-tnu" secondAttribute="trailing" constant="1" id="nhf-Ld-Bh4"/>
|
||||||
|
</constraints>
|
||||||
|
<visibilityPriorities>
|
||||||
|
<integer value="1000"/>
|
||||||
|
<integer value="1000"/>
|
||||||
|
</visibilityPriorities>
|
||||||
|
<customSpacing>
|
||||||
|
<real value="3.4028234663852886e+38"/>
|
||||||
|
<real value="3.4028234663852886e+38"/>
|
||||||
|
</customSpacing>
|
||||||
|
</stackView>
|
||||||
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="Lz5-aM-o4b" secondAttribute="bottom" id="JFd-zk-sz4"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="Lz5-aM-o4b" secondAttribute="trailing" id="vne-gZ-Ec8"/>
|
||||||
|
<constraint firstItem="Lz5-aM-o4b" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" id="y4i-uB-HlK"/>
|
||||||
|
<constraint firstItem="Lz5-aM-o4b" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="zFP-JZ-Qtu"/>
|
||||||
|
</constraints>
|
||||||
|
<point key="canvasLocation" x="-629" y="-23"/>
|
||||||
|
</customView>
|
||||||
|
</objects>
|
||||||
|
<resources>
|
||||||
|
<image name="NSActionTemplate" width="15" height="15"/>
|
||||||
|
</resources>
|
||||||
|
</document>
|
||||||
@@ -1,8 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19455" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19455"/>
|
||||||
<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">
|
||||||
@@ -151,9 +150,9 @@
|
|||||||
<action selector="mergeWithOther:" target="-1" id="OyM-CZ-TDD"/>
|
<action selector="mergeWithOther:" target="-1" id="OyM-CZ-TDD"/>
|
||||||
</connections>
|
</connections>
|
||||||
</menuItem>
|
</menuItem>
|
||||||
<menuItem title="Import" id="aTb-sW-nUd">
|
<menuItem title="Import From" id="aTb-sW-nUd">
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
<menu key="submenu" title="Import" id="4q9-u1-pcm">
|
<menu key="submenu" title="Import From" id="4q9-u1-pcm">
|
||||||
<items>
|
<items>
|
||||||
<menuItem title="XML…" id="rW0-r1-QYL">
|
<menuItem title="XML…" id="rW0-r1-QYL">
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
@@ -167,16 +166,20 @@
|
|||||||
</connections>
|
</connections>
|
||||||
</menu>
|
</menu>
|
||||||
</menuItem>
|
</menuItem>
|
||||||
<menuItem title="Export" id="tz9-yK-pOf">
|
<menuItem title="Export To" id="tz9-yK-pOf">
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
<menu key="submenu" title="Export" id="p8h-Fg-h1O">
|
<menu key="submenu" title="Export To" id="p8h-Fg-h1O">
|
||||||
<items>
|
<items>
|
||||||
<menuItem title="XML…" keyEquivalent="E" id="1259">
|
<menuItem title="XML…" id="1259">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
<connections>
|
<connections>
|
||||||
<action selector="exportAsXML:" target="-1" id="NCG-gr-YI5"/>
|
<action selector="exportAsXML:" target="-1" id="NCG-gr-YI5"/>
|
||||||
</connections>
|
</connections>
|
||||||
</menuItem>
|
</menuItem>
|
||||||
</items>
|
</items>
|
||||||
|
<connections>
|
||||||
|
<outlet property="delegate" destination="494" id="ALY-P3-PzW"/>
|
||||||
|
</connections>
|
||||||
</menu>
|
</menu>
|
||||||
</menuItem>
|
</menuItem>
|
||||||
<menuItem isSeparatorItem="YES" id="74">
|
<menuItem isSeparatorItem="YES" id="74">
|
||||||
@@ -247,7 +250,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="perfromCustomSearch:" target="-1" id="RSR-PQ-TH1"/>
|
<action selector="performCustomSearch:" target="-1" id="RSR-PQ-TH1"/>
|
||||||
</connections>
|
</connections>
|
||||||
</menuItem>
|
</menuItem>
|
||||||
</items>
|
</items>
|
||||||
@@ -357,6 +360,7 @@ CA
|
|||||||
</menu>
|
</menu>
|
||||||
<customObject id="494" customClass="MPAppDelegate">
|
<customObject id="494" customClass="MPAppDelegate">
|
||||||
<connections>
|
<connections>
|
||||||
|
<outlet property="exportMenu" destination="p8h-Fg-h1O" id="elV-BC-ZZt"/>
|
||||||
<outlet property="fileNewMenuItem" destination="82" id="BUX-dy-HS2"/>
|
<outlet property="fileNewMenuItem" destination="82" id="BUX-dy-HS2"/>
|
||||||
<outlet property="fixAutotypeMenuItem" destination="nx7-Vf-LiD" id="5n1-bG-JxJ"/>
|
<outlet property="fixAutotypeMenuItem" destination="nx7-Vf-LiD" id="5n1-bG-JxJ"/>
|
||||||
<outlet property="importMenu" destination="4q9-u1-pcm" id="0XM-fS-Vyy"/>
|
<outlet property="importMenu" destination="4q9-u1-pcm" id="0XM-fS-Vyy"/>
|
||||||
|
|||||||
@@ -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="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<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="316"/>
|
<rect key="frame" x="0.0" y="0.0" width="351" height="330"/>
|
||||||
<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="276" width="66" height="17"/>
|
<rect key="frame" x="18" y="292" width="66" height="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Password:" id="149">
|
<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="272" width="201" height="24"/>
|
<rect key="frame" x="90" y="290" width="201" height="20"/>
|
||||||
<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="246" width="205" height="19"/>
|
<rect key="frame" x="88" y="256" width="205" height="28"/>
|
||||||
<sliderCell key="cell" state="on" alignment="left" maxValue="100" doubleValue="50" tickMarkPosition="above" sliderType="linear" id="174"/>
|
<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="248" width="66" height="17"/>
|
<rect key="frame" x="18" y="265" width="66" height="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Length:" id="179">
|
<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="244" width="32" height="22"/>
|
<rect key="frame" x="299" y="261" width="32" height="21"/>
|
||||||
<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="88" width="317" height="119"/>
|
<rect key="frame" x="17" y="102" width="317" height="120"/>
|
||||||
<view key="contentView" id="f93-Su-hga">
|
<view key="contentView" id="f93-Su-hga">
|
||||||
<rect key="frame" x="3" y="3" width="311" height="101"/>
|
<rect key="frame" x="3" y="3" width="311" height="102"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<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="42" width="279" height="22"/>
|
<rect key="frame" x="16" y="44" width="279" height="21"/>
|
||||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="412" customClass="HNHUITextFieldCell">
|
<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="72" width="36" height="19"/>
|
<rect key="frame" x="16" y="73" width="36" height="19"/>
|
||||||
<buttonCell key="cell" type="roundRect" title="A-Z" bezelStyle="roundedRect" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="453">
|
<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="72" width="33" height="19"/>
|
<rect key="frame" x="60" y="73" width="34" height="19"/>
|
||||||
<buttonCell key="cell" type="roundRect" title="a-z" bezelStyle="roundedRect" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="457">
|
<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="101" y="72" width="35" height="19"/>
|
<rect key="frame" x="102" y="73" width="36" height="19"/>
|
||||||
<buttonCell key="cell" type="roundRect" title="0-9" bezelStyle="roundedRect" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="461">
|
<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="144" y="72" width="32" height="19"/>
|
<rect key="frame" x="146" y="73" width="32" height="19"/>
|
||||||
<buttonCell key="cell" type="roundRect" title="#!?" bezelStyle="roundedRect" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="465">
|
<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="184" y="72" width="58" height="19"/>
|
<rect key="frame" x="186" y="73" width="58" height="19"/>
|
||||||
<buttonCell key="cell" type="roundRect" title="Custom" bezelStyle="roundedRect" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="469">
|
<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="18" width="222" height="18"/>
|
<rect key="frame" x="14" y="19" width="226" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Use characters from every group" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="CMc-Uh-Fo5">
|
<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="231" y="19" width="100" height="23"/>
|
<rect key="frame" x="218" y="13" width="120" height="32"/>
|
||||||
<buttonCell key="cell" type="roundTextured" title="Use Password" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="495">
|
<buttonCell key="cell" type="push" title="Use Password" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="495">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<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="68" width="204" height="18"/>
|
<rect key="frame" x="18" y="81" width="208" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Copy password to pasteboard" bezelStyle="regularSquare" imagePosition="left" inset="2" id="501">
|
<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="299" y="273" width="32" height="23"/>
|
<rect key="frame" x="298" y="288" width="34" height="23"/>
|
||||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSRefreshTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="510">
|
<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="167" y="19" width="56" height="23"/>
|
<rect key="frame" x="144" y="13" width="76" height="32"/>
|
||||||
<buttonCell key="cell" type="roundTextured" title="Cancel" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="614">
|
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="614">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<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="213" width="173" height="18"/>
|
<rect key="frame" x="90" y="228" width="173" height="18"/>
|
||||||
<levelIndicatorCell key="cell" alignment="left" doubleValue="10" maxValue="90" warningValue="55" criticalValue="30" levelIndicatorStyle="continuousCapacity" id="636" customClass="HNHUILevelIndicatorCell"/>
|
<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="215" width="66" height="17"/>
|
<rect key="frame" x="18" y="230" width="66" height="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Entropy:" id="647">
|
<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="215" width="64" height="17"/>
|
<rect key="frame" x="269" y="230" width="64" height="16"/>
|
||||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="25000 bit" id="653">
|
<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="20" y="19" width="82" height="23"/>
|
<rect key="frame" x="13" y="13" width="102" height="32"/>
|
||||||
<buttonCell key="cell" type="roundTextured" title="Set Default" bezelStyle="texturedRounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Wvs-Md-Ob8">
|
<buttonCell key="cell" type="push" title="Set Default" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Wvs-Md-Ob8">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<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="48" width="231" height="18"/>
|
<rect key="frame" x="18" y="59" width="235" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Use default only for selected entry" bezelStyle="regularSquare" imagePosition="left" inset="2" id="cfZ-5F-Nge">
|
<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="8" symbolic="YES" id="618"/>
|
<constraint firstItem="494" firstAttribute="leading" secondItem="613" secondAttribute="trailing" constant="12" symbolic="YES" id="618"/>
|
||||||
<constraint firstItem="173" firstAttribute="leading" secondItem="635" secondAttribute="leading" id="642"/>
|
<constraint firstItem="173" firstAttribute="leading" secondItem="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="8" symbolic="YES" id="59d-1n-jSa"/>
|
<constraint firstItem="613" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="yil-UB-jtO" secondAttribute="trailing" constant="12" symbolic="YES" id="59d-1n-jSa"/>
|
||||||
<constraint firstItem="646" firstAttribute="trailing" secondItem="178" secondAttribute="trailing" id="6kR-jk-E8r"/>
|
<constraint firstItem="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="8" symbolic="YES" id="SoR-gh-uhq"/>
|
<constraint firstItem="613" firstAttribute="top" relation="greaterThanOrEqual" secondItem="4yb-SC-vau" secondAttribute="bottom" constant="20" symbolic="YES" id="SoR-gh-uhq"/>
|
||||||
<constraint firstAttribute="bottom" secondItem="yil-UB-jtO" secondAttribute="bottom" constant="20" id="eYK-Hw-fyy"/>
|
<constraint firstAttribute="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="11" height="15"/>
|
<image name="NSRefreshTemplate" width="14" height="16"/>
|
||||||
</resources>
|
</resources>
|
||||||
</document>
|
</document>
|
||||||
|
|||||||
@@ -1,17 +1,18 @@
|
|||||||
<?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="14460.31" 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="14460.31"/>
|
<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>
|
||||||
<customObject id="-2" userLabel="File's Owner" customClass="MPPasswordEditWindowController">
|
<customObject id="-2" userLabel="File's Owner" customClass="MPPasswordEditWindowController">
|
||||||
<connections>
|
<connections>
|
||||||
<outlet property="changePasswordButton" destination="68" id="85"/>
|
<outlet property="changePasswordButton" destination="68" id="85"/>
|
||||||
<outlet property="errorTextField" destination="12" id="79"/>
|
|
||||||
<outlet property="hasPasswordSwitchButton" destination="yKc-I9-uzv" id="aUH-R4-WwP"/>
|
<outlet property="hasPasswordSwitchButton" destination="yKc-I9-uzv" id="aUH-R4-WwP"/>
|
||||||
|
<outlet property="keyErrorTextField" destination="ibK-Px-Fvt" id="l7h-qa-idf"/>
|
||||||
<outlet property="keyfilePathControl" destination="4" id="63"/>
|
<outlet property="keyfilePathControl" destination="4" id="63"/>
|
||||||
|
<outlet property="passwordErrorTextField" destination="12" id="79"/>
|
||||||
<outlet property="passwordRepeatTextField" destination="11" id="62"/>
|
<outlet property="passwordRepeatTextField" destination="11" id="62"/>
|
||||||
<outlet property="passwordTextField" destination="9" id="61"/>
|
<outlet property="passwordTextField" destination="9" id="61"/>
|
||||||
<outlet property="togglePasswordButton" destination="7" id="64"/>
|
<outlet property="togglePasswordButton" destination="7" id="64"/>
|
||||||
@@ -23,99 +24,13 @@
|
|||||||
<window title="Change Password" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="1">
|
<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="196" y="240" width="403" height="219"/>
|
<rect key="contentRect" x="1090" y="652" width="446" height="307"/>
|
||||||
<rect key="screenRect" x="0.0" y="0.0" width="1280" height="777"/>
|
<rect key="screenRect" x="0.0" y="0.0" width="1680" height="1025"/>
|
||||||
<view key="contentView" id="2">
|
<view key="contentView" verticalHuggingPriority="251" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="2">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="403" height="219"/>
|
<rect key="frame" x="0.0" y="0.0" width="369" height="217"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
|
||||||
<subviews>
|
<subviews>
|
||||||
<pathControl verticalHuggingPriority="750" allowsExpansionToolTips="YES" translatesAutoresizingMaskIntoConstraints="NO" id="4" customClass="MPPathControl">
|
|
||||||
<rect key="frame" x="105" y="87" width="242" height="26"/>
|
|
||||||
<pathCell key="cell" selectable="YES" editable="YES" alignment="left" pathStyle="popUp" id="23">
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
</pathCell>
|
|
||||||
</pathControl>
|
|
||||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="5">
|
|
||||||
<rect key="frame" x="53" y="91" width="49" height="17"/>
|
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Keyfile:" id="22">
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</textFieldCell>
|
|
||||||
</textField>
|
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="6">
|
|
||||||
<rect key="frame" x="108" y="59" width="236" height="25"/>
|
|
||||||
<buttonCell key="cell" type="roundTextured" title="Generate Keyfile" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="21">
|
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
</buttonCell>
|
|
||||||
<connections>
|
|
||||||
<action selector="generateKey:" target="-2" id="66"/>
|
|
||||||
</connections>
|
|
||||||
</button>
|
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="7">
|
|
||||||
<rect key="frame" x="352" y="153" width="31" height="25"/>
|
|
||||||
<constraints>
|
|
||||||
<constraint firstAttribute="width" constant="31" id="59"/>
|
|
||||||
</constraints>
|
|
||||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSQuickLookTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="20">
|
|
||||||
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
</buttonCell>
|
|
||||||
</button>
|
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8">
|
|
||||||
<rect key="frame" x="352" y="88" width="31" height="25"/>
|
|
||||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSStopProgressTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="19">
|
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
</buttonCell>
|
|
||||||
<connections>
|
|
||||||
<action selector="clearKey:" target="-2" id="65"/>
|
|
||||||
</connections>
|
|
||||||
</button>
|
|
||||||
<secureTextField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="9" customClass="HNHUISecureTextField">
|
|
||||||
<rect key="frame" x="108" y="153" width="236" height="24"/>
|
|
||||||
<constraints>
|
|
||||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="200" id="Gin-yR-DMk"/>
|
|
||||||
</constraints>
|
|
||||||
<secureTextFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="Enter Password" drawsBackground="YES" usesSingleLineMode="YES" id="18">
|
|
||||||
<font key="font" size="13" name="Menlo-Regular"/>
|
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<allowedInputSourceLocales>
|
|
||||||
<string>NSAllRomanInputSourcesLocaleIdentifier</string>
|
|
||||||
</allowedInputSourceLocales>
|
|
||||||
</secureTextFieldCell>
|
|
||||||
</secureTextField>
|
|
||||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="10">
|
|
||||||
<rect key="frame" x="51" y="123" width="51" height="17"/>
|
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Repeat:" id="16">
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</textFieldCell>
|
|
||||||
</textField>
|
|
||||||
<secureTextField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="11" customClass="HNHUISecureTextField">
|
|
||||||
<rect key="frame" x="108" y="119" width="236" height="24"/>
|
|
||||||
<secureTextFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="Repeat Password" drawsBackground="YES" usesSingleLineMode="YES" id="15">
|
|
||||||
<font key="font" size="13" name="Menlo-Regular"/>
|
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<allowedInputSourceLocales>
|
|
||||||
<string>NSAllRomanInputSourcesLocaleIdentifier</string>
|
|
||||||
</allowedInputSourceLocales>
|
|
||||||
</secureTextFieldCell>
|
|
||||||
</secureTextField>
|
|
||||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="12">
|
|
||||||
<rect key="frame" x="161" y="185" width="131" height="14"/>
|
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Mismatching Passwords" id="14">
|
|
||||||
<font key="font" metaFont="smallSystem"/>
|
|
||||||
<color key="textColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
|
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</textFieldCell>
|
|
||||||
</textField>
|
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="68">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="68">
|
||||||
<rect key="frame" x="240" y="13" width="149" height="32"/>
|
<rect key="frame" x="213" y="13" width="143" height="32"/>
|
||||||
<buttonCell key="cell" type="push" title="Change Password" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="69">
|
<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"/>
|
||||||
@@ -125,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="158" y="13" width="82" height="32"/>
|
<rect key="frame" x="139" y="13" width="76" height="32"/>
|
||||||
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="73">
|
<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"/>
|
||||||
@@ -137,63 +52,172 @@ Gw
|
|||||||
<action selector="cancel:" target="-2" id="84"/>
|
<action selector="cancel:" target="-2" id="84"/>
|
||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<button horizontalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="yKc-I9-uzv">
|
<gridView horizontalHuggingPriority="251" verticalHuggingPriority="750" xPlacement="leading" yPlacement="bottom" rowAlignment="none" translatesAutoresizingMaskIntoConstraints="NO" id="0Iv-td-ACj">
|
||||||
<rect key="frame" x="18" y="156" width="84" height="18"/>
|
<rect key="frame" x="20" y="60" width="329" height="137"/>
|
||||||
<buttonCell key="cell" type="check" title="Password:" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="OQz-DA-SoY">
|
<rows>
|
||||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
<gridRow id="Ljm-xA-9NW"/>
|
||||||
<font key="font" metaFont="system"/>
|
<gridRow id="Dv9-ND-6rX"/>
|
||||||
</buttonCell>
|
<gridRow id="mNb-JP-3YX"/>
|
||||||
</button>
|
<gridRow id="vQK-bD-mNH"/>
|
||||||
|
<gridRow id="DIe-Hz-bd0"/>
|
||||||
|
<gridRow id="TQt-iq-lMT"/>
|
||||||
|
</rows>
|
||||||
|
<columns>
|
||||||
|
<gridColumn xPlacement="trailing" id="uaf-ph-2zN"/>
|
||||||
|
<gridColumn xPlacement="fill" id="7oF-Xq-5de"/>
|
||||||
|
<gridColumn xPlacement="fill" id="clB-mU-Eba"/>
|
||||||
|
</columns>
|
||||||
|
<gridCells>
|
||||||
|
<gridCell row="Ljm-xA-9NW" column="uaf-ph-2zN" id="1U3-Im-v9n"/>
|
||||||
|
<gridCell row="Ljm-xA-9NW" column="7oF-Xq-5de" id="2bp-dG-V6t">
|
||||||
|
<textField key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="12">
|
||||||
|
<rect key="frame" x="90" y="123" width="204" height="14"/>
|
||||||
|
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="PASSWORD_ERROR" id="14">
|
||||||
|
<font key="font" metaFont="smallSystem"/>
|
||||||
|
<color key="textColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</gridCell>
|
||||||
|
<gridCell row="Ljm-xA-9NW" column="clB-mU-Eba" id="blk-az-oHS"/>
|
||||||
|
<gridCell row="Dv9-ND-6rX" column="uaf-ph-2zN" id="JUU-XQ-60P">
|
||||||
|
<button key="contentView" horizontalHuggingPriority="252" translatesAutoresizingMaskIntoConstraints="NO" id="yKc-I9-uzv">
|
||||||
|
<rect key="frame" x="-2" y="96" width="88" height="22"/>
|
||||||
|
<buttonCell key="cell" type="check" title="Password:" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="OQz-DA-SoY">
|
||||||
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
</button>
|
||||||
|
</gridCell>
|
||||||
|
<gridCell row="Dv9-ND-6rX" column="7oF-Xq-5de" id="cw2-er-epO">
|
||||||
|
<secureTextField key="contentView" horizontalHuggingPriority="253" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="9" customClass="HNHUISecureTextField">
|
||||||
|
<rect key="frame" x="92" y="97" width="200" height="20"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="200" id="gTV-5A-Fyo"/>
|
||||||
|
</constraints>
|
||||||
|
<secureTextFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="Enter Password" drawsBackground="YES" usesSingleLineMode="YES" id="18">
|
||||||
|
<font key="font" size="13" name="Menlo-Regular"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<allowedInputSourceLocales>
|
||||||
|
<string>NSAllRomanInputSourcesLocaleIdentifier</string>
|
||||||
|
</allowedInputSourceLocales>
|
||||||
|
</secureTextFieldCell>
|
||||||
|
</secureTextField>
|
||||||
|
</gridCell>
|
||||||
|
<gridCell row="Dv9-ND-6rX" column="clB-mU-Eba" id="ykQ-xV-MfJ">
|
||||||
|
<button key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="7">
|
||||||
|
<rect key="frame" x="291" y="90" width="45" height="32"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="width" constant="31" id="59"/>
|
||||||
|
</constraints>
|
||||||
|
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSQuickLookTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="20">
|
||||||
|
<behavior key="behavior" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
</button>
|
||||||
|
</gridCell>
|
||||||
|
<gridCell row="mNb-JP-3YX" column="uaf-ph-2zN" id="DTm-fw-duK">
|
||||||
|
<textField key="contentView" horizontalHuggingPriority="252" verticalHuggingPriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="10">
|
||||||
|
<rect key="frame" x="37" y="71" width="51" height="16"/>
|
||||||
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Repeat:" id="16">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</gridCell>
|
||||||
|
<gridCell row="mNb-JP-3YX" column="7oF-Xq-5de" id="OBv-b8-DJs">
|
||||||
|
<secureTextField key="contentView" verticalHuggingPriority="750" verticalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="11" customClass="HNHUISecureTextField">
|
||||||
|
<rect key="frame" x="92" y="71" width="200" height="20"/>
|
||||||
|
<secureTextFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="Repeat Password" drawsBackground="YES" usesSingleLineMode="YES" id="15">
|
||||||
|
<font key="font" size="13" name="Menlo-Regular"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<allowedInputSourceLocales>
|
||||||
|
<string>NSAllRomanInputSourcesLocaleIdentifier</string>
|
||||||
|
</allowedInputSourceLocales>
|
||||||
|
</secureTextFieldCell>
|
||||||
|
</secureTextField>
|
||||||
|
</gridCell>
|
||||||
|
<gridCell row="mNb-JP-3YX" column="clB-mU-Eba" id="erv-Ur-nvi"/>
|
||||||
|
<gridCell row="vQK-bD-mNH" column="uaf-ph-2zN" id="5U0-j9-rrv"/>
|
||||||
|
<gridCell row="vQK-bD-mNH" column="7oF-Xq-5de" id="8JE-Wh-Sad">
|
||||||
|
<textField key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ibK-Px-Fvt">
|
||||||
|
<rect key="frame" x="90" y="51" width="204" height="14"/>
|
||||||
|
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="KEY_ERROR" id="EOD-dE-TFa">
|
||||||
|
<font key="font" metaFont="smallSystem"/>
|
||||||
|
<color key="textColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</gridCell>
|
||||||
|
<gridCell row="vQK-bD-mNH" column="clB-mU-Eba" id="fyu-1E-DpO"/>
|
||||||
|
<gridCell row="DIe-Hz-bd0" column="uaf-ph-2zN" id="Pjk-hs-Pb5">
|
||||||
|
<textField key="contentView" horizontalHuggingPriority="252" verticalHuggingPriority="749" translatesAutoresizingMaskIntoConstraints="NO" id="5">
|
||||||
|
<rect key="frame" x="39" y="26" width="49" height="19"/>
|
||||||
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Keyfile:" id="22">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</gridCell>
|
||||||
|
<gridCell row="DIe-Hz-bd0" column="7oF-Xq-5de" id="o9J-f7-adq">
|
||||||
|
<pathControl key="contentView" verticalHuggingPriority="750" allowsExpansionToolTips="YES" translatesAutoresizingMaskIntoConstraints="NO" id="4" customClass="MPPathControl">
|
||||||
|
<rect key="frame" x="89" y="22" width="206" height="25"/>
|
||||||
|
<pathCell key="cell" selectable="YES" editable="YES" alignment="left" pathStyle="popUp" id="23" customClass="MPPathCell">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</pathCell>
|
||||||
|
</pathControl>
|
||||||
|
</gridCell>
|
||||||
|
<gridCell row="DIe-Hz-bd0" column="clB-mU-Eba" id="miK-hQ-pkN">
|
||||||
|
<button key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8">
|
||||||
|
<rect key="frame" x="291" y="19" width="45" height="31"/>
|
||||||
|
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSStopProgressTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="19">
|
||||||
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<action selector="clearKey:" target="-2" id="65"/>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
</gridCell>
|
||||||
|
<gridCell row="TQt-iq-lMT" column="uaf-ph-2zN" id="nAI-ge-Vjb"/>
|
||||||
|
<gridCell row="TQt-iq-lMT" column="7oF-Xq-5de" id="dT5-pB-M7d">
|
||||||
|
<button key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="6">
|
||||||
|
<rect key="frame" x="85" y="-7" width="214" height="32"/>
|
||||||
|
<buttonCell key="cell" type="push" title="Generate Keyfile" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="21">
|
||||||
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<action selector="generateKey:" target="-2" id="66"/>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
</gridCell>
|
||||||
|
<gridCell row="TQt-iq-lMT" column="clB-mU-Eba" id="zle-AC-ZGd"/>
|
||||||
|
</gridCells>
|
||||||
|
</gridView>
|
||||||
</subviews>
|
</subviews>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstItem="9" firstAttribute="top" secondItem="12" secondAttribute="bottom" constant="8" symbolic="YES" id="26"/>
|
|
||||||
<constraint firstItem="4" firstAttribute="leading" secondItem="5" secondAttribute="trailing" constant="8" symbolic="YES" id="27"/>
|
|
||||||
<constraint firstItem="10" firstAttribute="baseline" secondItem="11" secondAttribute="baseline" id="29"/>
|
|
||||||
<constraint firstItem="7" firstAttribute="leading" secondItem="9" secondAttribute="trailing" constant="8" symbolic="YES" id="30"/>
|
|
||||||
<constraint firstItem="4" firstAttribute="top" secondItem="11" secondAttribute="bottom" constant="8" symbolic="YES" id="35"/>
|
|
||||||
<constraint firstItem="7" firstAttribute="top" secondItem="9" secondAttribute="top" id="36"/>
|
|
||||||
<constraint firstItem="11" firstAttribute="leading" secondItem="10" secondAttribute="trailing" constant="8" symbolic="YES" id="37"/>
|
|
||||||
<constraint firstItem="6" firstAttribute="top" secondItem="4" secondAttribute="bottom" constant="8" symbolic="YES" id="39"/>
|
|
||||||
<constraint firstItem="12" firstAttribute="centerX" secondItem="9" secondAttribute="centerX" id="40"/>
|
|
||||||
<constraint firstItem="8" firstAttribute="centerY" secondItem="4" secondAttribute="centerY" id="41"/>
|
|
||||||
<constraint firstItem="4" firstAttribute="bottom" secondItem="5" secondAttribute="bottom" id="43"/>
|
|
||||||
<constraint firstItem="12" firstAttribute="top" secondItem="2" secondAttribute="top" constant="20" symbolic="YES" id="53"/>
|
|
||||||
<constraint firstAttribute="trailing" secondItem="8" secondAttribute="trailing" constant="20" symbolic="YES" id="56"/>
|
|
||||||
<constraint firstAttribute="trailing" secondItem="7" secondAttribute="trailing" constant="20" symbolic="YES" id="57"/>
|
|
||||||
<constraint firstAttribute="trailing" secondItem="68" secondAttribute="trailing" constant="20" symbolic="YES" id="71"/>
|
<constraint firstAttribute="trailing" secondItem="68" secondAttribute="trailing" constant="20" symbolic="YES" id="71"/>
|
||||||
<constraint firstItem="68" firstAttribute="leading" secondItem="72" secondAttribute="trailing" constant="12" symbolic="YES" id="75"/>
|
<constraint firstItem="68" firstAttribute="leading" secondItem="72" secondAttribute="trailing" constant="12" symbolic="YES" id="75"/>
|
||||||
<constraint firstItem="72" firstAttribute="top" secondItem="6" secondAttribute="bottom" constant="20" symbolic="YES" id="76"/>
|
|
||||||
<constraint firstAttribute="bottom" secondItem="72" secondAttribute="bottom" constant="20" symbolic="YES" id="77"/>
|
<constraint firstAttribute="bottom" secondItem="72" secondAttribute="bottom" constant="20" symbolic="YES" id="77"/>
|
||||||
<constraint firstAttribute="bottom" secondItem="68" secondAttribute="bottom" constant="20" symbolic="YES" id="78"/>
|
<constraint firstAttribute="bottom" secondItem="68" secondAttribute="bottom" constant="20" symbolic="YES" id="78"/>
|
||||||
<constraint firstItem="5" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="2" secondAttribute="leading" constant="20" symbolic="YES" id="4Yq-mp-X3O"/>
|
<constraint firstItem="0Iv-td-ACj" firstAttribute="leading" secondItem="2" secondAttribute="leading" constant="20" symbolic="YES" id="4Gf-qW-X3R"/>
|
||||||
<constraint firstItem="4" firstAttribute="width" secondItem="11" secondAttribute="width" id="55p-Rc-8jw"/>
|
|
||||||
<constraint firstItem="72" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="2" secondAttribute="leading" constant="20" symbolic="YES" id="5JM-Ve-z5Y"/>
|
<constraint firstItem="72" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="2" secondAttribute="leading" constant="20" symbolic="YES" id="5JM-Ve-z5Y"/>
|
||||||
<constraint firstItem="8" firstAttribute="leading" secondItem="4" secondAttribute="trailing" constant="8" id="7GY-2X-nJn"/>
|
<constraint firstItem="0Iv-td-ACj" firstAttribute="top" secondItem="2" secondAttribute="top" constant="20" symbolic="YES" id="FVY-mT-b2G"/>
|
||||||
<constraint firstItem="4" firstAttribute="leading" secondItem="5" secondAttribute="trailing" constant="8" id="7eR-m5-mhQ"/>
|
<constraint firstAttribute="width" relation="lessThanOrEqual" constant="400" id="mhj-K7-dob"/>
|
||||||
<constraint firstItem="9" firstAttribute="baseline" secondItem="yKc-I9-uzv" secondAttribute="baseline" id="DrZ-BA-xPv"/>
|
<constraint firstAttribute="trailing" secondItem="0Iv-td-ACj" secondAttribute="trailing" constant="20" symbolic="YES" id="q2z-sU-YCn"/>
|
||||||
<constraint firstItem="7" firstAttribute="leading" secondItem="9" secondAttribute="trailing" constant="8" id="IqJ-u6-6jk"/>
|
<constraint firstItem="68" firstAttribute="top" secondItem="0Iv-td-ACj" secondAttribute="bottom" constant="20" symbolic="YES" id="s84-KY-RXX"/>
|
||||||
<constraint firstItem="yKc-I9-uzv" firstAttribute="leading" secondItem="2" secondAttribute="leading" constant="20" symbolic="YES" id="OdM-OO-kNS"/>
|
|
||||||
<constraint firstItem="7" firstAttribute="leading" secondItem="9" secondAttribute="trailing" constant="8" symbolic="YES" id="PnG-bb-nYQ"/>
|
|
||||||
<constraint firstItem="11" firstAttribute="top" secondItem="9" secondAttribute="bottom" constant="10" symbolic="YES" id="Qe9-z3-Wa6"/>
|
|
||||||
<constraint firstItem="yKc-I9-uzv" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="2" secondAttribute="leading" constant="20" symbolic="YES" id="R8d-VG-2we"/>
|
|
||||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="6" secondAttribute="trailing" constant="20" symbolic="YES" id="TUn-PZ-fb5"/>
|
|
||||||
<constraint firstItem="10" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="2" secondAttribute="leading" constant="20" symbolic="YES" id="UHJ-Fx-Kkf"/>
|
|
||||||
<constraint firstItem="6" firstAttribute="width" secondItem="11" secondAttribute="width" id="V37-mo-ah1"/>
|
|
||||||
<constraint firstItem="9" firstAttribute="leading" secondItem="yKc-I9-uzv" secondAttribute="trailing" constant="8" symbolic="YES" id="f8B-Dm-rGD"/>
|
|
||||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="12" secondAttribute="trailing" constant="20" symbolic="YES" id="hmt-qe-o3D"/>
|
|
||||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="11" secondAttribute="trailing" constant="20" symbolic="YES" id="nDO-Oh-tGz"/>
|
|
||||||
<constraint firstItem="6" firstAttribute="leading" secondItem="4" secondAttribute="leading" id="tie-Hu-X1C"/>
|
|
||||||
<constraint firstItem="12" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="2" secondAttribute="leading" constant="20" symbolic="YES" id="ukY-Gg-KY2"/>
|
|
||||||
<constraint firstItem="11" firstAttribute="width" secondItem="9" secondAttribute="width" id="wEk-Sj-XCb"/>
|
|
||||||
<constraint firstItem="6" firstAttribute="leading" secondItem="11" secondAttribute="leading" id="xV3-et-ECG"/>
|
|
||||||
<constraint firstItem="6" firstAttribute="leading" secondItem="9" secondAttribute="leading" id="zeJ-6i-fY3"/>
|
|
||||||
</constraints>
|
</constraints>
|
||||||
</view>
|
</view>
|
||||||
<point key="canvasLocation" x="-8" y="-14"/>
|
<point key="canvasLocation" x="-272" y="-447.5"/>
|
||||||
</window>
|
</window>
|
||||||
</objects>
|
</objects>
|
||||||
<resources>
|
<resources>
|
||||||
<image name="NSQuickLookTemplate" width="19" height="12"/>
|
<image name="NSQuickLookTemplate" width="21" height="13"/>
|
||||||
<image name="NSStopProgressTemplate" width="11" height="11"/>
|
<image name="NSStopProgressTemplate" width="14" height="13"/>
|
||||||
</resources>
|
</resources>
|
||||||
</document>
|
</document>
|
||||||
|
|||||||
@@ -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="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
@@ -10,6 +10,7 @@
|
|||||||
<connections>
|
<connections>
|
||||||
<outlet property="cancelButton" destination="2pb-ZG-spA" id="YrR-Yi-dnQ"/>
|
<outlet property="cancelButton" destination="2pb-ZG-spA" id="YrR-Yi-dnQ"/>
|
||||||
<outlet property="enablePasswordCheckBox" destination="d8O-Ha-rrS" id="2AI-e9-sph"/>
|
<outlet property="enablePasswordCheckBox" destination="d8O-Ha-rrS" id="2AI-e9-sph"/>
|
||||||
|
<outlet property="keyFileWarningTextField" destination="txI-yI-5nE" id="WhF-O8-fsZ"/>
|
||||||
<outlet property="keyPathControl" destination="241" id="261"/>
|
<outlet property="keyPathControl" destination="241" id="261"/>
|
||||||
<outlet property="messageImageView" destination="262" id="726-wK-c2h"/>
|
<outlet property="messageImageView" destination="262" id="726-wK-c2h"/>
|
||||||
<outlet property="messageInfoTextField" destination="268" id="ahE-sq-QzR"/>
|
<outlet property="messageInfoTextField" destination="268" id="ahE-sq-QzR"/>
|
||||||
@@ -22,10 +23,10 @@
|
|||||||
<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 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="392"/>
|
<rect key="frame" x="0.0" y="0.0" width="508" height="526"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2">
|
||||||
<rect key="frame" x="310" y="105" width="83" height="32"/>
|
<rect key="frame" x="323" y="169" width="78" height="32"/>
|
||||||
<buttonCell key="cell" type="push" title="Unlock" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="3">
|
<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"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
@@ -38,7 +39,7 @@ DQ
|
|||||||
</connections>
|
</connections>
|
||||||
</button>
|
</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="157" width="45" height="17"/>
|
<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">
|
||||||
<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"/>
|
||||||
@@ -46,13 +47,13 @@ DQ
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<pathControl verticalHuggingPriority="750" allowsExpansionToolTips="YES" translatesAutoresizingMaskIntoConstraints="NO" id="241" customClass="MPPathControl">
|
<pathControl verticalHuggingPriority="750" allowsExpansionToolTips="YES" translatesAutoresizingMaskIntoConstraints="NO" id="241" customClass="MPPathControl">
|
||||||
<rect key="frame" x="156" y="153" width="197" height="25"/>
|
<rect key="frame" x="156" y="222" width="197" height="25"/>
|
||||||
<pathCell key="cell" selectable="YES" editable="YES" alignment="left" pathStyle="popUp" id="242">
|
<pathCell key="cell" selectable="YES" editable="YES" alignment="left" pathStyle="popUp" id="242" customClass="MPPathCell">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
</pathCell>
|
</pathCell>
|
||||||
</pathControl>
|
</pathControl>
|
||||||
<imageView translatesAutoresizingMaskIntoConstraints="NO" id="262">
|
<imageView translatesAutoresizingMaskIntoConstraints="NO" id="262">
|
||||||
<rect key="frame" x="230" y="241" width="48" height="48"/>
|
<rect key="frame" x="230" y="305" 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"/>
|
||||||
@@ -60,7 +61,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="216" width="110" height="17"/>
|
<rect key="frame" x="199" y="281" 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"/>
|
||||||
@@ -68,11 +69,11 @@ DQ
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<secureTextField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="338" customClass="HNHUISecureTextField">
|
<secureTextField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="338" customClass="HNHUISecureTextField">
|
||||||
<rect key="frame" x="159" y="184" width="191" height="24"/>
|
<rect key="frame" x="159" y="253" width="191" height="20"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" constant="191" id="389"/>
|
<constraint firstAttribute="width" constant="191" id="389"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<secureTextFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="Enter Password" drawsBackground="YES" usesSingleLineMode="YES" id="339">
|
<secureTextFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="Enter Password" drawsBackground="YES" usesSingleLineMode="YES" id="339" customClass="HNHUISecureTextFieldCell">
|
||||||
<font key="font" size="13" name="Menlo-Regular"/>
|
<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"/>
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
@@ -85,15 +86,15 @@ DQ
|
|||||||
</connections>
|
</connections>
|
||||||
</secureTextField>
|
</secureTextField>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="408">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="408">
|
||||||
<rect key="frame" x="358" y="185" width="29" height="23"/>
|
<rect key="frame" x="351" y="246" width="50" height="32"/>
|
||||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSQuickLookTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="409">
|
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSQuickLookTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="409">
|
||||||
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
<behavior key="behavior" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="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="358" y="152" width="29" height="23"/>
|
<rect key="frame" x="351" y="216" width="50" height="32"/>
|
||||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSStopProgressTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="487">
|
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSStopProgressTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="487">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
</buttonCell>
|
</buttonCell>
|
||||||
@@ -102,14 +103,14 @@ DQ
|
|||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="d8O-Ha-rrS">
|
<button translatesAutoresizingMaskIntoConstraints="NO" id="d8O-Ha-rrS">
|
||||||
<rect key="frame" x="72" y="187" width="81" height="18"/>
|
<rect key="frame" x="66" y="254" width="85" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Password" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="IU9-5u-jn9">
|
<buttonCell key="cell" type="check" title="Password" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="IU9-5u-jn9">
|
||||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
<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="2pb-ZG-spA">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2pb-ZG-spA">
|
||||||
<rect key="frame" x="228" y="105" width="82" height="32"/>
|
<rect key="frame" x="249" y="169" width="76" height="32"/>
|
||||||
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="erj-mR-UyO">
|
<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"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
@@ -121,6 +122,14 @@ Gw
|
|||||||
<action selector="_submit:" target="-2" id="aVF-1d-1Hq"/>
|
<action selector="_submit:" target="-2" id="aVF-1d-1Hq"/>
|
||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
|
<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"/>
|
||||||
|
<textFieldCell key="cell" selectable="YES" title="key_file_warnig" id="f6J-5f-ZvP">
|
||||||
|
<font key="font" metaFont="smallSystem"/>
|
||||||
|
<color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
</subviews>
|
</subviews>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="2" secondAttribute="bottom" constant="20" symbolic="YES" id="122"/>
|
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="2" secondAttribute="bottom" constant="20" symbolic="YES" id="122"/>
|
||||||
@@ -142,22 +151,24 @@ Gw
|
|||||||
<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 firstItem="2" firstAttribute="trailing" secondItem="486" secondAttribute="trailing" id="496"/>
|
||||||
<constraint firstItem="408" firstAttribute="leading" secondItem="338" secondAttribute="trailing" constant="8" symbolic="YES" id="7qE-8F-QgB"/>
|
|
||||||
<constraint firstItem="2pb-ZG-spA" firstAttribute="baseline" secondItem="2" secondAttribute="baseline" id="9nK-MH-Ozs"/>
|
<constraint firstItem="2pb-ZG-spA" firstAttribute="baseline" secondItem="2" secondAttribute="baseline" id="9nK-MH-Ozs"/>
|
||||||
|
<constraint firstItem="txI-yI-5nE" firstAttribute="trailing" secondItem="241" secondAttribute="trailing" id="AVL-HO-SMq"/>
|
||||||
<constraint firstItem="17" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="EOa-K4-v7J"/>
|
<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="2pb-ZG-spA" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="SUS-76-os4"/>
|
||||||
|
<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="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="2" firstAttribute="top" secondItem="486" secondAttribute="bottom" constant="20" symbolic="YES" id="v1K-wm-EeB"/>
|
<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="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"/>
|
<constraint firstItem="2" firstAttribute="leading" secondItem="2pb-ZG-spA" secondAttribute="trailing" constant="12" id="ytJ-5Z-5rT"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<point key="canvasLocation" x="147" y="-80"/>
|
<point key="canvasLocation" x="-127" y="-46"/>
|
||||||
</customView>
|
</customView>
|
||||||
</objects>
|
</objects>
|
||||||
<resources>
|
<resources>
|
||||||
<image name="02_MessageBoxWarningTemplate" width="16" height="16"/>
|
<image name="02_MessageBoxWarningTemplate" width="16" height="16"/>
|
||||||
<image name="NSQuickLookTemplate" width="19" height="12"/>
|
<image name="NSQuickLookTemplate" width="21" height="13"/>
|
||||||
<image name="NSStopProgressTemplate" width="11" height="11"/>
|
<image name="NSStopProgressTemplate" width="14" height="13"/>
|
||||||
</resources>
|
</resources>
|
||||||
</document>
|
</document>
|
||||||
|
|||||||
@@ -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="14460.31" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14460.31"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<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="220"/>
|
<rect key="frame" x="0.0" y="0.0" width="410" height="214"/>
|
||||||
<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="74" width="278" height="24"/>
|
<rect key="frame" x="20" y="72" width="262" height="20"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" enabled="NO" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="Wi0-xp-KgI">
|
<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,28 +32,27 @@
|
|||||||
</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="361.5" y="74" width="29" height="23"/>
|
<rect key="frame" x="347" y="65" width="50" height="32"/>
|
||||||
<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">
|
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSQuickLookTemplate" imagePosition="only" alignment="center" lineBreakMode="truncatingTail" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="95g-dp-50Q">
|
||||||
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
<behavior key="behavior" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="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="106" width="370" height="64"/>
|
<rect key="frame" x="20" y="100" width="370" height="64"/>
|
||||||
<clipView key="contentView" drawsBackground="NO" id="8aa-cB-mUF">
|
<clipView key="contentView" drawsBackground="NO" id="8aa-cB-mUF">
|
||||||
<rect key="frame" x="1" y="0.0" width="368" height="63"/>
|
<rect key="frame" x="1" y="1" width="368" height="62"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<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="40"/>
|
<rect key="frame" x="0.0" y="0.0" width="368" height="39"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<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="365" minWidth="40" maxWidth="1000" id="Q1b-ir-hyW">
|
<tableColumn width="356" minWidth="40" maxWidth="1000" id="Q1b-ir-hyW">
|
||||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
|
<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>
|
||||||
@@ -104,13 +103,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" id="GRO-H1-N4r">
|
<tableHeaderView key="headerView" wantsLayer="YES" id="GRO-H1-N4r">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="368" height="23"/>
|
<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="313" y="13" width="83" height="32"/>
|
<rect key="frame" x="319" y="13" width="78" height="32"/>
|
||||||
<buttonCell key="cell" type="push" title="Submit" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="8vP-Ka-vsA">
|
<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"/>
|
||||||
@@ -120,8 +119,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="305.5" y="74" width="49" height="23"/>
|
<rect key="frame" x="283" y="65" width="70" height="32"/>
|
||||||
<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">
|
<buttonCell key="cell" type="push" title="Reset" bezelStyle="rounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Emo-pg-Mfe">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
</buttonCell>
|
</buttonCell>
|
||||||
@@ -130,7 +129,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="49" width="76" height="17"/>
|
<rect key="frame" x="167" y="48" width="76" height="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="StatusLabel" id="M3h-q8-FLO">
|
<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"/>
|
||||||
@@ -138,7 +137,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="178" width="374" height="22"/>
|
<rect key="frame" x="18" y="172" width="374" height="22"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="MessageLabel" id="sHz-kg-YJQ">
|
<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"/>
|
||||||
@@ -174,6 +173,6 @@
|
|||||||
</customView>
|
</customView>
|
||||||
</objects>
|
</objects>
|
||||||
<resources>
|
<resources>
|
||||||
<image name="NSQuickLookTemplate" width="19" height="12"/>
|
<image name="NSQuickLookTemplate" width="21" height="13"/>
|
||||||
</resources>
|
</resources>
|
||||||
</document>
|
</document>
|
||||||
|
|||||||
@@ -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="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<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="341" width="237" height="17"/>
|
<rect key="frame" x="18" y="342" width="237" height="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Please pick a field value to be inserted" id="aJS-22-6Va">
|
<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="381" y="13" width="79" height="32"/>
|
<rect key="frame" x="387" y="13" width="74" height="32"/>
|
||||||
<buttonCell key="cell" type="push" title="Select" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="6Wi-9i-Tcb">
|
<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,21 +40,20 @@ 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="61" width="434" height="272"/>
|
<rect key="frame" x="20" y="60" width="434" height="274"/>
|
||||||
<clipView key="contentView" id="am4-w0-FSd">
|
<clipView key="contentView" id="am4-w0-FSd">
|
||||||
<rect key="frame" x="1" y="0.0" width="432" height="271"/>
|
<rect key="frame" x="1" y="1" width="432" height="272"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<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="436" height="248"/>
|
<rect key="frame" x="0.0" y="0.0" width="445" height="249"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<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="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>
|
||||||
@@ -66,11 +65,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="118" height="17"/>
|
<rect key="frame" x="1" y="1" width="123" 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="118" height="17"/>
|
<rect key="frame" x="0.0" y="0.0" width="123" 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"/>
|
||||||
@@ -84,11 +83,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="118" height="17"/>
|
<rect key="frame" x="1" y="20" width="123" 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="118" height="17"/>
|
<rect key="frame" x="0.0" y="0.0" width="123" 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"/>
|
||||||
@@ -105,7 +104,6 @@ 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>
|
||||||
@@ -125,15 +123,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="255" width="432" height="16"/>
|
<rect key="frame" x="1" y="257" 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" id="jX4-Gp-btT">
|
<tableHeaderView key="headerView" wantsLayer="YES" id="jX4-Gp-btT">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="436" height="23"/>
|
<rect key="frame" x="0.0" y="0.0" width="445" height="23"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
</tableHeaderView>
|
</tableHeaderView>
|
||||||
</scrollView>
|
</scrollView>
|
||||||
|
|||||||
@@ -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="14313.18" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14313.18"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
@@ -15,25 +15,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 id="Hz6-mo-xeY">
|
<customView id="Hz6-mo-xeY">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="287" height="474"/>
|
<rect key="frame" x="0.0" y="0.0" width="287" height="472"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
<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="50" width="255" height="382"/>
|
<rect key="frame" x="16" y="48" width="255" height="382"/>
|
||||||
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="cgV-6Q-xC5">
|
<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"/>
|
<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="250" minWidth="40" maxWidth="1000" id="t3Y-fx-P5b">
|
<tableColumn width="241" minWidth="40" maxWidth="1000" id="t3Y-fx-P5b">
|
||||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left">
|
<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>
|
||||||
@@ -72,11 +71,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="217" y="8" width="32" height="25"/>
|
<rect key="frame" x="210" y="4" width="46" height="32"/>
|
||||||
<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="roundTextured" bezelStyle="texturedRounded" image="NSRemoveTemplate" imagePosition="overlaps" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="11n-xu-gUH">
|
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSRemoveTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="11n-xu-gUH">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
</buttonCell>
|
</buttonCell>
|
||||||
@@ -107,21 +106,22 @@
|
|||||||
</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" verticalHuggingPriority="750" horizontal="YES" id="x6X-UZ-xSg">
|
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="x6X-UZ-xSg">
|
||||||
<rect key="frame" x="1" y="317" width="253" height="16"/>
|
<rect key="frame" x="1" y="317" width="253" height="16"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
</scroller>
|
</scroller>
|
||||||
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="NO" id="YJP-Wl-Ugv">
|
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="YJP-Wl-Ugv">
|
||||||
<rect key="frame" x="224" y="17" width="15" height="102"/>
|
<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="440" width="63" height="14"/>
|
<rect key="frame" x="18" y="438" width="63" height="14"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Plugin data" id="unO-bO-8v0">
|
<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="186" y="18" width="81" height="25"/>
|
<rect key="frame" x="172" y="13" width="102" height="32"/>
|
||||||
<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">
|
<buttonCell key="cell" type="push" title="Remove All" bezelStyle="rounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="6hH-Hc-gf4">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<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="11" height="11"/>
|
<image name="NSRemoveTemplate" width="14" height="4"/>
|
||||||
</resources>
|
</resources>
|
||||||
</document>
|
</document>
|
||||||
|
|||||||
@@ -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="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<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="502"/>
|
<rect key="frame" x="0.0" y="0.0" width="607" height="542"/>
|
||||||
<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="46" width="415" height="306"/>
|
<rect key="frame" x="175" y="56" width="415" height="330"/>
|
||||||
<view key="contentView" id="tD5-Na-7XI">
|
<view key="contentView" id="tD5-Na-7XI">
|
||||||
<rect key="frame" x="3" y="3" width="409" height="300"/>
|
<rect key="frame" x="3" y="3" width="409" height="324"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<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="260"/>
|
<rect key="frame" x="20" y="20" width="369" height="284"/>
|
||||||
<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="223" width="333" height="17"/>
|
<rect key="frame" x="18" y="248" width="333" height="16"/>
|
||||||
<textFieldCell key="cell" controlSize="mini" sendsActionOnEndEditing="YES" title="Plugin Settings Info" id="OOr-SW-jZb">
|
<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="422" width="159" height="18"/>
|
<rect key="frame" x="18" y="459" width="163" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Load unsecure Plugins" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="C4B-6z-ZqX">
|
<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" setsMaxLayoutWidthAtFirstLayout="YES" 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="388" width="571" height="28"/>
|
<rect key="frame" x="18" y="424" 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,21 +75,20 @@
|
|||||||
</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="50" width="150" height="300"/>
|
<rect key="frame" x="20" y="60" width="150" height="324"/>
|
||||||
<clipView key="contentView" id="lTL-Q2-k45">
|
<clipView key="contentView" id="lTL-Q2-k45">
|
||||||
<rect key="frame" x="1" y="1" width="148" height="298"/>
|
<rect key="frame" x="1" y="1" width="148" height="322"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<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" rowSizeStyle="automatic" viewBased="YES" id="Ocu-C0-03d">
|
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnReordering="NO" columnSelection="YES" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" rowHeight="35" usesAutomaticRowHeights="YES" viewBased="YES" id="Ocu-C0-03d">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="148" height="298"/>
|
<rect key="frame" x="0.0" y="0.0" width="148" height="322"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<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="145" minWidth="40" maxWidth="1000" id="kNH-wp-Drp">
|
<tableColumn width="136" minWidth="40" maxWidth="1000" id="kNH-wp-Drp">
|
||||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
|
<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>
|
||||||
@@ -100,12 +99,12 @@
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||||
<prototypeCellViews>
|
<prototypeCellViews>
|
||||||
<tableCellView id="vVt-P3-yLp" customClass="MPPluginTabelCellView">
|
<tableCellView misplaced="YES" id="vVt-P3-yLp" customClass="MPExtendedTableCellView">
|
||||||
<rect key="frame" x="1" y="1" width="145" height="35"/>
|
<rect key="frame" x="1" y="1" width="145" height="35"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="q1P-PD-0LW">
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="q1P-PD-0LW">
|
||||||
<rect key="frame" x="0.0" y="18" width="145" height="17"/>
|
<rect key="frame" x="0.0" y="18" width="145" height="16"/>
|
||||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Table View Cell" id="fug-79-n9g">
|
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Table View Cell" id="fug-79-n9g">
|
||||||
<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"/>
|
||||||
@@ -154,12 +153,13 @@
|
|||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
</scroller>
|
</scroller>
|
||||||
</scrollView>
|
</scrollView>
|
||||||
<segmentedControl verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="B9Q-hq-K4N">
|
<segmentedControl verticalHuggingPriority="750" id="B9Q-hq-K4N">
|
||||||
<rect key="frame" x="20" y="19" width="71" height="23"/>
|
<rect key="frame" x="17" y="18" width="63" height="36"/>
|
||||||
<segmentedCell key="cell" borderStyle="border" alignment="left" style="texturedSquare" trackingMode="momentary" id="cj3-R6-g1E">
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
|
<segmentedCell key="cell" borderStyle="border" alignment="left" style="rounded" trackingMode="momentary" id="cj3-R6-g1E">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
<segments>
|
<segments>
|
||||||
<segment image="NSAddTemplate" width="32"/>
|
<segment image="NSAddTemplate" width="24"/>
|
||||||
<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="413" y="19" width="174" height="23"/>
|
<rect key="frame" x="400" y="13" width="194" height="32"/>
|
||||||
<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">
|
<buttonCell key="cell" type="push" title="Browse Available Plugins…" bezelStyle="rounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="sqO-8H-n1y">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<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="356" width="250" height="18"/>
|
<rect key="frame" x="18" y="391" width="254" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Force loading of incompatible Plugins" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="yak-fS-jtA">
|
<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="466" width="243" height="18"/>
|
<rect key="frame" x="18" y="505" width="247" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Download current plugin information" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="uHR-uL-Ddm">
|
<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" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="nrf-Hz-0vB">
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="nrf-Hz-0vB">
|
||||||
<rect key="frame" x="18" y="446" width="349" height="14"/>
|
<rect key="frame" x="18" y="484" width="349" height="14"/>
|
||||||
<textFieldCell key="cell" controlSize="small" selectable="YES" title="If enabled, a remote connection is established to macpassapp.org" id="i3S-9b-Bpf">
|
<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="8" symbolic="YES" id="r4X-iM-iYU"/>
|
<constraint firstItem="SNe-cc-CZs" firstAttribute="top" secondItem="vBs-Ga-aq0" secondAttribute="bottom" constant="20" symbolic="YES" id="r4X-iM-iYU"/>
|
||||||
<constraint firstItem="CqP-oK-S8k" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" id="rN1-3Z-BBi"/>
|
<constraint 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="179" y="115"/>
|
<point key="canvasLocation" x="169" y="6"/>
|
||||||
</customView>
|
</customView>
|
||||||
</objects>
|
</objects>
|
||||||
<resources>
|
<resources>
|
||||||
<image name="NSAddTemplate" width="11" height="11"/>
|
<image name="NSAddTemplate" width="14" height="13"/>
|
||||||
<image name="NSRemoveTemplate" width="11" height="11"/>
|
<image name="NSRemoveTemplate" width="14" height="4"/>
|
||||||
</resources>
|
</resources>
|
||||||
</document>
|
</document>
|
||||||
|
|||||||
@@ -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="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
@@ -15,26 +15,25 @@
|
|||||||
</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 id="Hz6-mo-xeY">
|
<customView misplaced="YES" id="Hz6-mo-xeY">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="638" height="513"/>
|
<rect key="frame" x="0.0" y="0.0" width="628" height="488"/>
|
||||||
<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="74" width="598" height="419"/>
|
<rect key="frame" x="20" y="72" width="573" height="372"/>
|
||||||
<clipView key="contentView" id="Sqy-VI-iH4">
|
<clipView key="contentView" id="Sqy-VI-iH4">
|
||||||
<rect key="frame" x="1" y="0.0" width="596" height="418"/>
|
<rect key="frame" x="1" y="1" width="571" height="370"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<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="599" height="395"/>
|
<rect key="frame" x="0.0" y="0.0" width="608" height="347"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<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="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>
|
||||||
@@ -46,11 +45,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="145" height="17"/>
|
<rect key="frame" x="1" y="1" width="150" 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="145" height="17"/>
|
<rect key="frame" x="0.0" y="0.0" width="150" 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"/>
|
||||||
@@ -67,7 +66,6 @@
|
|||||||
</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>
|
||||||
@@ -79,7 +77,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="149" y="1" width="88" height="17"/>
|
<rect key="frame" x="154" y="1" width="88" height="17"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<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">
|
||||||
@@ -100,7 +98,6 @@
|
|||||||
</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>
|
||||||
@@ -112,11 +109,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="240" y="1" width="357" height="17"/>
|
<rect key="frame" x="245" y="1" width="361" height="17"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<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="0.0" width="96" height="17"/>
|
<rect key="frame" x="0.0" y="1" width="96" height="16"/>
|
||||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="ZIf-CU-gh7">
|
<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"/>
|
||||||
@@ -124,7 +121,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="291" y="-1" width="46" height="19"/>
|
<rect key="frame" x="294" y="-1" width="48" height="19"/>
|
||||||
<buttonCell key="cell" type="roundTextured" title="Action" bezelStyle="texturedRounded" alignment="center" controlSize="small" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="6jQ-Uk-uqD">
|
<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"/>
|
||||||
@@ -160,20 +157,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="402" width="596" height="16"/>
|
<rect key="frame" x="1" y="355" width="571" 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" id="uVe-04-Now">
|
<tableHeaderView key="headerView" wantsLayer="YES" id="uVe-04-Now">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="599" height="23"/>
|
<rect key="frame" x="0.0" y="0.0" width="608" 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="14" y="13" width="87" height="32"/>
|
<rect key="frame" x="13" y="13" width="82" height="32"/>
|
||||||
<buttonCell key="cell" type="push" title="Refresh" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="NZw-nO-lZ3">
|
<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"/>
|
||||||
@@ -183,7 +180,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="552" y="13" width="72" height="32"/>
|
<rect key="frame" x="514" y="13" width="66" height="32"/>
|
||||||
<buttonCell key="cell" type="push" title="Done" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="j9a-fn-Pye">
|
<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"/>
|
||||||
@@ -193,7 +190,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="49" width="72" height="17"/>
|
<rect key="frame" x="110" y="48" width="72" height="16"/>
|
||||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Updated at" id="DhR-ED-6gV">
|
<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"/>
|
||||||
@@ -202,7 +199,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="49" width="88" height="17"/>
|
<rect key="frame" x="18" y="48" width="88" height="16"/>
|
||||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Last updated:" id="ntD-sJ-NRw">
|
<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"/>
|
||||||
|
|||||||
@@ -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="14313.18" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14313.18"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<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="205" height="215"/>
|
<rect key="frame" x="0.0" y="0.0" width="219" height="209"/>
|
||||||
<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="13" y="152" width="82" height="25"/>
|
<rect key="frame" x="10" y="146" width="96" height="25"/>
|
||||||
<popUpButtonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="KPf-xE-gde">
|
<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="102" width="172" height="22"/>
|
<rect key="frame" x="13" y="99" width="186" 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="147" y="18" width="38" height="25"/>
|
<rect key="frame" x="148" y="13" width="58" height="32"/>
|
||||||
<buttonCell key="cell" type="roundTextured" title="Use" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Kqx-qm-nMG">
|
<buttonCell key="cell" type="push" title="Use" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Kqx-qm-nMG">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<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="101" y="184" width="24" height="14"/>
|
<rect key="frame" x="108" y="178" width="24" height="14"/>
|
||||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Key" id="K1t-OZ-ACe">
|
<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="184" width="58" height="14"/>
|
<rect key="frame" x="11" y="178" width="58" height="14"/>
|
||||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Reference" id="r1V-VE-ngy">
|
<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,7 +71,7 @@
|
|||||||
</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="103" y="152" width="82" height="25"/>
|
<rect key="frame" x="107" y="146" width="96" height="25"/>
|
||||||
<popUpButtonCell key="cell" type="roundTextured" title="Matching" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" selectedItem="yT1-XL-k6a" id="Aob-tW-bUP">
|
<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="menu"/>
|
||||||
@@ -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="132" width="37" height="14"/>
|
<rect key="frame" x="11" y="128" width="37" height="14"/>
|
||||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Match" id="9ce-da-syF">
|
<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="80" width="92" height="14"/>
|
<rect key="frame" x="11" y="77" width="92" height="14"/>
|
||||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Reference String" id="gik-Ha-hRd">
|
<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="50" width="172" height="22"/>
|
<rect key="frame" x="13" y="48" width="186" height="21"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="Reference" drawsBackground="YES" id="dr9-x8-kKk">
|
<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"/>
|
||||||
|
|||||||
@@ -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="14490.70" 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="14490.70"/>
|
<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>
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
<rect key="frame" x="144" y="17" width="114" height="25"/>
|
<rect key="frame" x="144" y="17" width="114" height="25"/>
|
||||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="Hl5-gO-B1c">
|
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="Hl5-gO-B1c">
|
||||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="menu"/>
|
<font key="font" metaFont="system"/>
|
||||||
<menu key="menu" title="OtherViews" id="RKd-H8-eCF">
|
<menu key="menu" title="OtherViews" id="RKd-H8-eCF">
|
||||||
<items>
|
<items>
|
||||||
<menuItem title="every Hour" tag="3600" id="DjF-1I-6Nq"/>
|
<menuItem title="every Hour" tag="3600" id="DjF-1I-6Nq"/>
|
||||||
@@ -46,7 +46,7 @@
|
|||||||
</popUpButtonCell>
|
</popUpButtonCell>
|
||||||
</popUpButton>
|
</popUpButton>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ckg-9t-MDS">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ckg-9t-MDS">
|
||||||
<rect key="frame" x="22" y="22" width="118" height="17"/>
|
<rect key="frame" x="22" y="23" width="118" height="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Check for Updates" id="9tL-CA-Vdg">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Check for Updates" id="9tL-CA-Vdg">
|
||||||
<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"/>
|
||||||
|
|||||||
@@ -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="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="16097.2" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="16097.2"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
@@ -15,17 +15,17 @@
|
|||||||
<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 id="9Nv-Zl-Z9p">
|
<view id="9Nv-Zl-Z9p">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="571" height="320"/>
|
<rect key="frame" x="0.0" y="0.0" width="600" height="302"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<stackView orientation="horizontal" alignment="centerY" spacing="2" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" translatesAutoresizingMaskIntoConstraints="NO" id="ITj-5P-sn9">
|
<customView translatesAutoresizingMaskIntoConstraints="NO" id="JV1-lh-OtN" userLabel="Side Buttons Holder">
|
||||||
<rect key="frame" x="20" y="0.0" width="551" height="320"/>
|
<rect key="frame" x="0.0" y="0.0" width="401" height="302"/>
|
||||||
<middleViews>
|
<subviews>
|
||||||
<stackView orientation="vertical" alignment="centerX" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="jd3-xw-cZP">
|
<stackView orientation="vertical" alignment="centerX" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" translatesAutoresizingMaskIntoConstraints="NO" id="jd3-xw-cZP">
|
||||||
<rect key="frame" x="165" y="0.0" width="222" height="320"/>
|
<rect key="frame" x="90" y="40" width="222" height="222"/>
|
||||||
<middleViews>
|
<middleViews>
|
||||||
<imageView misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="VWi-da-LGh">
|
<imageView translatesAutoresizingMaskIntoConstraints="NO" id="VWi-da-LGh">
|
||||||
<rect key="frame" x="47" y="115" width="128" height="128"/>
|
<rect key="frame" x="47" y="94" width="128" height="128"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="height" constant="128" id="T0d-gp-edr"/>
|
<constraint firstAttribute="height" constant="128" id="T0d-gp-edr"/>
|
||||||
<constraint firstAttribute="width" constant="128" id="Xdf-jE-D9H"/>
|
<constraint firstAttribute="width" constant="128" id="Xdf-jE-D9H"/>
|
||||||
@@ -33,15 +33,13 @@
|
|||||||
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="MacPassAppIcon" id="9f2-Co-St2"/>
|
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="MacPassAppIcon" id="9f2-Co-St2"/>
|
||||||
</imageView>
|
</imageView>
|
||||||
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="EEg-rH-sPx">
|
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="EEg-rH-sPx">
|
||||||
<rect key="frame" x="-2" y="78" width="226" height="29"/>
|
<rect key="frame" x="-2" y="58" width="226" height="28"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Welcome to MacPass" id="zdv-z8-khG">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Welcome to MacPass" id="zdv-z8-khG">
|
||||||
<font key="font" metaFont="system" size="24"/>
|
<font key="font" metaFont="system" size="24"/>
|
||||||
<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>
|
||||||
</middleViews>
|
|
||||||
<endViews>
|
|
||||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="MmF-PL-dgZ">
|
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="MmF-PL-dgZ">
|
||||||
<rect key="frame" x="39" y="22" width="144" height="32"/>
|
<rect key="frame" x="39" y="22" width="144" height="32"/>
|
||||||
<buttonCell key="cell" type="push" title="Open Database…" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Jj3-zy-gaz">
|
<buttonCell key="cell" type="push" title="Open Database…" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Jj3-zy-gaz">
|
||||||
@@ -54,7 +52,7 @@
|
|||||||
</button>
|
</button>
|
||||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="IRO-Hz-Zjp">
|
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="IRO-Hz-Zjp">
|
||||||
<rect key="frame" x="26" y="-7" width="170" height="32"/>
|
<rect key="frame" x="26" y="-7" width="170" height="32"/>
|
||||||
<buttonCell key="cell" type="push" title="Create new Database" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Vxx-Ql-eI5">
|
<buttonCell key="cell" type="push" title="Create Database" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Vxx-Ql-eI5">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
</buttonCell>
|
</buttonCell>
|
||||||
@@ -62,10 +60,7 @@
|
|||||||
<action selector="createNewDatabase:" target="-1" id="hbV-Rz-x5g"/>
|
<action selector="createNewDatabase:" target="-1" id="hbV-Rz-x5g"/>
|
||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
</endViews>
|
</middleViews>
|
||||||
<constraints>
|
|
||||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="300" id="f86-vL-FmV"/>
|
|
||||||
</constraints>
|
|
||||||
<visibilityPriorities>
|
<visibilityPriorities>
|
||||||
<integer value="1000"/>
|
<integer value="1000"/>
|
||||||
<integer value="1000"/>
|
<integer value="1000"/>
|
||||||
@@ -79,115 +74,105 @@
|
|||||||
<real value="3.4028234663852886e+38"/>
|
<real value="3.4028234663852886e+38"/>
|
||||||
</customSpacing>
|
</customSpacing>
|
||||||
</stackView>
|
</stackView>
|
||||||
</middleViews>
|
</subviews>
|
||||||
<endViews>
|
|
||||||
<scrollView misplaced="YES" autohidesScrollers="YES" horizontalLineScroll="40" horizontalPageScroll="10" verticalLineScroll="40" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eUA-6g-T1O">
|
|
||||||
<rect key="frame" x="389" y="0.0" width="162" height="320"/>
|
|
||||||
<clipView key="contentView" id="0Kf-Fq-by2">
|
|
||||||
<rect key="frame" x="1" y="1" width="160" height="318"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
||||||
<subviews>
|
|
||||||
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnReordering="NO" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" rowHeight="38" rowSizeStyle="automatic" viewBased="YES" id="51b-Ql-3gM">
|
|
||||||
<rect key="frame" x="0.0" y="0.0" width="160" height="318"/>
|
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
|
||||||
<size key="intercellSpacing" width="3" height="2"/>
|
|
||||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<tableColumns>
|
|
||||||
<tableColumn width="157" minWidth="40" maxWidth="1000" id="oLj-wZ-syY">
|
|
||||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
|
|
||||||
<font key="font" metaFont="smallSystem"/>
|
|
||||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</tableHeaderCell>
|
|
||||||
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="Fbl-HT-XIu">
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</textFieldCell>
|
|
||||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
|
||||||
<prototypeCellViews>
|
|
||||||
<tableCellView id="6UF-Gr-4nf">
|
|
||||||
<rect key="frame" x="1" y="1" width="157" height="38"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
||||||
<subviews>
|
|
||||||
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Kko-1G-JNn">
|
|
||||||
<rect key="frame" x="2" y="3" width="32" height="32"/>
|
|
||||||
<constraints>
|
|
||||||
<constraint firstAttribute="width" secondItem="Kko-1G-JNn" secondAttribute="height" multiplier="1:1" id="DCx-UU-29t"/>
|
|
||||||
<constraint firstAttribute="height" constant="32" id="tUG-uX-FuQ"/>
|
|
||||||
</constraints>
|
|
||||||
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="NSActionTemplate" id="9TF-9t-7gd"/>
|
|
||||||
</imageView>
|
|
||||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsExpansionToolTips="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Kso-jb-pRH">
|
|
||||||
<rect key="frame" x="39" y="11" width="118" height="17"/>
|
|
||||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="vzM-ly-CYn">
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</textFieldCell>
|
|
||||||
</textField>
|
|
||||||
</subviews>
|
|
||||||
<constraints>
|
|
||||||
<constraint firstItem="Kso-jb-pRH" firstAttribute="centerY" secondItem="6UF-Gr-4nf" secondAttribute="centerY" id="EFe-Eu-cwW"/>
|
|
||||||
<constraint firstItem="Kso-jb-pRH" firstAttribute="leading" secondItem="Kko-1G-JNn" secondAttribute="trailing" constant="7" id="Jlp-gO-6rv"/>
|
|
||||||
<constraint firstItem="Kko-1G-JNn" firstAttribute="leading" secondItem="6UF-Gr-4nf" secondAttribute="leading" constant="2" id="RV0-o5-iyA"/>
|
|
||||||
<constraint firstItem="Kko-1G-JNn" firstAttribute="centerY" secondItem="6UF-Gr-4nf" secondAttribute="centerY" id="oFg-c1-o9M"/>
|
|
||||||
<constraint firstAttribute="trailing" secondItem="Kso-jb-pRH" secondAttribute="trailing" constant="2" id="ptI-vC-fK9"/>
|
|
||||||
</constraints>
|
|
||||||
<connections>
|
|
||||||
<outlet property="imageView" destination="Kko-1G-JNn" id="AvW-EL-9Rw"/>
|
|
||||||
<outlet property="textField" destination="Kso-jb-pRH" id="yWg-4p-sFp"/>
|
|
||||||
</connections>
|
|
||||||
</tableCellView>
|
|
||||||
</prototypeCellViews>
|
|
||||||
</tableColumn>
|
|
||||||
</tableColumns>
|
|
||||||
<connections>
|
|
||||||
<action trigger="doubleAction" selector="openRecentURL:" target="-2" id="kTu-60-aYp"/>
|
|
||||||
<outlet property="dataSource" destination="-2" id="pLD-5Q-GVH"/>
|
|
||||||
<outlet property="delegate" destination="-2" id="hO0-G9-RVy"/>
|
|
||||||
</connections>
|
|
||||||
</tableView>
|
|
||||||
</subviews>
|
|
||||||
</clipView>
|
|
||||||
<constraints>
|
|
||||||
<constraint firstAttribute="width" constant="200" id="R0Z-La-Y3C"/>
|
|
||||||
</constraints>
|
|
||||||
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="bRy-ef-e76">
|
|
||||||
<rect key="frame" x="1" y="303" width="135" height="16"/>
|
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
|
||||||
</scroller>
|
|
||||||
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="2e9-uR-dY7">
|
|
||||||
<rect key="frame" x="224" y="17" width="15" height="102"/>
|
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
|
||||||
</scroller>
|
|
||||||
</scrollView>
|
|
||||||
</endViews>
|
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="bottom" secondItem="jd3-xw-cZP" secondAttribute="bottom" constant="20" id="581-be-EbR"/>
|
<constraint firstItem="jd3-xw-cZP" firstAttribute="centerX" secondItem="JV1-lh-OtN" secondAttribute="centerX" id="8C8-ZW-58v"/>
|
||||||
<constraint firstItem="jd3-xw-cZP" firstAttribute="top" secondItem="ITj-5P-sn9" secondAttribute="top" constant="20" id="9he-mz-Ciw"/>
|
<constraint firstItem="jd3-xw-cZP" firstAttribute="centerY" secondItem="JV1-lh-OtN" secondAttribute="centerY" id="HeM-vT-DHO"/>
|
||||||
<constraint firstAttribute="bottom" secondItem="eUA-6g-T1O" secondAttribute="bottom" constant="-1" id="Ejt-qZ-puH"/>
|
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="300" id="LaQ-Zq-f9E"/>
|
||||||
<constraint firstAttribute="trailing" secondItem="eUA-6g-T1O" secondAttribute="trailing" constant="-1" id="PEw-In-uMJ"/>
|
|
||||||
<constraint firstItem="eUA-6g-T1O" firstAttribute="top" secondItem="ITj-5P-sn9" secondAttribute="top" constant="-1" id="piI-8Q-zsE"/>
|
|
||||||
</constraints>
|
</constraints>
|
||||||
<visibilityPriorities>
|
</customView>
|
||||||
<integer value="1000"/>
|
<scrollView autohidesScrollers="YES" horizontalLineScroll="40" horizontalPageScroll="10" verticalLineScroll="40" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eUA-6g-T1O">
|
||||||
<integer value="1000"/>
|
<rect key="frame" x="401" y="-1" width="200" height="304"/>
|
||||||
</visibilityPriorities>
|
<clipView key="contentView" id="0Kf-Fq-by2">
|
||||||
<customSpacing>
|
<rect key="frame" x="1" y="1" width="198" height="302"/>
|
||||||
<real value="3.4028234663852886e+38"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<real value="3.4028234663852886e+38"/>
|
<subviews>
|
||||||
</customSpacing>
|
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnReordering="NO" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" rowHeight="38" rowSizeStyle="automatic" viewBased="YES" id="51b-Ql-3gM">
|
||||||
</stackView>
|
<rect key="frame" x="0.0" y="0.0" width="198" height="302"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<size key="intercellSpacing" width="3" height="2"/>
|
||||||
|
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<tableColumns>
|
||||||
|
<tableColumn width="195" minWidth="40" maxWidth="1000" id="oLj-wZ-syY">
|
||||||
|
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
|
||||||
|
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</tableHeaderCell>
|
||||||
|
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="Fbl-HT-XIu">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||||
|
<prototypeCellViews>
|
||||||
|
<tableCellView id="6UF-Gr-4nf">
|
||||||
|
<rect key="frame" x="1" y="1" width="195" height="38"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Kko-1G-JNn">
|
||||||
|
<rect key="frame" x="2" y="3" width="32" height="32"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="width" secondItem="Kko-1G-JNn" secondAttribute="height" multiplier="1:1" id="DCx-UU-29t"/>
|
||||||
|
<constraint firstAttribute="height" constant="32" id="tUG-uX-FuQ"/>
|
||||||
|
</constraints>
|
||||||
|
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="NSActionTemplate" id="9TF-9t-7gd"/>
|
||||||
|
</imageView>
|
||||||
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsExpansionToolTips="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Kso-jb-pRH">
|
||||||
|
<rect key="frame" x="39" y="11" width="156" height="16"/>
|
||||||
|
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="vzM-ly-CYn">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstItem="Kso-jb-pRH" firstAttribute="centerY" secondItem="6UF-Gr-4nf" secondAttribute="centerY" id="EFe-Eu-cwW"/>
|
||||||
|
<constraint firstItem="Kso-jb-pRH" firstAttribute="leading" secondItem="Kko-1G-JNn" secondAttribute="trailing" constant="7" id="Jlp-gO-6rv"/>
|
||||||
|
<constraint firstItem="Kko-1G-JNn" firstAttribute="leading" secondItem="6UF-Gr-4nf" secondAttribute="leading" constant="2" id="RV0-o5-iyA"/>
|
||||||
|
<constraint firstItem="Kko-1G-JNn" firstAttribute="centerY" secondItem="6UF-Gr-4nf" secondAttribute="centerY" id="oFg-c1-o9M"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="Kso-jb-pRH" secondAttribute="trailing" constant="2" id="ptI-vC-fK9"/>
|
||||||
|
</constraints>
|
||||||
|
<connections>
|
||||||
|
<outlet property="imageView" destination="Kko-1G-JNn" id="AvW-EL-9Rw"/>
|
||||||
|
<outlet property="textField" destination="Kso-jb-pRH" id="yWg-4p-sFp"/>
|
||||||
|
</connections>
|
||||||
|
</tableCellView>
|
||||||
|
</prototypeCellViews>
|
||||||
|
</tableColumn>
|
||||||
|
</tableColumns>
|
||||||
|
<connections>
|
||||||
|
<action trigger="doubleAction" selector="openRecentURL:" target="-2" id="kTu-60-aYp"/>
|
||||||
|
<outlet property="dataSource" destination="-2" id="pLD-5Q-GVH"/>
|
||||||
|
<outlet property="delegate" destination="-2" id="hO0-G9-RVy"/>
|
||||||
|
</connections>
|
||||||
|
</tableView>
|
||||||
|
</subviews>
|
||||||
|
</clipView>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="width" constant="200" id="R0Z-La-Y3C"/>
|
||||||
|
</constraints>
|
||||||
|
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="bRy-ef-e76">
|
||||||
|
<rect key="frame" x="1" y="287" width="198" height="16"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
</scroller>
|
||||||
|
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="2e9-uR-dY7">
|
||||||
|
<rect key="frame" x="224" y="17" width="15" height="102"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
</scroller>
|
||||||
|
</scrollView>
|
||||||
</subviews>
|
</subviews>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="trailing" secondItem="ITj-5P-sn9" secondAttribute="trailing" id="7Bo-Jl-7Zu"/>
|
<constraint firstAttribute="bottom" secondItem="eUA-6g-T1O" secondAttribute="bottom" constant="-1" id="6ri-AE-xpC"/>
|
||||||
<constraint firstItem="ITj-5P-sn9" firstAttribute="top" secondItem="9Nv-Zl-Z9p" secondAttribute="top" id="lrE-f8-tD5"/>
|
<constraint firstItem="eUA-6g-T1O" firstAttribute="top" secondItem="9Nv-Zl-Z9p" secondAttribute="top" constant="-1" id="D5N-Fq-0LP"/>
|
||||||
<constraint firstItem="ITj-5P-sn9" firstAttribute="leading" secondItem="9Nv-Zl-Z9p" secondAttribute="leading" constant="20" id="oWL-PJ-VCT"/>
|
<constraint firstItem="JV1-lh-OtN" firstAttribute="top" secondItem="9Nv-Zl-Z9p" secondAttribute="top" id="RPE-bR-zfc"/>
|
||||||
<constraint firstAttribute="bottom" secondItem="ITj-5P-sn9" secondAttribute="bottom" id="syW-TO-uwv"/>
|
<constraint firstAttribute="trailing" secondItem="eUA-6g-T1O" secondAttribute="trailing" constant="-1" id="VMx-Ef-cEG"/>
|
||||||
|
<constraint firstItem="JV1-lh-OtN" firstAttribute="leading" secondItem="9Nv-Zl-Z9p" secondAttribute="leading" id="W2e-Nw-pfi"/>
|
||||||
|
<constraint firstItem="eUA-6g-T1O" firstAttribute="leading" secondItem="JV1-lh-OtN" secondAttribute="trailing" id="Z02-i4-6Jm"/>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="JV1-lh-OtN" secondAttribute="bottom" id="ow6-hF-qkt"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<point key="canvasLocation" x="-680" y="-522"/>
|
<point key="canvasLocation" x="-714" y="-522"/>
|
||||||
</view>
|
</view>
|
||||||
</objects>
|
</objects>
|
||||||
<resources>
|
<resources>
|
||||||
|
|||||||
@@ -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="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19455" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19455"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
@@ -11,6 +11,8 @@
|
|||||||
<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="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"/>
|
||||||
<outlet property="view" destination="1" id="52"/>
|
<outlet property="view" destination="1" id="52"/>
|
||||||
@@ -19,37 +21,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="400" height="315"/>
|
<rect key="frame" x="0.0" y="0.0" width="449" height="478"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<box autoresizesSubviews="NO" 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="166" width="366" height="100"/>
|
<rect key="frame" x="17" y="272" width="415" height="104"/>
|
||||||
<view key="contentView" id="cfa-nq-Kzt">
|
<view key="contentView" id="cfa-nq-Kzt">
|
||||||
<rect key="frame" x="3" y="3" width="360" height="82"/>
|
<rect key="frame" x="3" y="3" width="409" height="86"/>
|
||||||
<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="53" width="134" height="17"/>
|
<rect key="frame" x="18" y="49" width="134" height="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Double-click on URL:" id="10">
|
<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>
|
||||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="13">
|
|
||||||
<rect key="frame" x="156" y="48" width="109" height="25"/>
|
|
||||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="14">
|
|
||||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
|
||||||
<font key="font" metaFont="menu"/>
|
|
||||||
<menu key="menu" title="OtherViews" id="15">
|
|
||||||
<items>
|
|
||||||
<menuItem title="Copies URL" id="16"/>
|
|
||||||
<menuItem title="Opens URL" id="17"/>
|
|
||||||
</items>
|
|
||||||
</menu>
|
|
||||||
</popUpButtonCell>
|
|
||||||
</popUpButton>
|
|
||||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="36">
|
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="36">
|
||||||
<rect key="frame" x="18" y="22" width="134" height="17"/>
|
<rect key="frame" x="18" y="19" width="134" height="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" enabled="NO" sendsActionOnEndEditing="YES" title="Double-click on Title:" id="37">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" enabled="NO" sendsActionOnEndEditing="YES" title="Double-click on Title:" id="37">
|
||||||
<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"/>
|
||||||
@@ -57,7 +46,7 @@
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="40">
|
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="40">
|
||||||
<rect key="frame" x="156" y="17" width="139" height="25"/>
|
<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">
|
<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"/>
|
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="menu"/>
|
<font key="font" metaFont="menu"/>
|
||||||
@@ -69,57 +58,55 @@
|
|||||||
</menu>
|
</menu>
|
||||||
</popUpButtonCell>
|
</popUpButtonCell>
|
||||||
</popUpButton>
|
</popUpButton>
|
||||||
|
<popUpButton verticalHuggingPriority="750" verticalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="13">
|
||||||
|
<rect key="frame" x="155" y="42" width="110" height="25"/>
|
||||||
|
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="14">
|
||||||
|
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||||
|
<font key="font" metaFont="menu"/>
|
||||||
|
<menu key="menu" title="OtherViews" id="15">
|
||||||
|
<items>
|
||||||
|
<menuItem title="Copies URL" id="16"/>
|
||||||
|
<menuItem title="Opens URL" id="17"/>
|
||||||
|
</items>
|
||||||
|
</menu>
|
||||||
|
</popUpButtonCell>
|
||||||
|
</popUpButton>
|
||||||
</subviews>
|
</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" secondItem="40" secondAttribute="bottom" constant="20" symbolic="YES" id="lle-u8-JWP"/>
|
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="40" secondAttribute="bottom" constant="20" symbolic="YES" id="lle-u8-JWP"/>
|
||||||
</constraints>
|
</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 firstItem="40" firstAttribute="centerY" secondItem="36" secondAttribute="centerY" id="1hi-oU-uNn"/>
|
<constraint firstAttribute="height" constant="100" id="AfY-wN-l34"/>
|
||||||
<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">
|
<box horizontalHuggingPriority="249" borderType="line" title="New Entries" translatesAutoresizingMaskIntoConstraints="NO" id="Xvt-tP-TbR">
|
||||||
<rect key="frame" x="113" y="271" width="135" height="25"/>
|
<rect key="frame" x="17" y="172" width="415" height="96"/>
|
||||||
<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="274" width="91" height="19"/>
|
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" enabled="NO" sendsActionOnEndEditing="YES" title="Open URLs in:" id="soD-wI-YOH">
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</textFieldCell>
|
|
||||||
</textField>
|
|
||||||
<box borderType="line" title="Templates" translatesAutoresizingMaskIntoConstraints="NO" id="Xvt-tP-TbR">
|
|
||||||
<rect key="frame" x="17" y="92" width="366" height="72"/>
|
|
||||||
<view key="contentView" id="g0i-00-sng">
|
<view key="contentView" id="g0i-00-sng">
|
||||||
<rect key="frame" x="3" y="3" width="360" height="54"/>
|
<rect key="frame" x="3" y="3" width="409" height="78"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="LPY-sM-hjS">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="LPY-sM-hjS">
|
||||||
<rect key="frame" x="18" y="18" width="222" height="18"/>
|
<rect key="frame" x="18" y="41" width="354" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Update password for new entries" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="RaM-t2-DVR">
|
<buttonCell key="cell" type="check" title="Generate password for entries created from templates" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="RaM-t2-DVR">
|
||||||
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
</button>
|
||||||
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="yxq-YK-61i">
|
||||||
|
<rect key="frame" x="18" y="19" width="238" height="18"/>
|
||||||
|
<buttonCell key="cell" type="check" title="Generate password for new entries" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="iCq-mG-p81">
|
||||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
</buttonCell>
|
</buttonCell>
|
||||||
@@ -127,20 +114,23 @@
|
|||||||
</subviews>
|
</subviews>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstItem="LPY-sM-hjS" firstAttribute="top" secondItem="g0i-00-sng" secondAttribute="top" constant="20" symbolic="YES" id="Ip3-vX-0L9"/>
|
<constraint firstItem="LPY-sM-hjS" firstAttribute="top" secondItem="g0i-00-sng" secondAttribute="top" constant="20" symbolic="YES" id="Ip3-vX-0L9"/>
|
||||||
|
<constraint firstItem="yxq-YK-61i" firstAttribute="leading" secondItem="LPY-sM-hjS" secondAttribute="leading" id="LfJ-z5-Q3P"/>
|
||||||
<constraint firstItem="LPY-sM-hjS" firstAttribute="leading" secondItem="g0i-00-sng" secondAttribute="leading" constant="20" symbolic="YES" id="RE9-Jf-nFR"/>
|
<constraint firstItem="LPY-sM-hjS" firstAttribute="leading" secondItem="g0i-00-sng" secondAttribute="leading" constant="20" symbolic="YES" id="RE9-Jf-nFR"/>
|
||||||
<constraint firstAttribute="bottom" secondItem="LPY-sM-hjS" secondAttribute="bottom" constant="20" symbolic="YES" id="nGd-XA-Jj9"/>
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="yxq-YK-61i" secondAttribute="trailing" constant="20" symbolic="YES" id="WHR-l8-6ce"/>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="yxq-YK-61i" secondAttribute="bottom" constant="20" symbolic="YES" id="rNE-sZ-z2e"/>
|
||||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="LPY-sM-hjS" secondAttribute="trailing" constant="20" symbolic="YES" id="wyU-eZ-BSC"/>
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="LPY-sM-hjS" secondAttribute="trailing" constant="20" symbolic="YES" id="wyU-eZ-BSC"/>
|
||||||
|
<constraint firstItem="yxq-YK-61i" firstAttribute="top" secondItem="LPY-sM-hjS" secondAttribute="bottom" constant="6" symbolic="YES" id="yNh-4f-kMr"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
</view>
|
</view>
|
||||||
</box>
|
</box>
|
||||||
<box 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="16" width="366" height="72"/>
|
<rect key="frame" x="17" y="94" 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="360" height="54"/>
|
<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"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="vT4-wF-ned">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="vT4-wF-ned">
|
||||||
<rect key="frame" x="18" y="18" width="280" height="18"/>
|
<rect key="frame" x="18" y="19" width="284" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Hide application after copying to clipboard" bezelStyle="regularSquare" imagePosition="left" inset="2" id="1Vr-nY-Ogv">
|
<buttonCell key="cell" type="check" title="Hide application after copying to clipboard" bezelStyle="regularSquare" imagePosition="left" inset="2" id="1Vr-nY-Ogv">
|
||||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
@@ -155,27 +145,87 @@
|
|||||||
</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="width" constant="400" id="53"/>
|
<constraint firstAttribute="bottom" secondItem="CLc-Vg-aWg" secondAttribute="bottom" constant="20" symbolic="YES" id="1VG-9p-VC6"/>
|
||||||
<constraint firstItem="Kff-Xp-hAT" firstAttribute="top" secondItem="Xvt-tP-TbR" secondAttribute="bottom" constant="8" symbolic="YES" id="3RL-tm-4wu"/>
|
<constraint firstItem="Kff-Xp-hAT" firstAttribute="top" secondItem="Xvt-tP-TbR" secondAttribute="bottom" constant="8" symbolic="YES" id="3RL-tm-4wu"/>
|
||||||
<constraint firstAttribute="bottom" secondItem="Kff-Xp-hAT" secondAttribute="bottom" constant="20" symbolic="YES" id="8k6-1d-wPj"/>
|
<constraint firstAttribute="trailing" secondItem="8Z8-mS-hfg" secondAttribute="trailing" constant="20" symbolic="YES" id="5Hg-na-QAc"/>
|
||||||
<constraint firstItem="Xvt-tP-TbR" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="BH4-4y-uma"/>
|
<constraint firstItem="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="cfa-nq-Kzt" secondAttribute="bottom" constant="5" 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 firstItem="lOo-NI-b07" firstAttribute="firstBaseline" secondItem="ehI-gq-lsb" secondAttribute="firstBaseline" id="gFK-Ce-Q3b"/>
|
<constraint firstAttribute="trailing" secondItem="CLc-Vg-aWg" secondAttribute="trailing" constant="20" symbolic="YES" id="fXu-pq-O8Q"/>
|
||||||
<constraint firstItem="lOo-NI-b07" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="kaP-lB-tDY"/>
|
<constraint firstItem="CLc-Vg-aWg" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="wyw-aC-Vkj"/>
|
||||||
<constraint firstItem="2" firstAttribute="top" secondItem="lOo-NI-b07" secondAttribute="bottom" constant="8" symbolic="YES" id="xlS-Dj-cOt"/>
|
<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="-2" y="125"/>
|
<point key="canvasLocation" x="-906.5" y="-199.5"/>
|
||||||
</customView>
|
</customView>
|
||||||
</objects>
|
</objects>
|
||||||
</document>
|
</document>
|
||||||
|
|||||||
@@ -29,12 +29,10 @@
|
|||||||
@implementation DDHotKey (MPKeydata)
|
@implementation DDHotKey (MPKeydata)
|
||||||
|
|
||||||
+ (NSData *)hotKeyDataWithKeyCode:(unsigned short)keyCode modifierFlags:(NSUInteger)flags {
|
+ (NSData *)hotKeyDataWithKeyCode:(unsigned short)keyCode modifierFlags:(NSUInteger)flags {
|
||||||
NSMutableData *data = [[NSMutableData alloc] init];
|
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initRequiringSecureCoding:YES];
|
||||||
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
|
|
||||||
[archiver encodeInt:keyCode forKey:NSStringFromSelector(@selector(keyCode))];
|
[archiver encodeInt:keyCode forKey:NSStringFromSelector(@selector(keyCode))];
|
||||||
[archiver encodeInteger:flags forKey:NSStringFromSelector(@selector(modifierFlags))];
|
[archiver encodeInteger:flags forKey:NSStringFromSelector(@selector(modifierFlags))];
|
||||||
[archiver finishEncoding];
|
return [archiver.encodedData copy];
|
||||||
return [data copy];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (NSData *)defaultHotKeyData {
|
+ (NSData *)defaultHotKeyData {
|
||||||
@@ -73,7 +71,13 @@
|
|||||||
if(keyCode == NULL || modifierFlags == NULL || data == nil) {
|
if(keyCode == NULL || modifierFlags == NULL || data == nil) {
|
||||||
return NO;
|
return NO;
|
||||||
}
|
}
|
||||||
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
|
|
||||||
|
NSError *error;
|
||||||
|
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingFromData:data error:&error];
|
||||||
|
if(error) {
|
||||||
|
NSLog(@"Error while trying to decode DDHotKey %@", error.localizedDescription);
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
*keyCode = [unarchiver decodeIntForKey:NSStringFromSelector(@selector(keyCode))];
|
*keyCode = [unarchiver decodeIntForKey:NSStringFromSelector(@selector(keyCode))];
|
||||||
*modifierFlags = [unarchiver decodeIntegerForKey:NSStringFromSelector(@selector(modifierFlags))];
|
*modifierFlags = [unarchiver decodeIntegerForKey:NSStringFromSelector(@selector(modifierFlags))];
|
||||||
return YES;
|
return YES;
|
||||||
@@ -86,19 +90,19 @@
|
|||||||
NSEventModifierFlags flags = 0;
|
NSEventModifierFlags flags = 0;
|
||||||
switch(self.keyCode) {
|
switch(self.keyCode) {
|
||||||
case kVK_Command:
|
case kVK_Command:
|
||||||
flags = NSCommandKeyMask;
|
flags = NSEventModifierFlagCommand;
|
||||||
break;
|
break;
|
||||||
case kVK_Shift:
|
case kVK_Shift:
|
||||||
case kVK_RightShift:
|
case kVK_RightShift:
|
||||||
flags = NSShiftKeyMask;
|
flags = NSEventModifierFlagShift;
|
||||||
break;
|
break;
|
||||||
case kVK_Option:
|
case kVK_Option:
|
||||||
case kVK_RightOption:
|
case kVK_RightOption:
|
||||||
flags = NSAlternateKeyMask;
|
flags = NSEventModifierFlagOption;
|
||||||
break;
|
break;
|
||||||
case kVK_Control:
|
case kVK_Control:
|
||||||
case kVK_RightControl:
|
case kVK_RightControl:
|
||||||
flags = NSControlKeyMask;
|
flags = NSEventModifierFlagControl;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
BOOL missingModifier = self.modifierFlags == 0;
|
BOOL missingModifier = self.modifierFlags == 0;
|
||||||
|
|||||||
21
MacPass/DocumentSplitView.xib
Normal file
21
MacPass/DocumentSplitView.xib
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||||
|
<dependencies>
|
||||||
|
<deployment identifier="macosx"/>
|
||||||
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||||
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
|
</dependencies>
|
||||||
|
<objects>
|
||||||
|
<customObject id="-2" userLabel="File's Owner" customClass="MPDocumentSplitViewController">
|
||||||
|
<connections>
|
||||||
|
<outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
|
||||||
|
</connections>
|
||||||
|
</customObject>
|
||||||
|
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||||
|
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||||
|
<customView translatesAutoresizingMaskIntoConstraints="NO" id="Hz6-mo-xeY">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
|
||||||
|
<point key="canvasLocation" x="141" y="154"/>
|
||||||
|
</customView>
|
||||||
|
</objects>
|
||||||
|
</document>
|
||||||
@@ -1,32 +1,28 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="13771" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="15705" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13771"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="15705"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
<customObject id="-2" userLabel="File's Owner" customClass="MPDocumentWindowController">
|
<customObject id="-2" userLabel="File's Owner" customClass="MPDocumentWindowController">
|
||||||
<connections>
|
<connections>
|
||||||
<outlet property="splitView" destination="697" id="700"/>
|
|
||||||
<outlet property="window" destination="1" id="501"/>
|
<outlet property="window" destination="1" id="501"/>
|
||||||
</connections>
|
</connections>
|
||||||
</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"/>
|
||||||
<window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="DatabaseWindow" animationBehavior="default" tabbingMode="preferred" id="1">
|
<window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="DatabaseWindow" animationBehavior="default" tabbingMode="preferred" id="1">
|
||||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
|
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
|
||||||
<windowCollectionBehavior key="collectionBehavior" fullScreenPrimary="YES"/>
|
<windowCollectionBehavior key="collectionBehavior" fullScreenPrimary="YES"/>
|
||||||
<rect key="contentRect" x="196" y="240" width="700" height="500"/>
|
<rect key="contentRect" x="196" y="240" width="700" height="500"/>
|
||||||
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
|
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
|
||||||
<view key="contentView" id="2">
|
<view key="contentView" id="2">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="700" height="500"/>
|
<rect key="frame" x="0.0" y="0.0" width="700" height="500"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
</view>
|
</view>
|
||||||
<point key="canvasLocation" x="54" y="51"/>
|
<point key="canvasLocation" x="256" y="42"/>
|
||||||
</window>
|
</window>
|
||||||
<splitView autosaveName="" dividerStyle="thin" vertical="YES" translatesAutoresizingMaskIntoConstraints="NO" id="697">
|
|
||||||
<rect key="frame" x="0.0" y="0.0" width="560" height="194"/>
|
|
||||||
</splitView>
|
|
||||||
</objects>
|
</objects>
|
||||||
</document>
|
</document>
|
||||||
|
|||||||
@@ -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="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19455" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19455"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
@@ -15,25 +15,24 @@
|
|||||||
</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 translatesAutoresizingMaskIntoConstraints="NO" id="336">
|
<customView misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="336">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="694" height="594"/>
|
<rect key="frame" x="0.0" y="0.0" width="691" height="331"/>
|
||||||
<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="694" height="595"/>
|
<rect key="frame" x="0.0" y="0.0" width="691" height="308"/>
|
||||||
<clipView key="contentView" id="4tt-2K-SPF">
|
<clipView key="contentView" id="4tt-2K-SPF">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="694" height="595"/>
|
<rect key="frame" x="0.0" y="0.0" width="691" height="308"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<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="694" height="572"/>
|
<rect key="frame" x="0.0" y="0.0" width="691" height="285"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<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 identifier="Group Column" width="104.609375" minWidth="40" maxWidth="3.4028234663852886e+38" id="117">
|
<tableColumn identifier="Group Column" width="104.609375" minWidth="40" maxWidth="3.4028234663852886e+38" id="117">
|
||||||
<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" name="headerColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||||
</tableHeaderCell>
|
</tableHeaderCell>
|
||||||
@@ -45,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="1" y="1" width="105" height="17"/>
|
<rect key="frame" x="11" y="1" width="110" height="17"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<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="0.0" width="103" height="17"/>
|
<rect key="frame" x="1" y="1" width="108" height="16"/>
|
||||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="271">
|
<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"/>
|
||||||
@@ -70,7 +69,6 @@
|
|||||||
</tableColumn>
|
</tableColumn>
|
||||||
<tableColumn identifier="Title Column" width="144.1171875" minWidth="40" maxWidth="3.4028234663852886e+38" id="119">
|
<tableColumn identifier="Title Column" width="144.1171875" minWidth="40" maxWidth="3.4028234663852886e+38" id="119">
|
||||||
<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" name="headerColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||||
</tableHeaderCell>
|
</tableHeaderCell>
|
||||||
@@ -82,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="108.5" y="1" width="144" height="17"/>
|
<rect key="frame" x="124" y="1" width="144" height="17"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<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="0.0" width="17" height="17"/>
|
<rect key="frame" x="3" y="-3" width="17" height="23"/>
|
||||||
<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"/>
|
||||||
@@ -119,7 +117,6 @@
|
|||||||
</tableColumn>
|
</tableColumn>
|
||||||
<tableColumn identifier="Password Column" width="118.73046875" minWidth="10" maxWidth="3.4028234663852886e+38" id="232">
|
<tableColumn identifier="Password Column" width="118.73046875" minWidth="10" maxWidth="3.4028234663852886e+38" id="232">
|
||||||
<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" name="headerColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||||
</tableHeaderCell>
|
</tableHeaderCell>
|
||||||
@@ -131,11 +128,11 @@
|
|||||||
<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="255.5" y="1" width="118" height="17"/>
|
<rect key="frame" x="271" y="1" width="118" height="17"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<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">
|
||||||
<rect key="frame" x="1" y="0.0" width="116" height="17"/>
|
<rect key="frame" x="1" y="1" width="116" height="16"/>
|
||||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="430">
|
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="430">
|
||||||
<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"/>
|
||||||
@@ -156,7 +153,6 @@
|
|||||||
</tableColumn>
|
</tableColumn>
|
||||||
<tableColumn identifier="URL Column" width="113.18359375" minWidth="10" maxWidth="3.4028234663852886e+38" id="419">
|
<tableColumn identifier="URL Column" width="113.18359375" minWidth="10" maxWidth="3.4028234663852886e+38" id="419">
|
||||||
<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" name="headerColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||||
</tableHeaderCell>
|
</tableHeaderCell>
|
||||||
@@ -168,11 +164,11 @@
|
|||||||
<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="377" y="1" width="113" height="17"/>
|
<rect key="frame" x="393" y="1" width="113" height="17"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<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">
|
||||||
<rect key="frame" x="1" y="0.0" width="111" height="17"/>
|
<rect key="frame" x="1" y="1" width="111" height="16"/>
|
||||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="423">
|
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="423">
|
||||||
<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"/>
|
||||||
@@ -191,9 +187,8 @@
|
|||||||
</tableCellView>
|
</tableCellView>
|
||||||
</prototypeCellViews>
|
</prototypeCellViews>
|
||||||
</tableColumn>
|
</tableColumn>
|
||||||
<tableColumn width="199" minWidth="10" maxWidth="3.4028234663852886e+38" id="614">
|
<tableColumn width="165" minWidth="10" maxWidth="3.4028234663852886e+38" id="614">
|
||||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left">
|
<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" name="headerColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||||
</tableHeaderCell>
|
</tableHeaderCell>
|
||||||
@@ -204,14 +199,14 @@
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||||
<prototypeCellViews>
|
<prototypeCellViews>
|
||||||
<tableCellView id="616">
|
<tableCellView identifier="MonospacedStringCell" id="616">
|
||||||
<rect key="frame" x="493" y="1" width="199" height="17"/>
|
<rect key="frame" x="509" y="1" width="169" 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="0.0" width="197" height="17"/>
|
<rect key="frame" x="1" y="2" width="167" height="14"/>
|
||||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="618">
|
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="618">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" size="12" name="Menlo-Regular"/>
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
<color key="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>
|
||||||
@@ -233,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="579" width="694" height="16"/>
|
<rect key="frame" x="0.0" y="484" width="690" 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" id="676">
|
<tableHeaderView key="headerView" wantsLayer="YES" id="676">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="694" height="23"/>
|
<rect key="frame" x="0.0" y="0.0" width="691" height="23"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
</tableHeaderView>
|
</tableHeaderView>
|
||||||
</scrollView>
|
</scrollView>
|
||||||
@@ -256,6 +251,6 @@
|
|||||||
</customView>
|
</customView>
|
||||||
</objects>
|
</objects>
|
||||||
<resources>
|
<resources>
|
||||||
<image name="NSActionTemplate" width="14" height="14"/>
|
<image name="NSActionTemplate" width="15" height="15"/>
|
||||||
</resources>
|
</resources>
|
||||||
</document>
|
</document>
|
||||||
|
|||||||
17
MacPass/KPKBinary+MacPassAddtions.h
Normal file
17
MacPass/KPKBinary+MacPassAddtions.h
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
//
|
||||||
|
// KPKBinary+MacPassAddtions.h
|
||||||
|
// MacPass
|
||||||
|
//
|
||||||
|
// Created by Michael Starke on 09.11.20.
|
||||||
|
// Copyright © 2020 HicknHack Software GmbH. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <KeePassKit/KeePassKit.h>
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
@interface KPKBinary (MacPassAddtions) <NSFilePromiseProviderDelegate>
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
||||||
23
MacPass/KPKBinary+MacPassAddtions.m
Normal file
23
MacPass/KPKBinary+MacPassAddtions.m
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
//
|
||||||
|
// KPKBinary+MacPassAddtions.m
|
||||||
|
// MacPass
|
||||||
|
//
|
||||||
|
// Created by Michael Starke on 09.11.20.
|
||||||
|
// Copyright © 2020 HicknHack Software GmbH. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "KPKBinary+MacPassAddtions.h"
|
||||||
|
|
||||||
|
@implementation KPKBinary (MacPassAddtions)
|
||||||
|
|
||||||
|
- (NSString *)filePromiseProvider:(NSFilePromiseProvider *)filePromiseProvider fileNameForType:(NSString *)fileType {
|
||||||
|
return self.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)filePromiseProvider:(NSFilePromiseProvider *)filePromiseProvider writePromiseToURL:(NSURL *)url completionHandler:(void (^)(NSError * _Nullable))completionHandler {
|
||||||
|
NSError *error;
|
||||||
|
[self saveToLocation:url error:&error];
|
||||||
|
completionHandler(error);
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
22
MacPass/KPKEntry+MPTags.h
Normal file
22
MacPass/KPKEntry+MPTags.h
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
//
|
||||||
|
// KPKEntry+MPTags.h
|
||||||
|
// MacPass
|
||||||
|
//
|
||||||
|
// Created by Michael Starke on 20.03.20.
|
||||||
|
// Copyright © 2020 HicknHack Software GmbH. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <AppKit/AppKit.h>
|
||||||
|
|
||||||
|
|
||||||
|
#import <KeePassKit/KeePassKit.h>
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
@interface KPKEntry (MPTags)
|
||||||
|
|
||||||
|
@property (readonly, copy) NSString *tagsString;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
||||||
24
MacPass/KPKEntry+MPTags.m
Normal file
24
MacPass/KPKEntry+MPTags.m
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
//
|
||||||
|
// KPKEntry+MPTags.m
|
||||||
|
// MacPass
|
||||||
|
//
|
||||||
|
// Created by Michael Starke on 20.03.20.
|
||||||
|
// Copyright © 2020 HicknHack Software GmbH. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "KPKEntry+MPTags.h"
|
||||||
|
|
||||||
|
#import <AppKit/AppKit.h>
|
||||||
|
|
||||||
|
|
||||||
|
@implementation KPKEntry (MPTags)
|
||||||
|
|
||||||
|
+ (NSSet<NSString *> *)keyPathsForValuesAffectingTagsString {
|
||||||
|
return [NSSet setWithObject:NSStringFromSelector(@selector(tags))];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSString *)tagsString {
|
||||||
|
return [self.tags componentsJoinedByString:@" "];
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
@@ -27,10 +27,13 @@
|
|||||||
#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 tempated images! */
|
/* only tint templated images! */
|
||||||
if(NO == self.template) {
|
if(NO == self.template) {
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
@@ -42,6 +45,7 @@
|
|||||||
image.template = NO;
|
image.template = NO;
|
||||||
return image;
|
return image;
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@implementation KPKNode (IconImage)
|
@implementation KPKNode (IconImage)
|
||||||
@@ -63,7 +67,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)];
|
return [[MPIconHelper icon:(isGroup ? MPIconExpiredGroup : MPIconExpiredEntry)] imageWithTintColor:NSColor.systemRedColor];
|
||||||
}
|
}
|
||||||
if(self.icon) {
|
if(self.icon) {
|
||||||
return self.icon.image;
|
return self.icon.image;
|
||||||
|
|||||||
@@ -23,17 +23,16 @@
|
|||||||
#import "MPAddCustomFieldContextMenuDelegate.h"
|
#import "MPAddCustomFieldContextMenuDelegate.h"
|
||||||
#import "KeePassKit/KeePassKit.h"
|
#import "KeePassKit/KeePassKit.h"
|
||||||
|
|
||||||
NSString *const MPHMACOTPSeedAttributeKey = @"HMACOTP-Seed";
|
#import "MPEntryInspectorViewController.h"
|
||||||
NSString *const MPHMACOTPConfigAttributeKey = @"HMACOTP-Config";
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
HmacOtp-Secret (the UTF-8 representation of the value is the secret),
|
HmacOtp-Secret (the UTF-8 representation of the value is the secret),
|
||||||
HmacOtp-Secret-Hex (secret as hex string),
|
HmacOtp-Secret-Hex (secret as hex string),
|
||||||
HmacOtp-Secret-Base32 (secret as Base32 string)
|
HmacOtp-Secret-Base32 (secret as Base32 string)
|
||||||
HmacOtp-Secret-Base64 (secret as Base64 string)
|
HmacOtp-Secret-Base64 (secret as Base64 string)
|
||||||
|
|
||||||
HmacOtp-Counter field.
|
HmacOtp-Counter field.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@interface MPAddCustomFieldContextMenuDelegate ()
|
@interface MPAddCustomFieldContextMenuDelegate ()
|
||||||
@property (readonly, nonatomic) KPKEntry *entry;
|
@property (readonly, nonatomic) KPKEntry *entry;
|
||||||
@@ -51,30 +50,29 @@ HmacOtp-Counter field.
|
|||||||
|
|
||||||
- (void)menuNeedsUpdate:(NSMenu *)menu {
|
- (void)menuNeedsUpdate:(NSMenu *)menu {
|
||||||
[menu removeAllItems];
|
[menu removeAllItems];
|
||||||
//[self _setupHOTPMenuItemsToMenu:menu];
|
[self _setupHOTPMenuItemsToMenu:menu];
|
||||||
|
[self _setupTOTPMenuItemsToMenu:menu];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* HMAC OTP */
|
||||||
- (void)_setupHOTPMenuItemsToMenu:(NSMenu *)menu {
|
- (void)_setupHOTPMenuItemsToMenu:(NSMenu *)menu {
|
||||||
BOOL hasConfigAttribute = nil != [self.entry customAttributeWithKey:MPHMACOTPConfigAttributeKey];
|
|
||||||
if(!hasConfigAttribute) {
|
}
|
||||||
NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"ADD_CUSTOM_ATTRIBUTE_HMACOTP_CONFIG", @"Menu item title for adding an hmacotp config attribute") action:@selector(_addHMACConfig:) keyEquivalent:@""];
|
- (IBAction)_setupHMACConfig:(id)sender {
|
||||||
item.target = self;
|
|
||||||
[menu addItem:item];
|
}
|
||||||
}
|
- (IBAction)_delteHMACConfig:(id)sender {
|
||||||
BOOL hasSeedAttribute = nil != [self.entry customAttributeWithKey:MPHMACOTPSeedAttributeKey];
|
|
||||||
if(!hasSeedAttribute) {
|
|
||||||
NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"ADD_CUSTOM_ATTRIBUTE_HMACOTP_SEED", @"Menu item title for adding an hmacotp seed attribute") action:@selector(_addHMACSeed:) keyEquivalent:@""];
|
|
||||||
item.target = self;
|
|
||||||
[menu addItem:item];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (IBAction)_addHMACConfig:(id)sender {
|
/* Time OPT*/
|
||||||
[self.entry addCustomAttribute:[[KPKAttribute alloc] initWithKey:MPHMACOTPConfigAttributeKey value:@"<config>"]];
|
- (void)_setupTOTPMenuItemsToMenu:(NSMenu *)menu {
|
||||||
|
NSMenuItem *setupItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"SETUP_TOTP_SETTINGS", @"Menu item title editing TOTP settings") action:@selector(showOTPSetup:) keyEquivalent:@""];
|
||||||
|
setupItem.target = self.viewController;
|
||||||
|
[menu addItem:setupItem];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (IBAction)_addHMACSeed:(id)sender {
|
- (IBAction)_setupTOTPSettings:(id)sender {}
|
||||||
[self.entry addCustomAttribute:[[KPKAttribute alloc] initWithKey:MPHMACOTPSeedAttributeKey value:@"<seed>"]];
|
- (IBAction)_deleteTOTPSettings:(id)sender {}
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -21,41 +21,17 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
#import "MPAddEntryContextMenuDelegate.h"
|
#import "MPAddEntryContextMenuDelegate.h"
|
||||||
#import "MPDocument.h"
|
#import "MPContextMenuHelper.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];
|
||||||
[menu addItemWithTitle:NSLocalizedString(@"EDIT_TEMPLATE_GROUP", "Menu item on the add entry context menu to edit template groups") action:[MPActionHelper actionOfType:MPActionEditTemplateGroup] keyEquivalent:@""];
|
NSArray<NSMenuItem *> *items = [MPContextMenuHelper contextMenuItemsWithCreateFromTemplateEntriesItems];
|
||||||
|
for(NSMenuItem *item in items) {
|
||||||
[menu addItem:[NSMenuItem separatorItem]];
|
[menu addItem:item];
|
||||||
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:@""];
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
17
MacPass/MPAdvancedDatabaseSettingsViewController.h
Normal file
17
MacPass/MPAdvancedDatabaseSettingsViewController.h
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
//
|
||||||
|
// MPAdvancedDatabaseSettingsViewController.h
|
||||||
|
// MacPass
|
||||||
|
//
|
||||||
|
// Created by Michael Starke on 18.11.21.
|
||||||
|
// Copyright © 2021 HicknHack Software GmbH. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <Cocoa/Cocoa.h>
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
@interface MPAdvancedDatabaseSettingsViewController : NSViewController
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
||||||
22
MacPass/MPAdvancedDatabaseSettingsViewController.m
Normal file
22
MacPass/MPAdvancedDatabaseSettingsViewController.m
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
//
|
||||||
|
// MPAdvancedDatabaseSettingsViewController.m
|
||||||
|
// MacPass
|
||||||
|
//
|
||||||
|
// Created by Michael Starke on 18.11.21.
|
||||||
|
// Copyright © 2021 HicknHack Software GmbH. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "MPAdvancedDatabaseSettingsViewController.h"
|
||||||
|
|
||||||
|
@interface MPAdvancedDatabaseSettingsViewController ()
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation MPAdvancedDatabaseSettingsViewController
|
||||||
|
|
||||||
|
- (void)viewDidLoad {
|
||||||
|
[super viewDidLoad];
|
||||||
|
// Do view setup here.
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
22
MacPass/MPAdvancedDatabaseSettingsViewController.xib
Normal file
22
MacPass/MPAdvancedDatabaseSettingsViewController.xib
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19529" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||||
|
<dependencies>
|
||||||
|
<deployment identifier="macosx"/>
|
||||||
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19529"/>
|
||||||
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
|
</dependencies>
|
||||||
|
<objects>
|
||||||
|
<customObject id="-2" userLabel="File's Owner" customClass="MPAdvancedDatabaseSettingsViewController">
|
||||||
|
<connections>
|
||||||
|
<outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
|
||||||
|
</connections>
|
||||||
|
</customObject>
|
||||||
|
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||||
|
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||||
|
<customView id="Hz6-mo-xeY">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
|
<point key="canvasLocation" x="-229" y="178"/>
|
||||||
|
</customView>
|
||||||
|
</objects>
|
||||||
|
</document>
|
||||||
@@ -33,10 +33,12 @@ APPKIT_EXTERN NSString *const MPDidChangeStoredKeyFilesSettings;
|
|||||||
@property (strong) IBOutlet NSMenuItem *fileNewMenuItem;
|
@property (strong) IBOutlet NSMenuItem *fileNewMenuItem;
|
||||||
@property (strong) IBOutlet NSMenu *itemMenu;
|
@property (strong) IBOutlet NSMenu *itemMenu;
|
||||||
@property (strong) IBOutlet NSMenu *importMenu;
|
@property (strong) IBOutlet NSMenu *importMenu;
|
||||||
|
@property (strong) IBOutlet NSMenu *exportMenu;
|
||||||
|
|
||||||
@property (strong, readonly) MPEntryContextMenuDelegate *itemActionMenuDelegate;
|
@property (strong, readonly) MPEntryContextMenuDelegate *itemActionMenuDelegate;
|
||||||
|
@property (readonly) BOOL isTerminating;
|
||||||
|
|
||||||
@property (nonatomic, assign) BOOL isAllowedToStoreKeyFile;
|
@property (nonatomic) BOOL isAllowedToStoreKeyFile;
|
||||||
|
|
||||||
- (IBAction)checkForUpdates:(id)sender;
|
- (IBAction)checkForUpdates:(id)sender;
|
||||||
- (IBAction)showPreferences:(id)sender;
|
- (IBAction)showPreferences:(id)sender;
|
||||||
|
|||||||
@@ -92,6 +92,7 @@ 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
|
||||||
@@ -100,13 +101,8 @@ typedef NS_OPTIONS(NSInteger, MPAppStartupState) {
|
|||||||
object:nil];
|
object:nil];
|
||||||
|
|
||||||
/* We know that we do not use the variable after instantiation */
|
/* We know that we do not use the variable after instantiation */
|
||||||
#pragma clang diagnostic push
|
|
||||||
#pragma clang diagnostic ignored "-Wunused-variable"
|
|
||||||
MPDocumentController *documentController = [[MPDocumentController alloc] init];
|
MPDocumentController *documentController = [[MPDocumentController alloc] init];
|
||||||
#pragma clang diagnostic pop
|
NSAssert(documentController, @"Custom document controller cannot be nil");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
@@ -190,6 +186,7 @@ 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(), ^{
|
||||||
@@ -224,11 +221,7 @@ typedef NS_OPTIONS(NSInteger, MPAppStartupState) {
|
|||||||
#endif
|
#endif
|
||||||
self.startupState |= MPAppStartupStateFinishedLaunch;
|
self.startupState |= MPAppStartupStateFinishedLaunch;
|
||||||
// Here we just opt-in for allowing our bar to be customized throughout the app.
|
// Here we just opt-in for allowing our bar to be customized throughout the app.
|
||||||
if([NSApplication.sharedApplication respondsToSelector:@selector(isAutomaticCustomizeTouchBarMenuItemEnabled)]) {
|
NSApplication.sharedApplication.automaticCustomizeTouchBarMenuItemEnabled = YES;
|
||||||
if(@available(macOS 10.12.2, *)) {
|
|
||||||
NSApplication.sharedApplication.automaticCustomizeTouchBarMenuItemEnabled = YES;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
@@ -236,23 +229,40 @@ typedef NS_OPTIONS(NSInteger, MPAppStartupState) {
|
|||||||
- (void)menuNeedsUpdate:(NSMenu *)menu {
|
- (void)menuNeedsUpdate:(NSMenu *)menu {
|
||||||
if(menu == self.saveMenuItem.menu) {
|
if(menu == self.saveMenuItem.menu) {
|
||||||
MPDocument *document = NSDocumentController.sharedDocumentController.currentDocument;
|
MPDocument *document = NSDocumentController.sharedDocumentController.currentDocument;
|
||||||
BOOL displayDots = (document.fileURL == nil || !document.compositeKey.hasPasswordOrKeyFile);
|
BOOL displayDots = (document.fileURL == nil || !document.compositeKey.hasKeys);
|
||||||
NSString *saveTitle = displayDots ? NSLocalizedString(@"SAVE_WITH_DOTS", "Save file menu item title when save will prompt for a location to save or ask for a password/key") : NSLocalizedString(@"SAVE", "Save file menu item title when save will just save the file");
|
NSString *saveTitle = displayDots ? NSLocalizedString(@"SAVE_WITH_DOTS", "Save file menu item title when save will prompt for a location to save or ask for a password/key") : NSLocalizedString(@"SAVE", "Save file menu item title when save will just save the file");
|
||||||
self.saveMenuItem.title = saveTitle;
|
self.saveMenuItem.title = saveTitle;
|
||||||
}
|
}
|
||||||
if(menu == self.fixAutotypeMenuItem.menu) {
|
else if(menu == self.fixAutotypeMenuItem.menu) {
|
||||||
self.fixAutotypeMenuItem.hidden = !(NSEvent.modifierFlags & NSAlternateKeyMask);
|
self.fixAutotypeMenuItem.hidden = !(NSEvent.modifierFlags & NSEventModifierFlagOption);
|
||||||
}
|
}
|
||||||
if(menu == self.importMenu) {
|
else if(menu == self.importMenu) {
|
||||||
NSMenuItem *exportXML = menu.itemArray.firstObject;
|
NSMenuItem *exportXML = menu.itemArray.firstObject;
|
||||||
[menu removeAllItems];
|
[menu removeAllItems];
|
||||||
|
[menu addItem:exportXML];
|
||||||
for(MPPlugin<MPImportPlugin> * plugin in MPPluginHost.sharedHost.importPlugins) {
|
for(MPPlugin<MPImportPlugin> * plugin in MPPluginHost.sharedHost.importPlugins) {
|
||||||
NSMenuItem *importItem = [[NSMenuItem alloc] init];
|
NSMenuItem *importItem = [[NSMenuItem alloc] init];
|
||||||
[plugin prepareImportMenuItem:importItem];
|
[plugin prepareImportMenuItem:importItem];
|
||||||
|
importItem.submenu = nil; // kill any potential submenu!
|
||||||
|
importItem.representedObject = plugin.identifier;
|
||||||
importItem.target = nil;
|
importItem.target = nil;
|
||||||
importItem.action = @selector(importFromPlugin:);
|
importItem.action = @selector(importWithPlugin:);
|
||||||
|
[menu addItem:importItem];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(menu == self.exportMenu) {
|
||||||
|
NSMenuItem *importXML = menu.itemArray.firstObject;
|
||||||
|
[menu removeAllItems];
|
||||||
|
[menu addItem:importXML];
|
||||||
|
for(MPPlugin<MPExportPlugin> * plugin in MPPluginHost.sharedHost.exportPlugins) {
|
||||||
|
NSMenuItem *exportItem = [[NSMenuItem alloc] init];
|
||||||
|
[plugin prepareExportMenuItem:exportItem];
|
||||||
|
exportItem.submenu = nil; // kill any potential submenu!
|
||||||
|
exportItem.representedObject = plugin.identifier;
|
||||||
|
exportItem.target = nil;
|
||||||
|
exportItem.action = @selector(exportWithPlugin:);
|
||||||
|
[menu addItem:exportItem];
|
||||||
}
|
}
|
||||||
[menu insertItem:exportXML atIndex:0];
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,7 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
#import "MPAttachmentTableDataSource.h"
|
#import "MPAttachmentTableDataSource.h"
|
||||||
|
#import "KPKBinary+MacPassAddtions.h"
|
||||||
#import "MPDocument.h"
|
#import "MPDocument.h"
|
||||||
|
|
||||||
@implementation MPAttachmentTableDataSource
|
@implementation MPAttachmentTableDataSource
|
||||||
@@ -63,59 +64,16 @@
|
|||||||
return YES;
|
return YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (BOOL)tableView:(NSTableView *)tableView writeRowsWithIndexes:(NSIndexSet *)rowIndexes toPasteboard:(NSPasteboard *)pboard {
|
- (id<NSPasteboardWriting>)tableView:(NSTableView *)tableView pasteboardWriterForRow:(NSInteger)row {
|
||||||
[pboard declareTypes:@[NSFilesPromisePboardType] owner:nil];
|
|
||||||
MPDocument *document = tableView.window.windowController.document;
|
|
||||||
KPKEntry *entry = document.selectedEntries.count == 1 ? document.selectedEntries.lastObject : nil;
|
|
||||||
NSMutableArray *fileNames = [[NSMutableArray alloc] init];
|
|
||||||
for(KPKBinary *binary in [entry.binaries objectsAtIndexes:rowIndexes]) {
|
|
||||||
if(binary.name) {
|
|
||||||
[fileNames addObject:binary.name];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
[pboard setPropertyList:fileNames forType:NSFilesPromisePboardType];
|
|
||||||
return YES;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (NSArray<NSString *> *)tableView:(NSTableView *)tableView namesOfPromisedFilesDroppedAtDestination:(NSURL *)dropDestination forDraggedRowsWithIndexes:(NSIndexSet *)indexSet {
|
|
||||||
MPDocument *document = tableView.window.windowController.document;
|
|
||||||
KPKEntry *entry = document.selectedEntries.count == 1 ? document.selectedEntries.lastObject : nil;
|
|
||||||
NSMutableArray<NSString *> *fileNames = [[NSMutableArray alloc] init];
|
|
||||||
NSArray<KPKBinary *> *draggedBinaries = [entry.binaries objectsAtIndexes:indexSet];
|
|
||||||
for(KPKBinary *binary in draggedBinaries) {
|
|
||||||
if(binary.name) {
|
|
||||||
[fileNames addObject:binary.name];
|
|
||||||
dispatch_queue_t queue = dispatch_get_global_queue(QOS_CLASS_USER_INITIATED, 0);
|
|
||||||
dispatch_async(queue, ^{
|
|
||||||
NSError *error;
|
|
||||||
NSURL *saveLocation = [dropDestination URLByAppendingPathComponent:binary.name];
|
|
||||||
BOOL success = [binary saveToLocation:saveLocation error:&error];
|
|
||||||
if(!success && error) {
|
|
||||||
dispatch_async(dispatch_get_main_queue(), ^{
|
|
||||||
[NSApp presentError:error];
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return [fileNames copy];
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
- (id<NSPasteboardWriting>)tableView:(NSTableView *)tableView pasteboardWriterForRow:(NSInteger)row {
|
|
||||||
MPDocument *document = tableView.window.windowController.document;
|
MPDocument *document = tableView.window.windowController.document;
|
||||||
KPKEntry *entry = document.selectedEntries.count == 1 ? document.selectedEntries.lastObject : nil;
|
KPKEntry *entry = document.selectedEntries.count == 1 ? document.selectedEntries.lastObject : nil;
|
||||||
|
|
||||||
if(!entry) {
|
if(!entry) {
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
if (@available(macOS 10.12, *)) {
|
KPKBinary *binary = entry.binaries[row];
|
||||||
KPKBinary *binary = entry.binaries[row];
|
NSFilePromiseProvider *provider = [[NSFilePromiseProvider alloc] initWithFileType:(NSString *)kUTTypeData delegate:binary];
|
||||||
NSFilePromiseProvider *provider = [[NSFilePromiseProvider alloc] initWithFileType:(NSString *)kUTTypeXML delegate:binary];
|
return provider;
|
||||||
return provider;
|
|
||||||
}
|
|
||||||
return nil;
|
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -22,13 +22,19 @@
|
|||||||
|
|
||||||
#import <Cocoa/Cocoa.h>
|
#import <Cocoa/Cocoa.h>
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
@class MPAutotypeEnvironment;
|
||||||
|
@class MPAutotypeContext;
|
||||||
|
|
||||||
@interface MPAutotypeCandidateSelectionViewController : NSViewController
|
@interface MPAutotypeCandidateSelectionViewController : NSViewController
|
||||||
|
|
||||||
@property (copy) NSArray *candidates;
|
@property (strong) MPAutotypeEnvironment *environment;
|
||||||
@property (copy) NSString *windowTitle;
|
@property (copy) NSArray<MPAutotypeContext *> *candidates;
|
||||||
|
|
||||||
- (IBAction)selectAutotypeContext:(id)sender;
|
- (IBAction)selectAutotypeContext:(id)sender;
|
||||||
- (IBAction)cancelSelection:(id)sender;
|
- (IBAction)cancelSelection:(id)sender;
|
||||||
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
||||||
|
|||||||
@@ -22,6 +22,8 @@
|
|||||||
#import "MPAutotypeCandidateSelectionViewController.h"
|
#import "MPAutotypeCandidateSelectionViewController.h"
|
||||||
#import "MPAutotypeContext.h"
|
#import "MPAutotypeContext.h"
|
||||||
#import "MPAutotypeDaemon.h"
|
#import "MPAutotypeDaemon.h"
|
||||||
|
#import "MPAutotypeEnvironment.h"
|
||||||
|
#import "MPExtendedTableCellView.h"
|
||||||
|
|
||||||
#import "KPKNode+IconImage.h"
|
#import "KPKNode+IconImage.h"
|
||||||
|
|
||||||
@@ -31,7 +33,7 @@
|
|||||||
@property (strong) IBOutlet NSButton *selectAutotypeContextButton;
|
@property (strong) IBOutlet NSButton *selectAutotypeContextButton;
|
||||||
@property (strong) IBOutlet NSTableView *contextTableView;
|
@property (strong) IBOutlet NSTableView *contextTableView;
|
||||||
@property (strong) IBOutlet NSTextField *messageTextField;
|
@property (strong) IBOutlet NSTextField *messageTextField;
|
||||||
|
@property (strong) IBOutlet NSImageView *targetApplicationImageView;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@implementation MPAutotypeCandidateSelectionViewController
|
@implementation MPAutotypeCandidateSelectionViewController
|
||||||
@@ -42,9 +44,27 @@
|
|||||||
|
|
||||||
- (void)viewDidLoad {
|
- (void)viewDidLoad {
|
||||||
[super viewDidLoad];
|
[super viewDidLoad];
|
||||||
NSString *template = NSLocalizedString(@"AUTOTYPE_CANDIDATE_SELECTION_WINDOW_MESSAGE_%@", "Message text in the autotype selection window. Placeholder is %1 - windowTitle");
|
|
||||||
self.messageTextField.stringValue = [NSString stringWithFormat:template, self.windowTitle];
|
|
||||||
self.selectAutotypeContextButton.enabled = NO;
|
self.selectAutotypeContextButton.enabled = NO;
|
||||||
|
|
||||||
|
NSRunningApplication *targetApplication = [NSRunningApplication runningApplicationWithProcessIdentifier:self.environment.pid];
|
||||||
|
if(nil != targetApplication) {
|
||||||
|
self.targetApplicationImageView.image = [self _composeInfoImage];
|
||||||
|
}
|
||||||
|
|
||||||
|
NSString *template = @"";
|
||||||
|
if(self.candidates.count > 1) {
|
||||||
|
template = NSLocalizedString(@"AUTOTYPE_CANDIDATE_SELECTION_WINDOW_MESSAGE_%@_%@", "Message text in the autotype selection window. Placeholder is %1 - applicationName, %2 windowTitle");
|
||||||
|
self.messageTextField.stringValue = [NSString stringWithFormat:template, targetApplication.localizedName, self.environment.windowTitle];
|
||||||
|
NSInteger rows = MIN(self.candidates.count, 5);
|
||||||
|
[self.contextTableView.enclosingScrollView.heightAnchor constraintGreaterThanOrEqualToConstant:39 * rows].active = YES;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
template = NSLocalizedString(@"AUTOTYPE_CANDIDATE_CONFIRMATION_WINDOW_MESSAGE_%@_%@", "Message text in the autotype confirmation window. Placeholder is %1 - applicationName, %2 windowTitle");
|
||||||
|
self.messageTextField.stringValue = [NSString stringWithFormat:template, targetApplication.localizedName, self.environment.windowTitle];
|
||||||
|
[self.contextTableView.enclosingScrollView.heightAnchor constraintEqualToConstant:39].active = YES;
|
||||||
|
}
|
||||||
|
|
||||||
NSNotification *notification = [NSNotification notificationWithName:NSTableViewSelectionDidChangeNotification object:self.contextTableView];
|
NSNotification *notification = [NSNotification notificationWithName:NSTableViewSelectionDidChangeNotification object:self.contextTableView];
|
||||||
[self tableViewSelectionDidChange:notification];
|
[self tableViewSelectionDidChange:notification];
|
||||||
}
|
}
|
||||||
@@ -58,12 +78,10 @@
|
|||||||
#pragma mark NSTableViewDelegate
|
#pragma mark NSTableViewDelegate
|
||||||
|
|
||||||
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
|
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
|
||||||
NSTableCellView *view = [tableView makeViewWithIdentifier:tableColumn.identifier owner:self];
|
MPExtendedTableCellView *view = [tableView makeViewWithIdentifier:tableColumn.identifier owner:self];
|
||||||
MPAutotypeContext *context = self.candidates[row];
|
MPAutotypeContext *context = self.candidates[row];
|
||||||
NSString *maskedEvaluatedCommand = context.maskedEvaluatedCommand;
|
view.addionalTextField.stringValue = context.maskedEvaluatedCommand;
|
||||||
NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@\n%@", context.entry.title, maskedEvaluatedCommand]];
|
view.textField.stringValue = context.entry.title;
|
||||||
[string setAttributes:@{NSForegroundColorAttributeName: NSColor.disabledControlTextColor} range:NSMakeRange((string.length - maskedEvaluatedCommand.length), maskedEvaluatedCommand.length)];
|
|
||||||
view.textField.attributedStringValue = string;
|
|
||||||
view.imageView.image = context.entry.iconImage;
|
view.imageView.image = context.entry.iconImage;
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
@@ -80,7 +98,7 @@
|
|||||||
- (void)selectAutotypeContext:(id)sender {
|
- (void)selectAutotypeContext:(id)sender {
|
||||||
NSInteger selectedRow = self.contextTableView.selectedRow;
|
NSInteger selectedRow = self.contextTableView.selectedRow;
|
||||||
if(selectedRow >= 0 && selectedRow < self.candidates.count) {
|
if(selectedRow >= 0 && selectedRow < self.candidates.count) {
|
||||||
[MPAutotypeDaemon.defaultDaemon selectAutotypeCandiate:self.candidates[selectedRow]];
|
[MPAutotypeDaemon.defaultDaemon selectAutotypeContext:self.candidates[selectedRow] forEnvironment:self.environment];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
[self cancelSelection:sender]; // cancel since the selection was invalid!
|
[self cancelSelection:sender]; // cancel since the selection was invalid!
|
||||||
@@ -88,8 +106,44 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (void)cancelSelection:(id)sender {
|
- (void)cancelSelection:(id)sender {
|
||||||
[[MPAutotypeDaemon defaultDaemon] cancelAutotypeCandidateSelection];
|
[MPAutotypeDaemon.defaultDaemon cancelAutotypeContextSelectionForEnvironment:self.environment];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (NSImage *)_composeInfoImage {
|
||||||
|
static const uint32_t iconSize = 64;
|
||||||
|
uint32_t imageWidth = 256;
|
||||||
|
uint32_t imageHeight = 256;
|
||||||
|
|
||||||
|
NSRunningApplication *targetApplication = [NSRunningApplication runningApplicationWithProcessIdentifier:self.environment.pid];
|
||||||
|
CGImageRef windowGrab = CGWindowListCreateImage(CGRectNull, kCGWindowListOptionIncludingWindow, self.environment.windowId, kCGWindowImageDefault | kCGWindowImageBestResolution);
|
||||||
|
NSImage *windowImage = [[NSImage alloc] initWithCGImage:windowGrab size:NSZeroSize];
|
||||||
|
CFRelease(windowGrab);
|
||||||
|
|
||||||
|
if(windowImage.size.width > windowImage.size.height) {
|
||||||
|
imageHeight = imageWidth * (windowImage.size.height / windowImage.size.width);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
imageWidth = imageWidth * (windowImage.size.width / windowImage.size.height);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!targetApplication.icon) {
|
||||||
|
return windowImage;
|
||||||
|
}
|
||||||
|
|
||||||
|
NSImage *composite = [[NSImage alloc] initWithSize:NSMakeSize(MAX(imageWidth, iconSize), MAX(imageHeight, iconSize))];
|
||||||
|
[composite lockFocus];
|
||||||
|
/* draw the image at the top left */
|
||||||
|
[windowImage drawInRect:NSMakeRect(composite.size.width - imageWidth, composite.size.height - imageHeight, imageWidth, imageHeight)
|
||||||
|
fromRect:NSZeroRect
|
||||||
|
operation:NSCompositingOperationSourceOver
|
||||||
|
fraction:1];
|
||||||
|
/* draw the app icon at the bottom left */
|
||||||
|
[targetApplication.icon drawInRect:NSMakeRect(0, 0, iconSize, iconSize)
|
||||||
|
fromRect:NSZeroRect
|
||||||
|
operation:NSCompositingOperationSourceOver
|
||||||
|
fraction:1];
|
||||||
|
[composite unlockFocus];
|
||||||
|
return composite;
|
||||||
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
@class DDHotKey;
|
@class DDHotKey;
|
||||||
@class KPKEntry;
|
@class KPKEntry;
|
||||||
@class MPAutotypeContext;
|
@class MPAutotypeContext;
|
||||||
@class MPAutotypeExecutionContext;
|
@class MPAutotypeEnvironment;
|
||||||
/**
|
/**
|
||||||
* The autotype daemon is responsible for registering the global hotkey and to perform any autotype actions
|
* The autotype daemon is responsible for registering the global hotkey and to perform any autotype actions
|
||||||
*/
|
*/
|
||||||
@@ -40,7 +40,7 @@
|
|||||||
|
|
||||||
- (void)performAutotypeForEntry:(KPKEntry *)entry;
|
- (void)performAutotypeForEntry:(KPKEntry *)entry;
|
||||||
- (void)performAutotypeForEntry:(KPKEntry *)entry overrideSequence:(NSString *)sequence;
|
- (void)performAutotypeForEntry:(KPKEntry *)entry overrideSequence:(NSString *)sequence;
|
||||||
- (void)selectAutotypeCandiate:(MPAutotypeContext *)context;
|
- (void)selectAutotypeContext:(MPAutotypeContext *)context forEnvironment:(MPAutotypeEnvironment *)environment;
|
||||||
- (void)cancelAutotypeCandidateSelection;
|
- (void)cancelAutotypeContextSelectionForEnvironment:(MPAutotypeEnvironment *)environment;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
#import "MPDocumentWindowController.h"
|
#import "MPDocumentWindowController.h"
|
||||||
#import "MPAutotypeCommand.h"
|
#import "MPAutotypeCommand.h"
|
||||||
#import "MPAutotypeContext.h"
|
#import "MPAutotypeContext.h"
|
||||||
|
#import "MPAutotypeEnvironment.h"
|
||||||
#import "MPAutotypePaste.h"
|
#import "MPAutotypePaste.h"
|
||||||
#import "MPAutotypeDelay.h"
|
#import "MPAutotypeDelay.h"
|
||||||
#import "MPPasteBoardController.h"
|
#import "MPPasteBoardController.h"
|
||||||
@@ -45,16 +46,12 @@
|
|||||||
#import "KeePassKit/KeePassKit.h"
|
#import "KeePassKit/KeePassKit.h"
|
||||||
#import <Carbon/Carbon.h>
|
#import <Carbon/Carbon.h>
|
||||||
|
|
||||||
NSString *const kMPWindowTitleKey = @"kMPWindowTitleKey";
|
|
||||||
NSString *const kMPProcessIdentifierKey = @"kMPProcessIdentifierKey";
|
|
||||||
|
|
||||||
@interface MPAutotypeDaemon ()
|
@interface MPAutotypeDaemon ()
|
||||||
|
|
||||||
@property (nonatomic, assign) BOOL enabled;
|
@property (nonatomic, assign) BOOL enabled;
|
||||||
@property (nonatomic, copy) NSData *hotKeyData;
|
@property (nonatomic, copy) NSData *hotKeyData;
|
||||||
@property (strong) DDHotKey *registredHotKey;
|
@property (strong) DDHotKey *registredHotKey;
|
||||||
@property (assign) pid_t targetPID; // The pid of the process we want to sent commands to
|
|
||||||
@property (copy) NSString *targetWindowTitle; // The title of the window that we are targeting
|
|
||||||
@property (strong) NSRunningApplication *previousApplication; // The application that was active before we got invoked
|
@property (strong) NSRunningApplication *previousApplication; // The application that was active before we got invoked
|
||||||
@property (assign) NSTimeInterval userActionRequested;
|
@property (assign) NSTimeInterval userActionRequested;
|
||||||
@property (strong) id applicationActivationObserver;
|
@property (strong) id applicationActivationObserver;
|
||||||
@@ -85,7 +82,6 @@ static MPAutotypeDaemon *_sharedInstance;
|
|||||||
self = [super init];
|
self = [super init];
|
||||||
if (self) {
|
if (self) {
|
||||||
_enabled = NO;
|
_enabled = NO;
|
||||||
_targetPID = -1;
|
|
||||||
_userActionRequested = NSDate.distantPast.timeIntervalSinceReferenceDate;
|
_userActionRequested = NSDate.distantPast.timeIntervalSinceReferenceDate;
|
||||||
[self bind:NSStringFromSelector(@selector(enabled))
|
[self bind:NSStringFromSelector(@selector(enabled))
|
||||||
toObject:NSUserDefaultsController.sharedUserDefaultsController
|
toObject:NSUserDefaultsController.sharedUserDefaultsController
|
||||||
@@ -144,41 +140,63 @@ static MPAutotypeDaemon *_sharedInstance;
|
|||||||
- (void)performAutotypeForEntry:(KPKEntry *)entry {
|
- (void)performAutotypeForEntry:(KPKEntry *)entry {
|
||||||
[self performAutotypeForEntry:entry overrideSequence:nil];
|
[self performAutotypeForEntry:entry overrideSequence:nil];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)performAutotypeForEntry:(KPKEntry *)entry overrideSequence:(NSString *)sequence {
|
- (void)performAutotypeForEntry:(KPKEntry *)entry overrideSequence:(NSString *)sequence {
|
||||||
if(entry) {
|
if(entry) {
|
||||||
[self _updateTargeInformationForApplication:self.previousApplication];
|
MPAutotypeEnvironment *env = [MPAutotypeEnvironment environmentWithTargetApplication:self.previousApplication entry:entry overrideSequence:sequence];
|
||||||
[self _performAutotypeForEntry:entry];
|
[self _runAutotypeWithEnvironment:env];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)_didPressHotKey {
|
- (void)_didPressHotKey {
|
||||||
[self _updateTargetInformationForFrontMostApplication];
|
MPAutotypeEnvironment *env = [MPAutotypeEnvironment environmentWithTargetApplication:NSWorkspace.sharedWorkspace.frontmostApplication entry:nil overrideSequence:nil];
|
||||||
[self _performAutotypeForEntry:nil];
|
[self _runAutotypeWithEnvironment:env];
|
||||||
}
|
|
||||||
|
|
||||||
#pragma mark -
|
|
||||||
#pragma mark Actions
|
|
||||||
- (void)selectAutotypeCandiate:(MPAutotypeContext *)context {
|
|
||||||
[self.matchSelectionWindow orderOut:self];
|
|
||||||
self.matchSelectionWindow = nil;
|
|
||||||
[self _performAutotypeForContext:context];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)cancelAutotypeCandidateSelection {
|
|
||||||
[self.matchSelectionWindow orderOut:self];
|
|
||||||
self.matchSelectionWindow = nil;
|
|
||||||
if(self.targetPID) {
|
|
||||||
[self _orderApplicationToFront:self.targetPID forContext:nil];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
#pragma mark Autotype Execution
|
#pragma mark Autotype Execution
|
||||||
|
- (void)selectAutotypeContext:(MPAutotypeContext *)context forEnvironment:(MPAutotypeEnvironment *)environment {
|
||||||
|
[self.matchSelectionWindow orderOut:self];
|
||||||
|
self.matchSelectionWindow = nil;
|
||||||
|
[self _runAutotypeWithEnvironment:environment forContext:context];
|
||||||
|
if(environment.hidden) {
|
||||||
|
[NSApplication.sharedApplication hide:nil];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)cancelAutotypeContextSelectionForEnvironment:(MPAutotypeEnvironment *)environment {
|
||||||
|
[self.matchSelectionWindow orderOut:self];
|
||||||
|
self.matchSelectionWindow = nil;
|
||||||
|
if(environment.hidden) {
|
||||||
|
[NSApplication.sharedApplication hide:nil];
|
||||||
|
}
|
||||||
|
if(environment.pid) {
|
||||||
|
[self _orderApplicationToFront:environment.pid completionHandler:nil];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)_runAutotypeAfterDatabaseUnlockWithEnvironment:(MPAutotypeEnvironment *)environment requestedAt:(NSTimeInterval)requestTime {
|
||||||
|
NSTimeInterval now = NSDate.date.timeIntervalSinceReferenceDate;
|
||||||
|
if(now - requestTime > 30) {
|
||||||
|
NSUserNotification *notification = [[NSUserNotification alloc] init];
|
||||||
|
notification.title = NSLocalizedString(@"AUTOTYPE_NOTIFICATION_TIMED_OUT_TITLE", "Title for the notification when the Autotype operation timed out");
|
||||||
|
notification.informativeText = NSLocalizedString(@"AUTOTYPE_TIMED_OUT", "Notficication: Autotype timed out");
|
||||||
|
notification.userInfo = @{ MPUserNotificationTypeKey: MPUserNotificationTypeAutotypeFeedback };
|
||||||
|
[NSUserNotificationCenter.defaultUserNotificationCenter deliverNotification:notification];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
[self _runAutotypeWithEnvironment:environment];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)_runAutotypeWithEnvironment:(MPAutotypeEnvironment *)env {
|
||||||
|
if(env.isSelfTargeting) {
|
||||||
|
return; // we do not want to target ourselves
|
||||||
|
}
|
||||||
|
|
||||||
- (void)_performAutotypeForEntry:(KPKEntry *)entryOrNil {
|
|
||||||
if(!self.hasNecessaryAutotypePermissions) {
|
if(!self.hasNecessaryAutotypePermissions) {
|
||||||
NSUserNotification *notification = [[NSUserNotification alloc] init];
|
NSUserNotification *notification = [[NSUserNotification alloc] init];
|
||||||
notification.title = NSApp.applicationName;
|
notification.title = NSLocalizedString(@"AUTOTYPE_NOTIFICATION_PERMISSIONS_MISSING_TITLE", "Title for autotype feedback on missing permissions");
|
||||||
notification.informativeText = NSLocalizedString(@"AUTOTYPE_NOTIFICATION_MACPASS_IS_MISSING_PERMISSIONS", "Notification: Autotype failed, MacPass has not enough permissions to perform autotype");
|
notification.informativeText = NSLocalizedString(@"AUTOTYPE_NOTIFICATION_MACPASS_IS_MISSING_PERMISSIONS", "Notification: Autotype failed, MacPass has not enough permissions to perform autotype");
|
||||||
notification.actionButtonTitle = NSLocalizedString(@"SHOW_AUTOTYPE_DOCTOR", "Action button in Notification to show the Autotype Doctor");
|
notification.actionButtonTitle = NSLocalizedString(@"SHOW_AUTOTYPE_DOCTOR", "Action button in Notification to show the Autotype Doctor");
|
||||||
notification.userInfo = @{ MPUserNotificationTypeKey: MPUserNotificationTypeRunAutotypeDoctor };
|
notification.userInfo = @{ MPUserNotificationTypeKey: MPUserNotificationTypeRunAutotypeDoctor };
|
||||||
@@ -186,24 +204,28 @@ static MPAutotypeDaemon *_sharedInstance;
|
|||||||
[NSUserNotificationCenter.defaultUserNotificationCenter deliverNotification:notification];
|
[NSUserNotificationCenter.defaultUserNotificationCenter deliverNotification:notification];
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
NSInteger pid = NSProcessInfo.processInfo.processIdentifier;
|
|
||||||
if(self.targetPID == pid) {
|
|
||||||
return; // We do not perform Autotype on ourselves
|
|
||||||
}
|
|
||||||
|
|
||||||
/* find autotype documents */
|
/* find autotype documents */
|
||||||
NSArray *documents = NSApp.orderedDocuments;
|
NSArray *documents = NSApp.orderedDocuments;
|
||||||
/* No open document, inform the user and return without any action */
|
/* No open document, inform the user and return without any action */
|
||||||
if(documents.count == 0) {
|
if(documents.count == 0) {
|
||||||
NSUserNotification *notification = [[NSUserNotification alloc] init];
|
NSUserNotification *notification = [[NSUserNotification alloc] init];
|
||||||
notification.title = NSApp.applicationName;
|
notification.title = NSLocalizedString(@"AUTOTYPE_NOTIFICATION_NO_DOCUMENTS_TITLE", "Notification: Title for autotype feedback");
|
||||||
notification.informativeText = NSLocalizedString(@"AUTOTYPE_OVERLAY_NO_DOCUMENTS", "Notification: Autotype failed, no documents are open");
|
notification.informativeText = NSLocalizedString(@"AUTOTYPE_NOTIFICATION_NO_DOCUMENTS_INFORMATIVE_TEXT", "Notification: Autotype failed, no documents are open");
|
||||||
notification.actionButtonTitle = NSLocalizedString(@"OPEN_DOCUMENT", "Action button in Notification to open a document");
|
notification.actionButtonTitle = NSLocalizedString(@"OPEN_DOCUMENT", "Action button in Notification to open a document");
|
||||||
notification.userInfo = @{ MPUserNotificationTypeKey: MPUserNotificationTypeAutotypeOpenDocumentRequest };
|
notification.userInfo = @{ MPUserNotificationTypeKey: MPUserNotificationTypeAutotypeOpenDocumentRequest };
|
||||||
notification.showsButtons = YES;
|
notification.showsButtons = YES;
|
||||||
[NSUserNotificationCenter.defaultUserNotificationCenter deliverNotification:notification];
|
[NSUserNotificationCenter.defaultUserNotificationCenter deliverNotification:notification];
|
||||||
self.userActionRequested = NSDate.date.timeIntervalSinceReferenceDate;
|
NSNotificationCenter * __weak nc = [NSNotificationCenter defaultCenter];
|
||||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didUnlockDatabase:) name:MPDocumentDidUnlockDatabaseNotification object:nil];
|
MPAutotypeDaemon * __weak welf = self;
|
||||||
|
NSTimeInterval requestTime = NSDate.date.timeIntervalSinceReferenceDate;
|
||||||
|
id __block unlockToken = [nc addObserverForName:MPDocumentDidUnlockDatabaseNotification
|
||||||
|
object:nil
|
||||||
|
queue:NSOperationQueue.mainQueue
|
||||||
|
usingBlock:^(NSNotification *notification) {
|
||||||
|
[welf _runAutotypeAfterDatabaseUnlockWithEnvironment:env requestedAt:requestTime];
|
||||||
|
[nc removeObserver:unlockToken];
|
||||||
|
}];
|
||||||
return; // Unlock should trigger autotype
|
return; // Unlock should trigger autotype
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -211,6 +233,7 @@ static MPAutotypeDaemon *_sharedInstance;
|
|||||||
MPDocument *document = evaluatedObject;
|
MPDocument *document = evaluatedObject;
|
||||||
return !document.encrypted;
|
return !document.encrypted;
|
||||||
}];
|
}];
|
||||||
|
|
||||||
NSArray *unlockedDocuments = [documents filteredArrayUsingPredicate:filterPredicate];
|
NSArray *unlockedDocuments = [documents filteredArrayUsingPredicate:filterPredicate];
|
||||||
/* We look for all unlocked documents, if all open documents are locked, we pop the front most and try to search again */
|
/* We look for all unlocked documents, if all open documents are locked, we pop the front most and try to search again */
|
||||||
if(unlockedDocuments.count == 0) {
|
if(unlockedDocuments.count == 0) {
|
||||||
@@ -221,61 +244,82 @@ static MPAutotypeDaemon *_sharedInstance;
|
|||||||
[document showWindows];
|
[document showWindows];
|
||||||
MPDocumentWindowController *wc = document.windowControllers.firstObject;
|
MPDocumentWindowController *wc = document.windowControllers.firstObject;
|
||||||
[wc showPasswordInputWithMessage:NSLocalizedString(@"AUTOTYPE_MESSAGE_UNLOCK_DATABASE", @"Message displayed to the user to unlock the database to perform global autotype")];
|
[wc showPasswordInputWithMessage:NSLocalizedString(@"AUTOTYPE_MESSAGE_UNLOCK_DATABASE", @"Message displayed to the user to unlock the database to perform global autotype")];
|
||||||
self.userActionRequested = NSDate.date.timeIntervalSinceReferenceDate;
|
NSNotificationCenter * __weak nc = [NSNotificationCenter defaultCenter];
|
||||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didUnlockDatabase:) name:MPDocumentDidUnlockDatabaseNotification object:nil];
|
MPAutotypeDaemon * __weak welf = self;
|
||||||
|
NSTimeInterval requestTime = NSDate.date.timeIntervalSinceReferenceDate;
|
||||||
|
id __block unlockToken = [nc addObserverForName:MPDocumentDidUnlockDatabaseNotification
|
||||||
|
object:nil
|
||||||
|
queue:NSOperationQueue.mainQueue
|
||||||
|
usingBlock:^(NSNotification *notification) {
|
||||||
|
[welf _runAutotypeAfterDatabaseUnlockWithEnvironment:env requestedAt:requestTime];
|
||||||
|
|
||||||
|
[nc removeObserver:unlockToken];
|
||||||
|
}];
|
||||||
return; // wait for the unlock to happen
|
return; // wait for the unlock to happen
|
||||||
}
|
}
|
||||||
|
|
||||||
MPAutotypeContext *context = [self _autotypeContextForDocuments:documents forWindowTitle:self.targetWindowTitle preferredEntry:entryOrNil];
|
MPAutotypeContext *context = [self _autotypeContextForDocuments:documents withEnvironment:env];
|
||||||
/* TODO: that's popping up if the multi selection dialog goes up! */
|
|
||||||
if(self.matchSelectionWindow) {
|
if(self.matchSelectionWindow) {
|
||||||
return; // we present the match selection window, just return
|
return; // we present the match selection window, just return
|
||||||
}
|
}
|
||||||
if(!entryOrNil) {
|
if(!env.preferredEntry) {
|
||||||
NSUserNotification *notification = [[NSUserNotification alloc] init];
|
NSUserNotification *notification = [[NSUserNotification alloc] init];
|
||||||
notification.title = NSApp.applicationName;
|
notification.title = NSLocalizedString(@"AUTOTYPE_NOTIFICATION_MATCH_TITLE", "Notification: Title for autotype feedback");
|
||||||
notification.userInfo = @{ MPUserNotificationTypeKey: MPUserNotificationTypeAutotypeFeedback };
|
notification.userInfo = @{ MPUserNotificationTypeKey: MPUserNotificationTypeAutotypeFeedback };
|
||||||
if(context) {
|
if(context) {
|
||||||
notification.informativeText = [NSString stringWithFormat:NSLocalizedString(@"AUTOTYPE_OVERLAY_SINGLE_MATCH_FOR_%@", "Notification: Autotype found a single match for %@ (string placeholder)."), self.targetWindowTitle];
|
notification.informativeText = [NSString stringWithFormat:NSLocalizedString(@"AUTOTYPE_NOTIFICATION_SINGLE_MATCH_FOR_%@", "Notification: Autotype found a single match for %@ (string placeholder)."), env.windowTitle];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
notification.informativeText = [NSString stringWithFormat:NSLocalizedString(@"AUTOTYPE_OVERLAY_NO_MATCH_FOR_%@", "Noticiation: Autotype failed to find a match for %@ (string placeholder)"), self.targetWindowTitle];
|
notification.informativeText = [NSString stringWithFormat:NSLocalizedString(@"AUTOTYPE_NOTIFICATION_NO_MATCH_FOR_%@", "Noticiation: Autotype failed to find a match for %@ (string placeholder)"), env.windowTitle];
|
||||||
}
|
}
|
||||||
[NSUserNotificationCenter.defaultUserNotificationCenter deliverNotification:notification];
|
[NSUserNotificationCenter.defaultUserNotificationCenter deliverNotification:notification];
|
||||||
}
|
}
|
||||||
[self _performAutotypeForContext:context];
|
[self _runAutotypeWithEnvironment:env forContext:context];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (MPAutotypeContext *)_autotypeContextForDocuments:(NSArray<MPDocument *> *)documents forWindowTitle:(NSString *)windowTitle preferredEntry:(KPKEntry *)entry {
|
- (MPAutotypeContext *)_autotypeContextForDocuments:(NSArray<MPDocument *> *)documents withEnvironment:(MPAutotypeEnvironment *)environment {
|
||||||
/*
|
|
||||||
Query the document to generate a autotype command list for the window title
|
|
||||||
We do not care where this came form, just get the autotype commands
|
|
||||||
*/
|
|
||||||
NSMutableArray *autotypeCandidates = [[NSMutableArray alloc] init];
|
NSMutableArray *autotypeCandidates = [[NSMutableArray alloc] init];
|
||||||
for(MPDocument *document in documents) {
|
for(MPDocument *document in documents) {
|
||||||
NSArray *contexts = [document autotypContextsForWindowTitle:windowTitle preferredEntry:entry];
|
NSArray *contexts = [document autotypContextsForWindowTitle:environment.windowTitle preferredEntry:environment.preferredEntry];
|
||||||
if(contexts ) {
|
if(contexts ) {
|
||||||
[autotypeCandidates addObjectsFromArray:contexts];
|
[autotypeCandidates addObjectsFromArray:contexts];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
NSUInteger candidates = autotypeCandidates.count;
|
|
||||||
if(candidates == 0) {
|
if(autotypeCandidates.count == 0) {
|
||||||
|
return nil; // we do not have found anything
|
||||||
|
}
|
||||||
|
/* present selection and return if more than one hit */
|
||||||
|
if(autotypeCandidates.count > 1) {
|
||||||
|
[self _presentCandiadates:autotypeCandidates forEnvironment:environment];
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
if(candidates == 1 ) {
|
|
||||||
return autotypeCandidates.lastObject;
|
BOOL isGlobalAutotype = (environment.preferredEntry == nil);
|
||||||
|
BOOL alwaysShowCandidateSelection = [NSUserDefaults.standardUserDefaults boolForKey:kMPSettingsKeyGloablAutotypeAlwaysShowCandidateSelection];
|
||||||
|
|
||||||
|
/* present confirmation if set on global autotype */
|
||||||
|
if(isGlobalAutotype && alwaysShowCandidateSelection) {
|
||||||
|
[self _presentCandiadates:autotypeCandidates forEnvironment:environment];
|
||||||
|
return nil;
|
||||||
}
|
}
|
||||||
[self _presentCandiadates:autotypeCandidates forWindowTitle:windowTitle];
|
/* return single hit */
|
||||||
return nil; // Nothing to do, we get called back by the window
|
return autotypeCandidates.firstObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)_performAutotypeForContext:(MPAutotypeContext *)context {
|
- (void)_runAutotypeWithEnvironment:(MPAutotypeEnvironment *)environment forContext:(MPAutotypeContext *)context {
|
||||||
|
if(nil == environment) {
|
||||||
|
return; // no environment to work in
|
||||||
|
}
|
||||||
if(nil == context) {
|
if(nil == context) {
|
||||||
return; // No context to work with
|
return; // No context to work with
|
||||||
}
|
}
|
||||||
|
__weak MPAutotypeDaemon *welf = self;
|
||||||
if(NO == [self _orderApplicationToFront:self.targetPID forContext:(MPAutotypeContext *)context]) {
|
BOOL appIsFrontmost = [self _orderApplicationToFront:environment.pid completionHandler:^{
|
||||||
return; // We will get called back when the application is in front - hopfully
|
[welf _runAutotypeWithEnvironment:environment forContext:context];
|
||||||
|
}];
|
||||||
|
if(!appIsFrontmost) {
|
||||||
|
return; // We will get called back when the application is in front
|
||||||
}
|
}
|
||||||
|
|
||||||
useconds_t globalDelay = 0;
|
useconds_t globalDelay = 0;
|
||||||
@@ -298,6 +342,10 @@ static MPAutotypeDaemon *_sharedInstance;
|
|||||||
usleep(globalDelay*NSEC_PER_USEC);
|
usleep(globalDelay*NSEC_PER_USEC);
|
||||||
}
|
}
|
||||||
[command execute];
|
[command execute];
|
||||||
|
/* re-hide after every command since this might have put us back up front */
|
||||||
|
if(environment.hidden) {
|
||||||
|
[NSApplication.sharedApplication hide:nil];
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -322,47 +370,16 @@ static MPAutotypeDaemon *_sharedInstance;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSDictionary *)_infoDictionaryForApplication:(NSRunningApplication *)application {
|
- (void)_presentCandiadates:(NSArray *)candidates forEnvironment:(MPAutotypeEnvironment *)environment {
|
||||||
NSArray *currentWindows = CFBridgingRelease(CGWindowListCopyWindowInfo(kCGWindowListExcludeDesktopElements, kCGNullWindowID));
|
|
||||||
NSArray *windowNumbers = [NSWindow windowNumbersWithOptions:NSWindowNumberListAllApplications];
|
|
||||||
NSUInteger minZIndex = NSNotFound;
|
|
||||||
NSDictionary *infoDict = nil;
|
|
||||||
for(NSDictionary *windowDict in currentWindows) {
|
|
||||||
NSString *windowTitle = windowDict[(NSString *)kCGWindowName];
|
|
||||||
if(windowTitle.length <= 0) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
NSNumber *processId = windowDict[(NSString *)kCGWindowOwnerPID];
|
|
||||||
if(processId && [processId isEqualToNumber:@(application.processIdentifier)]) {
|
|
||||||
|
|
||||||
NSNumber *number = (NSNumber *)windowDict[(NSString *)kCGWindowNumber];
|
|
||||||
NSUInteger zIndex = [windowNumbers indexOfObject:number];
|
|
||||||
if(zIndex < minZIndex) {
|
|
||||||
minZIndex = zIndex;
|
|
||||||
infoDict = @{
|
|
||||||
kMPWindowTitleKey: windowTitle,
|
|
||||||
kMPProcessIdentifierKey : processId
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(currentWindows.count > 0 && infoDict.count == 0) {
|
|
||||||
// show some information about not being able to determine any windows
|
|
||||||
NSLog(@"Unable to retrieve any window names. If you encounter this issue you might be running 10.15 and MacPass has no permission for screen recording.");
|
|
||||||
}
|
|
||||||
return infoDict;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)_presentCandiadates:(NSArray *)candidates forWindowTitle:(NSString *)windowTitle {
|
|
||||||
if(!self.matchSelectionWindow) {
|
if(!self.matchSelectionWindow) {
|
||||||
self.matchSelectionWindow = [[NSPanel alloc] initWithContentRect:NSMakeRect(0, 0, 100, 100)
|
self.matchSelectionWindow = [[NSPanel alloc] initWithContentRect:NSMakeRect(0, 0, 100, 100)
|
||||||
styleMask:NSWindowStyleMaskNonactivatingPanel|NSWindowStyleMaskTitled
|
styleMask:NSWindowStyleMaskResizable|NSWindowStyleMaskNonactivatingPanel|NSWindowStyleMaskTitled
|
||||||
backing:NSBackingStoreRetained
|
backing:NSBackingStoreBuffered
|
||||||
defer:YES];
|
defer:YES];
|
||||||
self.matchSelectionWindow.level = kCGAssistiveTechHighWindowLevel;
|
self.matchSelectionWindow.level = kCGAssistiveTechHighWindowLevel;
|
||||||
MPAutotypeCandidateSelectionViewController *vc = [[MPAutotypeCandidateSelectionViewController alloc] init];
|
MPAutotypeCandidateSelectionViewController *vc = [[MPAutotypeCandidateSelectionViewController alloc] init];
|
||||||
vc.candidates = candidates;
|
vc.candidates = candidates;
|
||||||
vc.windowTitle = windowTitle;
|
vc.environment = environment;
|
||||||
self.matchSelectionWindow.collectionBehavior |= (NSWindowCollectionBehaviorFullScreenAuxiliary |
|
self.matchSelectionWindow.collectionBehavior |= (NSWindowCollectionBehaviorFullScreenAuxiliary |
|
||||||
NSWindowCollectionBehaviorMoveToActiveSpace |
|
NSWindowCollectionBehaviorMoveToActiveSpace |
|
||||||
NSWindowCollectionBehaviorTransient );
|
NSWindowCollectionBehaviorTransient );
|
||||||
@@ -373,24 +390,6 @@ static MPAutotypeDaemon *_sharedInstance;
|
|||||||
[self.matchSelectionWindow makeKeyAndOrderFront:self];
|
[self.matchSelectionWindow makeKeyAndOrderFront:self];
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark -
|
|
||||||
#pragma mark MPDocument Notifications
|
|
||||||
- (void)_didUnlockDatabase:(NSNotification *)notification {
|
|
||||||
/* Remove ourselves and call again to search matches */
|
|
||||||
[NSNotificationCenter.defaultCenter removeObserver:self name:MPDocumentDidUnlockDatabaseNotification object:nil];
|
|
||||||
NSTimeInterval now = NSDate.date.timeIntervalSinceReferenceDate;
|
|
||||||
if(now - self.userActionRequested > 30) {
|
|
||||||
NSUserNotification *notification = [[NSUserNotification alloc] init];
|
|
||||||
notification.title = NSApp.applicationName;
|
|
||||||
notification.informativeText = NSLocalizedString(@"AUTOTYPE_TIMED_OUT", "Notficication: Autotype timed out");
|
|
||||||
notification.userInfo = @{ MPUserNotificationTypeKey: MPUserNotificationTypeAutotypeFeedback };
|
|
||||||
[NSUserNotificationCenter.defaultUserNotificationCenter deliverNotification:notification];
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
[self _performAutotypeForEntry:nil];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
#pragma mark NSApplication Notifications
|
#pragma mark NSApplication Notifications
|
||||||
- (void)_didDeactivateApplication:(NSNotification *)notification {
|
- (void)_didDeactivateApplication:(NSNotification *)notification {
|
||||||
@@ -400,55 +399,25 @@ static MPAutotypeDaemon *_sharedInstance;
|
|||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
#pragma mark Application information
|
#pragma mark Application information
|
||||||
- (BOOL)_orderApplicationToFront:(pid_t)processIdentifier forContext:(MPAutotypeContext *)context {
|
//- (BOOL)_orderApplicationToFront:(pid_t)processIdentifier inEnvironment:(MPAutotypeEnvironment *) environment {
|
||||||
|
- (BOOL)_orderApplicationToFront:(pid_t)processIdentifier completionHandler:(void (^_Nullable)(void))completionHandler {
|
||||||
NSRunningApplication *runingApplication = [NSRunningApplication runningApplicationWithProcessIdentifier:processIdentifier];
|
NSRunningApplication *runingApplication = [NSRunningApplication runningApplicationWithProcessIdentifier:processIdentifier];
|
||||||
NSRunningApplication *frontApplication = NSWorkspace.sharedWorkspace.frontmostApplication;
|
NSRunningApplication *frontApplication = NSWorkspace.sharedWorkspace.frontmostApplication;
|
||||||
if(frontApplication.processIdentifier == processIdentifier) {
|
if(frontApplication.processIdentifier == processIdentifier) {
|
||||||
return YES;
|
return YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* cleanup before to make sure everything is top notch */
|
NSNotificationCenter * __weak nc = NSWorkspace.sharedWorkspace.notificationCenter;
|
||||||
if(self.applicationActivationObserver) {
|
id __block didActivateToken = [nc addObserverForName:NSWorkspaceDidActivateApplicationNotification
|
||||||
[NSWorkspace.sharedWorkspace.notificationCenter removeObserver:self.applicationActivationObserver name:NSWorkspaceDidActivateApplicationNotification object:nil];
|
object:nil
|
||||||
self.applicationActivationObserver = nil;
|
queue:NSOperationQueue.mainQueue
|
||||||
}
|
usingBlock:^(NSNotification *notification) {
|
||||||
|
[nc removeObserver:didActivateToken];
|
||||||
self.applicationActivationObserver = [NSWorkspace.sharedWorkspace.notificationCenter addObserverForName:NSWorkspaceDidActivateApplicationNotification object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) {
|
if(completionHandler) {
|
||||||
if(self.applicationActivationObserver) {
|
completionHandler();
|
||||||
[NSWorkspace.sharedWorkspace.notificationCenter removeObserver:self.applicationActivationObserver name:NSWorkspaceDidActivateApplicationNotification object:nil];
|
|
||||||
}
|
}
|
||||||
[self _performAutotypeForContext:context];
|
|
||||||
}];
|
}];
|
||||||
|
|
||||||
[runingApplication activateWithOptions:NSApplicationActivateIgnoringOtherApps];
|
[runingApplication activateWithOptions:NSApplicationActivateIgnoringOtherApps];
|
||||||
return NO;
|
return NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)_updateTargetInformationForFrontMostApplication {
|
|
||||||
[self _updateTargeInformationForApplication:NSWorkspace.sharedWorkspace.frontmostApplication];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)_updateTargeInformationForApplication:(NSRunningApplication *)application {
|
|
||||||
if(!application) {
|
|
||||||
self.targetPID = -1;
|
|
||||||
self.targetWindowTitle = @"";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
NSDictionary *frontApplicationInfoDict = [self _infoDictionaryForApplication:application];
|
|
||||||
|
|
||||||
self.targetPID = [frontApplicationInfoDict[kMPProcessIdentifierKey] intValue];
|
|
||||||
self.targetWindowTitle = frontApplicationInfoDict[kMPWindowTitleKey];
|
|
||||||
|
|
||||||
/* if we have any resolvers, let them provide the window title */
|
|
||||||
NSArray *resolvers = [MPPluginHost.sharedHost windowTitleResolverForRunningApplication:application];
|
|
||||||
for(MPPlugin<MPAutotypeWindowTitleResolverPlugin> *resolver in resolvers) {
|
|
||||||
NSString *windowTitle = [resolver windowTitleForRunningApplication:application];
|
|
||||||
if(windowTitle.length > 0) {
|
|
||||||
self.targetWindowTitle = windowTitle;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -63,22 +63,41 @@
|
|||||||
|
|
||||||
- (BOOL)hasScreenRecordingPermissions:(NSError *__autoreleasing*)error {
|
- (BOOL)hasScreenRecordingPermissions:(NSError *__autoreleasing*)error {
|
||||||
/* macos 10.14 and lower do not require screen recording permission to get window titles */
|
/* macos 10.14 and lower do not require screen recording permission to get window titles */
|
||||||
if (@available(macOS 10.15, *)) {
|
|
||||||
|
/*
|
||||||
|
Solution is heavily inspired by Craig Hockenberry's
|
||||||
|
https://stackoverflow.com/questions/56597221/detecting-screen-recording-settings-on-macos-catalina/58985069#58985069
|
||||||
|
*/
|
||||||
|
if(@available(macOS 10.15, *)) {
|
||||||
CFArrayRef windowList = CGWindowListCopyWindowInfo(kCGWindowListOptionOnScreenOnly, kCGNullWindowID);
|
CFArrayRef windowList = CGWindowListCopyWindowInfo(kCGWindowListOptionOnScreenOnly, kCGNullWindowID);
|
||||||
NSUInteger numberOfWindows = CFArrayGetCount(windowList);
|
NSUInteger numberOfWindows = CFArrayGetCount(windowList);
|
||||||
NSUInteger numberOfWindowsWithName = 0;
|
BOOL canRecordScreen = NO;
|
||||||
for(int idx = 0; idx < numberOfWindows; idx++) {
|
for(int idx = 0; idx < numberOfWindows; idx++) {
|
||||||
NSDictionary *windowInfo = (NSDictionary *)CFArrayGetValueAtIndex(windowList, idx);
|
NSDictionary *windowInfo = (NSDictionary *)CFArrayGetValueAtIndex(windowList, idx);
|
||||||
|
NSNumber *ownerPid = windowInfo[(id)kCGWindowOwnerPID];
|
||||||
|
/*
|
||||||
|
Skip over our own windows
|
||||||
|
*/
|
||||||
|
if(ownerPid.intValue == NSProcessInfo.processInfo.processIdentifier) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
Skip applications we aren't allowed to access anyway
|
||||||
|
*/
|
||||||
|
NSRunningApplication *ownerApp = [NSRunningApplication runningApplicationWithProcessIdentifier:ownerPid.intValue];
|
||||||
|
if(!ownerApp) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
NSString *windowName = windowInfo[(id)kCGWindowName];
|
NSString *windowName = windowInfo[(id)kCGWindowName];
|
||||||
if(windowName) {
|
if(windowName) {
|
||||||
numberOfWindowsWithName++;
|
if([ownerApp.executableURL.lastPathComponent isEqualToString:@"Dock"]) {
|
||||||
}
|
continue;
|
||||||
else {
|
}
|
||||||
break; //breaking early, numberOfWindowsWithName not increased
|
canRecordScreen = YES;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
CFRelease(windowList);
|
CFRelease(windowList);
|
||||||
BOOL canRecordScreen = (numberOfWindows == numberOfWindowsWithName);
|
|
||||||
if(!canRecordScreen && error) {
|
if(!canRecordScreen && error) {
|
||||||
*error = [NSError errorInDomain:MPAutotypeErrorDomain withCode:MPErrorAutotypeIsMissingScreenRecordingPermissions description:NSLocalizedString(@"ERROR_NO_PERMISSION_TO_RECORD_SCREEN", "Error description for missing screen recording permissions")];
|
*error = [NSError errorInDomain:MPAutotypeErrorDomain withCode:MPErrorAutotypeIsMissingScreenRecordingPermissions description:NSLocalizedString(@"ERROR_NO_PERMISSION_TO_RECORD_SCREEN", "Error description for missing screen recording permissions")];
|
||||||
}
|
}
|
||||||
@@ -93,7 +112,7 @@
|
|||||||
if(@available(macOS 10.14, *)) {
|
if(@available(macOS 10.14, *)) {
|
||||||
isTrusted = AXIsProcessTrusted();
|
isTrusted = AXIsProcessTrusted();
|
||||||
if(!isTrusted && error) {
|
if(!isTrusted && error) {
|
||||||
*error = [NSError errorInDomain:MPAutotypeErrorDomain withCode:MPErrorAutotypeIsMissingAccessibiltyPermissions description:NSLocalizedString(@"ERROR_NO_ACCESSIBILTY_PERMISSIONS", "Error description for missing accessibilty permissions")];
|
*error = [NSError errorInDomain:MPAutotypeErrorDomain withCode:MPErrorAutotypeIsMissingAccessibiltyPermissions description:NSLocalizedString(@"ERROR_NO_ACCESSIBILITY_PERMISSIONS", "Error description for missing accessibility permissions")];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return isTrusted;
|
return isTrusted;
|
||||||
|
|||||||
36
MacPass/MPAutotypeEnvironment.h
Normal file
36
MacPass/MPAutotypeEnvironment.h
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
//
|
||||||
|
// MPAutotypeEnvironment.h
|
||||||
|
// MacPass
|
||||||
|
//
|
||||||
|
// Created by Michael Starke on 15.01.20.
|
||||||
|
// Copyright © 2020 HicknHack Software GmbH. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <Foundation/Foundation.h>
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
@class KPKEntry;
|
||||||
|
@class MPAutotypeContext;
|
||||||
|
|
||||||
|
@interface MPAutotypeEnvironment : NSObject
|
||||||
|
|
||||||
|
/**
|
||||||
|
The selected entry, if Autotype is run only for a single entry.
|
||||||
|
If autotype should search for entries, set this to nil.
|
||||||
|
*/
|
||||||
|
@property (readonly, weak, nullable) KPKEntry *preferredEntry;
|
||||||
|
@property (readonly) pid_t pid; // the PID of the target application to which the key strokes should be sent
|
||||||
|
@property (readonly) CGWindowID windowId; // the windowID of the target window of the target application
|
||||||
|
@property (readonly, copy) NSString *windowTitle; /// The title of the target window of the target application.
|
||||||
|
@property (readonly) BOOL hidden; /// If set to YES, MacPass was hidden when autotype was initiated
|
||||||
|
@property (readonly) BOOL isSelfTargeting; /// If MacPass should autotype to itself, YES, otherwise NO
|
||||||
|
@property (readonly) NSString *overrideSequence; /// If set, this sequence is used for running the command regardless of the matched one
|
||||||
|
|
||||||
|
+ (instancetype)environmentWithTargetApplication:(NSRunningApplication *)targetApplication entry:(KPKEntry * _Nullable)entry overrideSequence:(NSString * _Nullable)overrideSequence;
|
||||||
|
- (instancetype)initWithTargetApplication:(NSRunningApplication *)targetApplication entry:(KPKEntry * _Nullable)entry overrideSequence:(NSString * _Nullable)overrdieSequence NS_DESIGNATED_INITIALIZER;
|
||||||
|
- (instancetype)init NS_UNAVAILABLE;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
||||||
88
MacPass/MPAutotypeEnvironment.m
Normal file
88
MacPass/MPAutotypeEnvironment.m
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
//
|
||||||
|
// MPAutotypeEnvironment.m
|
||||||
|
// MacPass
|
||||||
|
//
|
||||||
|
// Created by Michael Starke on 15.01.20.
|
||||||
|
// Copyright © 2020 HicknHack Software GmbH. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "MPAutotypeEnvironment.h"
|
||||||
|
#import "NSRunningApplication+MPAdditions.h"
|
||||||
|
#import "MPPluginHost.h"
|
||||||
|
#import "MPPlugin.h"
|
||||||
|
|
||||||
|
@implementation MPAutotypeEnvironment
|
||||||
|
|
||||||
|
+ (instancetype)environmentWithTargetApplication:(NSRunningApplication *)targetApplication entry:(KPKEntry *)entry overrideSequence:(NSString *)overrideSequence {
|
||||||
|
return [[MPAutotypeEnvironment alloc] initWithTargetApplication:targetApplication entry:entry overrideSequence:overrideSequence];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (instancetype)initWithTargetApplication:(NSRunningApplication *)targetApplication entry:(KPKEntry *)entry overrideSequence:(NSString *)overrdieSequence {
|
||||||
|
self = [super init];
|
||||||
|
if(self) {
|
||||||
|
_preferredEntry = entry;
|
||||||
|
_hidden = NSRunningApplication.currentApplication.isHidden;
|
||||||
|
_overrideSequence = [overrdieSequence copy];
|
||||||
|
if(!targetApplication) {
|
||||||
|
_pid = -1;
|
||||||
|
_windowTitle = @"";
|
||||||
|
_windowId = -1;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
NSDictionary *frontApplicationInfoDict = targetApplication.mp_infoDictionary;
|
||||||
|
|
||||||
|
_pid = [frontApplicationInfoDict[MPProcessIdentifierKey] intValue];
|
||||||
|
_windowTitle = frontApplicationInfoDict[MPWindowTitleKey];
|
||||||
|
_windowId = (CGWindowID)[frontApplicationInfoDict[MPWindowIDKey] integerValue];
|
||||||
|
|
||||||
|
/* if we have any resolvers, let them provide the window title */
|
||||||
|
NSArray *resolvers = [MPPluginHost.sharedHost windowTitleResolverForRunningApplication:targetApplication];
|
||||||
|
for(MPPlugin<MPAutotypeWindowTitleResolverPlugin> *resolver in resolvers) {
|
||||||
|
NSString *windowTitle = [resolver windowTitleForRunningApplication:targetApplication];
|
||||||
|
if(windowTitle.length > 0) {
|
||||||
|
_windowTitle = windowTitle;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (BOOL)isSelfTargeting {
|
||||||
|
return NSRunningApplication.currentApplication.processIdentifier == _pid;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSDictionary *)_infoDictionaryForApplication:(NSRunningApplication *)application {
|
||||||
|
NSArray *currentWindows = CFBridgingRelease(CGWindowListCopyWindowInfo(kCGWindowListExcludeDesktopElements, kCGNullWindowID));
|
||||||
|
NSArray *windowNumbers = [NSWindow windowNumbersWithOptions:NSWindowNumberListAllApplications];
|
||||||
|
NSUInteger minZIndex = NSNotFound;
|
||||||
|
NSDictionary *infoDict = nil;
|
||||||
|
for(NSDictionary *windowDict in currentWindows) {
|
||||||
|
NSString *windowTitle = windowDict[(NSString *)kCGWindowName];
|
||||||
|
if(windowTitle.length <= 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
NSNumber *processId = windowDict[(NSString *)kCGWindowOwnerPID];
|
||||||
|
if(processId && [processId isEqualToNumber:@(application.processIdentifier)]) {
|
||||||
|
|
||||||
|
NSNumber *number = (NSNumber *)windowDict[(NSString *)kCGWindowNumber];
|
||||||
|
NSUInteger zIndex = [windowNumbers indexOfObject:number];
|
||||||
|
if(zIndex < minZIndex) {
|
||||||
|
minZIndex = zIndex;
|
||||||
|
infoDict = @{
|
||||||
|
MPWindowTitleKey: windowTitle,
|
||||||
|
MPProcessIdentifierKey : processId
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(currentWindows.count > 0 && infoDict.count == 0) {
|
||||||
|
// show some information about not being able to determine any windows
|
||||||
|
NSLog(@"Unable to retrieve any window names. If you encounter this issue you might be running 10.15 and MacPass has no permission for screen recording.");
|
||||||
|
}
|
||||||
|
return infoDict;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
@@ -51,9 +51,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (void)execute {
|
- (void)execute {
|
||||||
if([self.pasteData length] > 0) {
|
if(self.pasteData.length > 0) {
|
||||||
[MPPasteBoardController.defaultController stashObjects];
|
[MPPasteBoardController.defaultController stashObjects];
|
||||||
[MPPasteBoardController.defaultController copyObjectsWithoutTimeout:@[self.pasteData]];
|
[MPPasteBoardController.defaultController copyObjectWithoutTimeout:self.pasteData];
|
||||||
[MPKeyTyper sendPaste];
|
[MPKeyTyper sendPaste];
|
||||||
usleep(0.2 * NSEC_PER_MSEC); // on 10.10 we need to wait a bit before restoring the pasteboard contents
|
usleep(0.2 * NSEC_PER_MSEC); // on 10.10 we need to wait a bit before restoring the pasteboard contents
|
||||||
[MPPasteBoardController.defaultController restoreObjects];
|
[MPPasteBoardController.defaultController restoreObjects];
|
||||||
|
|||||||
@@ -24,8 +24,13 @@
|
|||||||
|
|
||||||
@interface MPContextButton : NSSegmentedControl
|
@interface MPContextButton : NSSegmentedControl
|
||||||
|
|
||||||
@property (nonatomic, strong) NSMenu *contextMenu;
|
typedef NS_ENUM(NSUInteger, MPContextButtonSegment) {
|
||||||
|
MPContextButtonSegmentButton,
|
||||||
|
MPContextButtonSegmentContextButton,
|
||||||
|
MPContextButtonSegmentCount // do not use
|
||||||
|
};
|
||||||
|
|
||||||
- (void)setImage:(NSImage *)image;
|
@property (nonatomic, strong) NSMenu *contextMenu;
|
||||||
|
@property (nonatomic, strong) NSImage *image;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -52,15 +52,20 @@
|
|||||||
self.cell = cell;
|
self.cell = cell;
|
||||||
|
|
||||||
self.focusRingType = NSFocusRingTypeNone;
|
self.focusRingType = NSFocusRingTypeNone;
|
||||||
self.segmentStyle = NSSegmentStyleTexturedSquare;
|
if (@available(macOS 11.0, *)) {
|
||||||
self.segmentCount = 2;
|
self.segmentStyle = NSSegmentStyleSeparated;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
self.segmentStyle = NSSegmentStyleTexturedSquare;
|
||||||
|
}
|
||||||
|
self.segmentCount = MPContextButtonSegmentCount;
|
||||||
cell.trackingMode = NSSegmentSwitchTrackingMomentary;
|
cell.trackingMode = NSSegmentSwitchTrackingMomentary;
|
||||||
[cell setWidth:31 forSegment:0];
|
[cell setWidth:31 forSegment:MPContextButtonSegmentButton];
|
||||||
[cell setWidth:17 forSegment:1];
|
[cell setWidth:17 forSegment:MPContextButtonSegmentContextButton];
|
||||||
cell.trackingMode = NSSegmentSwitchTrackingMomentary;
|
cell.trackingMode = NSSegmentSwitchTrackingMomentary;
|
||||||
|
|
||||||
NSImage *contextTriangle = [NSBundle.mainBundle imageForResource:@"contextTriangleTemplate"];
|
NSImage *contextTriangle = [NSBundle.mainBundle imageForResource:@"contextTriangleTemplate"];
|
||||||
[self setImage:contextTriangle forSegment:1];
|
[self setImage:contextTriangle forSegment:MPContextButtonSegmentContextButton];
|
||||||
|
|
||||||
cell.contextMenuAction = @selector(showContextMenu:);
|
cell.contextMenuAction = @selector(showContextMenu:);
|
||||||
cell.contextMenuTarget = self;
|
cell.contextMenuTarget = self;
|
||||||
@@ -76,42 +81,46 @@
|
|||||||
Block the segment setter to prevent accidental settings
|
Block the segment setter to prevent accidental settings
|
||||||
*/
|
*/
|
||||||
- (void)setImage:(NSImage *)image forSegment:(NSInteger)segment {
|
- (void)setImage:(NSImage *)image forSegment:(NSInteger)segment {
|
||||||
if(segment < 2) {
|
if(segment < MPContextButtonSegmentCount) {
|
||||||
[super setImage:image forSegment:segment];
|
[super setImage:image forSegment:segment];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)setSegmentCount:(NSInteger)count {
|
- (void)setSegmentCount:(NSInteger)count {
|
||||||
if(count == 2) {
|
if(count == MPContextButtonSegmentCount) {
|
||||||
super.segmentCount = count;
|
super.segmentCount = count;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)setImage:(NSImage *)image {
|
- (void)setImage:(NSImage *)image {
|
||||||
[self setImage:image forSegment:0];
|
[self setImage:image forSegment:MPContextButtonSegmentButton];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSImage *)image {
|
||||||
|
return [self imageForSegment:MPContextButtonSegmentButton];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)showContextMenu:(id)sender {
|
- (void)showContextMenu:(id)sender {
|
||||||
NSPoint point = self.frame.origin;
|
NSPoint point = self.frame.origin;
|
||||||
point.x = [self.cell widthForSegment:0];
|
point.x = [self.cell widthForSegment:MPContextButtonSegmentButton];
|
||||||
point.y = NSHeight(self.frame) + 3;
|
point.y = NSHeight(self.frame) + 3;
|
||||||
[_contextMenu popUpMenuPositioningItem:nil atLocation:point inView:self];
|
[_contextMenu popUpMenuPositioningItem:nil atLocation:point inView:self];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)setControlSize:(NSControlSize)controlSize {
|
- (void)setControlSize:(NSControlSize)controlSize {
|
||||||
NSImageRep *rep = [[self imageForSegment:0] bestRepresentationForRect:NSMakeRect(0, 0, 100, 100) context:nil hints:nil];
|
NSImageRep *rep = [[self imageForSegment:MPContextButtonSegmentButton] bestRepresentationForRect:NSMakeRect(0, 0, 100, 100) context:nil hints:nil];
|
||||||
CGFloat scale = rep.size.width / rep.size.height;
|
CGFloat scale = rep.size.width / rep.size.height;
|
||||||
switch (controlSize) {
|
switch (controlSize) {
|
||||||
case NSRegularControlSize:
|
case NSControlSizeRegular:
|
||||||
[self imageForSegment:0].size = NSMakeSize(16 * scale, 16);
|
[self imageForSegment:MPContextButtonSegmentButton].size = NSMakeSize(16 * scale, 16);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NSSmallControlSize:
|
case NSControlSizeSmall:
|
||||||
[self imageForSegment:0].size = NSMakeSize(14 * scale, 14);
|
[self imageForSegment:MPContextButtonSegmentButton].size = NSMakeSize(14 * scale, 14);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NSMiniControlSize:
|
case NSControlSizeMini:
|
||||||
[self imageForSegment:0].size = NSMakeSize(8 * scale, 8);
|
[self imageForSegment:MPContextButtonSegmentButton].size = NSMakeSize(8 * scale, 8);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@@ -123,4 +132,9 @@
|
|||||||
return super.controlSize;
|
return super.controlSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)_updateContextButtonState {
|
||||||
|
BOOL hasContextMenu = (self.contextMenu != nil);
|
||||||
|
[self setEnabled:hasContextMenu forSegment:MPContextButtonSegmentContextButton];
|
||||||
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -22,9 +22,13 @@
|
|||||||
|
|
||||||
#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]];
|
||||||
@@ -33,6 +37,38 @@ 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);
|
||||||
@@ -44,7 +80,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:10];
|
NSMutableArray *items = [NSMutableArray arrayWithCapacity:15];
|
||||||
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")
|
||||||
@@ -54,7 +90,20 @@ 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);
|
||||||
@@ -84,7 +133,7 @@ static void MPContextmenuHelperBeginSection(NSMutableArray *items) {
|
|||||||
NSMenuItem *emptyTrash = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"EMPTY_TRASH", @"Menu item to empty the trash")
|
NSMenuItem *emptyTrash = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"EMPTY_TRASH", @"Menu item to empty the trash")
|
||||||
action:[MPActionHelper actionOfType:MPActionEmptyTrash]
|
action:[MPActionHelper actionOfType:MPActionEmptyTrash]
|
||||||
keyEquivalent:@""];
|
keyEquivalent:@""];
|
||||||
emptyTrash.keyEquivalentModifierMask = (NSShiftKeyMask | NSCommandKeyMask);
|
emptyTrash.keyEquivalentModifierMask = (NSEventModifierFlagShift | NSEventModifierFlagCommand);
|
||||||
unichar backSpace = NSBackspaceCharacter;
|
unichar backSpace = NSBackspaceCharacter;
|
||||||
emptyTrash.keyEquivalent = [NSString stringWithCharacters:&backSpace length:1];
|
emptyTrash.keyEquivalent = [NSString stringWithCharacters:&backSpace length:1];
|
||||||
[items addObject:emptyTrash];
|
[items addObject:emptyTrash];
|
||||||
@@ -99,7 +148,7 @@ static void MPContextmenuHelperBeginSection(NSMutableArray *items) {
|
|||||||
NSMenuItem *copyPassword = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"COPY_PASSWORD", @"Menu item to copy the password of an entry")
|
NSMenuItem *copyPassword = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"COPY_PASSWORD", @"Menu item to copy the password of an entry")
|
||||||
action:[MPActionHelper actionOfType:MPActionCopyPassword]
|
action:[MPActionHelper actionOfType:MPActionCopyPassword]
|
||||||
keyEquivalent:@"c"];
|
keyEquivalent:@"c"];
|
||||||
copyPassword.keyEquivalentModifierMask = (copyPassword.keyEquivalentModifierMask | NSAlternateKeyMask);
|
copyPassword.keyEquivalentModifierMask = (copyPassword.keyEquivalentModifierMask | NSEventModifierFlagOption);
|
||||||
NSMenu *urlMenu = [[NSMenu alloc] init];
|
NSMenu *urlMenu = [[NSMenu alloc] init];
|
||||||
NSMenuItem *urlItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"URL", @"Submenu with options what to do with the URL of an entry")
|
NSMenuItem *urlItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"URL", @"Submenu with options what to do with the URL of an entry")
|
||||||
action:0
|
action:0
|
||||||
@@ -129,7 +178,7 @@ static void MPContextmenuHelperBeginSection(NSMutableArray *items) {
|
|||||||
NSMenuItem *showHistory = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"SHOW_HISTORY", @"Menu item to show the history of the selected entry")
|
NSMenuItem *showHistory = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"SHOW_HISTORY", @"Menu item to show the history of the selected entry")
|
||||||
action:[MPActionHelper actionOfType:MPActionShowEntryHistory]
|
action:[MPActionHelper actionOfType:MPActionShowEntryHistory]
|
||||||
keyEquivalent:@"h"];
|
keyEquivalent:@"h"];
|
||||||
showHistory.keyEquivalentModifierMask = (showHistory.keyEquivalentModifierMask | NSCommandKeyMask | NSControlKeyMask);
|
showHistory.keyEquivalentModifierMask = (showHistory.keyEquivalentModifierMask | NSEventModifierFlagCommand | NSEventModifierFlagControl);
|
||||||
[items addObject:showHistory];
|
[items addObject:showHistory];
|
||||||
}
|
}
|
||||||
if(insertShowGroupInOutline) {
|
if(insertShowGroupInOutline) {
|
||||||
|
|||||||
@@ -1,27 +0,0 @@
|
|||||||
//
|
|
||||||
// MPCustomFieldTableView.h
|
|
||||||
// MacPass
|
|
||||||
//
|
|
||||||
// Created by Michael Starke on 11.09.18.
|
|
||||||
// Copyright © 2018 HicknHack Software GmbH. All rights reserved.
|
|
||||||
//
|
|
||||||
// This program is free software: you can redistribute it and/or modify
|
|
||||||
// it under the terms of the GNU General Public License as published by
|
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
|
||||||
// (at your option) any later version.
|
|
||||||
//
|
|
||||||
// This program is distributed in the hope that it will be useful,
|
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
//
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
// GNU General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU General Public License
|
|
||||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
//
|
|
||||||
|
|
||||||
#import <Cocoa/Cocoa.h>
|
|
||||||
|
|
||||||
@interface MPCustomFieldTableView : NSTableView
|
|
||||||
|
|
||||||
@end
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
//
|
|
||||||
// MPCustomFieldTableView.m
|
|
||||||
// MacPass
|
|
||||||
//
|
|
||||||
// Created by Michael Starke on 11.09.18.
|
|
||||||
// Copyright © 2018 HicknHack Software GmbH. All rights reserved.
|
|
||||||
//
|
|
||||||
// This program is free software: you can redistribute it and/or modify
|
|
||||||
// it under the terms of the GNU General Public License as published by
|
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
|
||||||
// (at your option) any later version.
|
|
||||||
//
|
|
||||||
// This program is distributed in the hope that it will be useful,
|
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
//
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
// GNU General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU General Public License
|
|
||||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
//
|
|
||||||
|
|
||||||
#import "MPCustomFieldTableView.h"
|
|
||||||
|
|
||||||
@implementation MPCustomFieldTableView
|
|
||||||
|
|
||||||
/*
|
|
||||||
on macOS 10.11 and lower, the height is not calculated correctly
|
|
||||||
*/
|
|
||||||
- (NSSize)intrinsicContentSize {
|
|
||||||
if(@available(macOS 10.12, *)) {
|
|
||||||
return [super intrinsicContentSize];
|
|
||||||
}
|
|
||||||
if(self.numberOfRows > 0) {
|
|
||||||
return NSMakeSize(-1, self.numberOfRows * self.rowHeight);
|
|
||||||
}
|
|
||||||
return NSMakeSize(-1, -1);
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
|
||||||
@@ -38,25 +38,6 @@ NSInteger MPCustomFieldTagFromIndex(NSInteger index) {
|
|||||||
|
|
||||||
@implementation MPCustomFieldTableViewDelegate
|
@implementation MPCustomFieldTableViewDelegate
|
||||||
|
|
||||||
|
|
||||||
- (void)tableView:(NSTableView *)tableView didRemoveRowView:(NSTableRowView *)rowView forRow:(NSInteger)row {
|
|
||||||
if(@available(macOS 10.12, *)) {
|
|
||||||
// 10.12 and higher are working correctly
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
[tableView invalidateIntrinsicContentSize];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)tableView:(NSTableView *)tableView didAddRowView:(NSTableRowView *)rowView forRow:(NSInteger)row {
|
|
||||||
if(@available(macOS 10.12, *)) {
|
|
||||||
// 10.12 and higher are working correctly
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
[tableView invalidateIntrinsicContentSize];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
|
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
|
||||||
MPCustomFieldTableCellView *view = [tableView makeViewWithIdentifier:@"SelectedCell" owner:tableView];
|
MPCustomFieldTableCellView *view = [tableView makeViewWithIdentifier:@"SelectedCell" owner:tableView];
|
||||||
|
|
||||||
|
|||||||
@@ -51,11 +51,16 @@ typedef NS_ENUM(NSUInteger, MPDatabaseSettingsTab) {
|
|||||||
|
|
||||||
/* AES */
|
/* AES */
|
||||||
@property (weak) IBOutlet NSTextField *aesEncryptionRoundsTextField;
|
@property (weak) IBOutlet NSTextField *aesEncryptionRoundsTextField;
|
||||||
/* Argon2 */
|
/* Argon2d */
|
||||||
@property (weak) IBOutlet NSTextField *argon2ThreadsTextField;
|
@property (weak) IBOutlet NSTextField *argon2dThreadsTextField;
|
||||||
@property (weak) IBOutlet NSTextField *argon2IterationsTextField;
|
@property (weak) IBOutlet NSTextField *argon2dIterationsTextField;
|
||||||
@property (weak) IBOutlet NSTextField *argon2MemoryTextField;
|
@property (weak) IBOutlet NSTextField *argon2dMemoryTextField;
|
||||||
@property (weak) IBOutlet NSStepper *argon2MemoryStepper;
|
@property (weak) IBOutlet NSStepper *argon2dMemoryStepper;
|
||||||
|
/* Argon2id */
|
||||||
|
@property (weak) IBOutlet NSTextField *argon2idThreadsTextField;
|
||||||
|
@property (weak) IBOutlet NSTextField *argon2idIterationsTextField;
|
||||||
|
@property (weak) IBOutlet NSTextField *argon2idMemoryTextField;
|
||||||
|
@property (weak) IBOutlet NSStepper *argon2idMemoryStepper;
|
||||||
|
|
||||||
/* Advanced Tab*/
|
/* Advanced Tab*/
|
||||||
@property (weak) IBOutlet NSButton *enableHistoryCheckButton;
|
@property (weak) IBOutlet NSButton *enableHistoryCheckButton;
|
||||||
|
|||||||
@@ -39,7 +39,8 @@
|
|||||||
NSString *_missingFeature;
|
NSString *_missingFeature;
|
||||||
}
|
}
|
||||||
|
|
||||||
@property (assign) NSInteger argon2Memory;
|
@property (assign) NSInteger argon2dMemory;
|
||||||
|
@property (assign) NSInteger argon2idMemory;
|
||||||
|
|
||||||
@property (assign) BOOL enableHistory;
|
@property (assign) BOOL enableHistory;
|
||||||
@property (assign) NSInteger maxiumHistoryItems;
|
@property (assign) NSInteger maxiumHistoryItems;
|
||||||
@@ -92,7 +93,8 @@
|
|||||||
}
|
}
|
||||||
self.cipherPopupButton.menu = cipherMenu;
|
self.cipherPopupButton.menu = cipherMenu;
|
||||||
self.keyDerivationSettingsTabView.tabViewItems[0].identifier = [KPKAESKeyDerivation uuid];
|
self.keyDerivationSettingsTabView.tabViewItems[0].identifier = [KPKAESKeyDerivation uuid];
|
||||||
self.keyDerivationSettingsTabView.tabViewItems[1].identifier = [KPKArgon2KeyDerivation uuid];
|
self.keyDerivationSettingsTabView.tabViewItems[1].identifier = [KPKArgon2DKeyDerivation uuid];
|
||||||
|
self.keyDerivationSettingsTabView.tabViewItems[2].identifier = [KPKArgon2IDKeyDerivation uuid];
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark Actions
|
#pragma mark Actions
|
||||||
@@ -106,7 +108,6 @@
|
|||||||
/* 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;
|
||||||
|
|
||||||
@@ -163,20 +164,28 @@
|
|||||||
/* Security */
|
/* Security */
|
||||||
metaData.cipherUUID = self.cipherPopupButton.selectedItem.representedObject;
|
metaData.cipherUUID = self.cipherPopupButton.selectedItem.representedObject;
|
||||||
|
|
||||||
KPKAESKeyDerivation *aesKdf = [[KPKAESKeyDerivation alloc] initWithParameters:[KPKAESKeyDerivation defaultParameters]];
|
|
||||||
KPKArgon2KeyDerivation *argon2Kdf = [[KPKArgon2KeyDerivation alloc] initWithParameters:[KPKArgon2KeyDerivation defaultParameters]];
|
|
||||||
|
|
||||||
NSUUID *selectedKdfUUID = self.keyDerivationSettingsTabView.selectedTabViewItem.identifier;
|
NSUUID *selectedKdfUUID = self.keyDerivationSettingsTabView.selectedTabViewItem.identifier;
|
||||||
|
KPKAESKeyDerivation *aesKdf = [[KPKAESKeyDerivation alloc] initWithParameters:[KPKAESKeyDerivation defaultParameters]];
|
||||||
|
KPKArgon2DKeyDerivation *argon2dKdf = [[KPKArgon2DKeyDerivation alloc] initWithParameters:[KPKArgon2DKeyDerivation defaultParameters]];
|
||||||
|
KPKArgon2IDKeyDerivation *argon2idKdf = [[KPKArgon2IDKeyDerivation alloc] initWithParameters:[KPKArgon2IDKeyDerivation defaultParameters]];
|
||||||
|
|
||||||
if([selectedKdfUUID isEqual:aesKdf.uuid]) {
|
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:argon2Kdf.uuid]) {
|
else if([selectedKdfUUID isEqual:argon2dKdf.uuid]) {
|
||||||
argon2Kdf.iterations = self.argon2IterationsTextField.integerValue;
|
|
||||||
argon2Kdf.memory = self.argon2Memory;
|
argon2dKdf.iterations = self.argon2dIterationsTextField.integerValue;
|
||||||
argon2Kdf.threads = self.argon2ThreadsTextField.intValue;
|
argon2dKdf.memory = self.argon2dMemory;
|
||||||
metaData.keyDerivationParameters = argon2Kdf.parameters;
|
argon2dKdf.threads = self.argon2dThreadsTextField.intValue;
|
||||||
|
metaData.keyDerivationParameters = argon2dKdf.parameters;
|
||||||
|
}
|
||||||
|
else if([selectedKdfUUID isEqual:argon2idKdf.uuid]) {
|
||||||
|
argon2idKdf.iterations = self.argon2idIterationsTextField.integerValue;
|
||||||
|
argon2idKdf.memory = self.argon2idMemory;
|
||||||
|
argon2idKdf.threads = self.argon2idThreadsTextField.intValue;
|
||||||
|
metaData.keyDerivationParameters = argon2idKdf.parameters;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Changes to metadata aren't backed by undomanager, thus we need to manually set the document dirty */
|
/* Changes to metadata aren't backed by undomanager, thus we need to manually set the document dirty */
|
||||||
@@ -188,12 +197,21 @@
|
|||||||
[self dismissSheet:0];
|
[self dismissSheet:0];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (IBAction)benchmarkRounds:(id)sender {
|
- (IBAction)benchmarkParametersForDelay:(id)sender {
|
||||||
self.createKeyDerivationParametersButton.enabled = NO;
|
NSUUID *selectedKdfUUID = self.keyDerivationSettingsTabView.selectedTabViewItem.identifier;
|
||||||
[KPKAESKeyDerivation parametersForDelay:1 completionHandler:^(NSDictionary * _Nonnull options) {
|
if([selectedKdfUUID isEqual:[KPKAESKeyDerivation uuid]]) {
|
||||||
self.aesEncryptionRoundsTextField.integerValue = [options[KPKAESRoundsOption] unsignedInteger64Value];
|
self.createKeyDerivationParametersButton.enabled = NO;
|
||||||
self.createKeyDerivationParametersButton.enabled = YES;
|
[KPKAESKeyDerivation parametersForDelay:1 completionHandler:^(NSDictionary * _Nonnull options) {
|
||||||
}];
|
self.aesEncryptionRoundsTextField.integerValue = [options[KPKAESRoundsOption] unsignedInteger64Value];
|
||||||
|
self.createKeyDerivationParametersButton.enabled = YES;
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
else if([selectedKdfUUID isEqual:[KPKArgon2DKeyDerivation uuid]]) {
|
||||||
|
// TODO: add benchmark
|
||||||
|
}
|
||||||
|
else if([selectedKdfUUID isEqual:[KPKArgon2IDKeyDerivation uuid]]) {
|
||||||
|
// TODO: add benchmark
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)updateView {
|
- (void)updateView {
|
||||||
@@ -273,37 +291,57 @@
|
|||||||
[self.keyDerivationPopupButton selectItemAtIndex:kdfIndex];
|
[self.keyDerivationPopupButton selectItemAtIndex:kdfIndex];
|
||||||
[self.keyDerivationSettingsTabView selectTabViewItemWithIdentifier:keyDerivation.uuid];
|
[self.keyDerivationSettingsTabView selectTabViewItemWithIdentifier:keyDerivation.uuid];
|
||||||
|
|
||||||
if([keyDerivation isKindOfClass:[KPKAESKeyDerivation class]]) {
|
/* fill defaults for AES */
|
||||||
|
KPKAESKeyDerivation *aesKdf = [[KPKAESKeyDerivation alloc] initWithParameters:[KPKAESKeyDerivation defaultParameters]];
|
||||||
|
self.aesEncryptionRoundsTextField.integerValue = aesKdf.rounds;
|
||||||
|
|
||||||
|
/* fill defaults for Argon2d */
|
||||||
|
KPKArgon2DKeyDerivation *argon2dKdf = [[KPKArgon2DKeyDerivation alloc] initWithParameters:[KPKArgon2DKeyDerivation defaultParameters]];
|
||||||
|
self.argon2dIterationsTextField.integerValue = argon2dKdf.iterations;
|
||||||
|
self.argon2dMemory = argon2dKdf.memory;
|
||||||
|
self.argon2dThreadsTextField.integerValue = argon2dKdf.threads;
|
||||||
|
|
||||||
|
/* fill defaults for Argon2id */
|
||||||
|
KPKArgon2IDKeyDerivation *argon2idKdf = [[KPKArgon2IDKeyDerivation alloc] initWithParameters:[KPKArgon2IDKeyDerivation defaultParameters]];
|
||||||
|
self.argon2idIterationsTextField.integerValue = argon2idKdf.iterations;
|
||||||
|
self.argon2idMemory = argon2idKdf.memory;
|
||||||
|
self.argon2idThreadsTextField.integerValue = argon2idKdf.threads;
|
||||||
|
|
||||||
|
if([keyDerivation isMemberOfClass:KPKAESKeyDerivation.class]) {
|
||||||
|
/* set to database values */
|
||||||
KPKAESKeyDerivation *aesKdf = (KPKAESKeyDerivation *)keyDerivation;
|
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 */
|
|
||||||
KPKArgon2KeyDerivation *argon2Kdf = [[KPKArgon2KeyDerivation alloc] initWithParameters:[KPKArgon2KeyDerivation defaultParameters]];
|
|
||||||
self.argon2IterationsTextField.integerValue = argon2Kdf.iterations;
|
|
||||||
self.argon2Memory = argon2Kdf.memory;
|
|
||||||
self.argon2ThreadsTextField.integerValue = argon2Kdf.threads;
|
|
||||||
}
|
}
|
||||||
else if([keyDerivation isKindOfClass:[KPKArgon2KeyDerivation class]]) {
|
else if([keyDerivation isMemberOfClass:KPKArgon2DKeyDerivation.class]) {
|
||||||
KPKArgon2KeyDerivation *argon2Kdf = (KPKArgon2KeyDerivation *)keyDerivation;
|
/* set to database value */
|
||||||
self.argon2Memory = argon2Kdf.memory;
|
KPKArgon2DKeyDerivation *argon2dKdf = (KPKArgon2DKeyDerivation *)keyDerivation;
|
||||||
self.argon2ThreadsTextField.integerValue = argon2Kdf.threads;
|
self.argon2dMemory = argon2dKdf.memory;
|
||||||
self.argon2IterationsTextField.integerValue = argon2Kdf.iterations;
|
self.argon2dThreadsTextField.integerValue = argon2dKdf.threads;
|
||||||
|
self.argon2dIterationsTextField.integerValue = argon2dKdf.iterations;
|
||||||
/* fill defaults for AES */
|
}
|
||||||
KPKAESKeyDerivation *aesKdf = [[KPKAESKeyDerivation alloc] initWithParameters:[KPKAESKeyDerivation defaultParameters]];
|
else if([keyDerivation isMemberOfClass:KPKArgon2IDKeyDerivation.class]) {
|
||||||
self.aesEncryptionRoundsTextField.integerValue = aesKdf.rounds;
|
/* set to database value */
|
||||||
|
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.argon2MemoryStepper.minValue = 8*1024; // 8KB minimum
|
self.argon2dMemoryStepper.minValue = 8*1024; // 8KB minimum
|
||||||
self.argon2MemoryStepper.maxValue = NSIntegerMax;
|
self.argon2dMemoryStepper.maxValue = NSIntegerMax;
|
||||||
self.argon2MemoryStepper.increment = 1024*1024; // 1 megabytes steps
|
self.argon2dMemoryStepper.increment = 1024*1024; // 1 megabytes steps
|
||||||
[self.argon2MemoryTextField bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(argon2Memory)) options:nil];
|
[self.argon2dMemoryTextField bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(argon2dMemory)) options:nil];
|
||||||
[self.argon2MemoryStepper bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(argon2Memory)) options:nil];
|
[self.argon2dMemoryStepper bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(argon2dMemory)) options:nil];
|
||||||
|
|
||||||
|
self.argon2idMemoryStepper.minValue = 8*1024; // 8KB minimum
|
||||||
|
self.argon2idMemoryStepper.maxValue = NSIntegerMax;
|
||||||
|
self.argon2idMemoryStepper.increment = 1024*1024; // 1 megabytes steps
|
||||||
|
[self.argon2idMemoryTextField bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(argon2idMemory)) options:nil];
|
||||||
|
[self.argon2idMemoryStepper bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(argon2idMemory)) options:nil];
|
||||||
|
|
||||||
NSUInteger cipherIndex = [self.cipherPopupButton.menu indexOfItemWithRepresentedObject:metaData.cipherUUID];
|
NSUInteger cipherIndex = [self.cipherPopupButton.menu indexOfItemWithRepresentedObject:metaData.cipherUUID];
|
||||||
[self.cipherPopupButton selectItemAtIndex:cipherIndex];
|
[self.cipherPopupButton selectItemAtIndex:cipherIndex];
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ typedef NS_ENUM(NSUInteger, MPDatePreset) {
|
|||||||
default:
|
default:
|
||||||
return; // Nothing to do;
|
return; // Nothing to do;
|
||||||
}
|
}
|
||||||
self.datePicker.dateValue = [gregorian dateByAddingComponents:offsetComponents toDate:[NSDate date] options:0];
|
self.datePicker.dateValue = [gregorian dateByAddingComponents:offsetComponents toDate:NSDate.date options:0];
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ NSString *const MPDocumentHideEntryHistoryNotification = @"MPDocumentHideEntryH
|
|||||||
- (void)revertEntry:(KPKEntry *)entry toEntry:(KPKEntry *)historyEntry {
|
- (void)revertEntry:(KPKEntry *)entry toEntry:(KPKEntry *)historyEntry {
|
||||||
[entry pushHistory];
|
[entry pushHistory];
|
||||||
[entry revertToEntry:historyEntry];
|
[entry revertToEntry:historyEntry];
|
||||||
[self.undoManager setActionName:NSLocalizedString(@"RESTORE_HISTORY_ENTRY", "Action to restore and Entry to a previous state of it's history")];
|
[self.undoManager setActionName:NSLocalizedString(@"RESTORE_HISTORY_ENTRY", "Action to restore an Entry to its previous state of it's history")];
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -42,15 +42,20 @@ 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:NSUndoManagerDidRedoChangeNotification object:self.undoManager];
|
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(updateSearch:) name:KPKTreeDidAddEntryNotification object:self.tree];
|
||||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(updateSearch:) name:NSUndoManagerDidUndoChangeNotification object:self.undoManager];
|
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(updateSearch:) name:KPKTreeDidAddGroupNotification object:self.tree];
|
||||||
//[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(updateSearch:) name:NSUndoManagerDidCloseUndoGroupNotification object:self.undoManager];
|
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(updateSearch:) name:KPKTreeDidRemoveEntryNotification object:self.tree];
|
||||||
|
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(updateSearch:) name:KPKTreeDidRemoveGroupNotification object:self.tree];
|
||||||
|
|
||||||
[NSNotificationCenter.defaultCenter postNotificationName:MPDocumentDidEnterSearchNotification object:self];
|
[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)perfromCustomSearch:(id)sender {
|
- (IBAction)performCustomSearch:(id)sender {
|
||||||
[self enterSearchWithContext:[MPEntrySearchContext userContext]];
|
[self enterSearchWithContext:[MPEntrySearchContext userContext]];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,7 +69,7 @@ NSString *const kMPDocumentSearchResultsKey = @"kMPDocumentSearchResul
|
|||||||
MPDocument __weak *weakSelf = self;
|
MPDocument __weak *weakSelf = self;
|
||||||
dispatch_queue_t backgroundQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
|
dispatch_queue_t backgroundQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
|
||||||
dispatch_async(backgroundQueue, ^{
|
dispatch_async(backgroundQueue, ^{
|
||||||
NSArray *results = [weakSelf _findEntriesMatchingCurrentSearch];
|
NSArray *results = [weakSelf _findEntriesMatchingSearch:weakSelf.searchContext];
|
||||||
dispatch_sync(dispatch_get_main_queue(), ^{
|
dispatch_sync(dispatch_get_main_queue(), ^{
|
||||||
[NSNotificationCenter.defaultCenter postNotificationName:MPDocumentDidChangeSearchResults object:weakSelf userInfo:@{ kMPDocumentSearchResultsKey: results }];
|
[NSNotificationCenter.defaultCenter postNotificationName:MPDocumentDidChangeSearchResults object:weakSelf userInfo:@{ kMPDocumentSearchResultsKey: results }];
|
||||||
});
|
});
|
||||||
@@ -72,9 +77,12 @@ 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:NSUndoManagerDidRedoChangeNotification object:self.undoManager];
|
[NSNotificationCenter.defaultCenter removeObserver:self name:KPKTreeDidAddEntryNotification object:self.tree];
|
||||||
//[NSNotificationCenter.defaultCenter removeObserver:self name:NSUndoManagerDidCloseUndoGroupNotification object:self.undoManager];
|
[NSNotificationCenter.defaultCenter removeObserver:self name:KPKTreeDidAddGroupNotification object:self.tree];
|
||||||
|
[NSNotificationCenter.defaultCenter removeObserver:self name:KPKTreeDidRemoveEntryNotification object:self.tree];
|
||||||
|
[NSNotificationCenter.defaultCenter removeObserver:self name:KPKTreeDidRemoveGroupNotification object:self.tree];
|
||||||
|
|
||||||
self.searchContext = nil;
|
self.searchContext = nil;
|
||||||
[NSNotificationCenter.defaultCenter postNotificationName:MPDocumentDidExitSearchNotification object:self];
|
[NSNotificationCenter.defaultCenter postNotificationName:MPDocumentDidExitSearchNotification object:self];
|
||||||
}
|
}
|
||||||
@@ -98,15 +106,15 @@ NSString *const kMPDocumentSearchResultsKey = @"kMPDocumentSearchResul
|
|||||||
NSAssert([sender isKindOfClass:NSMenuItem.class], @"Internal inconsitency. Did expect NSMenuItem expected, but got %@", [sender class]);
|
NSAssert([sender isKindOfClass:NSMenuItem.class], @"Internal inconsitency. Did expect NSMenuItem expected, but got %@", [sender class]);
|
||||||
state = ((NSMenuItem *)sender).state;
|
state = ((NSMenuItem *)sender).state;
|
||||||
/* Manually toggle the state since the popupbuttoncell doesn't do it like we want it to */
|
/* Manually toggle the state since the popupbuttoncell doesn't do it like we want it to */
|
||||||
state = state == NSOnState ? NSOffState : NSOnState;
|
state = state == NSControlStateValueOn ? NSControlStateValueOff : NSControlStateValueOn;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch(state) {
|
switch(state) {
|
||||||
case NSOffState:
|
case NSControlStateValueOff:
|
||||||
toggleFlag ^= MPEntrySearchAllCombineableFlags;
|
toggleFlag ^= MPEntrySearchAllCombineableFlags;
|
||||||
newFlags = isSingleFlag ? MPEntrySearchNone : (self.searchContext.searchFlags & toggleFlag);
|
newFlags = isSingleFlag ? MPEntrySearchNone : (self.searchContext.searchFlags & toggleFlag);
|
||||||
break;
|
break;
|
||||||
case NSOnState:
|
case NSControlStateValueOn:
|
||||||
if(isSingleFlag ) {
|
if(isSingleFlag ) {
|
||||||
newFlags = toggleFlag; // This has to be either expired or double passwords
|
newFlags = toggleFlag; // This has to be either expired or double passwords
|
||||||
}
|
}
|
||||||
@@ -128,9 +136,9 @@ NSString *const kMPDocumentSearchResultsKey = @"kMPDocumentSearchResul
|
|||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark Search
|
#pragma mark Search
|
||||||
- (NSArray *)_findEntriesMatchingCurrentSearch {
|
- (NSArray *)_findEntriesMatchingSearch:(MPEntrySearchContext *)context {
|
||||||
/* Filter double passwords */
|
/* Filter double passwords */
|
||||||
if(MPIsFlagSetInOptions(MPEntrySearchDoublePasswords, self.searchContext.searchFlags)) {
|
if(MPIsFlagSetInOptions(MPEntrySearchDoublePasswords, context.searchFlags)) {
|
||||||
NSMutableDictionary *passwordToEntryMap = [[NSMutableDictionary alloc] initWithCapacity:100];
|
NSMutableDictionary *passwordToEntryMap = [[NSMutableDictionary alloc] initWithCapacity:100];
|
||||||
/* Build up a usage map */
|
/* Build up a usage map */
|
||||||
for(KPKEntry *entry in self.root.searchableChildEntries) {
|
for(KPKEntry *entry in self.root.searchableChildEntries) {
|
||||||
@@ -155,7 +163,7 @@ NSString *const kMPDocumentSearchResultsKey = @"kMPDocumentSearchResul
|
|||||||
}
|
}
|
||||||
return doublePasswords;
|
return doublePasswords;
|
||||||
}
|
}
|
||||||
if(MPIsFlagSetInOptions(MPEntrySearchExpiredEntries, self.searchContext.searchFlags)) {
|
if(MPIsFlagSetInOptions(MPEntrySearchExpiredEntries, context.searchFlags)) {
|
||||||
NSPredicate *expiredPredicate = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
|
NSPredicate *expiredPredicate = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
|
||||||
KPKNode *node = evaluatedObject;
|
KPKNode *node = evaluatedObject;
|
||||||
return node.timeInfo.isExpired;
|
return node.timeInfo.isExpired;
|
||||||
@@ -163,7 +171,7 @@ NSString *const kMPDocumentSearchResultsKey = @"kMPDocumentSearchResul
|
|||||||
return [[self.root searchableChildEntries] filteredArrayUsingPredicate:expiredPredicate];
|
return [[self.root searchableChildEntries] filteredArrayUsingPredicate:expiredPredicate];
|
||||||
}
|
}
|
||||||
/* Filter using predicates */
|
/* Filter using predicates */
|
||||||
NSArray *predicates = [self _filterPredicatesWithString:self.searchContext.searchString];
|
NSArray *predicates = [self _filterPredicatesWithString:context.searchString];
|
||||||
if(predicates) {
|
if(predicates) {
|
||||||
NSPredicate *fullFilter = [NSCompoundPredicate orPredicateWithSubpredicates:predicates];
|
NSPredicate *fullFilter = [NSCompoundPredicate orPredicateWithSubpredicates:predicates];
|
||||||
return [[self.root searchableChildEntries] filteredArrayUsingPredicate:fullFilter];
|
return [[self.root searchableChildEntries] filteredArrayUsingPredicate:fullFilter];
|
||||||
@@ -194,7 +202,7 @@ NSString *const kMPDocumentSearchResultsKey = @"kMPDocumentSearchResul
|
|||||||
[prediactes addObject:[NSPredicate predicateWithFormat:@"SELF.notes CONTAINS[cd] %@", string]];
|
[prediactes addObject:[NSPredicate predicateWithFormat:@"SELF.notes CONTAINS[cd] %@", string]];
|
||||||
}
|
}
|
||||||
if(searchInAllAttributes) {
|
if(searchInAllAttributes) {
|
||||||
[prediactes addObject:[NSPredicate predicateWithFormat:@"SELF.tags CONTAINS[cd] %@", string]];
|
[prediactes addObject:[NSPredicate predicateWithFormat:@"SELF.tagsString CONTAINS[cd] %@", string]];
|
||||||
[prediactes addObject:[NSPredicate predicateWithFormat:@"SELF.uuid.UUIDString CONTAINS[cd] %@", string]];
|
[prediactes addObject:[NSPredicate predicateWithFormat:@"SELF.uuid.UUIDString CONTAINS[cd] %@", string]];
|
||||||
|
|
||||||
NSPredicate *allAttributesPredicate = [NSPredicate predicateWithBlock:^BOOL(id _Nullable evaluatedObject, NSDictionary<NSString *,id> * _Nullable bindings) {
|
NSPredicate *allAttributesPredicate = [NSPredicate predicateWithBlock:^BOOL(id _Nullable evaluatedObject, NSDictionary<NSString *,id> * _Nullable bindings) {
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ FOUNDATION_EXPORT NSString *const MPDocumentDidAddGroupNotification;
|
|||||||
* The userInfo dictionary contains the added entry at MPDocumentEntryKey
|
* The userInfo dictionary contains the added entry at MPDocumentEntryKey
|
||||||
*/
|
*/
|
||||||
FOUNDATION_EXPORT NSString *const MPDocumentDidAddEntryNotification;
|
FOUNDATION_EXPORT NSString *const MPDocumentDidAddEntryNotification;
|
||||||
FOUNDATION_EXPORT NSString *const MPDocumentDidRevertNotifiation;
|
FOUNDATION_EXPORT NSString *const MPDocumentDidRevertNotification;
|
||||||
|
|
||||||
FOUNDATION_EXPORT NSString *const MPDocumentDidLockDatabaseNotification;
|
FOUNDATION_EXPORT NSString *const MPDocumentDidLockDatabaseNotification;
|
||||||
FOUNDATION_EXPORT NSString *const MPDocumentDidUnlockDatabaseNotification;
|
FOUNDATION_EXPORT NSString *const MPDocumentDidUnlockDatabaseNotification;
|
||||||
@@ -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)perfromCustomSearch:(id)sender;
|
- (IBAction)performCustomSearch:(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 */
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
NSString *const MPDocumentDidAddGroupNotification = @"com.hicknhack.macpass.MPDocumentDidAddGroupNotification";
|
NSString *const MPDocumentDidAddGroupNotification = @"com.hicknhack.macpass.MPDocumentDidAddGroupNotification";
|
||||||
NSString *const MPDocumentDidAddEntryNotification = @"com.hicknhack.macpass.MPDocumentDidAddEntryNotification";
|
NSString *const MPDocumentDidAddEntryNotification = @"com.hicknhack.macpass.MPDocumentDidAddEntryNotification";
|
||||||
|
|
||||||
NSString *const MPDocumentDidRevertNotifiation = @"com.hicknhack.macpass.MPDocumentDidRevertNotifiation";
|
NSString *const MPDocumentDidRevertNotification = @"com.hicknhack.macpass.MPDocumentDidRevertNotification";
|
||||||
|
|
||||||
NSString *const MPDocumentDidLockDatabaseNotification = @"com.hicknhack.macpass.MPDocumentDidLockDatabaseNotification";
|
NSString *const MPDocumentDidLockDatabaseNotification = @"com.hicknhack.macpass.MPDocumentDidLockDatabaseNotification";
|
||||||
NSString *const MPDocumentDidUnlockDatabaseNotification = @"com.hicknhack.macpass.MPDocumentDidUnlockDatabaseNotification";
|
NSString *const MPDocumentDidUnlockDatabaseNotification = @"com.hicknhack.macpass.MPDocumentDidUnlockDatabaseNotification";
|
||||||
@@ -147,6 +147,15 @@ 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 {
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
|
||||||
- (BOOL)checkAutosavingSafetyAndReturnError:(NSError **)outError {
|
- (BOOL)checkAutosavingSafetyAndReturnError:(NSError **)outError {
|
||||||
if(![super checkAutosavingSafetyAndReturnError:outError]) {
|
if(![super checkAutosavingSafetyAndReturnError:outError]) {
|
||||||
return NO; // default checking has found an error!
|
return NO; // default checking has found an error!
|
||||||
@@ -155,7 +164,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
|||||||
if(self.encryptedData) {
|
if(self.encryptedData) {
|
||||||
return YES;
|
return YES;
|
||||||
}
|
}
|
||||||
if(self.compositeKey.hasPasswordOrKeyFile) {
|
if(self.compositeKey.hasKeys) {
|
||||||
return YES; // key is set, so autosave should be save
|
return YES; // key is set, so autosave should be save
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -166,7 +175,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];
|
||||||
}
|
}
|
||||||
@@ -178,8 +187,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
|||||||
if(!self.fileURL) {
|
if(!self.fileURL) {
|
||||||
return proposedExtension;
|
return proposedExtension;
|
||||||
}
|
}
|
||||||
NSString *actualExtension = self.fileURL.pathExtension;
|
return self.fileURL.pathExtension;
|
||||||
return actualExtension;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSData *)dataOfType:(NSString *)typeName error:(NSError * _Nullable __autoreleasing *)outError {
|
- (NSData *)dataOfType:(NSString *)typeName error:(NSError * _Nullable __autoreleasing *)outError {
|
||||||
@@ -187,7 +195,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
|||||||
NSLog(@"%@ should not be called on locked databases!", NSStringFromSelector(_cmd));
|
NSLog(@"%@ should not be called on locked databases!", NSStringFromSelector(_cmd));
|
||||||
return self.encryptedData;
|
return self.encryptedData;
|
||||||
}
|
}
|
||||||
if(!self.compositeKey.hasPasswordOrKeyFile) {
|
if(!self.compositeKey.hasKeys) {
|
||||||
if(outError != NULL) {
|
if(outError != NULL) {
|
||||||
NSDictionary *userInfo = @{ NSLocalizedDescriptionKey: NSLocalizedString(@"WARNING_ON_SAVE_NO_PASSWORD_OR_KEY_SET", "") };
|
NSDictionary *userInfo = @{ NSLocalizedDescriptionKey: NSLocalizedString(@"WARNING_ON_SAVE_NO_PASSWORD_OR_KEY_SET", "") };
|
||||||
*outError = [NSError errorWithDomain:MPDefaultErrorDomain code:0 userInfo:userInfo];
|
*outError = [NSError errorWithDomain:MPDefaultErrorDomain code:0 userInfo:userInfo];
|
||||||
@@ -203,7 +211,15 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
|||||||
}
|
}
|
||||||
return nil; // We do not know what version to save!
|
return nil; // We do not know what version to save!
|
||||||
}
|
}
|
||||||
return [self.tree encryptWithKey:self.compositeKey format:format error:outError];
|
// create a copy to allow for unblocking user interaction
|
||||||
|
NSLog(@"Copying tree to save…");
|
||||||
|
KPKTree *copy = [self.tree copy];
|
||||||
|
NSLog(@"Created copy…");
|
||||||
|
[self unblockUserInteraction];
|
||||||
|
NSLog(@"Starting encryption…");
|
||||||
|
NSData *data = [copy encryptWithKey:self.compositeKey format:format error:outError];
|
||||||
|
NSLog(@"Finished encryption…");
|
||||||
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (BOOL)readFromURL:(NSURL *)url ofType:(NSString *)typeName error:(NSError **)outError {
|
- (BOOL)readFromURL:(NSURL *)url ofType:(NSString *)typeName error:(NSError **)outError {
|
||||||
@@ -217,7 +233,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
|||||||
|
|
||||||
- (BOOL)revertToContentsOfURL:(NSURL *)absoluteURL ofType:(NSString *)typeName error:(NSError **)outError {
|
- (BOOL)revertToContentsOfURL:(NSURL *)absoluteURL ofType:(NSString *)typeName error:(NSError **)outError {
|
||||||
if([super revertToContentsOfURL:absoluteURL ofType:typeName error:outError]) {
|
if([super revertToContentsOfURL:absoluteURL ofType:typeName error:outError]) {
|
||||||
[[NSNotificationCenter defaultCenter] postNotificationName:MPDocumentDidRevertNotifiation object:self];
|
[[NSNotificationCenter defaultCenter] postNotificationName:MPDocumentDidRevertNotification object:self];
|
||||||
return YES;
|
return YES;
|
||||||
}
|
}
|
||||||
return NO;
|
return NO;
|
||||||
@@ -229,13 +245,6 @@ 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];
|
||||||
}
|
}
|
||||||
@@ -296,7 +305,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
NSAlert *alert = [[NSAlert alloc] init];
|
NSAlert *alert = [[NSAlert alloc] init];
|
||||||
alert.alertStyle = NSWarningAlertStyle;
|
alert.alertStyle = NSAlertStyleWarning;
|
||||||
alert.messageText = NSLocalizedString(@"FILE_CHANGED_BY_OTHERS_MESSAGE_TEXT", @"Message displayed when an open file was changed from another application");
|
alert.messageText = NSLocalizedString(@"FILE_CHANGED_BY_OTHERS_MESSAGE_TEXT", @"Message displayed when an open file was changed from another application");
|
||||||
alert.informativeText = NSLocalizedString(@"FILE_CHANGED_BY_OTHERS_INFO_TEXT", @"Informative text displayed when the file was change from another application");
|
alert.informativeText = NSLocalizedString(@"FILE_CHANGED_BY_OTHERS_INFO_TEXT", @"Informative text displayed when the file was change from another application");
|
||||||
alert.showsSuppressionButton = YES;
|
alert.showsSuppressionButton = YES;
|
||||||
@@ -370,7 +379,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
|||||||
|
|
||||||
if(mergeKDB) {
|
if(mergeKDB) {
|
||||||
NSAlert *alert = [[NSAlert alloc] init];
|
NSAlert *alert = [[NSAlert alloc] init];
|
||||||
alert.alertStyle = NSWarningAlertStyle;
|
alert.alertStyle = NSAlertStyleWarning;
|
||||||
alert.messageText = NSLocalizedString(@"ALERT_MERGE_KDB_FILE_MESSAGE", @"Alert message warning user about KDB file merge");
|
alert.messageText = NSLocalizedString(@"ALERT_MERGE_KDB_FILE_MESSAGE", @"Alert message warning user about KDB file merge");
|
||||||
alert.informativeText = NSLocalizedString(@"ALERT_MERGE_KDB_FILE_INFO_TEXT", @"Informative text displayed when merging KDB files");
|
alert.informativeText = NSLocalizedString(@"ALERT_MERGE_KDB_FILE_INFO_TEXT", @"Informative text displayed when merging KDB files");
|
||||||
[alert addButtonWithTitle:NSLocalizedString(@"ALERT_MERGE_CONTINUE", @"Button in dialog to merge KDB changes into file!")];
|
[alert addButtonWithTitle:NSLocalizedString(@"ALERT_MERGE_CONTINUE", @"Button in dialog to merge KDB changes into file!")];
|
||||||
@@ -419,15 +428,17 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
|||||||
[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(NSString *password, 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;
|
NSData *keyFileData = keyURL ? [NSData dataWithContentsOfURL:keyURL] : nil;
|
||||||
KPKCompositeKey *compositeKey = [[KPKCompositeKey alloc] initWithPassword:password keyFileData:keyFileData];
|
KPKCompositeKey *compositeKey = [[KPKCompositeKey alloc] init];
|
||||||
[self _mergeWithContentsFromURL:url key:compositeKey options:options];
|
[compositeKey addKey:[KPKKey keyWithPassword:password]];
|
||||||
}
|
[compositeKey addKey:[KPKKey keyWithKeyFileData:keyFileData]];
|
||||||
// just return yes regardless since we will display the sheet again if needed!
|
[self _mergeWithContentsFromURL:url key:compositeKey options:options];
|
||||||
return YES;
|
}
|
||||||
}];
|
// 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! */ }];
|
||||||
}
|
}
|
||||||
@@ -488,10 +499,13 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
- (BOOL)unlockWithPassword:(NSString *)password keyFileURL:(NSURL *)keyFileURL error:(NSError *__autoreleasing*)error{
|
- (BOOL)unlockWithPassword:(NSString *)password keyFileURL:(NSURL *)keyFileURL error:(NSError *__autoreleasing*)error {
|
||||||
// TODO: Make this API asynchronous
|
// TODO: Make this API asynchronous
|
||||||
NSData *keyFileData = keyFileURL ? [NSData dataWithContentsOfURL:keyFileURL] : nil;
|
NSData *keyFileData = keyFileURL ? [NSData dataWithContentsOfURL:keyFileURL] : nil;
|
||||||
self.compositeKey = [[KPKCompositeKey alloc] initWithPassword:password keyFileData:keyFileData];
|
|
||||||
|
self.compositeKey = [[KPKCompositeKey alloc] init];
|
||||||
|
[self.compositeKey addKey:[KPKKey keyWithPassword:password]];
|
||||||
|
[self.compositeKey addKey:[KPKKey keyWithKeyFileData:keyFileData]];
|
||||||
self.tree = [[KPKTree alloc] initWithData:self.encryptedData key:self.compositeKey error:error];
|
self.tree = [[KPKTree alloc] initWithData:self.encryptedData key:self.compositeKey error:error];
|
||||||
|
|
||||||
BOOL isUnlocked = (nil != self.tree);
|
BOOL isUnlocked = (nil != self.tree);
|
||||||
@@ -511,17 +525,15 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
|||||||
|
|
||||||
- (BOOL)changePassword:(NSString *)password keyFileURL:(NSURL *)keyFileURL {
|
- (BOOL)changePassword:(NSString *)password keyFileURL:(NSURL *)keyFileURL {
|
||||||
/* sanity check? */
|
/* sanity check? */
|
||||||
if([password length] == 0 && keyFileURL == nil) {
|
if(password.length == 0 && keyFileURL == nil) {
|
||||||
return NO;
|
return NO;
|
||||||
}
|
}
|
||||||
NSData *keyFileData = keyFileURL ? [NSData dataWithContentsOfURL:keyFileURL] : nil;
|
NSData *keyFileData = keyFileURL ? [NSData dataWithContentsOfURL:keyFileURL] : nil;
|
||||||
if(!self.compositeKey) {
|
self.compositeKey = [[KPKCompositeKey alloc] init];
|
||||||
self.compositeKey = [[KPKCompositeKey alloc] initWithPassword:password keyFileData:keyFileData];
|
[self.compositeKey addKey:[KPKKey keyWithPassword:password]];
|
||||||
}
|
[self.compositeKey addKey:[KPKKey keyWithKeyFileData:keyFileData]];
|
||||||
else {
|
|
||||||
[self.compositeKey setPassword:password andKeyFileData:keyFileData];
|
self.tree.metaData.masterKeyChanged = NSDate.date;
|
||||||
}
|
|
||||||
self.tree.metaData.masterKeyChanged = [NSDate date];
|
|
||||||
/* Key change is not undoable so just recored the change as done */
|
/* Key change is not undoable so just recored the change as done */
|
||||||
[self updateChangeCount:NSChangeDone];
|
[self updateChangeCount:NSChangeDone];
|
||||||
/*
|
/*
|
||||||
@@ -667,20 +679,25 @@ 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;
|
|
||||||
[self.undoManager disableUndoRegistration];
|
KPK_SCOPED_DISABLE_UNDO_BEGIN(self.undoManager)
|
||||||
|
|
||||||
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;
|
||||||
}
|
}
|
||||||
NSString *defaultPassword = [NSString passwordWithDefaultSettings];
|
|
||||||
if(defaultPassword) {
|
/* only generate passwords for new entries, if set */
|
||||||
newEntry.password = defaultPassword;
|
BOOL generatePassword = [NSUserDefaults.standardUserDefaults boolForKey:kMPSettingsKeyGeneratePasswordForNewEntires];
|
||||||
}
|
if(generatePassword) {
|
||||||
/* re-enable undo/redo if we did turn it off */
|
NSString *defaultPassword = [NSString passwordWithDefaultSettings];
|
||||||
if(wasUndoEnabeld) {
|
if(defaultPassword) {
|
||||||
[self.undoManager enableUndoRegistration];
|
newEntry.password = defaultPassword;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
KPK_SCOPED_DISABLE_UNDO_END
|
||||||
|
|
||||||
[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
|
||||||
@@ -698,14 +715,13 @@ 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 */
|
||||||
BOOL wasUndoEnabeld = self.undoManager.isUndoRegistrationEnabled;
|
KPK_SCOPED_DISABLE_UNDO_BEGIN(self.undoManager);
|
||||||
[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 */
|
|
||||||
if(wasUndoEnabeld) {
|
KPK_SCOPED_DISABLE_UNDO_END;
|
||||||
[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
|
||||||
@@ -752,7 +768,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
|||||||
#pragma mark Actions
|
#pragma mark Actions
|
||||||
- (void)emptyTrash:(id)sender {
|
- (void)emptyTrash:(id)sender {
|
||||||
NSAlert *alert = [[NSAlert alloc] init];
|
NSAlert *alert = [[NSAlert alloc] init];
|
||||||
alert.alertStyle = NSWarningAlertStyle;
|
alert.alertStyle = NSAlertStyleWarning;
|
||||||
alert.messageText = NSLocalizedString(@"WARNING_ON_EMPTY_TRASH_TITLE", "Message text for the alert displayed when clearing the Trash");
|
alert.messageText = NSLocalizedString(@"WARNING_ON_EMPTY_TRASH_TITLE", "Message text for the alert displayed when clearing the Trash");
|
||||||
alert.informativeText = NSLocalizedString(@"WARNING_ON_EMPTY_TRASH_DESCRIPTION", "Informative Text displayed when clearing the Trash");
|
alert.informativeText = NSLocalizedString(@"WARNING_ON_EMPTY_TRASH_DESCRIPTION", "Informative Text displayed when clearing the Trash");
|
||||||
|
|
||||||
@@ -771,7 +787,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
|||||||
KPKEntry *entry = node.asEntry;
|
KPKEntry *entry = node.asEntry;
|
||||||
|
|
||||||
NSAlert *alert = [[NSAlert alloc] init];
|
NSAlert *alert = [[NSAlert alloc] init];
|
||||||
alert.alertStyle = NSWarningAlertStyle;
|
alert.alertStyle = NSAlertStyleWarning;
|
||||||
alert.messageText = NSLocalizedString(@"WARNING_ON_DELETE_TRASHED_NODE_TITLE", "Message text for the alert displayed when deleting a node");
|
alert.messageText = NSLocalizedString(@"WARNING_ON_DELETE_TRASHED_NODE_TITLE", "Message text for the alert displayed when deleting a node");
|
||||||
alert.informativeText = NSLocalizedString(@"WARNING_ON_DELETE_TRASHED_NODE_DESCRIPTION", "Informative Text displayed when clearing the Trash");
|
alert.informativeText = NSLocalizedString(@"WARNING_ON_DELETE_TRASHED_NODE_DESCRIPTION", "Informative Text displayed when clearing the Trash");
|
||||||
|
|
||||||
@@ -833,13 +849,20 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (void)duplicateEntryWithOptions:(KPKCopyOptions)options {
|
- (void)duplicateEntryWithOptions:(KPKCopyOptions)options {
|
||||||
|
KPKEntry *lastDuplicate;
|
||||||
for(KPKEntry *entry in self.selectedEntries) {
|
for(KPKEntry *entry in self.selectedEntries) {
|
||||||
KPKEntry *duplicate = [entry copyWithTitle:nil options:options];
|
lastDuplicate = [entry copyWithTitle:nil options:options];
|
||||||
[duplicate addToGroup:entry.parent];
|
[lastDuplicate 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) {
|
||||||
|
[NSNotificationCenter.defaultCenter postNotificationName:MPDocumentDidAddEntryNotification
|
||||||
|
object:self
|
||||||
|
userInfo:@{ MPDocumentEntryKey: lastDuplicate }];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
- (void)duplicateGroup:(id)sender {
|
- (void)duplicateGroup:(id)sender {
|
||||||
for(KPKGroup *group in self.selectedGroups) {
|
for(KPKGroup *group in self.selectedGroups) {
|
||||||
KPKGroup *duplicate = [group copyWithTitle:nil options:kKPKCopyOptionNone];
|
KPKGroup *duplicate = [group copyWithTitle:nil options:kKPKCopyOptionNone];
|
||||||
@@ -872,6 +895,10 @@ 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -953,7 +980,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
|||||||
/* user has removed the keyfile or we should not safe it so remove it */
|
/* user has removed the keyfile or we should not safe it so remove it */
|
||||||
[keysForFiles removeObjectForKey:self.fileURL.path.sha1HexDigest];
|
[keysForFiles removeObjectForKey:self.fileURL.path.sha1HexDigest];
|
||||||
}
|
}
|
||||||
else if(self.compositeKey.hasPassword && self.compositeKey.hasKeyFile) {
|
else if([self.compositeKey hasKeyOfClass:KPKPasswordKey.class] && [self.compositeKey hasKeyOfClass:KPKFileKey.class]) {
|
||||||
if(nil == keysForFiles) {
|
if(nil == keysForFiles) {
|
||||||
keysForFiles = [[NSMutableDictionary alloc] initWithCapacity:1];
|
keysForFiles = [[NSMutableDictionary alloc] initWithCapacity:1];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,6 +31,8 @@
|
|||||||
#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;
|
||||||
@@ -43,6 +45,14 @@
|
|||||||
|
|
||||||
@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) {
|
||||||
@@ -83,6 +93,16 @@
|
|||||||
[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
|
||||||
@@ -93,7 +113,12 @@
|
|||||||
}
|
}
|
||||||
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) {
|
||||||
@@ -105,7 +130,7 @@
|
|||||||
NSAlert *alert = [[NSAlert alloc] init];
|
NSAlert *alert = [[NSAlert alloc] init];
|
||||||
alert.messageText = NSLocalizedString(@"FILE_OPEN_ERROR", "Error while reopening last known documents");
|
alert.messageText = NSLocalizedString(@"FILE_OPEN_ERROR", "Error while reopening last known documents");
|
||||||
alert.informativeText = error.localizedDescription;
|
alert.informativeText = error.localizedDescription;
|
||||||
alert.alertStyle = NSCriticalAlertStyle;
|
alert.alertStyle = NSAlertStyleCritical;
|
||||||
[alert runModal];
|
[alert runModal];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
30
MacPass/MPDocumentSplitViewController.h
Normal file
30
MacPass/MPDocumentSplitViewController.h
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
//
|
||||||
|
// MPDocumentSplitViewController.h
|
||||||
|
// MacPass
|
||||||
|
//
|
||||||
|
// Created by Michael Starke on 31.01.20.
|
||||||
|
// Copyright © 2020 HicknHack Software GmbH. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <Cocoa/Cocoa.h>
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
@class MPEntryViewController;
|
||||||
|
@class MPInspectorViewController;
|
||||||
|
@class MPOutlineViewController;
|
||||||
|
@class MPDocument;
|
||||||
|
|
||||||
|
@interface MPDocumentSplitViewController : NSSplitViewController
|
||||||
|
|
||||||
|
@property (readonly, strong) MPEntryViewController *entryViewController;
|
||||||
|
@property (readonly, strong) MPOutlineViewController *outlineViewController;
|
||||||
|
@property (readonly, strong) MPInspectorViewController *inspectorViewController;
|
||||||
|
|
||||||
|
- (void)registerNotificationsForDocument:(MPDocument *)document;
|
||||||
|
- (IBAction)toggleInspector:(id)sender;
|
||||||
|
- (void)showOutline;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
||||||
129
MacPass/MPDocumentSplitViewController.m
Normal file
129
MacPass/MPDocumentSplitViewController.m
Normal file
@@ -0,0 +1,129 @@
|
|||||||
|
//
|
||||||
|
// MPDocumentSplitViewController.m
|
||||||
|
// MacPass
|
||||||
|
//
|
||||||
|
// Created by Michael Starke on 31.01.20.
|
||||||
|
// Copyright © 2020 HicknHack Software GmbH. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "MPDocumentSplitViewController.h"
|
||||||
|
#import "MPOutlineViewController.h"
|
||||||
|
#import "MPEntryViewController.h"
|
||||||
|
#import "MPInspectorViewController.h"
|
||||||
|
#import "MPSettingsHelper.h"
|
||||||
|
|
||||||
|
@interface MPDocumentSplitViewController ()
|
||||||
|
|
||||||
|
@property (strong) MPEntryViewController *entryViewController;
|
||||||
|
@property (strong) MPOutlineViewController *outlineViewController;
|
||||||
|
@property (strong) MPInspectorViewController *inspectorViewController;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation MPDocumentSplitViewController
|
||||||
|
|
||||||
|
- (NSNibName)nibName {
|
||||||
|
return @"DocumentSplitView";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
- (instancetype)initWithNibName:(NSNibName)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
|
||||||
|
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
|
||||||
|
if(self) {
|
||||||
|
_outlineViewController = [[MPOutlineViewController alloc] init];
|
||||||
|
_entryViewController = [[MPEntryViewController alloc] init];
|
||||||
|
_inspectorViewController = [[MPInspectorViewController alloc] init];
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)viewWillLayout {
|
||||||
|
self.splitView.autosaveName = @"SplitView";
|
||||||
|
[super viewWillLayout];
|
||||||
|
}
|
||||||
|
|
||||||
|
/*- (void)updateViewConstraints {
|
||||||
|
[super updateViewConstraints];
|
||||||
|
if(self.inspectorTopEdgeConstraint) {
|
||||||
|
if(!self.inspectorTopEdgeConstraint.isActive) {
|
||||||
|
self.inspectorTopEdgeConstraint.active = YES;
|
||||||
|
}
|
||||||
|
return; // everything is set up.
|
||||||
|
}
|
||||||
|
// setup the constraint if needed
|
||||||
|
NSWindow *window = self.view.window;
|
||||||
|
if(!window) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
NSSplitViewItem *inspector = [self splitViewItemForViewController:self.inspectorViewController];
|
||||||
|
NSSplitViewItem *entries = [self splitViewItemForViewController:self.entryViewController];
|
||||||
|
NSSplitViewItem *outline = [self splitViewItemForViewController:self.outlineViewController];
|
||||||
|
[inspector.viewController.view.topAnchor constraintEqualToAnchor:[window.contentLayoutGuide topAnchor]].active = YES;
|
||||||
|
[entries.viewController.view.topAnchor constraintEqualToAnchor:[window.contentLayoutGuide topAnchor]].active = YES;
|
||||||
|
[outline.viewController.view.topAnchor constraintEqualToAnchor:[window.contentLayoutGuide topAnchor]].active = YES;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
- (void)viewDidLoad {
|
||||||
|
[super viewDidLoad];
|
||||||
|
|
||||||
|
self.splitView.translatesAutoresizingMaskIntoConstraints = NO;
|
||||||
|
|
||||||
|
NSSplitViewItem *outlineItem = [NSSplitViewItem sidebarWithViewController:self.outlineViewController];
|
||||||
|
outlineItem.holdingPriority = NSLayoutPriorityDefaultLow + 2;
|
||||||
|
outlineItem.canCollapse = NO;
|
||||||
|
outlineItem.minimumThickness = 150;
|
||||||
|
NSSplitViewItem *entries = [NSSplitViewItem splitViewItemWithViewController:self.entryViewController];
|
||||||
|
entries.canCollapse = NO;
|
||||||
|
entries.minimumThickness = 150;
|
||||||
|
NSSplitViewItem *inspector = [NSSplitViewItem splitViewItemWithViewController:self.inspectorViewController];
|
||||||
|
inspector.canCollapse = YES;
|
||||||
|
inspector.minimumThickness = 200;
|
||||||
|
inspector.holdingPriority = NSLayoutPriorityDefaultLow + 1;
|
||||||
|
|
||||||
|
[self addSplitViewItem:outlineItem];
|
||||||
|
[self addSplitViewItem:entries];
|
||||||
|
[self addSplitViewItem:inspector];
|
||||||
|
|
||||||
|
BOOL showInspector = [NSUserDefaults.standardUserDefaults boolForKey:kMPSettingsKeyShowInspector];
|
||||||
|
inspector.collapsed = !showInspector;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)registerNotificationsForDocument:(MPDocument *)document {
|
||||||
|
|
||||||
|
[self.entryViewController registerNotificationsForDocument:document];
|
||||||
|
[self.outlineViewController registerNotificationsForDocument:document];
|
||||||
|
[self.inspectorViewController registerNotificationsForDocument:document];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)showOutline {
|
||||||
|
// FIXME: do not require this to be called directly
|
||||||
|
[self.outlineViewController showOutline];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)toggleInspector:(id)sender {
|
||||||
|
NSSplitViewItem *inspector = [self splitViewItemForViewController:self.inspectorViewController];
|
||||||
|
inspector.collapsed = !inspector.collapsed;
|
||||||
|
[NSUserDefaults.standardUserDefaults setBool:!inspector.collapsed forKey:kMPSettingsKeyShowInspector];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (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
|
||||||
@@ -34,9 +34,6 @@
|
|||||||
@interface MPDocumentWindowController : NSWindowController <NSTouchBarDelegate>
|
@interface MPDocumentWindowController : NSWindowController <NSTouchBarDelegate>
|
||||||
|
|
||||||
@property (readonly, strong) MPPasswordInputController *passwordInputController;
|
@property (readonly, strong) MPPasswordInputController *passwordInputController;
|
||||||
@property (readonly, strong) MPEntryViewController *entryViewController;
|
|
||||||
@property (readonly, strong) MPOutlineViewController *outlineViewController;
|
|
||||||
@property (readonly, strong) MPInspectorViewController *inspectorViewController;
|
|
||||||
@property (readonly, strong) MPToolbarDelegate *toolbarDelegate;
|
@property (readonly, strong) MPToolbarDelegate *toolbarDelegate;
|
||||||
|
|
||||||
@property (readonly, nonatomic, strong) NSSearchField *searchField;
|
@property (readonly, nonatomic, strong) NSSearchField *searchField;
|
||||||
@@ -58,7 +55,8 @@
|
|||||||
- (IBAction)exportAsXML:(id)sender;
|
- (IBAction)exportAsXML:(id)sender;
|
||||||
- (IBAction)mergeWithOther:(id)sender;
|
- (IBAction)mergeWithOther:(id)sender;
|
||||||
- (IBAction)importFromXML:(id)sender;
|
- (IBAction)importFromXML:(id)sender;
|
||||||
- (IBAction)importFromPlugin:(id)sender;
|
- (IBAction)importWithPlugin:(id)sender;
|
||||||
|
- (IBAction)exportWithPlugin:(id)sender;
|
||||||
|
|
||||||
- (IBAction)lock:(id)sender;
|
- (IBAction)lock:(id)sender;
|
||||||
- (IBAction)createGroup:(id)sender;
|
- (IBAction)createGroup:(id)sender;
|
||||||
@@ -66,19 +64,10 @@
|
|||||||
- (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;
|
||||||
|
|
||||||
|
|||||||
@@ -29,6 +29,7 @@
|
|||||||
#import "MPDatabaseSettingsWindowController.h"
|
#import "MPDatabaseSettingsWindowController.h"
|
||||||
#import "MPDocument.h"
|
#import "MPDocument.h"
|
||||||
#import "MPDocumentWindowDelegate.h"
|
#import "MPDocumentWindowDelegate.h"
|
||||||
|
#import "MPDocumentSplitViewController.h"
|
||||||
#import "MPDuplicateEntryOptionsWindowController.h"
|
#import "MPDuplicateEntryOptionsWindowController.h"
|
||||||
#import "MPEntryViewController.h"
|
#import "MPEntryViewController.h"
|
||||||
#import "MPFixAutotypeWindowController.h"
|
#import "MPFixAutotypeWindowController.h"
|
||||||
@@ -58,14 +59,11 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
|||||||
id _firstResponder;
|
id _firstResponder;
|
||||||
}
|
}
|
||||||
|
|
||||||
@property (strong) IBOutlet NSSplitView *splitView;
|
|
||||||
|
|
||||||
@property (strong) NSToolbar *toolbar;
|
@property (strong) NSToolbar *toolbar;
|
||||||
|
|
||||||
@property (strong) MPPasswordInputController *passwordInputController;
|
@property (strong) MPPasswordInputController *passwordInputController;
|
||||||
@property (strong) MPEntryViewController *entryViewController;
|
@property (strong) MPDocumentSplitViewController *splitViewController;
|
||||||
@property (strong) MPOutlineViewController *outlineViewController;
|
|
||||||
@property (strong) MPInspectorViewController *inspectorViewController;
|
|
||||||
@property (strong) MPDatabaseSettingsWindowController *documentSettingsWindowController;
|
@property (strong) MPDatabaseSettingsWindowController *documentSettingsWindowController;
|
||||||
@property (strong) MPDocumentWindowDelegate *documentWindowDelegate;
|
@property (strong) MPDocumentWindowDelegate *documentWindowDelegate;
|
||||||
@property (strong) MPPasswordEditWindowController *passwordEditWindowController;
|
@property (strong) MPPasswordEditWindowController *passwordEditWindowController;
|
||||||
@@ -87,9 +85,7 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
|||||||
if( self ) {
|
if( self ) {
|
||||||
_firstResponder = nil;
|
_firstResponder = nil;
|
||||||
_toolbarDelegate = [[MPToolbarDelegate alloc] init];
|
_toolbarDelegate = [[MPToolbarDelegate alloc] init];
|
||||||
_outlineViewController = [[MPOutlineViewController alloc] init];
|
_splitViewController = [[MPDocumentSplitViewController alloc] init];
|
||||||
_entryViewController = [[MPEntryViewController alloc] init];
|
|
||||||
_inspectorViewController = [[MPInspectorViewController alloc] init];
|
|
||||||
_documentWindowDelegate = [[MPDocumentWindowDelegate alloc] init];
|
_documentWindowDelegate = [[MPDocumentWindowDelegate alloc] init];
|
||||||
}
|
}
|
||||||
return self;
|
return self;
|
||||||
@@ -104,45 +100,44 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
|||||||
[super windowDidLoad];
|
[super windowDidLoad];
|
||||||
|
|
||||||
self.window.delegate = self.documentWindowDelegate;
|
self.window.delegate = self.documentWindowDelegate;
|
||||||
|
if (@available(macOS 11.0, *)) {
|
||||||
|
/* let the user decide how to dipsplay the toolbar */
|
||||||
|
BOOL useUnifiedToolbar = [NSUserDefaults.standardUserDefaults boolForKey:kMPSettingsKeyUseUnifiedToolbar];
|
||||||
|
if(useUnifiedToolbar) {
|
||||||
|
self.window.toolbarStyle = NSWindowToolbarStyleAutomatic;
|
||||||
|
// Do not use full size since the sidebar takes too much room!
|
||||||
|
// self.window.styleMask |= NSWindowStyleMaskFullSizeContentView;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
self.window.toolbarStyle = NSWindowToolbarStyleExpanded;
|
||||||
|
}
|
||||||
|
}
|
||||||
[self.window registerForDraggedTypes:@[NSURLPboardType]];
|
[self.window registerForDraggedTypes:@[NSURLPboardType]];
|
||||||
|
|
||||||
MPDocument *document = self.document;
|
MPDocument *document = self.document;
|
||||||
|
|
||||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didRevertDocument:) name:MPDocumentDidRevertNotifiation object:document];
|
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didRevertDocument:) name:MPDocumentDidRevertNotification object:document];
|
||||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didUnlockDatabase:) name:MPDocumentDidUnlockDatabaseNotification object:document];
|
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didUnlockDatabase:) name:MPDocumentDidUnlockDatabaseNotification object:document];
|
||||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didAddEntry:) name:MPDocumentDidAddEntryNotification object:document];
|
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didAddEntry:) name:MPDocumentDidAddEntryNotification object:document];
|
||||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didAddGroup:) name:MPDocumentDidAddGroupNotification object:document];
|
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didAddGroup:) name:MPDocumentDidAddGroupNotification object:document];
|
||||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didLockDatabase:) name:MPDocumentDidLockDatabaseNotification object:document];
|
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didLockDatabase:) name:MPDocumentDidLockDatabaseNotification object:document];
|
||||||
|
|
||||||
[self.entryViewController registerNotificationsForDocument:document];
|
[self.splitViewController registerNotificationsForDocument:document];
|
||||||
[self.inspectorViewController registerNotificationsForDocument:document];
|
|
||||||
[self.outlineViewController registerNotificationsForDocument:document];
|
|
||||||
[self.toolbarDelegate registerNotificationsForDocument:document];
|
[self.toolbarDelegate registerNotificationsForDocument:document];
|
||||||
|
|
||||||
self.toolbar = [[NSToolbar alloc] initWithIdentifier:@"MainWindowToolbar"];
|
self.toolbar = [[NSToolbar alloc] initWithIdentifier:@"MainWindowToolbar"];
|
||||||
self.toolbar.autosavesConfiguration = YES;
|
self.toolbar.autosavesConfiguration = YES;
|
||||||
self.toolbar.allowsUserCustomization = YES;
|
self.toolbar.allowsUserCustomization = YES;
|
||||||
|
/* center search in toolbar */
|
||||||
|
if (@available(macOS 10.14, *)) {
|
||||||
|
self.toolbar.centeredItemIdentifier = MPToolbarItemIdentifierSearch;
|
||||||
|
} else {
|
||||||
|
// to not do any magic here
|
||||||
|
}
|
||||||
self.toolbar.delegate = self.toolbarDelegate;
|
self.toolbar.delegate = self.toolbarDelegate;
|
||||||
self.window.toolbar = self.toolbar;
|
self.window.toolbar = self.toolbar;
|
||||||
self.toolbarDelegate.toolbar = self.toolbar;
|
self.toolbarDelegate.toolbar = self.toolbar;
|
||||||
|
|
||||||
self.splitView.translatesAutoresizingMaskIntoConstraints = NO;
|
|
||||||
|
|
||||||
NSView *outlineView = self.outlineViewController.view;
|
|
||||||
NSView *inspectorView = self.inspectorViewController.view;
|
|
||||||
NSView *entryView = self.entryViewController.view;
|
|
||||||
[self.splitView addSubview:outlineView];
|
|
||||||
[self.splitView addSubview:entryView];
|
|
||||||
[self.splitView addSubview:inspectorView];
|
|
||||||
|
|
||||||
[self.splitView setHoldingPriority:NSLayoutPriorityDefaultLow+2 forSubviewAtIndex:0];
|
|
||||||
[self.splitView setHoldingPriority:NSLayoutPriorityDefaultLow+1 forSubviewAtIndex:2];
|
|
||||||
|
|
||||||
BOOL showInspector = [NSUserDefaults.standardUserDefaults boolForKey:kMPSettingsKeyShowInspector];
|
|
||||||
if(!showInspector) {
|
|
||||||
[inspectorView removeFromSuperview];
|
|
||||||
}
|
|
||||||
|
|
||||||
if(document.encrypted) {
|
if(document.encrypted) {
|
||||||
[self showPasswordInput];
|
[self showPasswordInput];
|
||||||
}
|
}
|
||||||
@@ -150,8 +145,6 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
|||||||
[self showEntries];
|
[self showEntries];
|
||||||
}
|
}
|
||||||
|
|
||||||
self.splitView.autosaveName = @"SplitView";
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
TODO: Add display for database color?
|
TODO: Add display for database color?
|
||||||
NSTitlebarAccessoryViewController *tbc = [[MPTitlebarColorAccessoryViewController alloc] init];
|
NSTitlebarAccessoryViewController *tbc = [[MPTitlebarColorAccessoryViewController alloc] init];
|
||||||
@@ -164,40 +157,21 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
|||||||
return self.toolbarDelegate.searchField;
|
return self.toolbarDelegate.searchField;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)_setContentViewController:(MPViewController *)viewController {
|
- (void)setContentViewController:(NSViewController *)contentViewController {
|
||||||
|
contentViewController.view.frame = self.window.contentView.frame;
|
||||||
NSView *newContentView = nil;
|
[super setContentViewController:contentViewController];
|
||||||
if(viewController && viewController.view) {
|
if([contentViewController isKindOfClass:MPViewController.class]) {
|
||||||
newContentView = viewController.view;
|
/* enqueue async into main to catch some cases, where the UI would not set the responder correctly */
|
||||||
|
MPDocumentWindowController * __weak welf = self;
|
||||||
|
dispatch_async(dispatch_get_main_queue(), ^{
|
||||||
|
NSResponder *responder = ((MPViewController *)contentViewController).reconmendedFirstResponder;
|
||||||
|
[welf.window makeFirstResponder:responder];
|
||||||
|
});
|
||||||
}
|
}
|
||||||
NSView *contentView = self.window.contentView;
|
|
||||||
NSView *oldSubView = nil;
|
|
||||||
if(contentView.subviews.count == 1) {
|
|
||||||
oldSubView = contentView.subviews.firstObject;
|
|
||||||
}
|
|
||||||
if(oldSubView == newContentView) {
|
|
||||||
return; // View is already present
|
|
||||||
}
|
|
||||||
[oldSubView removeFromSuperviewWithoutNeedingDisplay];
|
|
||||||
[contentView addSubview:newContentView];
|
|
||||||
[contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[newContentView]|"
|
|
||||||
options:0
|
|
||||||
metrics:nil
|
|
||||||
views:NSDictionaryOfVariableBindings(newContentView)]];
|
|
||||||
|
|
||||||
NSNumber *border = @([[self window] contentBorderThicknessForEdge:NSMinYEdge]);
|
|
||||||
[contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[newContentView]-border-|"
|
|
||||||
options:0
|
|
||||||
metrics:NSDictionaryOfVariableBindings(border)
|
|
||||||
views:NSDictionaryOfVariableBindings(newContentView)]];
|
|
||||||
|
|
||||||
[contentView layout];
|
|
||||||
[self.window makeFirstResponder:viewController.reconmendedFirstResponder];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark MPDocument notifications
|
#pragma mark MPDocument notifications
|
||||||
- (void)_didRevertDocument:(NSNotification *)notification {
|
- (void)_didRevertDocument:(NSNotification *)notification {
|
||||||
[self.outlineViewController clearSelection];
|
|
||||||
[self showPasswordInput];
|
[self showPasswordInput];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -215,6 +189,10 @@ 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];
|
||||||
}
|
}
|
||||||
@@ -256,7 +234,7 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
|||||||
savePanel.allowedFileTypes = @[(id)kUTTypeXML];
|
savePanel.allowedFileTypes = @[(id)kUTTypeXML];
|
||||||
savePanel.canSelectHiddenExtension = YES;
|
savePanel.canSelectHiddenExtension = YES;
|
||||||
[savePanel beginSheetModalForWindow:self.window completionHandler:^(NSInteger result) {
|
[savePanel beginSheetModalForWindow:self.window completionHandler:^(NSInteger result) {
|
||||||
if(result == NSFileHandlingPanelOKButton) {
|
if(result == NSModalResponseOK) {
|
||||||
[document writeXMLToURL:savePanel.URL];
|
[document writeXMLToURL:savePanel.URL];
|
||||||
}
|
}
|
||||||
}];
|
}];
|
||||||
@@ -272,19 +250,19 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
|||||||
openPanel.prompt = NSLocalizedString(@"OPEN_BUTTON_IMPORT_XML_OPEN_PANEL", "Open button in the open panel to import an XML file");
|
openPanel.prompt = NSLocalizedString(@"OPEN_BUTTON_IMPORT_XML_OPEN_PANEL", "Open button in the open panel to import an XML file");
|
||||||
openPanel.message = NSLocalizedString(@"MESSAGE_XML_OPEN_PANEL", "Message in the open panel to import an XML file");
|
openPanel.message = NSLocalizedString(@"MESSAGE_XML_OPEN_PANEL", "Message in the open panel to import an XML file");
|
||||||
[openPanel beginSheetModalForWindow:self.window completionHandler:^(NSInteger result) {
|
[openPanel beginSheetModalForWindow:self.window completionHandler:^(NSInteger result) {
|
||||||
if(result == NSFileHandlingPanelOKButton) {
|
if(result == NSModalResponseOK) {
|
||||||
[document readXMLfromURL:openPanel.URL];
|
[document readXMLfromURL:openPanel.URL];
|
||||||
[self.outlineViewController showOutline];
|
[self.splitViewController showOutline];
|
||||||
}
|
}
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)importFromPlugin:(id)sender {
|
- (void)importWithPlugin:(id)sender {
|
||||||
if(![sender isKindOfClass:NSMenuItem.class]) {
|
if(![sender isKindOfClass:NSMenuItem.class]) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
NSMenuItem *menuItem = sender;
|
NSMenuItem *menuItem = sender;
|
||||||
if(![menuItem.representedObject isKindOfClass:NSDictionary.class]) {
|
if(![menuItem.representedObject isKindOfClass:NSString.class]) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -292,12 +270,39 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
|||||||
if(!sheetWindow) {
|
if(!sheetWindow) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
MPPlugin<MPImportPlugin> *importPlugin;
|
NSString *bundleIdentifier = menuItem.representedObject;
|
||||||
|
MPPlugin<MPImportPlugin> *importPlugin = (MPPlugin<MPImportPlugin> *)[MPPluginHost.sharedHost pluginWithBundleIdentifier:bundleIdentifier];
|
||||||
NSOpenPanel *openPanel = NSOpenPanel.openPanel;
|
NSOpenPanel *openPanel = NSOpenPanel.openPanel;
|
||||||
[importPlugin prepareOpenPanel:openPanel];
|
[importPlugin prepareOpenPanel:openPanel];
|
||||||
[openPanel beginSheetModalForWindow:sheetWindow completionHandler:^(NSModalResponse result) {
|
[openPanel beginSheetModalForWindow:sheetWindow completionHandler:^(NSModalResponse result) {
|
||||||
KPKTree *importedTree = [importPlugin treeForRunningOpenPanel:openPanel withResponse:result];
|
if(result == NSModalResponseOK) {
|
||||||
[self.document importTree:importedTree];
|
KPKTree *importedTree = [importPlugin treeForRunningOpenPanel:openPanel];
|
||||||
|
[self.document importTree:importedTree];
|
||||||
|
}
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)exportWithPlugin:(id)sender {
|
||||||
|
if(![sender isKindOfClass:NSMenuItem.class]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
NSMenuItem *menuItem = sender;
|
||||||
|
if(![menuItem.representedObject isKindOfClass:NSString.class]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
NSWindow *sheetWindow = ((MPDocument *)self.document).windowForSheet;
|
||||||
|
if(!sheetWindow) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
NSString *bundleIdentifier = menuItem.representedObject;
|
||||||
|
MPPlugin<MPExportPlugin> *exportPlugin = (MPPlugin<MPExportPlugin> *)[MPPluginHost.sharedHost pluginWithBundleIdentifier:bundleIdentifier];
|
||||||
|
NSSavePanel *savePanel = NSSavePanel.savePanel;
|
||||||
|
[exportPlugin prepareSavePanel:savePanel];
|
||||||
|
[savePanel beginSheetModalForWindow:sheetWindow completionHandler:^(NSModalResponse result) {
|
||||||
|
if(result == NSModalResponseOK) {
|
||||||
|
[exportPlugin exportTree:((MPDocument *)self.document).tree forRunningSavePanel:savePanel];
|
||||||
|
}
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -310,7 +315,7 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
|||||||
openPanel.message = NSLocalizedString(@"SELECT_FILE_TO_MERGE", @"Message for the dialog to open a file for merge");
|
openPanel.message = NSLocalizedString(@"SELECT_FILE_TO_MERGE", @"Message for the dialog to open a file for merge");
|
||||||
//openPanel.allowedFileTypes = @[(id)kUTTypeXML];
|
//openPanel.allowedFileTypes = @[(id)kUTTypeXML];
|
||||||
[openPanel beginSheetModalForWindow:self.window completionHandler:^(NSInteger result) {
|
[openPanel beginSheetModalForWindow:self.window completionHandler:^(NSInteger result) {
|
||||||
if(result == NSFileHandlingPanelOKButton) {
|
if(result == NSModalResponseOK) {
|
||||||
[document mergeWithContentsFromURL:openPanel.URL key:document.compositeKey];
|
[document mergeWithContentsFromURL:openPanel.URL key:document.compositeKey];
|
||||||
}
|
}
|
||||||
}];
|
}];
|
||||||
@@ -331,7 +336,7 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
|||||||
if(!self.passwordInputController) {
|
if(!self.passwordInputController) {
|
||||||
self.passwordInputController = [[MPPasswordInputController alloc] init];
|
self.passwordInputController = [[MPPasswordInputController alloc] init];
|
||||||
}
|
}
|
||||||
[self _setContentViewController:self.passwordInputController];
|
self.contentViewController = self.passwordInputController;
|
||||||
[self.passwordInputController requestPasswordWithMessage:message cancelLabel:nil completionHandler:^BOOL(NSString *password, NSURL *keyURL, BOOL didCancel, NSError *__autoreleasing *error) {
|
[self.passwordInputController requestPasswordWithMessage:message cancelLabel:nil completionHandler:^BOOL(NSString *password, NSURL *keyURL, BOOL didCancel, NSError *__autoreleasing *error) {
|
||||||
if(didCancel) {
|
if(didCancel) {
|
||||||
return NO;
|
return NO;
|
||||||
@@ -436,35 +441,15 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
|||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)pickExpiryDate:(id)sender {
|
|
||||||
[self.inspectorViewController pickExpiryDate:sender];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)showPluginData:(id)sender {
|
|
||||||
[self.inspectorViewController showPluginData:sender];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)toggleInspector:(id)sender {
|
- (void)toggleInspector:(id)sender {
|
||||||
NSView *inspectorView = self.inspectorViewController.view;
|
[self.splitViewController toggleInspector:sender];
|
||||||
BOOL inspectorWasVisible = [self _isInspectorVisible];
|
|
||||||
if(inspectorWasVisible) {
|
|
||||||
[inspectorView removeFromSuperview];
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
[self.splitView addSubview:inspectorView];
|
|
||||||
[self.splitView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"[inspectorView(>=200)]"
|
|
||||||
options:0
|
|
||||||
metrics:nil
|
|
||||||
views:NSDictionaryOfVariableBindings(inspectorView)]];
|
|
||||||
}
|
|
||||||
[[NSUserDefaults standardUserDefaults] setBool:!inspectorWasVisible forKey:kMPSettingsKeyShowInspector];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)performAutotypeForEntry:(id)sender {
|
- (void)performAutotypeForEntry:(id)sender {
|
||||||
id<MPTargetNodeResolving> entryResolver = [NSApp targetForAction:@selector(currentTargetEntries)];
|
id<MPTargetNodeResolving> entryResolver = [NSApp targetForAction:@selector(currentTargetEntries)];
|
||||||
NSArray *entries = entryResolver.currentTargetEntries;
|
NSArray *entries = entryResolver.currentTargetEntries;
|
||||||
if(entries.count == 1) {
|
if(entries.count == 1) {
|
||||||
[[MPAutotypeDaemon defaultDaemon] performAutotypeForEntry:entries.firstObject];
|
[MPAutotypeDaemon.defaultDaemon performAutotypeForEntry:entries.firstObject];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -475,108 +460,31 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (void)focusEntries:(id)sender {
|
- (void)focusEntries:(id)sender {
|
||||||
[self.window makeFirstResponder:[self.entryViewController reconmendedFirstResponder]];
|
// FIXME: use propert responder chain
|
||||||
|
[self.window makeFirstResponder:[self.splitViewController.entryViewController reconmendedFirstResponder]];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)focusGroups:(id)sender {
|
- (void)focusGroups:(id)sender {
|
||||||
[self.window makeFirstResponder:[self.outlineViewController reconmendedFirstResponder]];
|
// FIXME: use propert responder chain
|
||||||
|
[self.window makeFirstResponder:[self.splitViewController.outlineViewController reconmendedFirstResponder]];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)focusInspector:(id)sender {
|
- (void)focusInspector:(id)sender {
|
||||||
[self.window makeFirstResponder:[self.inspectorViewController reconmendedFirstResponder]];
|
// FIXME: use propert responder chain
|
||||||
|
[self.window makeFirstResponder:[self.splitViewController.inspectorViewController reconmendedFirstResponder]];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)showEntries {
|
- (void)showEntries {
|
||||||
NSView *contentView = self.window.contentView;
|
self.contentViewController = self.splitViewController;
|
||||||
if(self.splitView == contentView) {
|
[self.splitViewController showOutline];
|
||||||
return; // We are displaying the entries already
|
|
||||||
}
|
|
||||||
if(contentView.subviews.count == 1) {
|
|
||||||
[contentView.subviews.firstObject removeFromSuperviewWithoutNeedingDisplay];
|
|
||||||
}
|
|
||||||
[contentView addSubview:self.splitView];
|
|
||||||
NSView *outlineView = self.outlineViewController.view;
|
|
||||||
NSView *inspectorView = self.inspectorViewController.view;
|
|
||||||
NSView *entryView = self.entryViewController.view;
|
|
||||||
|
|
||||||
/*
|
|
||||||
The current easy way to prevent layout hiccups is to add the inspector
|
|
||||||
Add all needed constraints an then remove it again, if it was hidden
|
|
||||||
*/
|
|
||||||
BOOL removeInspector = NO;
|
|
||||||
if(!inspectorView.superview) {
|
|
||||||
[self.splitView addSubview:inspectorView];
|
|
||||||
removeInspector = YES;
|
|
||||||
}
|
|
||||||
/* Maybe we should consider not double adding constraints */
|
|
||||||
NSDictionary *views = NSDictionaryOfVariableBindings(outlineView, inspectorView, entryView, _splitView);
|
|
||||||
[self.splitView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[outlineView(>=150)]-1-[entryView(>=150)]-1-[inspectorView(>=200)]|"
|
|
||||||
options:0
|
|
||||||
metrics:nil
|
|
||||||
views:views]];
|
|
||||||
[self.splitView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[outlineView]|"
|
|
||||||
options:0
|
|
||||||
metrics:nil
|
|
||||||
views:views]];
|
|
||||||
[self.splitView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[entryView(>=200)]|"
|
|
||||||
options:0
|
|
||||||
metrics:nil
|
|
||||||
views:views]];
|
|
||||||
[self.splitView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[inspectorView]|"
|
|
||||||
options:0
|
|
||||||
metrics:nil
|
|
||||||
views:views]];
|
|
||||||
|
|
||||||
NSNumber *border = @([[self window] contentBorderThicknessForEdge:NSMinYEdge]);
|
|
||||||
[contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[_splitView]-border-|"
|
|
||||||
options:0
|
|
||||||
metrics:NSDictionaryOfVariableBindings(border)
|
|
||||||
views:views]];
|
|
||||||
[contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[_splitView]|"
|
|
||||||
options:0
|
|
||||||
metrics:nil
|
|
||||||
views:views]];
|
|
||||||
[self.outlineViewController showOutline];
|
|
||||||
|
|
||||||
/* Restore the State the inspector view was in before the view change */
|
|
||||||
if(removeInspector) {
|
|
||||||
[inspectorView removeFromSuperview];
|
|
||||||
}
|
|
||||||
[contentView layoutSubtreeIfNeeded];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)showGroupInOutline:(id)sender {
|
- (void)showGroupInOutline:(id)sender {
|
||||||
NSArray<KPKEntry *> *targetEntries = self.entryViewController.currentTargetEntries;
|
NSArray<KPKEntry *> *targetEntries = self.splitViewController.entryViewController.currentTargetEntries;
|
||||||
if(targetEntries.count != 1) {
|
if(targetEntries.count != 1) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
[self.outlineViewController selectGroup:targetEntries.lastObject.parent];
|
[self.splitViewController.outlineViewController selectGroup:targetEntries.lastObject.parent];
|
||||||
}
|
|
||||||
|
|
||||||
#pragma mark -
|
|
||||||
#pragma mark Actions forwarded to MPEntryViewController
|
|
||||||
- (void)copyUsername:(id)sender {
|
|
||||||
[self.entryViewController copyUsername:sender];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)copyPassword:(id)sender {
|
|
||||||
[self.entryViewController copyPassword:sender];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)copyCustomAttribute:(id)sender {
|
|
||||||
[self.entryViewController copyCustomAttribute:sender];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)copyAsReference:(id)sender {
|
|
||||||
[self.entryViewController copyAsReference:sender];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)copyURL:(id)sender {
|
|
||||||
[self.entryViewController copyURL:sender];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)openURL:(id)sender {
|
|
||||||
[self.entryViewController openURL:sender];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark Validation
|
#pragma mark Validation
|
||||||
@@ -590,7 +498,7 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
|||||||
if(document.shouldEnforcePasswordChange) {
|
if(document.shouldEnforcePasswordChange) {
|
||||||
NSAlert *alert = [[NSAlert alloc] init];
|
NSAlert *alert = [[NSAlert alloc] init];
|
||||||
|
|
||||||
alert.alertStyle = NSCriticalAlertStyle;
|
alert.alertStyle = NSAlertStyleCritical;
|
||||||
alert.messageText = NSLocalizedString(@"ENFORCE_PASSWORD_CHANGE_ALERT_TITLE", "Message text for the enforce password change alert");
|
alert.messageText = NSLocalizedString(@"ENFORCE_PASSWORD_CHANGE_ALERT_TITLE", "Message text for the enforce password change alert");
|
||||||
alert.informativeText = NSLocalizedString(@"ENFORCE_PASSWORD_CHANGE_ALERT_DESCRIPTION", "Informative text for the enforce password change alert");
|
alert.informativeText = NSLocalizedString(@"ENFORCE_PASSWORD_CHANGE_ALERT_DESCRIPTION", "Informative text for the enforce password change alert");
|
||||||
|
|
||||||
@@ -621,7 +529,7 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
|||||||
else if(document.shouldRecommendPasswordChange) {
|
else if(document.shouldRecommendPasswordChange) {
|
||||||
NSAlert *alert = [[NSAlert alloc] init];
|
NSAlert *alert = [[NSAlert alloc] init];
|
||||||
|
|
||||||
alert.alertStyle = NSInformationalAlertStyle;
|
alert.alertStyle = NSAlertStyleInformational;
|
||||||
alert.messageText = NSLocalizedString(@"RECOMMEND_PASSWORD_CHANGE_ALERT_TITLE", "Message text for the recommend password change alert");
|
alert.messageText = NSLocalizedString(@"RECOMMEND_PASSWORD_CHANGE_ALERT_TITLE", "Message text for the recommend password change alert");
|
||||||
alert.informativeText = NSLocalizedString(@"RECOMMEND_PASSWORD_CHANGE_ALERT_DESCRIPTION", "Informative text for the recommend password change alert");
|
alert.informativeText = NSLocalizedString(@"RECOMMEND_PASSWORD_CHANGE_ALERT_DESCRIPTION", "Informative text for the recommend password change alert");
|
||||||
|
|
||||||
@@ -658,8 +566,8 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
|||||||
#pragma mark UI Helper
|
#pragma mark UI Helper
|
||||||
|
|
||||||
- (BOOL)_isInspectorVisible {
|
- (BOOL)_isInspectorVisible {
|
||||||
NSView *inspectorView = self.inspectorViewController.view;
|
NSSplitViewItem *item = [self.splitViewController splitViewItemForViewController:self.splitViewController.inspectorViewController];
|
||||||
return (nil != inspectorView.superview);
|
return !item.isCollapsed;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSTouchBar *)makeTouchBar {
|
- (NSTouchBar *)makeTouchBar {
|
||||||
|
|||||||
@@ -28,13 +28,12 @@
|
|||||||
@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;
|
||||||
@@ -52,7 +51,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;
|
||||||
@@ -60,7 +59,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];
|
||||||
|
|||||||
35
MacPass/MPEntryAttributeViewController.h
Normal file
35
MacPass/MPEntryAttributeViewController.h
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
//
|
||||||
|
// 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
|
||||||
253
MacPass/MPEntryAttributeViewController.m
Normal file
253
MacPass/MPEntryAttributeViewController.m
Normal file
@@ -0,0 +1,253 @@
|
|||||||
|
//
|
||||||
|
// 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
|
||||||
|
|
||||||
123
MacPass/MPEntryAttributeViewController.xib
Normal file
123
MacPass/MPEntryAttributeViewController.xib
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
<?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>
|
||||||
@@ -36,20 +36,12 @@
|
|||||||
@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;
|
||||||
|
|
||||||
@property (weak) IBOutlet NSTextField *createdTextField;
|
|
||||||
@property (weak) IBOutlet NSTextField *modifiedTextField;
|
|
||||||
@property (weak) IBOutlet MPContextButton *addCustomFieldButton;
|
@property (weak) IBOutlet MPContextButton *addCustomFieldButton;
|
||||||
|
@property (strong) IBOutlet NSStackView *fieldsStackView;
|
||||||
|
|
||||||
/* Attachments */
|
/* Attachments */
|
||||||
@property (weak) IBOutlet NSButtonCell *addAttachmentButton;
|
@property (weak) IBOutlet NSButtonCell *addAttachmentButton;
|
||||||
@@ -60,6 +52,11 @@
|
|||||||
@property (strong) IBOutlet NSTableView *customFieldsTableView;
|
@property (strong) IBOutlet NSTableView *customFieldsTableView;
|
||||||
@property (weak) IBOutlet NSButton *showCustomDataButton;
|
@property (weak) IBOutlet NSButton *showCustomDataButton;
|
||||||
|
|
||||||
|
/* TOTP */
|
||||||
|
@property (strong) IBOutlet NSProgressIndicator *totpProgressIndicator;
|
||||||
|
@property (strong) IBOutlet NSTextField *totpLabelTextField;
|
||||||
|
@property (strong) IBOutlet NSTextField *totpCodeTextField;
|
||||||
|
|
||||||
/* Autotype */
|
/* Autotype */
|
||||||
@property (strong) IBOutlet NSView *autotypView;
|
@property (strong) IBOutlet NSView *autotypView;
|
||||||
@property (weak) IBOutlet NSButton *enableAutotypeCheckButton;
|
@property (weak) IBOutlet NSButton *enableAutotypeCheckButton;
|
||||||
@@ -80,6 +77,7 @@
|
|||||||
- (IBAction)showPasswordGenerator:(id)sender;
|
- (IBAction)showPasswordGenerator:(id)sender;
|
||||||
- (IBAction)showReferenceBuilder:(id)sender;
|
- (IBAction)showReferenceBuilder:(id)sender;
|
||||||
- (IBAction)showAutotypeBuilder:(id)sender;
|
- (IBAction)showAutotypeBuilder:(id)sender;
|
||||||
|
- (IBAction)showOTPSetup:(id)sender;
|
||||||
|
|
||||||
- (IBAction)saveAttachment:(id)sender;
|
- (IBAction)saveAttachment:(id)sender;
|
||||||
- (IBAction)addAttachment:(id)sender;
|
- (IBAction)addAttachment:(id)sender;
|
||||||
@@ -93,4 +91,7 @@
|
|||||||
|
|
||||||
- (IBAction)toggleQuicklookPreview:(id)sender;
|
- (IBAction)toggleQuicklookPreview:(id)sender;
|
||||||
- (IBAction)toggleExpire:(NSButton*)sender;
|
- (IBAction)toggleExpire:(NSButton*)sender;
|
||||||
|
|
||||||
|
- (IBAction)toggleEdit:(id)sender;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -31,6 +31,11 @@
|
|||||||
#import "MPTagsTokenFieldDelegate.h"
|
#import "MPTagsTokenFieldDelegate.h"
|
||||||
#import "MPAutotypeBuilderViewController.h"
|
#import "MPAutotypeBuilderViewController.h"
|
||||||
#import "MPReferenceBuilderViewController.h"
|
#import "MPReferenceBuilderViewController.h"
|
||||||
|
#import "MPTOTPViewController.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"
|
||||||
@@ -49,7 +54,6 @@
|
|||||||
#import "MPArrayController.h"
|
#import "MPArrayController.h"
|
||||||
|
|
||||||
#import "KeePassKit/KeePassKit.h"
|
#import "KeePassKit/KeePassKit.h"
|
||||||
|
|
||||||
#import "HNHUi/HNHUi.h"
|
#import "HNHUi/HNHUi.h"
|
||||||
|
|
||||||
typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
||||||
@@ -58,6 +62,10 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
|||||||
MPEntryTabAutotype
|
MPEntryTabAutotype
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@interface NSObject (MPAppKitPrivateAPI)
|
||||||
|
- (void)_searchWithGoogleFromMenu:(id)obj;
|
||||||
|
@end
|
||||||
|
|
||||||
@interface MPEntryInspectorViewController () {
|
@interface MPEntryInspectorViewController () {
|
||||||
@private
|
@private
|
||||||
NSArrayController *_attachmentsController;
|
NSArrayController *_attachmentsController;
|
||||||
@@ -70,11 +78,21 @@ 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) 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;
|
||||||
|
|
||||||
@@ -105,6 +123,7 @@ 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;
|
||||||
@@ -117,6 +136,26 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
|||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)setRepresentedObject:(id)representedObject {
|
||||||
|
if(self.representedObject) {
|
||||||
|
[NSNotificationCenter.defaultCenter removeObserver:self name:KPKWillChangeEntryNotification object:self.representedEntry];
|
||||||
|
[NSNotificationCenter.defaultCenter removeObserver:self name:KPKDidChangeEntryNotification object:self.representedEntry];
|
||||||
|
[NSNotificationCenter.defaultCenter removeObserver:self name:KPKWillAddAttributeNotification object:self.representedEntry];
|
||||||
|
[NSNotificationCenter.defaultCenter removeObserver:self name:KPKDidAddAttributeNotification object:self.representedEntry];
|
||||||
|
}
|
||||||
|
super.representedObject = representedObject;
|
||||||
|
|
||||||
|
[self _updateEditors];
|
||||||
|
|
||||||
|
/* only register for a single entry! */
|
||||||
|
if(self.representedEntry) {
|
||||||
|
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_willChangeEntry:) name:KPKWillChangeEntryNotification object:self.representedEntry];
|
||||||
|
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didChangeEntry:) name:KPKDidChangeEntryNotification object:self.representedEntry];
|
||||||
|
[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 {
|
||||||
|
|
||||||
[self _addScrollViewWithView:self.generalView atTab:MPEntryTabGeneral];
|
[self _addScrollViewWithView:self.generalView atTab:MPEntryTabGeneral];
|
||||||
@@ -125,7 +164,6 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
|||||||
[self.infoTabControl bind:NSSelectedIndexBinding toObject:self withKeyPath:NSStringFromSelector(@selector(activeTab)) options:nil];
|
[self.infoTabControl bind:NSSelectedIndexBinding toObject:self withKeyPath:NSStringFromSelector(@selector(activeTab)) options:nil];
|
||||||
[self.tabView bind:NSSelectedIndexBinding toObject:self withKeyPath:NSStringFromSelector(@selector(activeTab)) options:nil];
|
[self.tabView bind:NSSelectedIndexBinding toObject:self withKeyPath:NSStringFromSelector(@selector(activeTab)) options:nil];
|
||||||
|
|
||||||
|
|
||||||
self.attachmentTableView.backgroundColor = NSColor.clearColor;
|
self.attachmentTableView.backgroundColor = NSColor.clearColor;
|
||||||
[self.attachmentTableView bind:NSContentBinding toObject:_attachmentsController withKeyPath:NSStringFromSelector(@selector(arrangedObjects)) options:nil];
|
[self.attachmentTableView bind:NSContentBinding toObject:_attachmentsController withKeyPath:NSStringFromSelector(@selector(arrangedObjects)) options:nil];
|
||||||
self.attachmentTableView.delegate = _attachmentTableDelegate;
|
self.attachmentTableView.delegate = _attachmentTableDelegate;
|
||||||
@@ -141,12 +179,12 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
|||||||
|
|
||||||
[self.generalView addSubview:customFieldTableView];
|
[self.generalView addSubview:customFieldTableView];
|
||||||
|
|
||||||
NSDictionary *dict = NSDictionaryOfVariableBindings(customFieldTableView, _tagsTokenField, _addCustomFieldButton);
|
NSDictionary *dict = NSDictionaryOfVariableBindings(customFieldTableView, _fieldsStackView, _addCustomFieldButton);
|
||||||
[self.generalView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-16-[customFieldTableView]-16-|"
|
[self.generalView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-16-[customFieldTableView]-16-|"
|
||||||
options:0
|
options:0
|
||||||
metrics:nil
|
metrics:nil
|
||||||
views:dict]];
|
views:dict]];
|
||||||
[self.generalView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[_tagsTokenField]-[customFieldTableView]-[_addCustomFieldButton]"
|
[self.generalView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[_fieldsStackView]-[customFieldTableView]-[_addCustomFieldButton]"
|
||||||
options:0
|
options:0
|
||||||
metrics:nil
|
metrics:nil
|
||||||
views:dict]];
|
views:dict]];
|
||||||
@@ -154,6 +192,10 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
|||||||
|
|
||||||
|
|
||||||
self.customFieldsTableView.backgroundColor = NSColor.clearColor;
|
self.customFieldsTableView.backgroundColor = NSColor.clearColor;
|
||||||
|
self.customFieldsTableView.usesAutomaticRowHeights = YES;
|
||||||
|
if (@available(macOS 11.0, *)) {
|
||||||
|
self.customFieldsTableView.additionalSafeAreaInsets = NSEdgeInsetsZero;
|
||||||
|
}
|
||||||
[self.customFieldsTableView bind:NSContentBinding toObject:_customFieldsController withKeyPath:NSStringFromSelector(@selector(arrangedObjects)) options:nil];
|
[self.customFieldsTableView bind:NSContentBinding toObject:_customFieldsController withKeyPath:NSStringFromSelector(@selector(arrangedObjects)) options:nil];
|
||||||
self.customFieldsTableView.delegate = _customFieldTableDelegate;
|
self.customFieldsTableView.delegate = _customFieldTableDelegate;
|
||||||
|
|
||||||
@@ -166,11 +208,14 @@ 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 _updateEditors];
|
||||||
|
|
||||||
[self _setupCustomFieldsButton];
|
[self _setupCustomFieldsButton];
|
||||||
[self _setupViewBindings];
|
[self _setupViewBindings];
|
||||||
}
|
}
|
||||||
@@ -187,10 +232,6 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
|||||||
object:document];
|
object:document];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)dealloc {
|
|
||||||
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
|
||||||
}
|
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
#pragma mark Actions
|
#pragma mark Actions
|
||||||
|
|
||||||
@@ -219,7 +260,7 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
|||||||
savePanel.nameFieldStringValue = binary.name;
|
savePanel.nameFieldStringValue = binary.name;
|
||||||
|
|
||||||
[savePanel beginSheetModalForWindow:self.windowController.window completionHandler:^(NSInteger result) {
|
[savePanel beginSheetModalForWindow:self.windowController.window completionHandler:^(NSInteger result) {
|
||||||
if(result == NSFileHandlingPanelOKButton) {
|
if(result == NSModalResponseOK) {
|
||||||
NSError *error;
|
NSError *error;
|
||||||
BOOL sucess = [binary saveToLocation:savePanel.URL error:&error];
|
BOOL sucess = [binary saveToLocation:savePanel.URL error:&error];
|
||||||
if(!sucess && error) {
|
if(!sucess && error) {
|
||||||
@@ -237,7 +278,7 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
|||||||
openPanel.prompt = NSLocalizedString(@"OPEN_BUTTON_ADD_ATTACHMENT_OPEN_PANEL", "Open button in the open panel to add attachments to an entry");
|
openPanel.prompt = NSLocalizedString(@"OPEN_BUTTON_ADD_ATTACHMENT_OPEN_PANEL", "Open button in the open panel to add attachments to an entry");
|
||||||
openPanel.message = NSLocalizedString(@"MESSAGE_ADD_ATTACHMENT_OPEN_PANEL", "Message in the open panel to add attachments to an entry");
|
openPanel.message = NSLocalizedString(@"MESSAGE_ADD_ATTACHMENT_OPEN_PANEL", "Message in the open panel to add attachments to an entry");
|
||||||
[openPanel beginSheetModalForWindow:self.windowController.window completionHandler:^(NSInteger result) {
|
[openPanel beginSheetModalForWindow:self.windowController.window completionHandler:^(NSInteger result) {
|
||||||
if(result == NSFileHandlingPanelOKButton) {
|
if(result == NSModalResponseOK) {
|
||||||
for (NSURL *attachmentURL in openPanel.URLs) {
|
for (NSURL *attachmentURL in openPanel.URLs) {
|
||||||
KPKBinary *binary = [[KPKBinary alloc] initWithContentsOfURL:attachmentURL];
|
KPKBinary *binary = [[KPKBinary alloc] initWithContentsOfURL:attachmentURL];
|
||||||
[self.observer willChangeModelProperty];
|
[self.observer willChangeModelProperty];
|
||||||
@@ -273,8 +314,8 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
|||||||
KPKWindowAssociation *association = self.representedEntry.autotype.associations[row];
|
KPKWindowAssociation *association = self.representedEntry.autotype.associations[row];
|
||||||
if(association) {
|
if(association) {
|
||||||
[self.representedEntry.autotype removeAssociation:association];
|
[self.representedEntry.autotype removeAssociation:association];
|
||||||
[self.observer didChangeModelProperty];
|
|
||||||
}
|
}
|
||||||
|
[self.observer didChangeModelProperty];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -294,10 +335,21 @@ 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: {
|
||||||
BOOL enabled = [[NSUserDefaults standardUserDefaults] boolForKey:kMPSettingsKeyEnableQuicklookPreview];
|
BOOL enabled = [NSUserDefaults.standardUserDefaults boolForKey:kMPSettingsKeyEnableQuicklookPreview];
|
||||||
return enabled ? [self acceptsPreviewPanelControl:nil] : NO;
|
return enabled ? [self acceptsPreviewPanelControl:nil] : NO;
|
||||||
case MPActionRemoveAttachment:
|
case MPActionRemoveAttachment:
|
||||||
return !self.representedEntry.isHistory;
|
return !self.representedEntry.isHistory;
|
||||||
@@ -323,16 +375,16 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
|||||||
|
|
||||||
- (void)endPreviewPanelControl:(QLPreviewPanel *)panel {
|
- (void)endPreviewPanelControl:(QLPreviewPanel *)panel {
|
||||||
MPTemporaryFileStorage *storage = (MPTemporaryFileStorage *)panel.dataSource;
|
MPTemporaryFileStorage *storage = (MPTemporaryFileStorage *)panel.dataSource;
|
||||||
[[MPTemporaryFileStorageCenter defaultCenter] unregisterStorage:storage];
|
[MPTemporaryFileStorageCenter.defaultCenter unregisterStorage:storage];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)_updatePreviewItemForPanel:(QLPreviewPanel *)panel {
|
- (void)_updatePreviewItemForPanel:(QLPreviewPanel *)panel {
|
||||||
NSInteger row = [self.attachmentTableView selectedRow];
|
NSInteger row = self.attachmentTableView.selectedRow;
|
||||||
NSAssert(row > -1, @"Row needs to be selected");
|
NSAssert(row > -1, @"Row needs to be selected");
|
||||||
KPKBinary *binary = self.representedEntry.binaries[row];
|
KPKBinary *binary = self.representedEntry.binaries[row];
|
||||||
MPTemporaryFileStorage *oldStorage = (MPTemporaryFileStorage *)panel.dataSource;
|
MPTemporaryFileStorage *oldStorage = (MPTemporaryFileStorage *)panel.dataSource;
|
||||||
[[MPTemporaryFileStorageCenter defaultCenter] unregisterStorage:oldStorage];
|
[MPTemporaryFileStorageCenter.defaultCenter unregisterStorage:oldStorage];
|
||||||
panel.dataSource = [[MPTemporaryFileStorageCenter defaultCenter] storageForBinary:binary];
|
panel.dataSource = [MPTemporaryFileStorageCenter.defaultCenter storageForBinary:binary];
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
@@ -364,7 +416,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;
|
||||||
@@ -372,13 +424,29 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
|||||||
[self _showPopopver:viewController atView:sender onEdge:NSMinYEdge];
|
[self _showPopopver:viewController atView:sender onEdge:NSMinYEdge];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (IBAction)showOTPSetup:(id)sender {
|
||||||
|
NSView *location;
|
||||||
|
if([sender isKindOfClass:NSView.class]) {
|
||||||
|
location = sender;
|
||||||
|
}
|
||||||
|
if([sender isKindOfClass:NSMenuItem.class]) {
|
||||||
|
if([[sender representedObject] isKindOfClass:NSView.class]) {
|
||||||
|
location = [sender representedObject];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
MPTOTPSetupViewController *vc = [[MPTOTPSetupViewController alloc] init];
|
||||||
|
vc.representedObject = self.representedObject;
|
||||||
|
|
||||||
|
[self _showPopopver:vc atView:location onEdge:NSMinYEdge];
|
||||||
|
}
|
||||||
|
|
||||||
- (void)dismissViewController:(NSViewController *)viewController {
|
- (void)dismissViewController:(NSViewController *)viewController {
|
||||||
if([viewController isKindOfClass:MPAutotypeBuilderViewController.class]) {
|
if([viewController isKindOfClass:MPAutotypeBuilderViewController.class]) {
|
||||||
self.showCustomAssociationSequenceAutotypeBuilderButton.enabled = YES;
|
self.showCustomAssociationSequenceAutotypeBuilderButton.enabled = YES;
|
||||||
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];
|
||||||
}
|
}
|
||||||
@@ -431,29 +499,28 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
|||||||
metrics:nil
|
metrics:nil
|
||||||
views:views]];
|
views:views]];
|
||||||
|
|
||||||
[[self view] layoutSubtreeIfNeeded];
|
[self.view layoutSubtreeIfNeeded];
|
||||||
}
|
}
|
||||||
|
|
||||||
#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 = @[self.titleTextField,
|
NSArray *inputs = @[
|
||||||
self.passwordTextField,
|
self.tagsTokenField,
|
||||||
self.usernameTextField,
|
self.addAttachmentButton,
|
||||||
self.URLTextField,
|
self.addCustomFieldButton,
|
||||||
self.expiresCheckButton,
|
self.addWindowAssociationButton,
|
||||||
self.tagsTokenField,
|
self.removeWindowAssociationButton,
|
||||||
self.generatePasswordButton,
|
self.enableAutotypeCheckButton,
|
||||||
self.addAttachmentButton,
|
self.obfuscateAutotypeCheckButton,
|
||||||
self.addCustomFieldButton,
|
self.customEntrySequenceTextField,
|
||||||
self.addWindowAssociationButton,
|
self.windowTitleComboBox,
|
||||||
self.removeWindowAssociationButton,
|
self.associationSequenceTextField];
|
||||||
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
|
||||||
@@ -464,30 +531,7 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
|||||||
|
|
||||||
/* general */
|
/* general */
|
||||||
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")};
|
||||||
[self.titleTextField bind:NSValueBinding
|
NSDictionary *prettyPasswordBindingOptionsDict = @{ NSNullPlaceholderBindingOption: nullPlaceholderBindingOptionsDict[NSNullPlaceholderBindingOption], NSValueTransformerNameBindingOption : MPPrettyPasswordTransformerName };
|
||||||
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:nullPlaceholderBindingOptionsDict];
|
|
||||||
[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
|
||||||
@@ -557,15 +601,83 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
|||||||
NSMenu *customFieldMenu = [[NSMenu alloc] initWithTitle:NSLocalizedString(@"ADD_CUSTOM_FIELD_CONTEXT_MENU", @"Menu displayed for adding special custom keys")];
|
NSMenu *customFieldMenu = [[NSMenu alloc] initWithTitle:NSLocalizedString(@"ADD_CUSTOM_FIELD_CONTEXT_MENU", @"Menu displayed for adding special custom keys")];
|
||||||
customFieldMenu.delegate = _addCustomFieldContextMenuDelegate;
|
customFieldMenu.delegate = _addCustomFieldContextMenuDelegate;
|
||||||
self.addCustomFieldButton.contextMenu = customFieldMenu;
|
self.addCustomFieldButton.contextMenu = customFieldMenu;
|
||||||
|
//[self.addCustomFieldButton setEnabled:NO forSegment:MPContextButtonSegmentContextButton];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)_setupAttributeEditors {
|
||||||
|
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 {
|
||||||
|
self.iconViewController.representedObject = self.representedObject;
|
||||||
|
self.totpViewController.representedObject = self.representedObject;
|
||||||
|
self.expiresEditorViewController.representedObject = self.representedEntry.timeInfo;
|
||||||
|
|
||||||
|
self.titleEditorViewController.representedObject = [self.representedEntry attributeWithKey:kKPKTitleKey];
|
||||||
|
self.usernameEditorViewController.representedObject = [self.representedEntry attributeWithKey:kKPKUsernameKey];
|
||||||
|
self.passwordEditorViewController.representedObject = [self.representedEntry attributeWithKey:kKPKPasswordKey];
|
||||||
|
self.urlEditorViewController.representedObject = [self.representedEntry attributeWithKey:kKPKURLKey];
|
||||||
|
|
||||||
|
// 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];
|
||||||
@@ -587,9 +699,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:)) {
|
||||||
@@ -602,37 +714,39 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
|||||||
if(selectedValue.length == 0) {
|
if(selectedValue.length == 0) {
|
||||||
return YES;
|
return YES;
|
||||||
}
|
}
|
||||||
if(textField == self.usernameTextField) {
|
/* FIXME: Add to AttributeViewController
|
||||||
info = MPPasteboardOverlayInfoUsername;
|
if(textField == self.usernameTextField) {
|
||||||
}
|
info = MPPasteboardOverlayInfoUsername;
|
||||||
else if(textField == self.passwordTextField) {
|
}
|
||||||
info = MPPasteboardOverlayInfoPassword;
|
else if(textField == self.passwordTextField) {
|
||||||
}
|
info = MPPasteboardOverlayInfoPassword;
|
||||||
else if(textField == self.URLTextField) {
|
}
|
||||||
info = MPPasteboardOverlayInfoURL;
|
else if(textField == self.URLTextField) {
|
||||||
}
|
info = MPPasteboardOverlayInfoURL;
|
||||||
else if(textField == self.uuidTextField) {
|
}
|
||||||
name = NSLocalizedString(@"UUID", "Displayed name when uuid field was copied");
|
else*/ if(textField == self.uuidTextField) {
|
||||||
}
|
name = NSLocalizedString(@"UUID", "Displayed name when uuid field was copied");
|
||||||
else if(textField == self.titleTextField) {
|
}
|
||||||
name = NSLocalizedString(@"TITLE", "Displayed name when title field was copied");
|
else {
|
||||||
}
|
NSInteger index = MPCustomFieldIndexFromTag(textField.tag);
|
||||||
else {
|
if(index > -1) {
|
||||||
NSInteger index = MPCustomFieldIndexFromTag(textField.tag);
|
name = [_customFieldsController.arrangedObjects[index] key];
|
||||||
if(index > -1) {
|
}
|
||||||
name = [_customFieldsController.arrangedObjects[index] key];
|
}
|
||||||
}
|
[MPPasteBoardController.defaultController copyObject:selectedValue overlayInfo:info name:name atView:self.view];
|
||||||
}
|
|
||||||
[MPPasteBoardController.defaultController copyObjects:@[selectedValue] overlayInfo:info name:name atView:self.view];
|
|
||||||
return NO;
|
return NO;
|
||||||
}
|
}
|
||||||
return YES;
|
return YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (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 -
|
||||||
@@ -640,12 +754,44 @@ 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 {
|
||||||
self.showPassword = NO;
|
self.showPassword = NO;
|
||||||
//self.customFieldsTableView.needsDisplay = YES;
|
}
|
||||||
|
|
||||||
|
#pragma mark -
|
||||||
|
#pragma mark KPKEntry Notifications
|
||||||
|
|
||||||
|
- (void)_willChangeEntry:(NSNotification *)notification {
|
||||||
|
NSLog(@"willChangeEntry");
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)_didChangeEntry:(NSNotification *)notification {
|
||||||
|
if(notification.object != self.representedObject) {
|
||||||
|
NSLog(@"Skipping: didChangeEntry:%@, we do not need this change!", notification.object);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
NSLog(@"didChangeEntry:%@", notification.object);
|
||||||
|
[self _updateEntryValues];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)_didChangeAttribute:(NSNotification *)notification {
|
||||||
|
}
|
||||||
|
|
||||||
|
- (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
|
||||||
|
|||||||
@@ -24,17 +24,6 @@
|
|||||||
#import "MPContextBarViewController.h"
|
#import "MPContextBarViewController.h"
|
||||||
#import "MPTargetNodeResolving.h"
|
#import "MPTargetNodeResolving.h"
|
||||||
|
|
||||||
APPKIT_EXTERN NSString *const MPEntryTableIndexColumnIdentifier;
|
|
||||||
APPKIT_EXTERN NSString *const MPEntryTableUserNameColumnIdentifier;
|
|
||||||
APPKIT_EXTERN NSString *const MPEntryTableTitleColumnIdentifier;
|
|
||||||
APPKIT_EXTERN NSString *const MPEntryTablePasswordColumnIdentifier;
|
|
||||||
APPKIT_EXTERN NSString *const MPEntryTableParentColumnIdentifier;
|
|
||||||
APPKIT_EXTERN NSString *const MPEntryTableURLColumnIdentifier;
|
|
||||||
APPKIT_EXTERN NSString *const MPEntryTableNotesColumnIdentifier;
|
|
||||||
APPKIT_EXTERN NSString *const MPEntryTableAttachmentColumnIdentifier;
|
|
||||||
APPKIT_EXTERN NSString *const MPEntryTableModfiedColumnIdentifier;
|
|
||||||
APPKIT_EXTERN NSString *const MPEntryTableHistoryColumnIdentifier;
|
|
||||||
|
|
||||||
typedef NS_ENUM(NSUInteger, MPDisplayMode) {
|
typedef NS_ENUM(NSUInteger, MPDisplayMode) {
|
||||||
MPDisplayModeEntries,
|
MPDisplayModeEntries,
|
||||||
MPDisplayModeSearchResults,
|
MPDisplayModeSearchResults,
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user