Compare commits
390 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f59f8f5cb9 | ||
|
|
77143591c2 | ||
|
|
515fd4be70 | ||
|
|
4ddb0c5e07 | ||
|
|
1d42d996ca | ||
|
|
6d046bc933 | ||
|
|
7ba9ec2685 | ||
|
|
cbdfff8ea2 | ||
|
|
b3de0556f5 | ||
|
|
e3c8248761 | ||
|
|
2c22245bb8 | ||
|
|
272412965a | ||
|
|
f252a2a6a8 | ||
|
|
eabf1e52b2 | ||
|
|
b73de01897 | ||
|
|
70c25c9b1f | ||
|
|
02c5e1b2dc | ||
|
|
aacb61bb11 | ||
|
|
19d895ad68 | ||
|
|
0f1d560522 | ||
|
|
a568f59c59 | ||
|
|
601f5b6a93 | ||
|
|
e1b7b95f6b | ||
|
|
1af690d485 | ||
|
|
8e00e16627 | ||
|
|
342acfda59 | ||
|
|
1399a8d142 | ||
|
|
6129300c1b | ||
|
|
af15955d6f | ||
|
|
8799ef6b67 | ||
|
|
5caa5076e7 | ||
|
|
4d32ef42ad | ||
|
|
27705e0a8e | ||
|
|
c62e96f44a | ||
|
|
8769f07079 | ||
|
|
ef7a3085fd | ||
|
|
51c486fb82 | ||
|
|
4d927ad7ab | ||
|
|
474753c7dd | ||
|
|
03ff42ba29 | ||
|
|
98f99f6cbf | ||
|
|
88e4faae98 | ||
|
|
e38925d0ef | ||
|
|
29103d594c | ||
|
|
d2077a55d8 | ||
|
|
37ea36c8a6 | ||
|
|
00362bf33c | ||
|
|
d3641af1fc | ||
|
|
f94bf5cdce | ||
|
|
13ebb93cfb | ||
|
|
9bac5c102f | ||
|
|
0bd4421b76 | ||
|
|
6378d4f426 | ||
|
|
1566ebbc61 | ||
|
|
e5175d0c72 | ||
|
|
875f8f01f7 | ||
|
|
05d8b60c06 | ||
|
|
f95819ab98 | ||
|
|
e5ad0728cc | ||
|
|
07309b5c24 | ||
|
|
a7469975ad | ||
|
|
ed0a57a607 | ||
|
|
6a1f8e0472 | ||
|
|
6068260abb | ||
|
|
dd54a980ed | ||
|
|
4a0ad506b8 | ||
|
|
01d4137fe4 | ||
|
|
9261a9b7f0 | ||
|
|
d022fa2500 | ||
|
|
28f86fb45b | ||
|
|
4f339ba24e | ||
|
|
efb84f1832 | ||
|
|
988cf3051c | ||
|
|
fef9f5fdeb | ||
|
|
8f11acdfa4 | ||
|
|
56a6fce658 | ||
|
|
7898d3c146 | ||
|
|
1a4a7c55c6 | ||
|
|
032cd39416 | ||
|
|
9f8617372f | ||
|
|
713455bacc | ||
|
|
d8a20a1fe2 | ||
|
|
af1648da1c | ||
|
|
714bdf782d | ||
|
|
3cf3e25156 | ||
|
|
8c0d17e9f6 | ||
|
|
fd688e693b | ||
|
|
3f43a061b8 | ||
|
|
22b267f63e | ||
|
|
ddcaeb1e7b | ||
|
|
146430c7b1 | ||
|
|
79fa4f1c3f | ||
|
|
7cfc98c3a3 | ||
|
|
409632714c | ||
|
|
4b56167b56 | ||
|
|
3fcb7305d3 | ||
|
|
f94dc84bfa | ||
|
|
25017610d1 | ||
|
|
a691bf5562 | ||
|
|
bfeb71585d | ||
|
|
e57e20cbe0 | ||
|
|
0525c84e21 | ||
|
|
ada4b51b62 | ||
|
|
ceb3dba6f1 | ||
|
|
23e7ebc4a0 | ||
|
|
b9de0fb2dd | ||
|
|
dc67de1ed1 | ||
|
|
d6ea2830e9 | ||
|
|
194c4bef49 | ||
|
|
5601baf6fb | ||
|
|
04ffcab15b | ||
|
|
2d27fcbbb0 | ||
|
|
f83e071c16 | ||
|
|
24d50b4b50 | ||
|
|
b58211c4da | ||
|
|
cac974a30e | ||
|
|
7fe0689651 | ||
|
|
c12cc7a4be | ||
|
|
a7ff9ecde3 | ||
|
|
fa9333fb19 | ||
|
|
e06d660fb7 | ||
|
|
2b95621181 | ||
|
|
0ff6597487 | ||
|
|
c260202924 | ||
|
|
1ed35a6eab | ||
|
|
d6b95118da | ||
|
|
afc69f69ae | ||
|
|
57e28e1417 | ||
|
|
38e7a5f0b9 | ||
|
|
5912f613cb | ||
|
|
3cd8d07552 | ||
|
|
20ed81a5e7 | ||
|
|
5be3265c17 | ||
|
|
94a36fac36 | ||
|
|
350d84f6e3 | ||
|
|
325d33a058 | ||
|
|
fa6067e9e0 | ||
|
|
2b1f0ccbc5 | ||
|
|
edf40e0cc7 | ||
|
|
bf96867654 | ||
|
|
0921cd39d2 | ||
|
|
74b06ed195 | ||
|
|
72dabf0338 | ||
|
|
6b00ca71de | ||
|
|
060d5c6b02 | ||
|
|
2c3e64947f | ||
|
|
79ecb1af9c | ||
|
|
11cf8c3ef0 | ||
|
|
3ba2329052 | ||
|
|
44f783fd0f | ||
|
|
a04ed6d32a | ||
|
|
3d3e7dbf4e | ||
|
|
66118d50c3 | ||
|
|
5aacbc66fe | ||
|
|
c87c454b4e | ||
|
|
5c957979fb | ||
|
|
548570d97c | ||
|
|
64d03ce56c | ||
|
|
1bed34d23f | ||
|
|
af5ef6a5a8 | ||
|
|
fc77d5ba97 | ||
|
|
417eba2936 | ||
|
|
837e040346 | ||
|
|
fcaede26bf | ||
|
|
cd34602e28 | ||
|
|
bf68afb457 | ||
|
|
182f448535 | ||
|
|
05ac9a0142 | ||
|
|
009d198421 | ||
|
|
bfe08b5510 | ||
|
|
a699adb0ad | ||
|
|
0dd0ba039d | ||
|
|
a66cbb7507 | ||
|
|
2c60ba42f5 | ||
|
|
9f35450683 | ||
|
|
8d7bb31b7c | ||
|
|
bcbeb2e43e | ||
|
|
5168a6d3cd | ||
|
|
72bb0aa6fc | ||
|
|
6ed82d8f15 | ||
|
|
c6be6ec819 | ||
|
|
f580663caf | ||
|
|
af96a55f32 | ||
|
|
89f174f04f | ||
|
|
fc5a054fed | ||
|
|
bdd7d22e7c | ||
|
|
e887bdda93 | ||
|
|
2b694663e3 | ||
|
|
366db91df5 | ||
|
|
1994857e64 | ||
|
|
43d0677250 | ||
|
|
3d89bc7545 | ||
|
|
5589f5086b | ||
|
|
f13cd4df35 | ||
|
|
c46a7c0dc7 | ||
|
|
0274b32356 | ||
|
|
213e3584a0 | ||
|
|
2acff0702d | ||
|
|
9b7754b5fb | ||
|
|
890ac35ba6 | ||
|
|
650c349865 | ||
|
|
cbcd9fb751 | ||
|
|
c74254f171 | ||
|
|
bc60ca0174 | ||
|
|
1ed18568a9 | ||
|
|
14afe81ec2 | ||
|
|
6555cc04e5 | ||
|
|
2276a2b954 | ||
|
|
affc02c933 | ||
|
|
797b70bedf | ||
|
|
d902aa893c | ||
|
|
eb8c5c4749 | ||
|
|
187e77f9ff | ||
|
|
9ac7352eec | ||
|
|
3688142c60 | ||
|
|
760a25e88f | ||
|
|
80a469a9ee | ||
|
|
5c9a93342d | ||
|
|
36e6472822 | ||
|
|
27d1f512f0 | ||
|
|
8ed936a08d | ||
|
|
18abd4d5a1 | ||
|
|
99a5d5642e | ||
|
|
2965530483 | ||
|
|
ccee893ba3 | ||
|
|
1f2b0447e2 | ||
|
|
1f7fb693a9 | ||
|
|
e587cd65fd | ||
|
|
274a58b789 | ||
|
|
0c2d08208c | ||
|
|
a71cd85afc | ||
|
|
b8dd193cbe | ||
|
|
4097b4e9a0 | ||
|
|
1f274dc9c8 | ||
|
|
8526caa7c0 | ||
|
|
2e869606d5 | ||
|
|
06f2a2037e | ||
|
|
7b8d5d5835 | ||
|
|
1e11cac5f5 | ||
|
|
c994ac016b | ||
|
|
86c1cb8dd4 | ||
|
|
10009c990e | ||
|
|
38a3e416b6 | ||
|
|
7e1b059e62 | ||
|
|
21be56bfad | ||
|
|
92804d6429 | ||
|
|
4340d77f48 | ||
|
|
6d958802b2 | ||
|
|
0911eafb03 | ||
|
|
6f1b074b4d | ||
|
|
be4eb0e6ad | ||
|
|
05289c1444 | ||
|
|
14ac7ed675 | ||
|
|
feedcd56ac | ||
|
|
27cffc3f3b | ||
|
|
93077366c2 | ||
|
|
f6910fa045 | ||
|
|
87b62c4e96 | ||
|
|
1d46320662 | ||
|
|
9169bd5e5e | ||
|
|
3a70b36dc4 | ||
|
|
2bf10b9463 | ||
|
|
47fdee7301 | ||
|
|
d6aa01c970 | ||
|
|
0c702ec351 | ||
|
|
98cfdadcfe | ||
|
|
6e9dae6424 | ||
|
|
cdaee44439 | ||
|
|
d6e01235e9 | ||
|
|
bffbc22a68 | ||
|
|
f3dbf3beb9 | ||
|
|
d7709801e9 | ||
|
|
b10f218ee6 | ||
|
|
9b3e1443df | ||
|
|
f3dbb4f0f9 | ||
|
|
535a06ff5a | ||
|
|
11244297df | ||
|
|
063e2cdf11 | ||
|
|
0499567a84 | ||
|
|
e51cdda758 | ||
|
|
d901ddbd9b | ||
|
|
8e20744d6d | ||
|
|
17835be3f7 | ||
|
|
bb7fc24b7e | ||
|
|
22cbfe1db0 | ||
|
|
0e900c1131 | ||
|
|
1eae0be06a | ||
|
|
82dd0e614c | ||
|
|
c218f64e57 | ||
|
|
e82b73004b | ||
|
|
1c472b41ba | ||
|
|
2f6066e7f1 | ||
|
|
55cd1f2c07 | ||
|
|
01b6228225 | ||
|
|
76ec77f59f | ||
|
|
cf79f24d83 | ||
|
|
e975850f78 | ||
|
|
642477ce5c | ||
|
|
6975cc3945 | ||
|
|
a64bdc60f6 | ||
|
|
6f37b98d92 | ||
|
|
8fc55f06dc | ||
|
|
9314b84b9d | ||
|
|
5a5064da43 | ||
|
|
72f7991566 | ||
|
|
465f7ecd7e | ||
|
|
d58b406c37 | ||
|
|
ee604337f8 | ||
|
|
457431ffca | ||
|
|
0028684e5c | ||
|
|
24f11dccfd | ||
|
|
033deacfdc | ||
|
|
f0def074bf | ||
|
|
5cc333146e | ||
|
|
e45f7b8739 | ||
|
|
ad6c501fef | ||
|
|
8b60ae4242 | ||
|
|
f759e6788c | ||
|
|
9f1ac446a8 | ||
|
|
4ef59b23f2 | ||
|
|
0e5cf4021f | ||
|
|
a516789217 | ||
|
|
24c8d8efc8 | ||
|
|
2d5974982e | ||
|
|
0f43afdb59 | ||
|
|
92c83e0fa0 | ||
|
|
5e0d95cdc5 | ||
|
|
e9131b65fd | ||
|
|
2aeeeaefd7 | ||
|
|
4099c52266 | ||
|
|
91508f0dde | ||
|
|
4fa52e23ef | ||
|
|
5574b01fed | ||
|
|
e8ddbd092c | ||
|
|
5879de1e4d | ||
|
|
fc496189b6 | ||
|
|
f9e761649f | ||
|
|
50c38e5672 | ||
|
|
ee418db014 | ||
|
|
a05a753a13 | ||
|
|
5db3950424 | ||
|
|
eaea14ad9d | ||
|
|
6d8c2b34be | ||
|
|
d8351f12f2 | ||
|
|
6f72301dfd | ||
|
|
3fc656b1dd | ||
|
|
0cb404c072 | ||
|
|
173e7fe44f | ||
|
|
db7de20fba | ||
|
|
4628c638a8 | ||
|
|
32a1f10910 | ||
|
|
6207cc3e11 | ||
|
|
ee5a4880d0 | ||
|
|
c3c85d1988 | ||
|
|
ca0e327720 | ||
|
|
dbfc468b87 | ||
|
|
c8f3fe6888 | ||
|
|
d69d832de4 | ||
|
|
fa78e446c3 | ||
|
|
e2e6c3e3f9 | ||
|
|
2495eac177 | ||
|
|
278a0145d0 | ||
|
|
287356d93e | ||
|
|
775dbd07ee | ||
|
|
547e61fc4b | ||
|
|
ded8eeadb1 | ||
|
|
1bcb002ed0 | ||
|
|
4b5aa003bf | ||
|
|
5f7331aa4d | ||
|
|
bc2ee9a98f | ||
|
|
4e5d491264 | ||
|
|
74573de85f | ||
|
|
d051421f14 | ||
|
|
68a4864051 | ||
|
|
15d1ce8419 | ||
|
|
7f43f3a7ba | ||
|
|
c33c6a8cfa | ||
|
|
ec62a3e12c | ||
|
|
07a8085705 | ||
|
|
c2dd64ff70 | ||
|
|
3113c38a20 | ||
|
|
089a3075ec | ||
|
|
ad0a198b48 | ||
|
|
36b98bcd6d | ||
|
|
29a6c39c1f | ||
|
|
95659e6121 | ||
|
|
995625b229 | ||
|
|
7a60b06c66 | ||
|
|
97b3f3809b | ||
|
|
e1feefd041 |
29
.github/ISSUE_TEMPLATE/Bug_report.md
vendored
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
name: Bug report
|
||||||
|
about: Create a report to help us improve
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Describe the bug**
|
||||||
|
A clear and concise description of what the bug is.
|
||||||
|
|
||||||
|
**To Reproduce**
|
||||||
|
Steps to reproduce the behavior:
|
||||||
|
1. Go to '...'
|
||||||
|
2. Click on '....'
|
||||||
|
3. Scroll down to '....'
|
||||||
|
4. See error
|
||||||
|
|
||||||
|
**Expected behavior**
|
||||||
|
A clear and concise description of what you expected to happen.
|
||||||
|
|
||||||
|
**Screenshots**
|
||||||
|
If applicable, add screenshots to help explain your problem.
|
||||||
|
|
||||||
|
**Desktop (please complete the following information):**
|
||||||
|
- macOS: [e.g. 10.12.1]
|
||||||
|
- Version [e.g. 0.7.3]
|
||||||
|
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context about the problem here.
|
||||||
17
.github/ISSUE_TEMPLATE/Feature_request.md
vendored
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
name: Feature request
|
||||||
|
about: Suggest an idea for this project
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Is your feature request related to a problem? Please describe.**
|
||||||
|
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||||
|
|
||||||
|
**Describe the solution you'd like**
|
||||||
|
A clear and concise description of what you want to happen.
|
||||||
|
|
||||||
|
**Describe alternatives you've considered**
|
||||||
|
A clear and concise description of any alternative solutions or features you've considered.
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context or screenshots about the feature request here.
|
||||||
1
.gitignore
vendored
@@ -23,3 +23,4 @@ Docs/Acknowlegements/*.fdb_latexmk
|
|||||||
Docs/Acknowlegements/*.fls
|
Docs/Acknowlegements/*.fls
|
||||||
Docs/Acknowlegements/*.log
|
Docs/Acknowlegements/*.log
|
||||||
Docs/Acknowlegements/*.synctex.gz
|
Docs/Acknowlegements/*.synctex.gz
|
||||||
|
docs/acknowledgement/*.lb
|
||||||
|
|||||||
16
.travis.yml
@@ -1,18 +1,24 @@
|
|||||||
osx_image: xcode8.3
|
osx_image: xcode10.2
|
||||||
xcode_project: MacPass.xcodeproj
|
xcode_project: MacPass.xcodeproj
|
||||||
xcode_scheme: MacPass
|
xcode_scheme: MacPass
|
||||||
language: objective-c
|
language: objective-c
|
||||||
|
|
||||||
before_install:
|
before_install:
|
||||||
- carthage bootstrap --platform macOS
|
- carthage bootstrap --platform macOS
|
||||||
|
- gem install xcpretty --no-document --quiet
|
||||||
|
|
||||||
after_success:
|
after_success:
|
||||||
- cd ./build/Build/Products/Release
|
- cd ./build/Build/Products/Release
|
||||||
- zip -9ry MacPass-continuous.zip MacPass.app
|
- zip -9ry MacPass-continuous.zip MacPass.app
|
||||||
|
- shasum -a 256 MacPass-continuous.zip > MacPass-continuous.zip.sha256
|
||||||
- cd -
|
- cd -
|
||||||
- mv ./build/Build/Products/Release/MacPass-continuous.zip .
|
- mv ./build/Build/Products/Release/MacPass-continuous.zip .
|
||||||
|
- mv ./build/Build/Products/Release/MacPass-continuous.zip.sha256 .
|
||||||
|
|
||||||
script: xcodebuild clean && xcodebuild build -configuration release -project MacPass.xcodeproj -scheme MacPass CODE_SIGNING_REQUIRED=NO -derivedDataPath ./build
|
script: |
|
||||||
|
set -o pipefail
|
||||||
|
xcodebuild clean
|
||||||
|
xcodebuild build -configuration release -project MacPass.xcodeproj -scheme MacPass CODE_SIGNING_REQUIRED=NO -derivedDataPath ./build | xcpretty -c
|
||||||
|
|
||||||
branches:
|
branches:
|
||||||
only:
|
only:
|
||||||
@@ -23,9 +29,11 @@ deploy:
|
|||||||
provider: releases
|
provider: releases
|
||||||
api_key:
|
api_key:
|
||||||
secure: AEb7fgi29S3aXFt5bXz+lq1KHISumny6bf4j06JBC5gUrSs+dW0/tmVFq68XRAqigeOQU31wwv20f7OHiy+GRYDXM2xBsX9ZBQ2IilnaXlDy/mPsNcJJJsZ2gyodi3KnU0rZtTb93me2YyU86H4Na/gtaZZUKjLwCFtGGziExD8=
|
secure: AEb7fgi29S3aXFt5bXz+lq1KHISumny6bf4j06JBC5gUrSs+dW0/tmVFq68XRAqigeOQU31wwv20f7OHiy+GRYDXM2xBsX9ZBQ2IilnaXlDy/mPsNcJJJsZ2gyodi3KnU0rZtTb93me2YyU86H4Na/gtaZZUKjLwCFtGGziExD8=
|
||||||
file: MacPass-continuous.zip
|
file:
|
||||||
|
- MacPass-continuous.zip
|
||||||
|
- MacPass-continuous.zip.sha256
|
||||||
overwrite: true
|
overwrite: true
|
||||||
on:
|
on:
|
||||||
tags: true
|
tags: true
|
||||||
repo: mstarke/MacPass
|
repo: MacPass/MacPass
|
||||||
branch: continuous
|
branch: continuous
|
||||||
BIN
Assets/Databaseicons.afdesign
Normal file
21
CONTRIBUTE.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
# Contribute to MacPass
|
||||||
|
|
||||||
|
Thanks for taking the time to contribute to MacPass! This documents describes a few guidelines for contributing. When in doubt about how to contribute, ask another contributor.
|
||||||
|
|
||||||
|
## 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:
|
||||||
|
- 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:
|
||||||
|
- Select MacPass in the project navigator
|
||||||
|
- Select the MacPass project in the project and targets list
|
||||||
|
- Open the info tab and click the `+` button un the localizations section.
|
||||||
|
- Choose the language you want to translate
|
||||||
|
- Select all resources and click finish, now the new language is available for export in the next step
|
||||||
|
- Export the XLIFF file
|
||||||
|
- Select the MacPass project in XCode
|
||||||
|
- Go to `Editor -> Export for Localization`
|
||||||
|
- Select the language you want to translate
|
||||||
|
- Now use your XLIFF editor and save the file if you are done with your translations
|
||||||
|
- Go back to XCode and use `Editor -> Import Localization` to import the 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.
|
||||||
4
Cartfile
@@ -1,3 +1,3 @@
|
|||||||
github "sparkle-project/Sparkle" ~> 1.18.1
|
github "sparkle-project/Sparkle" ~> 1.18.1
|
||||||
github "MacPass/KeePassKit" ~> 1.7.5
|
github "MacPass/KeePassKit" ~> 2.4
|
||||||
github "mstarke/HNHUi" ~> 1.4.1
|
github "mstarke/HNHUi" ~> 3.0
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
github "MacPass/KeePassKit" "1.7.5"
|
github "MacPass/KeePassKit" "2.4.2"
|
||||||
github "mstarke/HNHUi" "1.4.1"
|
github "mstarke/HNHUi" "3.0"
|
||||||
github "sparkle-project/Sparkle" "1.18.1"
|
github "robbiehanson/KissXML" "5.2.3"
|
||||||
|
github "sparkle-project/Sparkle" "1.20.0"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<Scheme
|
<Scheme
|
||||||
LastUpgradeVersion = "0910"
|
LastUpgradeVersion = "1010"
|
||||||
version = "1.3">
|
version = "2.0">
|
||||||
<BuildAction
|
<BuildAction
|
||||||
parallelizeBuildables = "YES"
|
parallelizeBuildables = "YES"
|
||||||
buildImplicitDependencies = "YES">
|
buildImplicitDependencies = "YES">
|
||||||
@@ -26,9 +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"
|
||||||
language = ""
|
codeCoverageEnabled = "YES"
|
||||||
shouldUseLaunchSchemeArgsEnv = "NO"
|
shouldUseLaunchSchemeArgsEnv = "NO">
|
||||||
codeCoverageEnabled = "YES">
|
|
||||||
<Testables>
|
<Testables>
|
||||||
<TestableReference
|
<TestableReference
|
||||||
skipped = "NO">
|
skipped = "NO">
|
||||||
@@ -64,11 +63,11 @@
|
|||||||
buildConfiguration = "Debug"
|
buildConfiguration = "Debug"
|
||||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
language = ""
|
|
||||||
launchStyle = "0"
|
launchStyle = "0"
|
||||||
useCustomWorkingDirectory = "NO"
|
useCustomWorkingDirectory = "NO"
|
||||||
ignoresPersistentStateOnLaunch = "NO"
|
ignoresPersistentStateOnLaunch = "NO"
|
||||||
debugDocumentVersioning = "YES"
|
debugDocumentVersioning = "YES"
|
||||||
|
debugXPCServices = "NO"
|
||||||
debugServiceExtension = "internal"
|
debugServiceExtension = "internal"
|
||||||
allowLocationSimulation = "YES">
|
allowLocationSimulation = "YES">
|
||||||
<BuildableProductRunnable
|
<BuildableProductRunnable
|
||||||
@@ -97,6 +96,11 @@
|
|||||||
value = "YES"
|
value = "YES"
|
||||||
isEnabled = "YES">
|
isEnabled = "YES">
|
||||||
</EnvironmentVariable>
|
</EnvironmentVariable>
|
||||||
|
<EnvironmentVariable
|
||||||
|
key = "OS_ACTIVITY_MODE"
|
||||||
|
value = "disable"
|
||||||
|
isEnabled = "NO">
|
||||||
|
</EnvironmentVariable>
|
||||||
</EnvironmentVariables>
|
</EnvironmentVariables>
|
||||||
<AdditionalOptions>
|
<AdditionalOptions>
|
||||||
</AdditionalOptions>
|
</AdditionalOptions>
|
||||||
|
|||||||
6
MacPass/Assets.xcassets/Contents.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 116 KiB After Width: | Height: | Size: 116 KiB |
|
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 6.9 KiB |
|
Before Width: | Height: | Size: 116 KiB After Width: | Height: | Size: 116 KiB |
|
Before Width: | Height: | Size: 257 KiB After Width: | Height: | Size: 257 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 715 B After Width: | Height: | Size: 715 B |
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 80 KiB |
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 5.5 KiB |
|
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 80 KiB |
|
Before Width: | Height: | Size: 202 KiB After Width: | Height: | Size: 202 KiB |
@@ -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="13196" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13196"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14460.31"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
@@ -18,13 +18,13 @@
|
|||||||
<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="241"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<scrollView wantsLayer="YES" autohidesScrollers="YES" horizontalLineScroll="36" horizontalPageScroll="10" verticalLineScroll="36" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7cB-re-3ys">
|
<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"/>
|
<rect key="frame" x="20" y="61" width="440" height="118"/>
|
||||||
<clipView key="contentView" id="WSc-o2-GsZ">
|
<clipView key="contentView" id="WSc-o2-GsZ">
|
||||||
<rect key="frame" x="1" y="1" width="438" height="116"/>
|
<rect key="frame" x="1" y="1" width="438" height="116"/>
|
||||||
<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" multipleSelection="NO" autosaveColumns="NO" typeSelect="NO" rowHeight="34" viewBased="YES" id="Ih2-lo-t2W">
|
<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"/>
|
<rect key="frame" x="0.0" y="0.0" width="438" height="116"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<size key="intercellSpacing" width="3" height="2"/>
|
<size key="intercellSpacing" width="3" height="2"/>
|
||||||
@@ -50,6 +50,10 @@
|
|||||||
<subviews>
|
<subviews>
|
||||||
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Utl-Gl-ETE">
|
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Utl-Gl-ETE">
|
||||||
<rect key="frame" x="2" y="1" width="14" height="14"/>
|
<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"/>
|
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="NSActionTemplate" id="gT4-lt-7Ir"/>
|
||||||
</imageView>
|
</imageView>
|
||||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsExpansionToolTips="YES" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Dxk-A7-QSy">
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsExpansionToolTips="YES" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Dxk-A7-QSy">
|
||||||
@@ -84,11 +88,11 @@
|
|||||||
</tableView>
|
</tableView>
|
||||||
</subviews>
|
</subviews>
|
||||||
</clipView>
|
</clipView>
|
||||||
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="Xgd-fL-vdl">
|
<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"/>
|
<rect key="frame" x="1" y="235" width="92" height="16"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
</scroller>
|
</scroller>
|
||||||
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="NO" id="5cX-o7-7ZJ">
|
<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"/>
|
<rect key="frame" x="224" y="17" width="15" height="102"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
</scroller>
|
</scroller>
|
||||||
@@ -142,7 +146,7 @@ DQ
|
|||||||
<constraint firstItem="7cB-re-3ys" firstAttribute="top" secondItem="kDw-2l-7gQ" secondAttribute="bottom" constant="8" symbolic="YES" id="ss6-Ku-XPY"/>
|
<constraint firstItem="7cB-re-3ys" firstAttribute="top" secondItem="kDw-2l-7gQ" secondAttribute="bottom" constant="8" symbolic="YES" id="ss6-Ku-XPY"/>
|
||||||
<constraint firstAttribute="trailing" secondItem="kDw-2l-7gQ" secondAttribute="trailing" constant="20" symbolic="YES" id="zSz-fH-fVn"/>
|
<constraint firstAttribute="trailing" secondItem="kDw-2l-7gQ" secondAttribute="trailing" constant="20" symbolic="YES" id="zSz-fH-fVn"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<point key="canvasLocation" x="-128" y="-54"/>
|
<point key="canvasLocation" x="176" y="-39"/>
|
||||||
</customView>
|
</customView>
|
||||||
</objects>
|
</objects>
|
||||||
<resources>
|
<resources>
|
||||||
|
|||||||
@@ -1,22 +1,20 @@
|
|||||||
<?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="13196" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14313.18" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13196"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14313.18"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
<customObject id="-2" userLabel="File's Owner" customClass="MPContextBarViewController">
|
<customObject id="-2" userLabel="File's Owner" customClass="MPContextBarViewController">
|
||||||
<connections>
|
<connections>
|
||||||
<outlet property="emptyTrashButton" destination="szx-Hx-OrV" id="i1Y-qB-TW3"/>
|
<outlet property="emptyTrashButton" destination="szx-Hx-OrV" id="i1Y-qB-TW3"/>
|
||||||
|
<outlet property="everywhereButton" destination="RGg-wK-hz4" id="xIZ-YB-pkm"/>
|
||||||
<outlet property="exitHistoryButton" destination="pqx-su-vAh" id="JmV-vC-F48"/>
|
<outlet property="exitHistoryButton" destination="pqx-su-vAh" id="JmV-vC-F48"/>
|
||||||
<outlet property="filterLabelTextField" destination="6" id="60"/>
|
|
||||||
<outlet property="historyBar" destination="S8L-rB-h0h" id="6yZ-El-fVs"/>
|
|
||||||
<outlet property="notesButton" destination="SaV-5p-jIX" id="sQc-nE-BOP"/>
|
<outlet property="notesButton" destination="SaV-5p-jIX" id="sQc-nE-BOP"/>
|
||||||
<outlet property="passwordButton" destination="Uhl-ck-vVQ" id="I35-Nv-6jK"/>
|
<outlet property="passwordButton" destination="Uhl-ck-vVQ" id="I35-Nv-6jK"/>
|
||||||
<outlet property="specialFilterPopUpButton" destination="aPQ-t2-bgz" id="5II-Ml-qg1"/>
|
<outlet property="specialFilterPopUpButton" destination="aPQ-t2-bgz" id="5II-Ml-qg1"/>
|
||||||
<outlet property="titleButton" destination="O7W-cn-eUP" id="Vlg-KG-62R"/>
|
<outlet property="titleButton" destination="O7W-cn-eUP" id="Vlg-KG-62R"/>
|
||||||
<outlet property="trashBar" destination="DXf-SC-gVG" id="3aZ-Xc-VDk"/>
|
|
||||||
<outlet property="urlButton" destination="Bn2-iY-mQ3" id="PNG-kv-PQN"/>
|
<outlet property="urlButton" destination="Bn2-iY-mQ3" id="PNG-kv-PQN"/>
|
||||||
<outlet property="usernameButton" destination="0R1-PX-dgn" id="TWQ-1y-9cl"/>
|
<outlet property="usernameButton" destination="0R1-PX-dgn" id="TWQ-1y-9cl"/>
|
||||||
<outlet property="view" destination="8MB-fC-M2Q" id="wYX-Cc-yoV"/>
|
<outlet property="view" destination="8MB-fC-M2Q" id="wYX-Cc-yoV"/>
|
||||||
@@ -25,27 +23,30 @@
|
|||||||
<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"/>
|
||||||
<tabView type="noTabsNoBorder" translatesAutoresizingMaskIntoConstraints="NO" id="8MB-fC-M2Q">
|
<tabView type="noTabsNoBorder" translatesAutoresizingMaskIntoConstraints="NO" id="8MB-fC-M2Q">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="576" height="30"/>
|
<rect key="frame" x="0.0" y="0.0" width="838" height="30"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
<tabViewItems>
|
<tabViewItems>
|
||||||
<tabViewItem label="Filter" identifier="1" id="Ud6-Nz-6PS">
|
<tabViewItem label="Filter" identifier="1" id="Ud6-Nz-6PS">
|
||||||
<view key="view" id="caQ-XO-RkM">
|
<view key="view" id="caQ-XO-RkM">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="576" height="30"/>
|
<rect key="frame" x="0.0" y="0.0" width="838" height="30"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<customView translatesAutoresizingMaskIntoConstraints="NO" id="1" customClass="HNHUIGradientView">
|
<customView translatesAutoresizingMaskIntoConstraints="NO" id="1">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="576" height="30"/>
|
<rect key="frame" x="0.0" y="0.0" width="838" height="30"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6">
|
<stackView orientation="horizontal" alignment="centerY" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" horizontalClippingResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="AEr-b4-tMm">
|
||||||
<rect key="frame" x="6" y="8" width="47" height="14"/>
|
<rect key="frame" x="8" y="0.0" width="830" height="30"/>
|
||||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Search:" id="7">
|
<beginningViews>
|
||||||
<font key="font" metaFont="smallSystemBold"/>
|
<textField verticalHuggingPriority="750" fixedFrame="YES" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6">
|
||||||
|
<rect key="frame" x="-2" y="7" width="54" height="17"/>
|
||||||
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Search:" id="7">
|
||||||
|
<font key="font" metaFont="systemBold"/>
|
||||||
<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>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="O7W-cn-eUP">
|
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="O7W-cn-eUP">
|
||||||
<rect key="frame" x="59" y="6" width="42" height="17"/>
|
<rect key="frame" x="58" y="6" width="41" height="17"/>
|
||||||
<buttonCell key="cell" type="recessed" title="Title" bezelStyle="recessed" alignment="center" controlSize="small" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="53D-ne-nv6">
|
<buttonCell key="cell" type="recessed" title="Title" bezelStyle="recessed" alignment="center" controlSize="small" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="53D-ne-nv6">
|
||||||
<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="systemBold" size="12"/>
|
<font key="font" metaFont="systemBold" size="12"/>
|
||||||
@@ -54,8 +55,8 @@
|
|||||||
<action selector="toggleSearchFlags:" target="-1" id="gUm-y4-CDb"/>
|
<action selector="toggleSearchFlags:" target="-1" id="gUm-y4-CDb"/>
|
||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="0R1-PX-dgn">
|
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="0R1-PX-dgn">
|
||||||
<rect key="frame" x="109" y="6" width="76" height="17"/>
|
<rect key="frame" x="107" y="6" width="76" height="17"/>
|
||||||
<buttonCell key="cell" type="recessed" title="Username" bezelStyle="recessed" alignment="center" controlSize="small" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="jfQ-Jh-2gl">
|
<buttonCell key="cell" type="recessed" title="Username" bezelStyle="recessed" alignment="center" controlSize="small" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="jfQ-Jh-2gl">
|
||||||
<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="systemBold" size="12"/>
|
<font key="font" metaFont="systemBold" size="12"/>
|
||||||
@@ -64,8 +65,8 @@
|
|||||||
<action selector="toggleSearchFlags:" target="-1" id="DEi-hq-N39"/>
|
<action selector="toggleSearchFlags:" target="-1" id="DEi-hq-N39"/>
|
||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Uhl-ck-vVQ">
|
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Uhl-ck-vVQ">
|
||||||
<rect key="frame" x="193" y="6" width="73" height="17"/>
|
<rect key="frame" x="191" y="6" width="73" height="17"/>
|
||||||
<buttonCell key="cell" type="recessed" title="Password" bezelStyle="recessed" alignment="center" controlSize="small" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="rvQ-4V-SsS">
|
<buttonCell key="cell" type="recessed" title="Password" bezelStyle="recessed" alignment="center" controlSize="small" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="rvQ-4V-SsS">
|
||||||
<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="systemBold" size="12"/>
|
<font key="font" metaFont="systemBold" size="12"/>
|
||||||
@@ -74,8 +75,8 @@
|
|||||||
<action selector="toggleSearchFlags:" target="-1" id="xYd-Fp-jxn"/>
|
<action selector="toggleSearchFlags:" target="-1" id="xYd-Fp-jxn"/>
|
||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Bn2-iY-mQ3">
|
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Bn2-iY-mQ3">
|
||||||
<rect key="frame" x="274" y="6" width="39" height="17"/>
|
<rect key="frame" x="272" y="6" width="39" height="17"/>
|
||||||
<buttonCell key="cell" type="recessed" title="URL" bezelStyle="recessed" alignment="center" controlSize="small" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="92o-gN-Psj">
|
<buttonCell key="cell" type="recessed" title="URL" bezelStyle="recessed" alignment="center" controlSize="small" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="92o-gN-Psj">
|
||||||
<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="systemBold" size="12"/>
|
<font key="font" metaFont="systemBold" size="12"/>
|
||||||
@@ -84,8 +85,8 @@
|
|||||||
<action selector="toggleSearchFlags:" target="-1" id="Ykb-ye-FqF"/>
|
<action selector="toggleSearchFlags:" target="-1" id="Ykb-ye-FqF"/>
|
||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="SaV-5p-jIX">
|
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="SaV-5p-jIX">
|
||||||
<rect key="frame" x="321" y="6" width="50" height="17"/>
|
<rect key="frame" x="319" y="6" width="50" height="17"/>
|
||||||
<buttonCell key="cell" type="recessed" title="Notes" bezelStyle="recessed" alignment="center" controlSize="small" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="iDN-2E-hwt">
|
<buttonCell key="cell" type="recessed" title="Notes" bezelStyle="recessed" alignment="center" controlSize="small" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="iDN-2E-hwt">
|
||||||
<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="systemBold" size="12"/>
|
<font key="font" metaFont="systemBold" size="12"/>
|
||||||
@@ -94,37 +95,60 @@
|
|||||||
<action selector="toggleSearchFlags:" target="-1" id="cuN-5p-vZD"/>
|
<action selector="toggleSearchFlags:" target="-1" id="cuN-5p-vZD"/>
|
||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="aPQ-t2-bgz">
|
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="RGg-wK-hz4">
|
||||||
<rect key="frame" x="492" y="5" width="64" height="19"/>
|
<rect key="frame" x="377" y="6" width="86" height="17"/>
|
||||||
<popUpButtonCell key="cell" type="recessed" title="Item 1" bezelStyle="recessed" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" autoenablesItems="NO" selectedItem="LRm-iZ-XrA" id="faz-pC-uGX">
|
<buttonCell key="cell" type="recessed" title="Everywhere" bezelStyle="recessed" alignment="center" controlSize="small" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="WMK-bb-ESj">
|
||||||
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
||||||
|
<font key="font" metaFont="systemBold" size="12"/>
|
||||||
|
</buttonCell>
|
||||||
|
</button>
|
||||||
|
</beginningViews>
|
||||||
|
<endViews>
|
||||||
|
<popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="aPQ-t2-bgz">
|
||||||
|
<rect key="frame" x="765" y="5" width="65" height="19"/>
|
||||||
|
<popUpButtonCell key="cell" type="recessed" title="Item 1" bezelStyle="recessed" alignment="center" lineBreakMode="truncatingTail" borderStyle="border" imageScaling="proportionallyDown" inset="2" autoenablesItems="NO" altersStateOfSelectedItem="NO" selectedItem="LRm-iZ-XrA" id="faz-pC-uGX">
|
||||||
<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="systemBold" size="12"/>
|
<font key="font" metaFont="systemBold" size="12"/>
|
||||||
<menu key="menu" title="OtherViews" autoenablesItems="NO" id="wC4-fF-dLW">
|
<menu key="menu" title="OtherViews" autoenablesItems="NO" id="wC4-fF-dLW">
|
||||||
<items>
|
<items>
|
||||||
<menuItem title="Item 1" state="on" id="LRm-iZ-XrA"/>
|
<menuItem title="Item 1" id="LRm-iZ-XrA"/>
|
||||||
<menuItem title="Item 2" id="cpr-p6-YAY"/>
|
<menuItem title="Item 2" id="cpr-p6-YAY"/>
|
||||||
<menuItem title="Item 3" id="CFk-71-NYQ"/>
|
<menuItem title="Item 3" id="CFk-71-NYQ"/>
|
||||||
</items>
|
</items>
|
||||||
</menu>
|
</menu>
|
||||||
</popUpButtonCell>
|
</popUpButtonCell>
|
||||||
</popUpButton>
|
</popUpButton>
|
||||||
|
</endViews>
|
||||||
|
<visibilityPriorities>
|
||||||
|
<integer value="1000"/>
|
||||||
|
<real value="999"/>
|
||||||
|
<real value="998"/>
|
||||||
|
<real value="997"/>
|
||||||
|
<real value="996"/>
|
||||||
|
<real value="995"/>
|
||||||
|
<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"/>
|
||||||
|
</customSpacing>
|
||||||
|
<connections>
|
||||||
|
<outlet property="delegate" destination="-2" id="5a7-1L-C6J"/>
|
||||||
|
</connections>
|
||||||
|
</stackView>
|
||||||
</subviews>
|
</subviews>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="centerY" secondItem="O7W-cn-eUP" secondAttribute="centerY" id="2uC-wS-HDi"/>
|
<constraint firstItem="AEr-b4-tMm" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="8" id="4Ca-JQ-6SM"/>
|
||||||
<constraint firstItem="O7W-cn-eUP" firstAttribute="leading" secondItem="6" secondAttribute="trailing" constant="8" symbolic="YES" id="5hN-x3-XlX"/>
|
<constraint firstAttribute="trailing" secondItem="AEr-b4-tMm" secondAttribute="trailing" id="8JE-jl-Ko3"/>
|
||||||
<constraint firstItem="0R1-PX-dgn" firstAttribute="leading" secondItem="O7W-cn-eUP" secondAttribute="trailing" constant="8" symbolic="YES" id="67f-i6-eOb"/>
|
<constraint firstItem="AEr-b4-tMm" firstAttribute="top" secondItem="1" secondAttribute="top" id="EHZ-ac-GsP"/>
|
||||||
<constraint firstAttribute="centerY" secondItem="SaV-5p-jIX" secondAttribute="centerY" id="7ch-eZ-Hzh"/>
|
<constraint firstAttribute="bottom" secondItem="AEr-b4-tMm" secondAttribute="bottom" id="Ztr-3u-eI0"/>
|
||||||
<constraint firstItem="aPQ-t2-bgz" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="SaV-5p-jIX" secondAttribute="trailing" constant="8" symbolic="YES" id="91Q-Aq-ulG"/>
|
|
||||||
<constraint firstItem="aPQ-t2-bgz" firstAttribute="centerY" secondItem="SaV-5p-jIX" secondAttribute="centerY" id="EUG-hL-jbn"/>
|
|
||||||
<constraint firstAttribute="centerY" secondItem="0R1-PX-dgn" secondAttribute="centerY" id="Huh-PB-cbs"/>
|
|
||||||
<constraint firstItem="6" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="8" id="Seo-dI-FzX"/>
|
|
||||||
<constraint firstItem="Bn2-iY-mQ3" firstAttribute="leading" secondItem="Uhl-ck-vVQ" secondAttribute="trailing" constant="8" id="TCJ-vg-IIt"/>
|
|
||||||
<constraint firstAttribute="trailing" secondItem="aPQ-t2-bgz" secondAttribute="trailing" constant="20" symbolic="YES" id="XFv-Pv-Bzq"/>
|
|
||||||
<constraint firstItem="SaV-5p-jIX" firstAttribute="leading" secondItem="Bn2-iY-mQ3" secondAttribute="trailing" constant="8" symbolic="YES" id="pAA-uU-moF"/>
|
|
||||||
<constraint firstAttribute="centerY" secondItem="6" secondAttribute="centerY" id="qak-8F-xbj"/>
|
|
||||||
<constraint firstItem="Uhl-ck-vVQ" firstAttribute="leading" secondItem="0R1-PX-dgn" secondAttribute="trailing" constant="8" id="u8d-C2-O9h"/>
|
|
||||||
<constraint firstAttribute="centerY" secondItem="Uhl-ck-vVQ" secondAttribute="centerY" id="uvE-ch-ysK"/>
|
|
||||||
<constraint firstAttribute="centerY" secondItem="Bn2-iY-mQ3" secondAttribute="centerY" id="xZJ-EZ-Nic"/>
|
|
||||||
</constraints>
|
</constraints>
|
||||||
</customView>
|
</customView>
|
||||||
</subviews>
|
</subviews>
|
||||||
@@ -140,14 +164,14 @@
|
|||||||
</tabViewItem>
|
</tabViewItem>
|
||||||
<tabViewItem label="Trash" identifier="2" id="na6-h9-r9q">
|
<tabViewItem label="Trash" identifier="2" id="na6-h9-r9q">
|
||||||
<view key="view" id="F6S-GS-AwI">
|
<view key="view" id="F6S-GS-AwI">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="576" height="30"/>
|
<rect key="frame" x="0.0" y="0.0" width="838" height="30"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<customView translatesAutoresizingMaskIntoConstraints="NO" id="DXf-SC-gVG" customClass="HNHUIGradientView">
|
<customView translatesAutoresizingMaskIntoConstraints="NO" id="DXf-SC-gVG">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="576" height="30"/>
|
<rect key="frame" x="0.0" y="0.0" width="838" height="30"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="szx-Hx-OrV">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="szx-Hx-OrV">
|
||||||
<rect key="frame" x="469" y="0.0" width="92" height="28"/>
|
<rect key="frame" x="731" y="0.0" width="92" height="27"/>
|
||||||
<buttonCell key="cell" type="push" title="Empty Trash" bezelStyle="rounded" alignment="center" controlSize="small" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="8Ok-oe-6AB">
|
<buttonCell key="cell" type="push" title="Empty Trash" bezelStyle="rounded" alignment="center" controlSize="small" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="8Ok-oe-6AB">
|
||||||
<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"/>
|
||||||
@@ -156,9 +180,9 @@
|
|||||||
<action selector="emptyTrash:" target="-1" id="uIZ-CN-kXB"/>
|
<action selector="emptyTrash:" target="-1" id="uIZ-CN-kXB"/>
|
||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Rf3-f0-SSx">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Rf3-f0-SSx">
|
||||||
<rect key="frame" x="20" y="7" width="41" height="17"/>
|
<rect key="frame" x="20" y="7" width="41" height="17"/>
|
||||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Trash" id="8P1-Rp-sF4">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Trash" id="8P1-Rp-sF4">
|
||||||
<font key="font" metaFont="systemBold"/>
|
<font key="font" metaFont="systemBold"/>
|
||||||
<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"/>
|
||||||
@@ -171,6 +195,7 @@
|
|||||||
<constraint firstItem="Rf3-f0-SSx" firstAttribute="centerY" secondItem="DXf-SC-gVG" secondAttribute="centerY" id="rla-Pu-8db"/>
|
<constraint firstItem="Rf3-f0-SSx" firstAttribute="centerY" secondItem="DXf-SC-gVG" secondAttribute="centerY" id="rla-Pu-8db"/>
|
||||||
<constraint firstItem="szx-Hx-OrV" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="DXf-SC-gVG" secondAttribute="leading" constant="20" symbolic="YES" id="s8f-1l-4Yy"/>
|
<constraint firstItem="szx-Hx-OrV" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="DXf-SC-gVG" secondAttribute="leading" constant="20" symbolic="YES" id="s8f-1l-4Yy"/>
|
||||||
<constraint firstAttribute="centerY" secondItem="szx-Hx-OrV" secondAttribute="centerY" id="sG5-pc-EzQ"/>
|
<constraint firstAttribute="centerY" secondItem="szx-Hx-OrV" secondAttribute="centerY" id="sG5-pc-EzQ"/>
|
||||||
|
<constraint firstItem="szx-Hx-OrV" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="Rf3-f0-SSx" secondAttribute="trailing" constant="8" symbolic="YES" id="xBZ-7v-80d"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
</customView>
|
</customView>
|
||||||
</subviews>
|
</subviews>
|
||||||
@@ -187,14 +212,14 @@
|
|||||||
</tabViewItem>
|
</tabViewItem>
|
||||||
<tabViewItem label="History" identifier="3" id="z4I-cp-nhf">
|
<tabViewItem label="History" identifier="3" id="z4I-cp-nhf">
|
||||||
<view key="view" id="iPb-SZ-Lfm">
|
<view key="view" id="iPb-SZ-Lfm">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="576" height="30"/>
|
<rect key="frame" x="0.0" y="0.0" width="838" height="30"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<customView translatesAutoresizingMaskIntoConstraints="NO" id="S8L-rB-h0h" customClass="HNHUIGradientView">
|
<customView translatesAutoresizingMaskIntoConstraints="NO" id="S8L-rB-h0h">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="576" height="30"/>
|
<rect key="frame" x="0.0" y="0.0" width="838" height="30"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="pqx-su-vAh">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="pqx-su-vAh">
|
||||||
<rect key="frame" x="474" y="0.0" width="87" height="28"/>
|
<rect key="frame" x="736" y="0.0" width="87" height="27"/>
|
||||||
<buttonCell key="cell" type="push" title="Exit History" bezelStyle="rounded" alignment="center" controlSize="small" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="ewQ-8F-e1E">
|
<buttonCell key="cell" type="push" title="Exit History" bezelStyle="rounded" alignment="center" controlSize="small" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="ewQ-8F-e1E">
|
||||||
<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"/>
|
||||||
@@ -204,7 +229,7 @@
|
|||||||
</buttonCell>
|
</buttonCell>
|
||||||
</button>
|
</button>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="JNP-Sd-Zh1">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="JNP-Sd-Zh1">
|
||||||
<rect key="frame" x="379" y="0.0" width="97" height="28"/>
|
<rect key="frame" x="641" y="0.0" width="97" height="27"/>
|
||||||
<buttonCell key="cell" type="push" title="Restore Entry" bezelStyle="rounded" alignment="center" controlSize="small" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="UTg-y9-4DN">
|
<buttonCell key="cell" type="push" title="Restore Entry" bezelStyle="rounded" alignment="center" controlSize="small" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="UTg-y9-4DN">
|
||||||
<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"/>
|
||||||
@@ -213,9 +238,9 @@
|
|||||||
<action selector="revertToHistoryEntry:" target="-1" id="n70-c5-0JJ"/>
|
<action selector="revertToHistoryEntry:" target="-1" id="n70-c5-0JJ"/>
|
||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="hMK-l1-qew">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hMK-l1-qew">
|
||||||
<rect key="frame" x="20" y="7" width="52" height="17"/>
|
<rect key="frame" x="20" y="7" width="52" height="17"/>
|
||||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="History" id="ER3-Ic-v0N">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="History" id="ER3-Ic-v0N">
|
||||||
<font key="font" metaFont="systemBold"/>
|
<font key="font" metaFont="systemBold"/>
|
||||||
<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"/>
|
||||||
@@ -224,6 +249,7 @@
|
|||||||
</subviews>
|
</subviews>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="centerY" secondItem="pqx-su-vAh" secondAttribute="centerY" id="7T6-QP-uaM"/>
|
<constraint firstAttribute="centerY" secondItem="pqx-su-vAh" secondAttribute="centerY" id="7T6-QP-uaM"/>
|
||||||
|
<constraint firstItem="JNP-Sd-Zh1" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="hMK-l1-qew" secondAttribute="trailing" constant="8" symbolic="YES" id="Kqm-pr-v9M"/>
|
||||||
<constraint firstItem="pqx-su-vAh" firstAttribute="leading" secondItem="JNP-Sd-Zh1" secondAttribute="trailing" constant="8" symbolic="YES" id="M88-oZ-tNf"/>
|
<constraint firstItem="pqx-su-vAh" firstAttribute="leading" secondItem="JNP-Sd-Zh1" secondAttribute="trailing" constant="8" symbolic="YES" id="M88-oZ-tNf"/>
|
||||||
<constraint firstItem="JNP-Sd-Zh1" firstAttribute="centerY" secondItem="S8L-rB-h0h" secondAttribute="centerY" id="SpB-ks-AjH"/>
|
<constraint firstItem="JNP-Sd-Zh1" firstAttribute="centerY" secondItem="S8L-rB-h0h" secondAttribute="centerY" id="SpB-ks-AjH"/>
|
||||||
<constraint firstItem="hMK-l1-qew" firstAttribute="centerY" secondItem="S8L-rB-h0h" secondAttribute="centerY" id="Yfd-x7-x9e"/>
|
<constraint firstItem="hMK-l1-qew" firstAttribute="centerY" secondItem="S8L-rB-h0h" secondAttribute="centerY" id="Yfd-x7-x9e"/>
|
||||||
@@ -244,7 +270,7 @@
|
|||||||
</connections>
|
</connections>
|
||||||
</tabViewItem>
|
</tabViewItem>
|
||||||
</tabViewItems>
|
</tabViewItems>
|
||||||
<point key="canvasLocation" x="104" y="293"/>
|
<point key="canvasLocation" x="130" y="79"/>
|
||||||
</tabView>
|
</tabView>
|
||||||
</objects>
|
</objects>
|
||||||
</document>
|
</document>
|
||||||
|
|||||||
110
MacPass/Base.lproj/Credits.rtf
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
{\rtf1\ansi\ansicpg1252\cocoartf1671\cocoasubrtf200
|
||||||
|
{\fonttbl\f0\fswiss\fcharset0 Helvetica-Bold;\f1\fswiss\fcharset0 Helvetica;}
|
||||||
|
{\colortbl;\red255\green255\blue255;\red0\green0\blue0;\red9\green79\blue209;\red52\green110\blue183;
|
||||||
|
\red38\green38\blue38;}
|
||||||
|
{\*\expandedcolortbl;;\cssrgb\c0\c0\c0\cname textColor;\cssrgb\c0\c40784\c85490\cname linkColor;\csgenericrgb\c20392\c43137\c71765;
|
||||||
|
\csgenericrgb\c14902\c14902\c14902;}
|
||||||
|
\paperw11900\paperh16840\vieww25780\viewh19380\viewkind0
|
||||||
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||||
|
|
||||||
|
\f0\b\fs24 \cf2 Project Website:\cf0 \
|
||||||
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||||
|
{\field{\*\fldinst{HYPERLINK "https://github.com/mstarke/MacPass"}}{\fldrslt
|
||||||
|
\f1\b0 \cf3 MacPass}}
|
||||||
|
\f1\b0 \
|
||||||
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||||
|
|
||||||
|
\f0\b \cf2 \
|
||||||
|
License:\
|
||||||
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||||
|
|
||||||
|
\f1\b0 \cf2 MacPass KeePass compatible client for OS X\
|
||||||
|
Copyright (c) 2012-2019 Michael Starke, HicknHack Software GmbH\
|
||||||
|
\
|
||||||
|
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by\
|
||||||
|
the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\
|
||||||
|
\
|
||||||
|
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 {\field{\*\fldinst{HYPERLINK "http://www.gnu.org/licenses/"}}{\fldrslt \cf3 http://www.gnu.org/licenses/}}\cf0 .\
|
||||||
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||||
|
\cf0 \kerning1\expnd0\expndtw3
|
||||||
|
\
|
||||||
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||||
|
|
||||||
|
\f0\b \cf2 \kerning1\expnd0\expndtw0 Credits:\
|
||||||
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||||
|
|
||||||
|
\f1\b0 \cf2 \
|
||||||
|
Dutch translation: {\field{\*\fldinst{HYPERLINK "https://github.com/clone1612"}}{\fldrslt \cf3 Jannick Hemelhof}}\cf0 \
|
||||||
|
\
|
||||||
|
\cf2 French translation:\cf0 {\field{\*\fldinst{HYPERLINK "mailto:gil@panix.com"}}{\fldrslt \cf3 Gil Andr\'e9}}\
|
||||||
|
\
|
||||||
|
\cf2 Italian translation:\cf0 {\field{\*\fldinst{HYPERLINK "mailto:info@francescoservida.ch"}}{\fldrslt \cf3 Francesco Servida}}\
|
||||||
|
\
|
||||||
|
\cf2 Polish translation:\cf0 {\field{\*\fldinst{HYPERLINK "http://www.webii.pl/"}}{\fldrslt \cf3 Micha\uc0\u322 Jaglewicz}}\
|
||||||
|
\
|
||||||
|
\cf2 Russian translation:\cf0 {\field{\*\fldinst{HYPERLINK "mailto:alex@mrdoggy.info"}}{\fldrslt \cf3 Aliaksandr Piatkevich}}\
|
||||||
|
\
|
||||||
|
\cf2 Simplified Chinese translation:\cf0 {\field{\*\fldinst{HYPERLINK "mailto:patchao2000@gmail.com"}}{\fldrslt \cf3 Zhao Peng}}\
|
||||||
|
\
|
||||||
|
\cf2 Spanisch translation:\cf0 {\field{\*\fldinst{HYPERLINK "https://github.com/m0yP"}}{\fldrslt \cf3 \expnd0\expndtw0\kerning0
|
||||||
|
Moises Perez}}\
|
||||||
|
\
|
||||||
|
\cf2 MacPass\kerning1\expnd0\expndtw3
|
||||||
|
\kerning1\expnd0\expndtw0 Icon:\cf0 {\field{\*\fldinst{HYPERLINK "http://iiro.jappinen.me"}}{\fldrslt \cf3 Iiro J\'e4ppinen}}\
|
||||||
|
\
|
||||||
|
\cf2 Database Icons:\cf0 {\field{\*\fldinst{HYPERLINK "https://github.com/JoannaOlsen"}}{\fldrslt \cf3 Joanna Olsen}}\cf4 \
|
||||||
|
\
|
||||||
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||||
|
{\field{\*\fldinst{HYPERLINK "https://github.com/robbiehanson/KissXML"}}{\fldrslt \cf3 KissXML}}\cf5 \
|
||||||
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||||
|
\cf2 Copyright \'a9 2012 Robbie Hanson. All rights reserved.\
|
||||||
|
\
|
||||||
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||||
|
{\field{\*\fldinst{HYPERLINK "https://github.com/MiniKeePass/MiniKeePass"}}{\fldrslt \cf3 MiniKeePass}}\cf5 \
|
||||||
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||||
|
\cf2 Copyright \'a9 2011 Jason Rush and John Flanagan. All rights reserved.\cf5 \
|
||||||
|
\
|
||||||
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||||
|
{\field{\*\fldinst{HYPERLINK "https://github.com/mpowrie/KeePassLib"}}{\fldrslt \cf3 KeePass Database Library}}\
|
||||||
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||||
|
\cf2 Copyright \'a9 2010 Qiang Yu. All rights reserved.\
|
||||||
|
\
|
||||||
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||||
|
{\field{\*\fldinst{HYPERLINK "http://sparkle.andymatuschak.org"}}{\fldrslt \cf3 Sparkl\kerning1\expnd0\expndtw3
|
||||||
|
e}}\cf5 \kerning1\expnd0\expndtw3
|
||||||
|
\
|
||||||
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||||
|
\cf2 Copyright \'a9 2006 Andy Matuschak. \kerning1\expnd0\expndtw0 All rights reserved.\kerning1\expnd0\expndtw3
|
||||||
|
\
|
||||||
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||||
|
\cf2 \kerning1\expnd0\expndtw0 \
|
||||||
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||||
|
{\field{\*\fldinst{HYPERLINK "http://stackoverflow.com/questions/11386876/how-to-encode-and-decode-files-as-base64-in-cocoa-objective-c"}}{\fldrslt \cf3 NSData+Base64}}\cf5 \
|
||||||
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||||
|
\cf2 Copyright \'a92013, {\field{\*\fldinst{HYPERLINK "http://stackoverflow.com/users/200321/denis2342"}}{\fldrslt \cf3 denis2342}}\cf3 \
|
||||||
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||||
|
\cf5 \
|
||||||
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||||
|
{\field{\*\fldinst{HYPERLINK "http://www.cocoadev.com/index.pl?NSDataCategory"}}{\fldrslt \cf3 NSData+Gzip}}\
|
||||||
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||||
|
\cf2 Extracted from code on the CocoaDev Wiki\cf5 \
|
||||||
|
\
|
||||||
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||||
|
{\field{\*\fldinst{HYPERLINK "https://github.com/karelia/SecurityInterface"}}{\fldrslt \cf3 KSPasswordField}}\
|
||||||
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||||
|
\cf2 Code reused in HNHUISecureTextField\
|
||||||
|
Copyright \'a92012 Mike Abdullah, Karelia Software. All rights reserved.\cf5 \
|
||||||
|
\
|
||||||
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||||
|
{\field{\*\fldinst{HYPERLINK "https://github.com/AlanQuatermain/aqtoolkit"}}{\fldrslt \cf3 NSData+CommonCrypto}}\
|
||||||
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||||
|
\cf2 Copyright \'a92008-2009 Jim Dovey, All rights reserved.\cf5 \
|
||||||
|
\
|
||||||
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||||
|
{\field{\*\fldinst{HYPERLINK "https://github.com/mattt/TransformerKit"}}{\fldrslt \cf3 TransformerKit}}\
|
||||||
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||||
|
\cf2 Copyright \'a92012 Mattt Thompson. All rights reserved}
|
||||||
@@ -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="13529" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14113" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13529"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14113"/>
|
||||||
<capability name="box content view" minToolsVersion="7.0"/>
|
<capability name="box content view" minToolsVersion="7.0"/>
|
||||||
<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>
|
||||||
@@ -30,6 +30,7 @@
|
|||||||
<outlet property="enforceKeyChangeIntervalStepper" destination="lH4-xp-5QF" id="K1S-Og-OGK"/>
|
<outlet property="enforceKeyChangeIntervalStepper" destination="lH4-xp-5QF" id="K1S-Og-OGK"/>
|
||||||
<outlet property="enforceKeyChangeIntervalTextField" destination="VYh-cm-fix" id="aqu-Dm-tlH"/>
|
<outlet property="enforceKeyChangeIntervalTextField" destination="VYh-cm-fix" id="aqu-Dm-tlH"/>
|
||||||
<outlet property="enforceKeyChangeOnceCheckButton" destination="VMc-Qg-eCr" id="Ith-Jn-JVX"/>
|
<outlet property="enforceKeyChangeOnceCheckButton" destination="VMc-Qg-eCr" id="Ith-Jn-JVX"/>
|
||||||
|
<outlet property="fileVersionTextField" destination="1Ci-0B-yV5" id="hZ9-TU-hZE"/>
|
||||||
<outlet property="historyMaximumItemsStepper" destination="599" id="aRL-wb-JSA"/>
|
<outlet property="historyMaximumItemsStepper" destination="599" id="aRL-wb-JSA"/>
|
||||||
<outlet property="historyMaximumItemsTextField" destination="593" id="NrX-e0-8Dw"/>
|
<outlet property="historyMaximumItemsTextField" destination="593" id="NrX-e0-8Dw"/>
|
||||||
<outlet property="historyMaximumSizeStepper" destination="1294" id="Jbo-ZY-5h6"/>
|
<outlet property="historyMaximumSizeStepper" destination="1294" id="Jbo-ZY-5h6"/>
|
||||||
@@ -50,14 +51,14 @@
|
|||||||
<window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="1">
|
<window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="1">
|
||||||
<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="335"/>
|
<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="1417"/>
|
||||||
<view key="contentView" id="2">
|
<view key="contentView" id="2">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="500" height="336"/>
|
<rect key="frame" x="0.0" y="0.0" width="553" height="484"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="288">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="288">
|
||||||
<rect key="frame" x="427" y="13" width="59" height="32"/>
|
<rect key="frame" x="480" y="13" width="59" height="32"/>
|
||||||
<buttonCell key="cell" type="push" title="OK" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="289">
|
<buttonCell key="cell" type="push" title="OK" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="289">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
@@ -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="345" y="13" width="82" height="32"/>
|
<rect key="frame" x="398" y="13" width="82" height="32"/>
|
||||||
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="957">
|
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="957">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
@@ -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="474" height="289"/>
|
<rect key="frame" x="13" y="41" width="527" height="437"/>
|
||||||
<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="242"/>
|
<rect key="frame" x="10" y="33" width="454" height="267"/>
|
||||||
<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="200" width="280" height="22"/>
|
<rect key="frame" x="154" y="225" width="280" height="22"/>
|
||||||
<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="176" width="78" height="17"/>
|
<rect key="frame" x="70" y="201" width="78" height="17"/>
|
||||||
<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="204" width="102" height="17"/>
|
<rect key="frame" x="46" y="229" width="102" height="17"/>
|
||||||
<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="48" width="70" height="26"/>
|
<rect key="frame" x="152" y="73" width="70" height="26"/>
|
||||||
<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="53" width="88" height="17"/>
|
<rect key="frame" x="60" y="78" width="88" height="17"/>
|
||||||
<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="23" width="41" height="17"/>
|
<rect key="frame" x="107" y="48" width="41" height="17"/>
|
||||||
<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="20" width="44" height="23"/>
|
<rect key="frame" x="154" y="45" 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,7 +157,7 @@ Gw
|
|||||||
<color key="color" red="0.05813049898" green="0.055541899059999997" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
<color key="color" red="0.05813049898" green="0.055541899059999997" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
</colorWell>
|
</colorWell>
|
||||||
<scrollView horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1530">
|
<scrollView horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1530">
|
||||||
<rect key="frame" x="154" y="92" width="280" height="100"/>
|
<rect key="frame" x="154" y="117" width="280" height="100"/>
|
||||||
<clipView key="contentView" id="WOI-1v-RCe">
|
<clipView key="contentView" id="WOI-1v-RCe">
|
||||||
<rect key="frame" x="1" y="1" width="278" height="98"/>
|
<rect key="frame" x="1" y="1" width="278" height="98"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
@@ -185,14 +186,34 @@ Gw
|
|||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
</scroller>
|
</scroller>
|
||||||
</scrollView>
|
</scrollView>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="RhU-5I-S5l">
|
||||||
|
<rect key="frame" x="75" y="20" width="73" height="17"/>
|
||||||
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="File format:" id="bTk-YZ-x0G">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1Ci-0B-yV5">
|
||||||
|
<rect key="frame" x="152" y="20" width="72" height="17"/>
|
||||||
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="VersionInfo" id="Ush-4r-A1A">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
</subviews>
|
</subviews>
|
||||||
<constraints>
|
<constraints>
|
||||||
|
<constraint firstItem="RhU-5I-S5l" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="361" secondAttribute="leading" constant="20" symbolic="YES" id="2g6-05-Nm9"/>
|
||||||
<constraint firstItem="1439" firstAttribute="centerY" secondItem="1434" secondAttribute="centerY" id="3SK-ML-kPr"/>
|
<constraint firstItem="1439" firstAttribute="centerY" secondItem="1434" secondAttribute="centerY" id="3SK-ML-kPr"/>
|
||||||
<constraint firstItem="231" firstAttribute="top" secondItem="361" secondAttribute="top" constant="20" symbolic="YES" id="3xl-TE-tQd"/>
|
<constraint firstItem="231" firstAttribute="top" secondItem="361" secondAttribute="top" constant="20" symbolic="YES" id="3xl-TE-tQd"/>
|
||||||
<constraint firstItem="231" firstAttribute="baseline" secondItem="189" secondAttribute="baseline" constant="1" id="46f-FB-PcR"/>
|
<constraint firstItem="231" firstAttribute="baseline" secondItem="189" secondAttribute="baseline" constant="1" id="46f-FB-PcR"/>
|
||||||
|
<constraint firstItem="1Ci-0B-yV5" firstAttribute="baseline" secondItem="RhU-5I-S5l" secondAttribute="baseline" id="4jg-Kd-kVn"/>
|
||||||
<constraint firstItem="1530" firstAttribute="top" secondItem="231" secondAttribute="bottom" constant="8" symbolic="YES" id="BRY-Gk-wEF"/>
|
<constraint firstItem="1530" firstAttribute="top" secondItem="231" secondAttribute="bottom" constant="8" symbolic="YES" id="BRY-Gk-wEF"/>
|
||||||
<constraint firstItem="189" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="361" secondAttribute="leading" constant="20" symbolic="YES" id="EE1-wx-54f"/>
|
<constraint firstItem="189" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="361" secondAttribute="leading" constant="20" symbolic="YES" id="EE1-wx-54f"/>
|
||||||
<constraint firstItem="1394" firstAttribute="leading" secondItem="231" secondAttribute="leading" id="EZ7-AG-XXT"/>
|
<constraint firstItem="1394" firstAttribute="leading" secondItem="231" secondAttribute="leading" id="EZ7-AG-XXT"/>
|
||||||
|
<constraint firstItem="1Ci-0B-yV5" firstAttribute="leading" secondItem="RhU-5I-S5l" secondAttribute="trailing" constant="8" symbolic="YES" id="GGY-c2-Uhw"/>
|
||||||
|
<constraint firstItem="1Ci-0B-yV5" firstAttribute="top" secondItem="1439" secondAttribute="bottom" constant="8" symbolic="YES" id="HGD-Tw-rab"/>
|
||||||
<constraint firstItem="1434" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="361" secondAttribute="leading" constant="20" symbolic="YES" id="ICF-se-FFb"/>
|
<constraint firstItem="1434" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="361" secondAttribute="leading" constant="20" symbolic="YES" id="ICF-se-FFb"/>
|
||||||
<constraint firstItem="1404" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="361" secondAttribute="leading" constant="20" symbolic="YES" id="LeH-TL-Zoq"/>
|
<constraint firstItem="1404" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="361" secondAttribute="leading" constant="20" symbolic="YES" id="LeH-TL-Zoq"/>
|
||||||
<constraint firstItem="1404" firstAttribute="centerY" secondItem="1394" secondAttribute="centerY" id="OSA-6P-L0N"/>
|
<constraint firstItem="1404" firstAttribute="centerY" secondItem="1394" secondAttribute="centerY" id="OSA-6P-L0N"/>
|
||||||
@@ -204,11 +225,13 @@ Gw
|
|||||||
<constraint firstItem="1439" firstAttribute="top" secondItem="1394" secondAttribute="bottom" constant="8" symbolic="YES" id="ZeI-7b-IjZ"/>
|
<constraint firstItem="1439" firstAttribute="top" secondItem="1394" secondAttribute="bottom" constant="8" symbolic="YES" id="ZeI-7b-IjZ"/>
|
||||||
<constraint firstItem="256" firstAttribute="trailing" secondItem="189" secondAttribute="trailing" id="al9-qI-MaZ"/>
|
<constraint firstItem="256" firstAttribute="trailing" secondItem="189" secondAttribute="trailing" id="al9-qI-MaZ"/>
|
||||||
<constraint firstItem="1394" firstAttribute="leading" secondItem="1439" secondAttribute="leading" id="bFE-Ho-9Zk"/>
|
<constraint firstItem="1394" firstAttribute="leading" secondItem="1439" secondAttribute="leading" id="bFE-Ho-9Zk"/>
|
||||||
<constraint firstAttribute="bottom" secondItem="1439" secondAttribute="bottom" constant="20" symbolic="YES" id="dCq-34-0z2"/>
|
|
||||||
<constraint firstItem="1394" firstAttribute="top" secondItem="1530" secondAttribute="bottom" constant="20" symbolic="YES" id="dfD-cv-lGp"/>
|
<constraint firstItem="1394" firstAttribute="top" secondItem="1530" secondAttribute="bottom" constant="20" symbolic="YES" id="dfD-cv-lGp"/>
|
||||||
|
<constraint firstItem="RhU-5I-S5l" firstAttribute="trailing" secondItem="1434" secondAttribute="trailing" id="ff7-L0-hkA"/>
|
||||||
<constraint firstItem="256" firstAttribute="trailing" secondItem="1404" secondAttribute="trailing" id="gwL-uv-AGV"/>
|
<constraint firstItem="256" firstAttribute="trailing" secondItem="1404" secondAttribute="trailing" id="gwL-uv-AGV"/>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="1Ci-0B-yV5" secondAttribute="bottom" constant="20" symbolic="YES" id="js5-RZ-xg6"/>
|
||||||
<constraint firstItem="231" firstAttribute="leading" secondItem="189" secondAttribute="trailing" constant="8" symbolic="YES" id="uMg-uh-Qq6"/>
|
<constraint firstItem="231" firstAttribute="leading" secondItem="189" secondAttribute="trailing" constant="8" symbolic="YES" id="uMg-uh-Qq6"/>
|
||||||
<constraint firstItem="256" firstAttribute="top" secondItem="189" secondAttribute="bottom" constant="11" id="z3y-bc-AMm"/>
|
<constraint firstItem="256" firstAttribute="top" secondItem="189" secondAttribute="bottom" constant="11" id="z3y-bc-AMm"/>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="1Ci-0B-yV5" secondAttribute="trailing" constant="20" symbolic="YES" id="zL8-X5-0oc"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
</view>
|
</view>
|
||||||
</tabViewItem>
|
</tabViewItem>
|
||||||
@@ -475,8 +498,8 @@ Gw
|
|||||||
<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="52" y="330" width="128" height="17"/>
|
<rect key="frame" x="41" y="330" width="139" height="17"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" enabled="NO" sendsActionOnEndEditing="YES" title="Maxium 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"/>
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
@@ -727,7 +750,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="-1217" y="-566"/>
|
<point key="canvasLocation" x="-2020" y="-860"/>
|
||||||
</window>
|
</window>
|
||||||
</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="13196" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13196"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14460.31"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
<connections>
|
<connections>
|
||||||
<outlet property="URLTextField" destination="56" id="262"/>
|
<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="179" id="I3F-Sp-dbI"/>
|
<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"/>
|
||||||
<outlet property="associationSequenceTextField" destination="NjR-ea-Y7k" id="kTb-Y5-XrZ"/>
|
<outlet property="associationSequenceTextField" destination="NjR-ea-Y7k" id="kTb-Y5-XrZ"/>
|
||||||
<outlet property="attachmentTableView" destination="137" id="265"/>
|
<outlet property="attachmentTableView" destination="137" id="265"/>
|
||||||
@@ -46,7 +46,7 @@
|
|||||||
<rect key="frame" x="0.0" y="0.0" width="293" height="493"/>
|
<rect key="frame" x="0.0" y="0.0" width="293" height="493"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<segmentedControl verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="82">
|
<segmentedControl verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="82">
|
||||||
<rect key="frame" x="64" y="469" width="166" height="19"/>
|
<rect key="frame" x="57" y="469" width="179" height="19"/>
|
||||||
<segmentedCell key="cell" controlSize="small" borderStyle="border" alignment="left" style="texturedSquare" trackingMode="selectOne" id="238">
|
<segmentedCell key="cell" controlSize="small" borderStyle="border" alignment="left" style="texturedSquare" trackingMode="selectOne" id="238">
|
||||||
<font key="font" metaFont="smallSystem"/>
|
<font key="font" metaFont="smallSystem"/>
|
||||||
<segments>
|
<segments>
|
||||||
@@ -72,7 +72,7 @@
|
|||||||
<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="25"/>
|
<rect key="frame" x="241" y="428" width="32" height="23"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" constant="32" id="176"/>
|
<constraint firstAttribute="width" constant="32" id="176"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
@@ -96,9 +96,9 @@
|
|||||||
<rect key="frame" x="20" y="26" width="253" height="396"/>
|
<rect key="frame" x="20" y="26" width="253" height="396"/>
|
||||||
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="F3N-QI-Di5">
|
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="F3N-QI-Di5">
|
||||||
<rect key="frame" x="1" y="1" width="251" height="394"/>
|
<rect key="frame" x="1" y="1" width="251" height="394"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnSelection="YES" 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="251" height="394"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<size key="intercellSpacing" width="3" height="2"/>
|
<size key="intercellSpacing" width="3" height="2"/>
|
||||||
@@ -172,7 +172,7 @@
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="42g-QS-XtW">
|
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="42g-QS-XtW">
|
||||||
<rect key="frame" x="205" y="5" width="40" height="25"/>
|
<rect key="frame" x="205" y="6" width="40" height="23"/>
|
||||||
<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"/>
|
||||||
@@ -217,11 +217,11 @@
|
|||||||
<constraints>
|
<constraints>
|
||||||
<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" 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="147" width="52" height="16"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
</scroller>
|
</scroller>
|
||||||
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="NO" id="139">
|
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="139">
|
||||||
<rect key="frame" x="37" y="1" width="16" height="2"/>
|
<rect key="frame" x="37" y="1" width="16" height="2"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
</scroller>
|
</scroller>
|
||||||
@@ -265,21 +265,21 @@
|
|||||||
<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="712"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="52">
|
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="52">
|
||||||
<rect key="frame" x="18" y="693" width="28" height="14"/>
|
<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">
|
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Title" id="71">
|
||||||
<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 verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="53" customClass="HNHUIRoundedTextField">
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="53" customClass="HNHUITextField">
|
||||||
<rect key="frame" x="20" y="663" width="251" height="22"/>
|
<rect key="frame" x="20" y="663" width="251" height="22"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="height" constant="22" id="7Xj-3i-fBY"/>
|
<constraint firstAttribute="height" constant="22" id="7Xj-3i-fBY"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="70">
|
<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"/>
|
<font key="font" metaFont="system"/>
|
||||||
<color key="textColor" name="textColor" 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>
|
||||||
<connections>
|
<connections>
|
||||||
@@ -295,14 +295,14 @@
|
|||||||
<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" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="55" customClass="HNHUIRoundedTextField">
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="55" customClass="HNHUITextField">
|
||||||
<rect key="frame" x="20" y="607" width="251" height="22"/>
|
<rect key="frame" x="20" y="607" width="251" height="22"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="height" constant="22" id="0l5-fD-0eW"/>
|
<constraint firstAttribute="height" constant="22" id="0l5-fD-0eW"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="68">
|
<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"/>
|
<font key="font" size="13" name="Menlo-Regular"/>
|
||||||
<color key="textColor" name="textColor" 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>
|
||||||
<connections>
|
<connections>
|
||||||
@@ -310,14 +310,14 @@
|
|||||||
<outlet property="nextKeyView" destination="60" id="ZPp-lg-TBS"/>
|
<outlet property="nextKeyView" destination="60" id="ZPp-lg-TBS"/>
|
||||||
</connections>
|
</connections>
|
||||||
</textField>
|
</textField>
|
||||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="56" customClass="HNHUIRoundedTextField">
|
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="56" customClass="HNHUITextField">
|
||||||
<rect key="frame" x="20" y="469" width="251" height="22"/>
|
<rect key="frame" x="20" y="469" width="251" height="22"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="height" constant="22" id="SoS-8e-rkN"/>
|
<constraint firstAttribute="height" constant="22" id="SoS-8e-rkN"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="67">
|
<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"/>
|
<font key="font" metaFont="system"/>
|
||||||
<color key="textColor" name="textColor" 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>
|
||||||
<connections>
|
<connections>
|
||||||
@@ -342,7 +342,7 @@
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="59">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="59">
|
||||||
<rect key="frame" x="20" y="519" width="251" height="25"/>
|
<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">
|
<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"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
@@ -352,14 +352,14 @@
|
|||||||
<outlet property="nextKeyView" destination="56" id="rY0-PH-WBT"/>
|
<outlet property="nextKeyView" destination="56" id="rY0-PH-WBT"/>
|
||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<secureTextField verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="60" customClass="HNHUIRoundedSecureTextField">
|
<secureTextField verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="60" customClass="HNHUISecureTextField">
|
||||||
<rect key="frame" x="20" y="551" width="211" height="22"/>
|
<rect key="frame" x="20" y="551" width="211" height="22"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="height" constant="22" id="VFI-jo-tOU"/>
|
<constraint firstAttribute="height" constant="22" id="VFI-jo-tOU"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<secureTextFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="63">
|
<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"/>
|
<font key="font" size="13" name="Menlo-Regular"/>
|
||||||
<color key="textColor" name="textColor" 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"/>
|
||||||
<allowedInputSourceLocales>
|
<allowedInputSourceLocales>
|
||||||
<string>NSAllRomanInputSourcesLocaleIdentifier</string>
|
<string>NSAllRomanInputSourcesLocaleIdentifier</string>
|
||||||
@@ -371,7 +371,7 @@
|
|||||||
</connections>
|
</connections>
|
||||||
</secureTextField>
|
</secureTextField>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="61">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="61">
|
||||||
<rect key="frame" x="239" y="549" width="32" height="25"/>
|
<rect key="frame" x="239" y="550" width="32" height="23"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" constant="32" id="rSr-fw-11t"/>
|
<constraint firstAttribute="width" constant="32" id="rSr-fw-11t"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
@@ -398,7 +398,7 @@
|
|||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8">
|
||||||
<rect key="frame" x="239" y="437" width="32" height="25"/>
|
<rect key="frame" x="239" y="438" width="32" height="23"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" constant="32" id="Ped-nx-uti"/>
|
<constraint firstAttribute="width" constant="32" id="Ped-nx-uti"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
@@ -441,33 +441,22 @@
|
|||||||
<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" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="IpW-b2-jWu" customClass="HNHUIRoundedTextField">
|
<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="50" width="251" height="22"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="height" constant="22" id="Zfy-mh-1TF"/>
|
<constraint firstAttribute="height" constant="22" id="Zfy-mh-1TF"/>
|
||||||
</constraints>
|
</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="textColor" 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>
|
||||||
<connections>
|
<connections>
|
||||||
<outlet property="delegate" destination="-2" id="bJ5-Un-81o"/>
|
<outlet property="delegate" destination="-2" id="bJ5-Un-81o"/>
|
||||||
</connections>
|
</connections>
|
||||||
</textField>
|
</textField>
|
||||||
<button focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="179">
|
|
||||||
<rect key="frame" x="200" y="100" width="71" height="25"/>
|
|
||||||
<buttonCell key="cell" type="roundTextured" title="Add Field" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" focusRingType="none" imageScaling="proportionallyDown" inset="2" id="232">
|
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
</buttonCell>
|
|
||||||
<connections>
|
|
||||||
<action selector="addCustomField:" target="-2" id="273"/>
|
|
||||||
<outlet property="nextKeyView" destination="193" id="aWG-La-YP3"/>
|
|
||||||
</connections>
|
|
||||||
</button>
|
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="QSX-Xo-tcH">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="QSX-Xo-tcH">
|
||||||
<rect key="frame" x="20" y="18" width="251" height="25"/>
|
<rect key="frame" x="20" y="19" width="251" height="23"/>
|
||||||
<buttonCell key="cell" type="roundTextured" title="Show Plugin Data" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="X9y-K7-lix">
|
<buttonCell key="cell" type="roundTextured" title="Show Plugin Data" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="X9y-K7-lix">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
@@ -477,6 +466,20 @@
|
|||||||
<outlet property="nextKeyView" destination="53" id="HTB-dl-8aH"/>
|
<outlet property="nextKeyView" destination="53" id="HTB-dl-8aH"/>
|
||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
|
<segmentedControl verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="G9J-nn-2bu" customClass="MPContextButton">
|
||||||
|
<rect key="frame" x="216" y="101" width="55" height="23"/>
|
||||||
|
<segmentedCell key="cell" borderStyle="border" alignment="left" style="texturedRounded" trackingMode="selectOne" id="POU-2t-8fl">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<segments>
|
||||||
|
<segment image="NSAddTemplate" width="32"/>
|
||||||
|
<segment/>
|
||||||
|
</segments>
|
||||||
|
</segmentedCell>
|
||||||
|
<connections>
|
||||||
|
<action selector="addCustomField:" target="-2" id="3sZ-a1-V2r"/>
|
||||||
|
<outlet property="nextKeyView" destination="QSX-Xo-tcH" id="P9m-Wl-V3E"/>
|
||||||
|
</connections>
|
||||||
|
</segmentedControl>
|
||||||
</subviews>
|
</subviews>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstItem="52" firstAttribute="top" secondItem="4" secondAttribute="top" constant="5" id="11"/>
|
<constraint firstItem="52" firstAttribute="top" secondItem="4" secondAttribute="top" constant="5" id="11"/>
|
||||||
@@ -513,26 +516,26 @@
|
|||||||
<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" relation="greaterThanOrEqual" secondItem="52" secondAttribute="trailing" constant="20" symbolic="YES" id="6P6-fW-kGx"/>
|
||||||
<constraint firstAttribute="trailing" secondItem="179" secondAttribute="trailing" constant="20" symbolic="YES" id="Bys-px-9xs"/>
|
|
||||||
<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="0U8-TS-giU" firstAttribute="top" secondItem="179" secondAttribute="bottom" constant="8" symbolic="YES" id="GNj-yE-507"/>
|
|
||||||
<constraint firstItem="7" firstAttribute="top" secondItem="56" secondAttribute="bottom" constant="12" id="Gh9-Lg-kcm"/>
|
<constraint firstItem="7" firstAttribute="top" secondItem="56" secondAttribute="bottom" constant="12" id="Gh9-Lg-kcm"/>
|
||||||
<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 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 firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="57" secondAttribute="trailing" constant="20" symbolic="YES" id="N4A-wg-PdS"/>
|
||||||
<constraint firstItem="179" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="4" secondAttribute="leading" constant="20" symbolic="YES" id="OUg-H1-uyM"/>
|
|
||||||
<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 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="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 firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="54" secondAttribute="trailing" constant="20" symbolic="YES" id="cYP-oK-dVP"/>
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="54" secondAttribute="trailing" constant="20" symbolic="YES" id="cYP-oK-dVP"/>
|
||||||
|
<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="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="57" firstAttribute="top" secondItem="59" secondAttribute="bottom" constant="8" symbolic="YES" id="lYe-am-xJx"/>
|
||||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="58" secondAttribute="trailing" constant="20" symbolic="YES" id="rbs-i7-bti"/>
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="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 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"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<point key="canvasLocation" x="-525" y="-927"/>
|
<point key="canvasLocation" x="-679" y="-1054"/>
|
||||||
</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"/>
|
||||||
@@ -565,14 +568,14 @@
|
|||||||
<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" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="cDK-DM-F5z" customClass="HNHUIRoundedTextField">
|
<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="328" width="221" height="22"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="height" constant="22" id="2hC-UP-Iie"/>
|
<constraint firstAttribute="height" constant="22" id="2hC-UP-Iie"/>
|
||||||
</constraints>
|
</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="textColor" 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>
|
||||||
@@ -591,7 +594,7 @@
|
|||||||
<rect key="frame" x="20" y="138" width="261" height="160"/>
|
<rect key="frame" x="20" y="138" width="261" height="160"/>
|
||||||
<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="158"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<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="158"/>
|
||||||
@@ -640,17 +643,16 @@
|
|||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="160" id="B8z-Sq-4j9"/>
|
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="160" id="B8z-Sq-4j9"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="Y4S-4R-dwJ">
|
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="Y4S-4R-dwJ">
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
</scroller>
|
</scroller>
|
||||||
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="NO" id="abK-py-K7A">
|
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="abK-py-K7A">
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
</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="110" width="32" height="21"/>
|
<rect key="frame" x="249" y="107" width="32" height="23"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="height" constant="18" id="VeX-Jj-eA9"/>
|
|
||||||
<constraint firstAttribute="width" constant="32" id="mjs-Yf-Cb2"/>
|
<constraint firstAttribute="width" constant="32" id="mjs-Yf-Cb2"/>
|
||||||
</constraints>
|
</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">
|
||||||
@@ -662,10 +664,9 @@
|
|||||||
</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="110" width="32" height="21"/>
|
<rect key="frame" x="209" y="107" width="32" height="23"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" constant="32" id="vWY-ez-gy9"/>
|
<constraint firstAttribute="width" constant="32" id="vWY-ez-gy9"/>
|
||||||
<constraint firstAttribute="height" constant="18" id="xwN-WB-cn2"/>
|
|
||||||
</constraints>
|
</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"/>
|
||||||
@@ -708,19 +709,19 @@
|
|||||||
<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" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="NjR-ea-Y7k" customClass="HNHUIRoundedTextField">
|
<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="221" height="22"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="height" constant="22" id="oIA-8f-Jkf"/>
|
<constraint firstAttribute="height" constant="22" id="oIA-8f-Jkf"/>
|
||||||
</constraints>
|
</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="textColor" 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>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="m1C-m8-BKR">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="m1C-m8-BKR">
|
||||||
<rect key="frame" x="249" y="8" width="32" height="25"/>
|
<rect key="frame" x="249" y="9" width="32" height="23"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" constant="32" id="Ek5-IH-qGo"/>
|
<constraint firstAttribute="width" constant="32" id="Ek5-IH-qGo"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
@@ -733,7 +734,7 @@
|
|||||||
</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="325" width="32" height="25"/>
|
<rect key="frame" x="249" y="326" width="32" height="23"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" constant="32" id="CbR-2P-dZH"/>
|
<constraint firstAttribute="width" constant="32" id="CbR-2P-dZH"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
@@ -795,7 +796,7 @@
|
|||||||
<rect key="frame" x="1" y="1" width="259" height="268"/>
|
<rect key="frame" x="1" y="1" width="259" height="268"/>
|
||||||
<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" rowSizeStyle="automatic" viewBased="YES" id="193">
|
<tableView focusRingType="none" verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" selectionHighlightStyle="none" columnSelection="YES" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" rowHeight="54" viewBased="YES" id="193" customClass="MPCustomFieldTableView">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="259" height="268"/>
|
<rect key="frame" x="0.0" y="0.0" width="259" height="268"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<size key="intercellSpacing" width="3" height="2"/>
|
<size key="intercellSpacing" width="3" height="2"/>
|
||||||
@@ -819,15 +820,15 @@
|
|||||||
<rect key="frame" x="1" y="1" width="256" height="54"/>
|
<rect key="frame" x="1" y="1" width="256" height="54"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="199" customClass="HNHUIRoundedSecureTextField">
|
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" 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="139" height="22"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="height" constant="22" id="212"/>
|
<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" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="Value" drawsBackground="YES" id="214">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
<color key="textColor" name="textColor" 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>
|
||||||
@@ -843,7 +844,7 @@
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="198">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="198">
|
||||||
<rect key="frame" x="190" y="8" width="32" height="25"/>
|
<rect key="frame" x="190" y="9" width="32" height="23"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="32" id="215"/>
|
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="32" id="215"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
@@ -853,7 +854,7 @@
|
|||||||
</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="8" width="32" height="25"/>
|
<rect key="frame" x="150" y="9" width="32" height="23"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="32" id="JGO-sl-fdM"/>
|
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="32" id="JGO-sl-fdM"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
@@ -870,10 +871,10 @@
|
|||||||
<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 firstItem="198" firstAttribute="centerY" secondItem="199" secondAttribute="centerY" id="207"/>
|
|
||||||
<constraint firstAttribute="trailing" secondItem="198" secondAttribute="trailing" constant="34" id="209"/>
|
<constraint firstAttribute="trailing" secondItem="198" secondAttribute="trailing" constant="34" id="209"/>
|
||||||
<constraint firstItem="tDI-EL-JGB" firstAttribute="centerY" secondItem="199" secondAttribute="centerY" id="FJe-JG-f4a"/>
|
|
||||||
<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="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="8" symbolic="YES" id="qSi-Hi-kM3"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<connections>
|
<connections>
|
||||||
@@ -888,19 +889,20 @@
|
|||||||
</tableColumns>
|
</tableColumns>
|
||||||
</tableView>
|
</tableView>
|
||||||
</subviews>
|
</subviews>
|
||||||
|
<nil key="backgroundColor"/>
|
||||||
</clipView>
|
</clipView>
|
||||||
<scroller key="horizontalScroller" hidden="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"/>
|
||||||
</scroller>
|
</scroller>
|
||||||
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="NO" id="191">
|
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="191">
|
||||||
<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>
|
||||||
<connections>
|
<connections>
|
||||||
<outlet property="nextKeyView" destination="QSX-Xo-tcH" id="KP9-D4-4cC"/>
|
<outlet property="nextKeyView" destination="G9J-nn-2bu" id="CZ9-f2-JDQ"/>
|
||||||
</connections>
|
</connections>
|
||||||
<point key="canvasLocation" x="-899" y="-949"/>
|
<point key="canvasLocation" x="-1317" y="-1440"/>
|
||||||
</scrollView>
|
</scrollView>
|
||||||
</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="12121" systemVersion="16G29" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="12121"/>
|
<deployment identifier="macosx"/>
|
||||||
<capability name="box content view" minToolsVersion="7.0"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14460.31"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
@@ -10,10 +10,12 @@
|
|||||||
<connections>
|
<connections>
|
||||||
<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="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="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="rememberKeyFileCheckButton" destination="bSt-Wf-FNZ" id="aQm-EA-yAN"/>
|
<outlet property="rememberKeyFileCheckButton" destination="bSt-Wf-FNZ" id="aQm-EA-yAN"/>
|
||||||
<outlet property="reopenLastDatabase" destination="530" id="878"/>
|
<outlet property="reopenLastDatabase" destination="530" id="878"/>
|
||||||
<outlet property="view" destination="1" id="82"/>
|
<outlet property="view" destination="1" id="82"/>
|
||||||
@@ -22,16 +24,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="400" height="391"/>
|
<rect key="frame" x="0.0" y="0.0" width="400" height="524"/>
|
||||||
<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="366" height="266"/>
|
<rect key="frame" x="17" y="16" width="366" height="357"/>
|
||||||
<view key="contentView" id="mNh-3L-Z6E">
|
<view key="contentView" id="mNh-3L-Z6E">
|
||||||
<rect key="frame" x="1" y="1" width="364" height="250"/>
|
<rect key="frame" x="3" y="3" width="360" height="339"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="431">
|
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="431">
|
||||||
<rect key="frame" x="16" y="222" width="120" height="17"/>
|
<rect key="frame" x="14" y="311" width="120" height="17"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="height" constant="17" id="803"/>
|
<constraint firstAttribute="height" constant="17" id="803"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
@@ -42,27 +44,28 @@
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="419">
|
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="419">
|
||||||
<rect key="frame" x="179" y="219" width="170" height="22"/>
|
<rect key="frame" x="177" y="308" width="170" height="21"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" constant="165" id="877"/>
|
<constraint firstAttribute="width" constant="165" id="877"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<popUpButtonCell key="cell" type="push" title="after 1 Minute" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" tag="60" imageScaling="proportionallyDown" inset="2" selectedItem="424" 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"/>
|
||||||
<menu key="menu" title="ClipboardClearInterval" id="421">
|
<menu key="menu" title="ClipboardClearInterval" id="421">
|
||||||
<items>
|
<items>
|
||||||
<menuItem title="Never" id="429">
|
<menuItem title="Never" state="on" id="429">
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
</menuItem>
|
</menuItem>
|
||||||
<menuItem title="after 10 Seconds" tag="10" id="422"/>
|
<menuItem title="after 10 Seconds" tag="10" id="422"/>
|
||||||
<menuItem title="after 30 Seconds" tag="30" id="423"/>
|
<menuItem title="after 30 Seconds" tag="30" id="423"/>
|
||||||
<menuItem title="after 1 Minute" state="on" tag="60" id="424"/>
|
<menuItem title="after 1 Minute" tag="60" id="424"/>
|
||||||
|
<menuItem title="after 5 Minutes" tag="300" id="5gh-b6-cmG"/>
|
||||||
</items>
|
</items>
|
||||||
</menu>
|
</menu>
|
||||||
</popUpButtonCell>
|
</popUpButtonCell>
|
||||||
</popUpButton>
|
</popUpButton>
|
||||||
<button verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="447">
|
<button verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="447">
|
||||||
<rect key="frame" x="31" y="198" width="164" height="18"/>
|
<rect key="frame" x="29" y="287" width="164" height="18"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="height" constant="14" id="773"/>
|
<constraint firstAttribute="height" constant="14" id="773"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
@@ -72,7 +75,7 @@
|
|||||||
</buttonCell>
|
</buttonCell>
|
||||||
</button>
|
</button>
|
||||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="584">
|
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="584">
|
||||||
<rect key="frame" x="179" y="170" width="170" height="26"/>
|
<rect key="frame" x="177" y="168" width="170" 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 +92,14 @@
|
|||||||
</popUpButtonCell>
|
</popUpButtonCell>
|
||||||
</popUpButton>
|
</popUpButton>
|
||||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="630">
|
<button translatesAutoresizingMaskIntoConstraints="NO" id="630">
|
||||||
<rect key="frame" x="31" y="151" width="119" height="18"/>
|
<rect key="frame" x="29" y="149" 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" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="805">
|
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="805">
|
||||||
<rect key="frame" x="16" y="175" width="93" height="17"/>
|
<rect key="frame" x="14" y="173" width="93" height="17"/>
|
||||||
<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"/>
|
||||||
@@ -104,14 +107,14 @@
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<button verticalHuggingPriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="bSt-Wf-FNZ">
|
<button verticalHuggingPriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="bSt-Wf-FNZ">
|
||||||
<rect key="frame" x="16" y="106" width="220" height="18"/>
|
<rect key="frame" x="14" y="104" width="220" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Remember Keyfile for Databases" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="r6q-He-nYU">
|
<buttonCell key="cell" type="check" title="Remember Keyfile for Databases" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="r6q-He-nYU">
|
||||||
<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" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5cV-xX-SUU">
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="5cV-xX-SUU">
|
||||||
<rect key="frame" x="16" y="43" width="332" height="56"/>
|
<rect key="frame" x="18" y="41" width="324" 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 +123,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="162" y="7" width="190" height="32"/>
|
<rect key="frame" x="160" 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,23 +133,53 @@
|
|||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="5SP-Vi-1sn">
|
<button translatesAutoresizingMaskIntoConstraints="NO" id="5SP-Vi-1sn">
|
||||||
<rect key="frame" x="31" y="131" width="129" height="18"/>
|
<rect key="frame" x="29" y="129" 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">
|
||||||
|
<rect key="frame" x="14" y="262" 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">
|
||||||
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
</button>
|
||||||
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hy4-RL-dAa">
|
||||||
|
<rect key="frame" x="18" y="200" width="324" height="56"/>
|
||||||
|
<textFieldCell key="cell" sendsActionOnEndEditing="YES" id="JGX-Tp-KJk">
|
||||||
|
<font key="font" metaFont="smallSystem"/>
|
||||||
|
<string key="title">Disabling this compromises security. If enabled, anything copied to the Clipboard in MacPass will be available on your connected iOS devices. You should clear the clipboard on those devices manually.</string>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
</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 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 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 firstItem="bSt-Wf-FNZ" firstAttribute="top" secondItem="5SP-Vi-1sn" secondAttribute="bottom" constant="11" id="WUG-Uf-FCO"/>
|
<constraint firstItem="bSt-Wf-FNZ" firstAttribute="top" secondItem="5SP-Vi-1sn" secondAttribute="bottom" constant="11" id="WUG-Uf-FCO"/>
|
||||||
<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="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="6" symbolic="YES" id="acg-vp-LeB"/>
|
||||||
|
<constraint firstItem="584" firstAttribute="leading" relation="greaterThanOrEqual" 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 firstItem="419" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="431" secondAttribute="trailing" constant="8" symbolic="YES" id="pN3-pB-Z5I"/>
|
||||||
|
<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 firstAttribute="trailing" secondItem="5cV-xX-SUU" secondAttribute="trailing" constant="20" symbolic="YES" id="qY0-io-RZ0"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="hy4-RL-dAa" secondAttribute="trailing" constant="20" symbolic="YES" id="r5c-KT-eh0"/>
|
||||||
|
<constraint firstItem="hy4-RL-dAa" firstAttribute="leading" secondItem="mNh-3L-Z6E" secondAttribute="leading" constant="20" symbolic="YES" id="s4M-8w-cOl"/>
|
||||||
|
<constraint firstItem="nqZ-rB-mFS" firstAttribute="leading" secondItem="431" secondAttribute="leading" id="ufQ-bW-0gn"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
</view>
|
</view>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="trailing" secondItem="419" secondAttribute="trailing" constant="16" id="1de-jU-TAq"/>
|
<constraint firstAttribute="trailing" secondItem="419" secondAttribute="trailing" constant="16" id="1de-jU-TAq"/>
|
||||||
<constraint firstAttribute="trailing" secondItem="584" secondAttribute="trailing" constant="16" id="GAz-Mn-Z2y"/>
|
<constraint firstAttribute="trailing" secondItem="584" secondAttribute="trailing" constant="16" id="GAz-Mn-Z2y"/>
|
||||||
<constraint firstItem="5cV-xX-SUU" firstAttribute="trailing" secondItem="oQr-FC-HkN" secondAttribute="trailing" id="IK6-0d-s7J"/>
|
|
||||||
<constraint firstAttribute="bottom" secondItem="oQr-FC-HkN" secondAttribute="bottom" constant="11" id="M71-WV-WFc"/>
|
<constraint firstAttribute="bottom" secondItem="oQr-FC-HkN" secondAttribute="bottom" constant="11" id="M71-WV-WFc"/>
|
||||||
<constraint firstItem="5cV-xX-SUU" firstAttribute="top" secondItem="bSt-Wf-FNZ" secondAttribute="bottom" constant="9" id="NYW-dJ-CHg"/>
|
<constraint firstItem="5cV-xX-SUU" firstAttribute="top" secondItem="bSt-Wf-FNZ" secondAttribute="bottom" constant="9" id="NYW-dJ-CHg"/>
|
||||||
<constraint firstItem="805" firstAttribute="centerY" secondItem="584" secondAttribute="centerY" id="OOq-TD-dmj"/>
|
<constraint firstItem="805" firstAttribute="centerY" secondItem="584" secondAttribute="centerY" id="OOq-TD-dmj"/>
|
||||||
@@ -160,30 +193,43 @@
|
|||||||
<constraint firstItem="805" firstAttribute="leading" secondItem="465" secondAttribute="leading" constant="16" id="g88-lI-fu4"/>
|
<constraint firstItem="805" firstAttribute="leading" secondItem="465" secondAttribute="leading" constant="16" id="g88-lI-fu4"/>
|
||||||
<constraint firstItem="447" firstAttribute="leading" secondItem="465" secondAttribute="leading" constant="31" id="gpR-Rg-VAw"/>
|
<constraint firstItem="447" firstAttribute="leading" secondItem="465" secondAttribute="leading" constant="31" id="gpR-Rg-VAw"/>
|
||||||
<constraint firstItem="oQr-FC-HkN" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="465" secondAttribute="leading" constant="16" id="kZ7-HL-y2Q"/>
|
<constraint firstItem="oQr-FC-HkN" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="465" secondAttribute="leading" constant="16" id="kZ7-HL-y2Q"/>
|
||||||
<constraint firstItem="5cV-xX-SUU" firstAttribute="leading" secondItem="bSt-Wf-FNZ" secondAttribute="leading" id="qhV-iB-z4e"/>
|
|
||||||
<constraint firstItem="oQr-FC-HkN" firstAttribute="top" secondItem="5cV-xX-SUU" secondAttribute="bottom" constant="8" id="qsT-Cs-vVj"/>
|
<constraint firstItem="oQr-FC-HkN" firstAttribute="top" secondItem="5cV-xX-SUU" secondAttribute="bottom" constant="8" id="qsT-Cs-vVj"/>
|
||||||
<constraint firstItem="447" firstAttribute="top" secondItem="419" secondAttribute="bottom" constant="8" symbolic="YES" id="u35-aE-Ui9"/>
|
<constraint firstItem="447" firstAttribute="top" secondItem="419" secondAttribute="bottom" constant="8" symbolic="YES" id="u35-aE-Ui9"/>
|
||||||
<constraint firstItem="419" firstAttribute="leading" secondItem="584" secondAttribute="leading" id="xws-PK-qQU"/>
|
<constraint firstItem="419" firstAttribute="leading" secondItem="584" secondAttribute="leading" id="xws-PK-qQU"/>
|
||||||
<constraint firstItem="630" firstAttribute="leading" secondItem="447" secondAttribute="leading" id="ybt-cQ-JwG"/>
|
<constraint firstItem="630" firstAttribute="leading" secondItem="447" secondAttribute="leading" id="ybt-cQ-JwG"/>
|
||||||
<constraint firstItem="805" firstAttribute="top" secondItem="447" secondAttribute="bottom" constant="8" symbolic="YES" id="ywh-V0-xuC"/>
|
|
||||||
<constraint firstItem="447" firstAttribute="top" secondItem="431" secondAttribute="bottom" constant="8" symbolic="YES" id="zkd-Hf-09b"/>
|
<constraint firstItem="447" firstAttribute="top" secondItem="431" secondAttribute="bottom" constant="8" symbolic="YES" id="zkd-Hf-09b"/>
|
||||||
</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="286" width="366" height="85"/>
|
<rect key="frame" x="17" y="375" width="366" height="129"/>
|
||||||
<view key="contentView" id="cpg-tt-SHE">
|
<view key="contentView" id="cpg-tt-SHE">
|
||||||
<rect key="frame" x="1" y="1" width="364" height="69"/>
|
<rect key="frame" x="3" y="3" width="360" height="111"/>
|
||||||
<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="16" y="43" width="234" height="18"/>
|
<rect key="frame" x="14" y="85" 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>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="h3w-Ms-ohK">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="lz3-4U-UMI">
|
||||||
<rect key="frame" x="16" y="20" width="93" height="17"/>
|
<rect key="frame" x="14" y="65" width="123" height="18"/>
|
||||||
|
<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"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
</button>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="3Bo-Ml-1KB">
|
||||||
|
<rect key="frame" x="18" y="45" width="324" height="14"/>
|
||||||
|
<textFieldCell key="cell" controlSize="small" lineBreakMode="clipping" title="Close and open all documents for changes to take effect" id="ya5-ps-c4W">
|
||||||
|
<font key="font" metaFont="smallSystem"/>
|
||||||
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="h3w-Ms-ohK">
|
||||||
|
<rect key="frame" x="14" y="20" width="93" height="17"/>
|
||||||
<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"/>
|
||||||
@@ -191,7 +237,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="113" y="13" width="234" height="26"/>
|
<rect key="frame" x="111" y="14" width="232" 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"/>
|
||||||
@@ -200,12 +246,19 @@
|
|||||||
</popUpButton>
|
</popUpButton>
|
||||||
</subviews>
|
</subviews>
|
||||||
<constraints>
|
<constraints>
|
||||||
|
<constraint firstItem="3Bo-Ml-1KB" firstAttribute="leading" secondItem="cpg-tt-SHE" secondAttribute="leading" constant="20" symbolic="YES" id="2Jh-pk-bN7"/>
|
||||||
<constraint firstAttribute="trailing" secondItem="wIu-Sh-2a2" secondAttribute="trailing" constant="20" id="2Qw-fT-Dd8"/>
|
<constraint firstAttribute="trailing" secondItem="wIu-Sh-2a2" secondAttribute="trailing" constant="20" id="2Qw-fT-Dd8"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="3Bo-Ml-1KB" secondAttribute="trailing" constant="20" symbolic="YES" id="2UW-ao-hrC"/>
|
||||||
<constraint firstAttribute="bottom" secondItem="h3w-Ms-ohK" secondAttribute="bottom" constant="20" symbolic="YES" id="3KB-kR-5d6"/>
|
<constraint firstAttribute="bottom" secondItem="h3w-Ms-ohK" secondAttribute="bottom" constant="20" symbolic="YES" id="3KB-kR-5d6"/>
|
||||||
<constraint firstItem="h3w-Ms-ohK" firstAttribute="leading" secondItem="530" secondAttribute="leading" id="4Fi-rX-8e0"/>
|
<constraint firstItem="h3w-Ms-ohK" firstAttribute="leading" secondItem="530" secondAttribute="leading" id="4Fi-rX-8e0"/>
|
||||||
|
<constraint firstItem="lz3-4U-UMI" firstAttribute="top" secondItem="530" secondAttribute="bottom" constant="6" symbolic="YES" id="BQf-9P-8Y8"/>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="lz3-4U-UMI" secondAttribute="trailing" constant="20" symbolic="YES" id="Kaj-GT-zpd"/>
|
||||||
<constraint firstItem="wIu-Sh-2a2" firstAttribute="leading" secondItem="h3w-Ms-ohK" secondAttribute="trailing" constant="8" id="LYK-Na-Md1"/>
|
<constraint firstItem="wIu-Sh-2a2" firstAttribute="leading" secondItem="h3w-Ms-ohK" secondAttribute="trailing" constant="8" id="LYK-Na-Md1"/>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="530" secondAttribute="trailing" constant="20" symbolic="YES" id="QEp-Zq-u24"/>
|
||||||
<constraint firstItem="wIu-Sh-2a2" firstAttribute="baseline" secondItem="h3w-Ms-ohK" secondAttribute="baseline" id="Zqx-cl-oal"/>
|
<constraint firstItem="wIu-Sh-2a2" firstAttribute="baseline" secondItem="h3w-Ms-ohK" secondAttribute="baseline" id="Zqx-cl-oal"/>
|
||||||
<constraint firstItem="h3w-Ms-ohK" firstAttribute="top" secondItem="530" secondAttribute="bottom" constant="8" id="kIs-yJ-F2K"/>
|
<constraint firstItem="h3w-Ms-ohK" firstAttribute="top" secondItem="3Bo-Ml-1KB" secondAttribute="bottom" constant="8" symbolic="YES" id="emA-Z1-LCv"/>
|
||||||
|
<constraint firstItem="lz3-4U-UMI" firstAttribute="leading" secondItem="cpg-tt-SHE" secondAttribute="leading" constant="16" id="pm7-O1-afa"/>
|
||||||
|
<constraint firstItem="3Bo-Ml-1KB" firstAttribute="top" secondItem="lz3-4U-UMI" secondAttribute="bottom" constant="8" symbolic="YES" id="xkU-ut-P9X"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
</view>
|
</view>
|
||||||
<constraints>
|
<constraints>
|
||||||
@@ -224,7 +277,7 @@
|
|||||||
<constraint firstAttribute="bottom" secondItem="465" secondAttribute="bottom" constant="20" symbolic="YES" id="uwq-az-XwJ"/>
|
<constraint firstAttribute="bottom" secondItem="465" secondAttribute="bottom" constant="20" symbolic="YES" id="uwq-az-XwJ"/>
|
||||||
<constraint firstItem="465" firstAttribute="top" secondItem="cpg-tt-SHE" secondAttribute="bottom" constant="5" id="wyH-HB-i2U"/>
|
<constraint firstItem="465" firstAttribute="top" secondItem="cpg-tt-SHE" secondAttribute="bottom" constant="5" id="wyH-HB-i2U"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<point key="canvasLocation" x="-301" y="8.5"/>
|
<point key="canvasLocation" x="-131" y="-93"/>
|
||||||
</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="13529" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14313.18" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13529"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14313.18"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
@@ -37,11 +37,11 @@
|
|||||||
<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" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="23" customClass="HNHUIRoundedTextField">
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="23" customClass="HNHUITextField">
|
||||||
<rect key="frame" x="20" y="242" width="217" height="22"/>
|
<rect key="frame" x="20" y="242" width="217" height="22"/>
|
||||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="26">
|
<textFieldCell key="cell" lineBreakMode="truncatingTail" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="26">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
<color key="textColor" name="textColor" 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>
|
||||||
<connections>
|
<connections>
|
||||||
@@ -114,11 +114,11 @@
|
|||||||
<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" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Fnw-qz-IZU" customClass="HNHUIRoundedTextField">
|
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Fnw-qz-IZU" customClass="HNHUITextField">
|
||||||
<rect key="frame" x="20" y="50" width="217" height="22"/>
|
<rect key="frame" x="20" y="50" width="217" height="22"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="VeF-V7-i2I">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="VeF-V7-i2I">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
<color key="textColor" name="textColor" 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>
|
||||||
<connections>
|
<connections>
|
||||||
|
|||||||
@@ -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="13529" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14313.18" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13529"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14313.18"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
@@ -16,17 +16,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"/>
|
||||||
<customView id="1">
|
<customView id="1">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="400" height="400"/>
|
<rect key="frame" x="0.0" y="0.0" width="465" height="400"/>
|
||||||
<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="380" height="330"/>
|
<rect key="frame" x="10" y="50" width="445" height="330"/>
|
||||||
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="Gwf-zs-lPT">
|
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="Gwf-zs-lPT">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="380" height="330"/>
|
<rect key="frame" x="0.0" y="0.0" width="445" height="330"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<collectionView focusRingType="none" selectable="YES" id="58" customClass="MPCollectionView">
|
<collectionView focusRingType="none" selectable="YES" id="58" customClass="MPCollectionView">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="380" height="330"/>
|
<rect key="frame" x="0.0" y="0.0" width="445" height="330"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<color key="primaryBackgroundColor" name="windowBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="primaryBackgroundColor" name="windowBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
<connections>
|
<connections>
|
||||||
@@ -35,17 +35,17 @@
|
|||||||
</collectionView>
|
</collectionView>
|
||||||
</subviews>
|
</subviews>
|
||||||
</clipView>
|
</clipView>
|
||||||
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="59">
|
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="59">
|
||||||
<rect key="frame" x="1" y="144" width="233" height="15"/>
|
<rect key="frame" x="1" y="144" width="233" height="15"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
</scroller>
|
</scroller>
|
||||||
<scroller key="verticalScroller" hidden="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="364" y="0.0" width="16" height="268"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
</scroller>
|
</scroller>
|
||||||
</scrollView>
|
</scrollView>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="101">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="101">
|
||||||
<rect key="frame" x="265" y="18" width="115" height="25"/>
|
<rect key="frame" x="330" y="19" width="115" height="23"/>
|
||||||
<buttonCell key="cell" type="roundTextured" title="Use Default Icon" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="102">
|
<buttonCell key="cell" type="roundTextured" title="Use Default Icon" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="102">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
@@ -55,7 +55,7 @@
|
|||||||
</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="153" y="18" width="104" height="25"/>
|
<rect key="frame" x="214" y="19" width="108" height="23"/>
|
||||||
<buttonCell key="cell" type="roundTextured" title="Download Icon" bezelStyle="texturedRounded" imagePosition="left" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="iaf-XW-XUo">
|
<buttonCell key="cell" type="roundTextured" title="Download Icon" bezelStyle="texturedRounded" imagePosition="left" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="iaf-XW-XUo">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
@@ -65,7 +65,7 @@
|
|||||||
</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="89" y="18" width="56" height="25"/>
|
<rect key="frame" x="150" y="19" width="56" height="23"/>
|
||||||
<buttonCell key="cell" type="roundTextured" title="Cancel" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="1kM-cI-P1o">
|
<buttonCell key="cell" type="roundTextured" title="Cancel" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="1kM-cI-P1o">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
|
|||||||
@@ -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="13529" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14313.18" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13529"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14313.18"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
@@ -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="81" y="194" width="118" height="24"/>
|
<rect key="frame" x="82" y="194" width="115" 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"/>
|
||||||
@@ -122,40 +122,50 @@
|
|||||||
</textField>
|
</textField>
|
||||||
<scrollView horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0V7-UG-vEA">
|
<scrollView horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0V7-UG-vEA">
|
||||||
<rect key="frame" x="20" y="20" width="238" height="194"/>
|
<rect key="frame" x="20" y="20" width="238" height="194"/>
|
||||||
<clipView key="contentView" id="kcs-yQ-cbv">
|
<clipView key="contentView" drawsBackground="NO" id="kcs-yQ-cbv">
|
||||||
<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" 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="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
<size key="minSize" width="236" height="192"/>
|
<size key="minSize" width="236" height="192"/>
|
||||||
<size key="maxSize" width="463" height="10000000"/>
|
<size key="maxSize" width="463" height="10000000"/>
|
||||||
<color key="insertionPointColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
|
<color key="insertionPointColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||||
<connections>
|
<connections>
|
||||||
<binding destination="-2" name="editable" keyPath="representedObject.isHistory" id="zUB-H2-SkW">
|
<binding destination="-2" name="editable2" keyPath="representedObject" previousBinding="3gj-Fz-0G8" id="AI9-fU-m4Z">
|
||||||
|
<dictionary key="options">
|
||||||
|
<integer key="NSMultipleValuesPlaceholder" value="-1"/>
|
||||||
|
<integer key="NSNoSelectionPlaceholder" value="-1"/>
|
||||||
|
<integer key="NSNotApplicablePlaceholder" value="-1"/>
|
||||||
|
<integer key="NSNullPlaceholder" value="-1"/>
|
||||||
|
<string key="NSValueTransformerName">NSIsNotNil</string>
|
||||||
|
</dictionary>
|
||||||
|
</binding>
|
||||||
|
<binding destination="-2" name="editable" keyPath="representedObject.isHistory" id="3gj-Fz-0G8">
|
||||||
<dictionary key="options">
|
<dictionary key="options">
|
||||||
<string key="NSValueTransformerName">NSNegateBoolean</string>
|
<string key="NSValueTransformerName">NSNegateBoolean</string>
|
||||||
</dictionary>
|
</dictionary>
|
||||||
</binding>
|
</binding>
|
||||||
<binding destination="-2" name="value" keyPath="representedObject.notes" id="E0d-ZH-Wbc">
|
<binding destination="-2" name="value" keyPath="representedObject.notes" id="Xpb-G8-gXl">
|
||||||
<dictionary key="options">
|
<dictionary key="options">
|
||||||
<bool key="NSConditionallySetsEditable" value="NO"/>
|
<bool key="NSConditionallySetsEditable" value="NO"/>
|
||||||
<string key="NSNoSelectionPlaceholder">No Selection</string>
|
<string key="NSNoSelectionPlaceholder">No Selection</string>
|
||||||
|
<string key="NSNullPlaceholder">None</string>
|
||||||
</dictionary>
|
</dictionary>
|
||||||
</binding>
|
</binding>
|
||||||
<outlet property="delegate" destination="-2" id="8oq-Ga-UQD"/>
|
<outlet property="delegate" destination="-2" id="8oq-Ga-UQD"/>
|
||||||
</connections>
|
</connections>
|
||||||
</textView>
|
</textView>
|
||||||
</subviews>
|
</subviews>
|
||||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
|
||||||
</clipView>
|
</clipView>
|
||||||
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="YES" id="ozT-Yy-2vu">
|
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="YES" id="ozT-Yy-2vu">
|
||||||
<rect key="frame" x="-100" y="-100" width="87" height="18"/>
|
<rect key="frame" x="-100" y="-100" width="87" height="18"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
</scroller>
|
</scroller>
|
||||||
<scroller key="verticalScroller" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="Dgu-8Y-sx3">
|
<scroller key="verticalScroller" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="Dgu-8Y-sx3">
|
||||||
<rect key="frame" x="221" y="1" width="16" height="192"/>
|
<rect key="frame" x="221" y="1" width="16" height="192"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
</scroller>
|
</scroller>
|
||||||
|
|||||||
@@ -1,13 +1,15 @@
|
|||||||
<?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="12121" systemVersion="16G29" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="12121"/>
|
<deployment identifier="macosx"/>
|
||||||
<capability name="box content view" minToolsVersion="7.0"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14460.31"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
<customObject id="-2" userLabel="File's Owner" customClass="MPIntegrationSettingsController">
|
<customObject id="-2" userLabel="File's Owner" customClass="MPIntegrationSettingsController">
|
||||||
<connections>
|
<connections>
|
||||||
|
<outlet property="autotypeStackView" destination="j52-9L-k7c" id="Mxw-aa-elx"/>
|
||||||
|
<outlet property="autotypeWarningTextField" destination="hMJ-Mo-xOM" id="LcH-X2-TAm"/>
|
||||||
<outlet property="enableGlobalAutotypeCheckBox" destination="tik-Ar-FJg" id="yVA-bM-sSh"/>
|
<outlet property="enableGlobalAutotypeCheckBox" destination="tik-Ar-FJg" id="yVA-bM-sSh"/>
|
||||||
<outlet property="enableQuicklookCheckBox" destination="LNw-5t-TS4" id="YiZ-Kk-0dF"/>
|
<outlet property="enableQuicklookCheckBox" destination="LNw-5t-TS4" id="YiZ-Kk-0dF"/>
|
||||||
<outlet property="hotKeyTextField" destination="Kvg-he-3c8" id="c7p-1F-zth"/>
|
<outlet property="hotKeyTextField" destination="Kvg-he-3c8" id="c7p-1F-zth"/>
|
||||||
@@ -16,6 +18,7 @@
|
|||||||
<outlet property="matchTagsCheckBox" destination="9MH-jx-GpG" id="j1Y-BT-J81"/>
|
<outlet property="matchTagsCheckBox" destination="9MH-jx-GpG" id="j1Y-BT-J81"/>
|
||||||
<outlet property="matchTitleCheckBox" destination="DAX-V8-Say" id="rbc-nA-1bQ"/>
|
<outlet property="matchTitleCheckBox" destination="DAX-V8-Say" id="rbc-nA-1bQ"/>
|
||||||
<outlet property="matchURLCheckBox" destination="8Wz-lo-AXG" id="jTp-2n-oO7"/>
|
<outlet property="matchURLCheckBox" destination="8Wz-lo-AXG" id="jTp-2n-oO7"/>
|
||||||
|
<outlet property="openPreferencesButton" destination="jai-b6-Qv4" id="Uq1-un-Dga"/>
|
||||||
<outlet property="sendCommandForControlCheckBox" destination="VK8-z4-2ci" id="nIa-ap-QfD"/>
|
<outlet property="sendCommandForControlCheckBox" destination="VK8-z4-2ci" id="nIa-ap-QfD"/>
|
||||||
<outlet property="view" destination="1" id="18"/>
|
<outlet property="view" destination="1" id="18"/>
|
||||||
</connections>
|
</connections>
|
||||||
@@ -23,137 +26,178 @@
|
|||||||
<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="366"/>
|
<rect key="frame" x="0.0" y="0.0" width="400" height="463"/>
|
||||||
<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="231"/>
|
<rect key="frame" x="17" y="115" width="366" height="328"/>
|
||||||
<view key="contentView" id="faU-Ok-HJ3">
|
<view key="contentView" id="faU-Ok-HJ3">
|
||||||
<rect key="frame" x="1" y="1" width="364" height="215"/>
|
<rect key="frame" x="3" y="3" width="360" height="310"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Kvg-he-3c8" customClass="DDHotKeyTextField">
|
<stackView orientation="vertical" alignment="leading" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" translatesAutoresizingMaskIntoConstraints="NO" id="j52-9L-k7c">
|
||||||
<rect key="frame" x="79" y="161" width="89" height="22"/>
|
<rect key="frame" x="16" y="17" width="328" height="283"/>
|
||||||
<constraints>
|
<beginningViews>
|
||||||
<constraint firstAttribute="width" constant="89" id="Mia-b8-HCZ"/>
|
<textField verticalHuggingPriority="750" fixedFrame="YES" preferredMaxLayoutWidth="328" translatesAutoresizingMaskIntoConstraints="NO" id="hMJ-Mo-xOM">
|
||||||
</constraints>
|
<rect key="frame" x="-2" y="227" width="332" height="56"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="" drawsBackground="YES" id="sW8-rh-bhD" customClass="DDHotKeyTextFieldCell">
|
<textFieldCell key="cell" controlSize="small" id="H37-ku-aTc">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="smallSystem"/>
|
||||||
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
<string key="title">Autotype is not available, because MacPass is not allowed to control your computer. To enable Autotype, go to the Security and Privacy Preferences and add MacPass to the Accessibilty group. Changes require a restart of MacPass.</string>
|
||||||
|
<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>
|
||||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="tik-Ar-FJg">
|
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="jai-b6-Qv4">
|
||||||
<rect key="frame" x="16" y="189" width="162" height="18"/>
|
<rect key="frame" x="-6" y="191" width="160" height="32"/>
|
||||||
|
<buttonCell key="cell" type="push" title="Open Preferences…" bezelStyle="rounded" alignment="center" borderStyle="border" inset="2" id="NP0-R3-m6n">
|
||||||
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<action selector="openAccessibiltyPreferences:" target="-2" id="GTg-6Z-6nd"/>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
<button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="tik-Ar-FJg">
|
||||||
|
<rect key="frame" x="-2" y="174" width="162" 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>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="buI-Wb-o3V">
|
<stackView orientation="horizontal" alignment="centerY" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="d6A-Vb-CMt">
|
||||||
<rect key="frame" x="16" y="164" width="57" height="17"/>
|
<rect key="frame" x="0.0" y="146" width="328" height="22"/>
|
||||||
|
<beginningViews>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="buI-Wb-o3V">
|
||||||
|
<rect key="frame" x="-2" y="3" width="57" height="17"/>
|
||||||
<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 horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="f5q-EW-RHf">
|
<textField verticalHuggingPriority="750" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Kvg-he-3c8" customClass="DDHotKeyTextField">
|
||||||
<rect key="frame" x="174" y="167" width="127" height="14"/>
|
<rect key="frame" x="61" y="0.0" width="136" height="22"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="width" constant="89" id="Mia-b8-HCZ"/>
|
||||||
|
</constraints>
|
||||||
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="" drawsBackground="YES" id="sW8-rh-bhD" customClass="DDHotKeyTextFieldCell">
|
||||||
|
<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" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="f5q-EW-RHf">
|
||||||
|
<rect key="frame" x="203" 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>
|
||||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="DAX-V8-Say">
|
</beginningViews>
|
||||||
<rect key="frame" x="16" y="133" width="208" height="18"/>
|
<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>
|
||||||
|
<button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="DAX-V8-Say">
|
||||||
|
<rect key="frame" x="-2" y="122" width="208" 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 translatesAutoresizingMaskIntoConstraints="NO" id="TiO-ah-BlR">
|
<button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="8Wz-lo-AXG">
|
||||||
<rect key="frame" x="16" y="93" width="239" height="18"/>
|
<rect key="frame" x="-2" y="100" width="206" height="18"/>
|
||||||
|
<buttonCell key="cell" type="check" title="Include Entry URL for matches" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="TzR-00-Vp3">
|
||||||
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
</button>
|
||||||
|
<button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="TiO-ah-BlR">
|
||||||
|
<rect key="frame" x="-2" y="78" width="239" height="18"/>
|
||||||
<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 translatesAutoresizingMaskIntoConstraints="NO" id="9MH-jx-GpG">
|
<button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="9MH-jx-GpG">
|
||||||
<rect key="frame" x="16" y="73" width="210" height="18"/>
|
<rect key="frame" x="-2" y="56" width="210" 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" translatesAutoresizingMaskIntoConstraints="NO" id="VK8-z4-2ci">
|
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="VK8-z4-2ci">
|
||||||
<rect key="frame" x="16" y="53" width="123" height="18"/>
|
<rect key="frame" x="-2" y="34" width="122" 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" setsMaxLayoutWidthAtFirstLayout="YES" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wbP-A9-jpw">
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="wbP-A9-jpw">
|
||||||
<rect key="frame" x="18" y="19" width="330" height="28"/>
|
<rect key="frame" x="-2" y="0.0" width="332" 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>
|
||||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="8Wz-lo-AXG">
|
</beginningViews>
|
||||||
<rect key="frame" x="16" y="113" width="207" height="18"/>
|
<visibilityPriorities>
|
||||||
<buttonCell key="cell" type="check" title="Include Entry URL for matches" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="TzR-00-Vp3">
|
<integer value="1000"/>
|
||||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
<integer value="1000"/>
|
||||||
<font key="font" metaFont="system"/>
|
<integer value="1000"/>
|
||||||
</buttonCell>
|
<integer value="1000"/>
|
||||||
</button>
|
<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"/>
|
||||||
|
</customSpacing>
|
||||||
|
</stackView>
|
||||||
</subviews>
|
</subviews>
|
||||||
<constraints>
|
|
||||||
<constraint firstItem="8Wz-lo-AXG" firstAttribute="top" secondItem="DAX-V8-Say" secondAttribute="bottom" constant="6" symbolic="YES" id="MoH-z7-kAd"/>
|
|
||||||
<constraint firstItem="wbP-A9-jpw" firstAttribute="leading" secondItem="faU-Ok-HJ3" secondAttribute="leading" constant="20" symbolic="YES" id="VLP-Gn-i60"/>
|
|
||||||
<constraint firstItem="9MH-jx-GpG" firstAttribute="leading" secondItem="TiO-ah-BlR" secondAttribute="leading" id="ZD4-CI-kNs"/>
|
|
||||||
<constraint firstItem="8Wz-lo-AXG" firstAttribute="leading" secondItem="tik-Ar-FJg" secondAttribute="leading" id="djt-ZE-TVX"/>
|
|
||||||
<constraint firstItem="TiO-ah-BlR" firstAttribute="top" secondItem="8Wz-lo-AXG" secondAttribute="bottom" constant="6" symbolic="YES" id="ejm-fw-tc2"/>
|
|
||||||
<constraint firstItem="VK8-z4-2ci" firstAttribute="leading" secondItem="tik-Ar-FJg" secondAttribute="leading" id="umE-F4-nDY"/>
|
|
||||||
</constraints>
|
|
||||||
</view>
|
</view>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="trailing" secondItem="wbP-A9-jpw" secondAttribute="trailing" constant="16" id="2V3-QT-fHc"/>
|
<constraint firstAttribute="trailing" secondItem="j52-9L-k7c" secondAttribute="trailing" constant="16" id="DbO-uU-dBc"/>
|
||||||
<constraint firstItem="DAX-V8-Say" firstAttribute="top" secondItem="Kvg-he-3c8" secondAttribute="bottom" constant="12" id="3uN-8n-txN"/>
|
<constraint firstItem="j52-9L-k7c" firstAttribute="top" secondItem="P9N-HM-wER" secondAttribute="top" constant="25" id="GW1-NJ-TjL"/>
|
||||||
<constraint firstItem="Kvg-he-3c8" firstAttribute="leading" secondItem="buI-Wb-o3V" secondAttribute="trailing" constant="8" symbolic="YES" id="53L-pe-f6c"/>
|
<constraint firstItem="j52-9L-k7c" firstAttribute="leading" secondItem="P9N-HM-wER" secondAttribute="leading" constant="16" id="I0o-Ef-GNj"/>
|
||||||
<constraint firstAttribute="bottom" secondItem="wbP-A9-jpw" secondAttribute="bottom" constant="16" id="Cz4-ys-xjj"/>
|
<constraint firstAttribute="bottom" secondItem="j52-9L-k7c" secondAttribute="bottom" constant="16" id="stS-Jr-dyi"/>
|
||||||
<constraint firstItem="tik-Ar-FJg" firstAttribute="leading" secondItem="P9N-HM-wER" secondAttribute="leading" constant="16" id="DfG-iG-Cdv"/>
|
|
||||||
<constraint firstItem="tik-Ar-FJg" firstAttribute="top" secondItem="P9N-HM-wER" secondAttribute="top" constant="25" id="E3O-BW-PBU"/>
|
|
||||||
<constraint firstItem="f5q-EW-RHf" firstAttribute="leading" secondItem="Kvg-he-3c8" secondAttribute="trailing" constant="8" symbolic="YES" id="F3E-6w-vYY"/>
|
|
||||||
<constraint firstItem="wbP-A9-jpw" firstAttribute="top" secondItem="VK8-z4-2ci" secondAttribute="bottom" constant="8" symbolic="YES" id="SjT-SU-tCe"/>
|
|
||||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="Kvg-he-3c8" secondAttribute="trailing" constant="26" id="U4h-wP-3di"/>
|
|
||||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="f5q-EW-RHf" secondAttribute="trailing" constant="26" id="Xme-uO-a5Z"/>
|
|
||||||
<constraint firstItem="Kvg-he-3c8" firstAttribute="baseline" secondItem="f5q-EW-RHf" secondAttribute="baseline" constant="3" id="Zvz-jd-nLG"/>
|
|
||||||
<constraint firstItem="Kvg-he-3c8" firstAttribute="top" secondItem="tik-Ar-FJg" secondAttribute="bottom" constant="8" symbolic="YES" id="bxR-sX-uV3"/>
|
|
||||||
<constraint firstItem="buI-Wb-o3V" firstAttribute="baseline" secondItem="Kvg-he-3c8" secondAttribute="baseline" id="her-EX-xCf"/>
|
|
||||||
<constraint firstItem="9MH-jx-GpG" firstAttribute="top" secondItem="TiO-ah-BlR" secondAttribute="bottom" constant="6" symbolic="YES" id="mDj-Hg-CFH"/>
|
|
||||||
<constraint firstItem="tik-Ar-FJg" firstAttribute="leading" secondItem="buI-Wb-o3V" secondAttribute="leading" id="qDJ-3S-cPr"/>
|
|
||||||
<constraint firstItem="VK8-z4-2ci" firstAttribute="top" secondItem="9MH-jx-GpG" secondAttribute="bottom" constant="6" symbolic="YES" id="qaN-4g-KJh"/>
|
|
||||||
<constraint firstItem="DAX-V8-Say" firstAttribute="leading" secondItem="tik-Ar-FJg" secondAttribute="leading" id="s2L-A8-WQ2"/>
|
|
||||||
<constraint firstItem="tik-Ar-FJg" firstAttribute="leading" secondItem="TiO-ah-BlR" secondAttribute="leading" id="uJP-4u-dr4"/>
|
|
||||||
</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="366" height="95"/>
|
||||||
<view key="contentView" id="ww4-uR-8gP">
|
<view key="contentView" id="ww4-uR-8gP">
|
||||||
<rect key="frame" x="1" y="1" width="364" height="79"/>
|
<rect key="frame" x="3" y="3" width="360" 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">
|
||||||
<rect key="frame" x="16" y="53" width="178" height="18"/>
|
<rect key="frame" x="14" y="51" width="178" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Enable Quicklook Preview" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="ERs-ct-Eyx">
|
<buttonCell key="cell" type="check" title="Enable Quicklook Preview" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="ERs-ct-Eyx">
|
||||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
</buttonCell>
|
</buttonCell>
|
||||||
</button>
|
</button>
|
||||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="V6l-R9-hIj">
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="V6l-R9-hIj">
|
||||||
<rect key="frame" x="16" y="19" width="332" height="28"/>
|
<rect key="frame" x="14" y="17" width="332" 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"/>
|
||||||
@@ -161,6 +205,9 @@
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
</subviews>
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="LNw-5t-TS4" secondAttribute="trailing" constant="20" symbolic="YES" id="5bd-ta-CgC"/>
|
||||||
|
</constraints>
|
||||||
</view>
|
</view>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstItem="V6l-R9-hIj" firstAttribute="leading" secondItem="VVs-b5-cX9" secondAttribute="leading" constant="16" id="4UQ-7R-4C6"/>
|
<constraint firstItem="V6l-R9-hIj" firstAttribute="leading" secondItem="VVs-b5-cX9" secondAttribute="leading" constant="16" id="4UQ-7R-4C6"/>
|
||||||
@@ -182,7 +229,7 @@
|
|||||||
<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="130" y="148"/>
|
<point key="canvasLocation" x="-357" y="-1007.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="13196" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14313.18" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13196"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14313.18"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
|
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
|
||||||
@@ -145,7 +145,7 @@
|
|||||||
<menuItem isSeparatorItem="YES" id="79">
|
<menuItem isSeparatorItem="YES" id="79">
|
||||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||||
</menuItem>
|
</menuItem>
|
||||||
<menuItem title="Merge…" id="zvE-0h-UxI">
|
<menuItem title="Merge With…" id="zvE-0h-UxI">
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
<connections>
|
<connections>
|
||||||
<action selector="mergeWithOther:" target="-1" id="OyM-CZ-TDD"/>
|
<action selector="mergeWithOther:" target="-1" id="OyM-CZ-TDD"/>
|
||||||
@@ -162,6 +162,9 @@
|
|||||||
</connections>
|
</connections>
|
||||||
</menuItem>
|
</menuItem>
|
||||||
</items>
|
</items>
|
||||||
|
<connections>
|
||||||
|
<outlet property="delegate" destination="494" id="gzA-SE-HKO"/>
|
||||||
|
</connections>
|
||||||
</menu>
|
</menu>
|
||||||
</menuItem>
|
</menuItem>
|
||||||
<menuItem title="Export" id="tz9-yK-pOf">
|
<menuItem title="Export" id="tz9-yK-pOf">
|
||||||
@@ -250,6 +253,14 @@ CA
|
|||||||
</items>
|
</items>
|
||||||
</menu>
|
</menu>
|
||||||
</menuItem>
|
</menuItem>
|
||||||
|
<menuItem title="Item" id="3st-rv-EeQ">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<menu key="submenu" title="Item" id="Ttt-tR-emo">
|
||||||
|
<connections>
|
||||||
|
<outlet property="delegate" destination="494" id="8Tk-fd-paV"/>
|
||||||
|
</connections>
|
||||||
|
</menu>
|
||||||
|
</menuItem>
|
||||||
<menuItem title="View" id="295">
|
<menuItem title="View" id="295">
|
||||||
<menu key="submenu" title="View" id="296">
|
<menu key="submenu" title="View" id="296">
|
||||||
<items>
|
<items>
|
||||||
@@ -306,7 +317,7 @@ CA
|
|||||||
</connections>
|
</connections>
|
||||||
</menuItem>
|
</menuItem>
|
||||||
<menuItem isSeparatorItem="YES" id="1176"/>
|
<menuItem isSeparatorItem="YES" id="1176"/>
|
||||||
<menuItem title="Show Password Creator" keyEquivalent="p" id="1200">
|
<menuItem title="Show Password Generator" keyEquivalent="p" id="1200">
|
||||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||||
<connections>
|
<connections>
|
||||||
<action selector="showPasswordCreator:" target="494" id="1202"/>
|
<action selector="showPasswordCreator:" target="494" id="1202"/>
|
||||||
@@ -336,12 +347,14 @@ CA
|
|||||||
</menu>
|
</menu>
|
||||||
</menuItem>
|
</menuItem>
|
||||||
</items>
|
</items>
|
||||||
<point key="canvasLocation" x="-452" y="80"/>
|
<point key="canvasLocation" x="-600" y="98"/>
|
||||||
</menu>
|
</menu>
|
||||||
<customObject id="494" customClass="MPAppDelegate">
|
<customObject id="494" customClass="MPAppDelegate">
|
||||||
<connections>
|
<connections>
|
||||||
<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="itemMenu" destination="Ttt-tR-emo" id="cdF-dt-2h9"/>
|
||||||
<outlet property="saveMenuItem" destination="75" id="dsN-Im-4eZ"/>
|
<outlet property="saveMenuItem" destination="75" id="dsN-Im-4eZ"/>
|
||||||
</connections>
|
</connections>
|
||||||
</customObject>
|
</customObject>
|
||||||
|
|||||||
@@ -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="13196" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14113" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13196"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14113"/>
|
||||||
<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>
|
||||||
@@ -49,7 +49,7 @@
|
|||||||
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="x9q-qY-Jy2" secondAttribute="bottom" constant="10" id="f1c-Ha-7hR"/>
|
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="x9q-qY-Jy2" secondAttribute="bottom" constant="10" id="f1c-Ha-7hR"/>
|
||||||
<constraint firstItem="I5Q-M2-Ha7" firstAttribute="leading" secondItem="x9q-qY-Jy2" secondAttribute="leading" id="sUu-Ol-LM0"/>
|
<constraint firstItem="I5Q-M2-Ha7" firstAttribute="leading" secondItem="x9q-qY-Jy2" secondAttribute="leading" id="sUu-Ol-LM0"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<point key="canvasLocation" x="-239" y="-34"/>
|
<point key="canvasLocation" x="-11" y="-31"/>
|
||||||
</customView>
|
</customView>
|
||||||
</objects>
|
</objects>
|
||||||
</document>
|
</document>
|
||||||
@@ -1,14 +1,16 @@
|
|||||||
<?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="13196" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13196"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14460.31"/>
|
||||||
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
<customObject id="-2" userLabel="File's Owner" customClass="MPPasswordCreatorViewController">
|
<customObject id="-2" userLabel="File's Owner" customClass="MPPasswordCreatorViewController">
|
||||||
<connections>
|
<connections>
|
||||||
<outlet property="customButton" destination="468" id="598"/>
|
<outlet property="customButton" destination="468" id="598"/>
|
||||||
<outlet property="customCharactersTextField" destination="411" id="479"/>
|
<outlet property="customCharactersTextField" destination="411" id="479"/>
|
||||||
|
<outlet property="ensureOccuranceButton" destination="RDM-JY-oF9" id="btK-Gf-vpP"/>
|
||||||
<outlet property="entropyIndicator" destination="635" id="676"/>
|
<outlet property="entropyIndicator" destination="635" id="676"/>
|
||||||
<outlet property="entropyTextField" destination="652" id="675"/>
|
<outlet property="entropyTextField" destination="652" id="675"/>
|
||||||
<outlet property="lowerCaseButton" destination="456" id="593"/>
|
<outlet property="lowerCaseButton" destination="456" id="593"/>
|
||||||
@@ -27,68 +29,68 @@
|
|||||||
<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="291"/>
|
<rect key="frame" x="0.0" y="0.0" width="351" height="316"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="148">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="148">
|
||||||
<rect key="frame" x="18" y="251" width="66" height="17"/>
|
<rect key="frame" x="18" y="276" width="66" height="17"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Password:" id="149">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Password:" id="149">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="152">
|
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="152">
|
||||||
<rect key="frame" x="90" y="247" width="201" height="24"/>
|
<rect key="frame" x="90" y="272" width="201" height="24"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="200" id="621"/>
|
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="200" id="621"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<textFieldCell key="cell" lineBreakMode="truncatingMiddle" selectable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="153" customClass="HNHUIRoundedTextFieldCell">
|
<textFieldCell key="cell" lineBreakMode="truncatingMiddle" selectable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="153" customClass="HNHUITextFieldCell">
|
||||||
<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"/>
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<slider verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="173">
|
<slider verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="173">
|
||||||
<rect key="frame" x="88" y="221" width="205" height="19"/>
|
<rect key="frame" x="88" y="246" width="205" height="19"/>
|
||||||
<sliderCell key="cell" state="on" alignment="left" maxValue="100" doubleValue="50" tickMarkPosition="above" sliderType="linear" id="174"/>
|
<sliderCell key="cell" state="on" alignment="left" maxValue="100" doubleValue="50" tickMarkPosition="above" sliderType="linear" id="174"/>
|
||||||
</slider>
|
</slider>
|
||||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="178">
|
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="178">
|
||||||
<rect key="frame" x="18" y="223" width="66" height="17"/>
|
<rect key="frame" x="18" y="248" width="66" height="17"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Length:" id="179">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Length:" id="179">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
<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" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="182">
|
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="182">
|
||||||
<rect key="frame" x="299" y="219" width="32" height="22"/>
|
<rect key="frame" x="299" y="244" width="32" height="22"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="32" id="eVc-Kg-bCi"/>
|
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="32" id="eVc-Kg-bCi"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="183">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="183">
|
||||||
<customFormatter key="formatter" id="VRL-ed-DDG" customClass="MPNumberFormatter"/>
|
<customFormatter key="formatter" id="VRL-ed-DDG" customClass="MPNumberFormatter"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
<color key="textColor" name="textColor" 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>
|
||||||
<box autoresizesSubviews="NO" borderType="line" title="Allowed Characters" 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="94"/>
|
<rect key="frame" x="17" y="88" width="317" height="119"/>
|
||||||
<view key="contentView" id="f93-Su-hga">
|
<view key="contentView" id="f93-Su-hga">
|
||||||
<rect key="frame" x="1" y="1" width="315" height="78"/>
|
<rect key="frame" x="3" y="3" width="311" height="101"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="411">
|
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="411">
|
||||||
<rect key="frame" x="18" y="19" width="279" height="22"/>
|
<rect key="frame" x="16" y="42" width="279" height="22"/>
|
||||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="412" customClass="HNHUIRoundedTextFieldCell">
|
<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="textColor" 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>
|
||||||
<button verticalHuggingPriority="750" tag="1" translatesAutoresizingMaskIntoConstraints="NO" id="452">
|
<button verticalHuggingPriority="750" tag="1" translatesAutoresizingMaskIntoConstraints="NO" id="452">
|
||||||
<rect key="frame" x="18" y="49" width="36" height="19"/>
|
<rect key="frame" x="16" y="72" width="36" height="19"/>
|
||||||
<buttonCell key="cell" type="roundRect" title="A-Z" bezelStyle="roundedRect" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="453">
|
<buttonCell key="cell" type="roundRect" title="A-Z" bezelStyle="roundedRect" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="453">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
||||||
<font key="font" metaFont="cellTitle"/>
|
<font key="font" metaFont="cellTitle"/>
|
||||||
@@ -98,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="62" y="49" width="33" height="19"/>
|
<rect key="frame" x="60" y="72" width="33" height="19"/>
|
||||||
<buttonCell key="cell" type="roundRect" title="a-z" bezelStyle="roundedRect" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="457">
|
<buttonCell key="cell" type="roundRect" title="a-z" bezelStyle="roundedRect" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="457">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
||||||
<font key="font" metaFont="cellTitle"/>
|
<font key="font" metaFont="cellTitle"/>
|
||||||
@@ -108,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="103" y="49" width="35" height="19"/>
|
<rect key="frame" x="101" y="72" width="35" height="19"/>
|
||||||
<buttonCell key="cell" type="roundRect" title="0-9" bezelStyle="roundedRect" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="461">
|
<buttonCell key="cell" type="roundRect" title="0-9" bezelStyle="roundedRect" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="461">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
||||||
<font key="font" metaFont="cellTitle"/>
|
<font key="font" metaFont="cellTitle"/>
|
||||||
@@ -118,7 +120,7 @@
|
|||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<button verticalHuggingPriority="750" tag="8" translatesAutoresizingMaskIntoConstraints="NO" id="464">
|
<button verticalHuggingPriority="750" tag="8" translatesAutoresizingMaskIntoConstraints="NO" id="464">
|
||||||
<rect key="frame" x="146" y="49" width="32" height="19"/>
|
<rect key="frame" x="144" y="72" width="32" height="19"/>
|
||||||
<buttonCell key="cell" type="roundRect" title="#!?" bezelStyle="roundedRect" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="465">
|
<buttonCell key="cell" type="roundRect" title="#!?" bezelStyle="roundedRect" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="465">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
||||||
<font key="font" metaFont="cellTitle"/>
|
<font key="font" metaFont="cellTitle"/>
|
||||||
@@ -128,7 +130,7 @@
|
|||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="468">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="468">
|
||||||
<rect key="frame" x="186" y="49" width="58" height="19"/>
|
<rect key="frame" x="184" y="72" width="58" height="19"/>
|
||||||
<buttonCell key="cell" type="roundRect" title="Custom" bezelStyle="roundedRect" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="469">
|
<buttonCell key="cell" type="roundRect" title="Custom" bezelStyle="roundedRect" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="469">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
||||||
<font key="font" metaFont="cellTitle"/>
|
<font key="font" metaFont="cellTitle"/>
|
||||||
@@ -137,7 +139,20 @@
|
|||||||
<action selector="_toggleCharacters:" target="-2" id="5CP-8c-RKX"/>
|
<action selector="_toggleCharacters:" target="-2" id="5CP-8c-RKX"/>
|
||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="RDM-JY-oF9">
|
||||||
|
<rect key="frame" x="14" y="18" width="222" height="18"/>
|
||||||
|
<buttonCell key="cell" type="check" title="Use characters from every group" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="CMc-Uh-Fo5">
|
||||||
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
</button>
|
||||||
</subviews>
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="RDM-JY-oF9" secondAttribute="trailing" constant="20" symbolic="YES" id="04d-ak-mHi"/>
|
||||||
|
<constraint firstItem="RDM-JY-oF9" firstAttribute="top" secondItem="411" secondAttribute="bottom" constant="8" symbolic="YES" id="eDq-kw-W3j"/>
|
||||||
|
<constraint firstItem="RDM-JY-oF9" firstAttribute="leading" secondItem="411" secondAttribute="leading" id="lwy-YZ-Vxl"/>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="RDM-JY-oF9" secondAttribute="bottom" constant="20" symbolic="YES" id="rS3-s4-ibM"/>
|
||||||
|
</constraints>
|
||||||
</view>
|
</view>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="468" secondAttribute="trailing" constant="16" id="1AP-Bk-63Z"/>
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="468" secondAttribute="trailing" constant="16" id="1AP-Bk-63Z"/>
|
||||||
@@ -146,7 +161,6 @@
|
|||||||
<constraint firstItem="468" firstAttribute="leading" secondItem="464" secondAttribute="trailing" constant="8" symbolic="YES" id="I61-T5-YTD"/>
|
<constraint firstItem="468" firstAttribute="leading" secondItem="464" secondAttribute="trailing" constant="8" symbolic="YES" id="I61-T5-YTD"/>
|
||||||
<constraint firstItem="460" firstAttribute="leading" secondItem="456" secondAttribute="trailing" constant="8" symbolic="YES" id="IEY-Ge-pYv"/>
|
<constraint firstItem="460" firstAttribute="leading" secondItem="456" secondAttribute="trailing" constant="8" symbolic="YES" id="IEY-Ge-pYv"/>
|
||||||
<constraint firstItem="468" firstAttribute="top" secondItem="332" secondAttribute="top" constant="25" id="NAr-SD-lu0"/>
|
<constraint firstItem="468" firstAttribute="top" secondItem="332" secondAttribute="top" constant="25" id="NAr-SD-lu0"/>
|
||||||
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="411" secondAttribute="bottom" constant="16" id="O0V-4Y-bhc"/>
|
|
||||||
<constraint firstItem="456" firstAttribute="top" secondItem="332" secondAttribute="top" constant="25" id="QYc-6i-WKC"/>
|
<constraint firstItem="456" firstAttribute="top" secondItem="332" secondAttribute="top" constant="25" id="QYc-6i-WKC"/>
|
||||||
<constraint firstItem="460" firstAttribute="top" secondItem="332" secondAttribute="top" constant="25" id="ZaM-QU-hcG"/>
|
<constraint firstItem="460" firstAttribute="top" secondItem="332" secondAttribute="top" constant="25" id="ZaM-QU-hcG"/>
|
||||||
<constraint firstItem="456" firstAttribute="leading" secondItem="452" secondAttribute="trailing" constant="8" symbolic="YES" id="bFo-86-Qj1"/>
|
<constraint firstItem="456" firstAttribute="leading" secondItem="452" secondAttribute="trailing" constant="8" symbolic="YES" id="bFo-86-Qj1"/>
|
||||||
@@ -158,7 +172,7 @@
|
|||||||
</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="18" width="100" height="25"/>
|
<rect key="frame" x="231" y="19" width="100" height="23"/>
|
||||||
<buttonCell key="cell" type="roundTextured" title="Use Password" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="495">
|
<buttonCell key="cell" type="roundTextured" title="Use Password" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="495">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
@@ -175,7 +189,7 @@
|
|||||||
</buttonCell>
|
</buttonCell>
|
||||||
</button>
|
</button>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="509">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="509">
|
||||||
<rect key="frame" x="299" y="247" width="32" height="25"/>
|
<rect key="frame" x="299" y="273" width="32" height="23"/>
|
||||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSRefreshTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="510">
|
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSRefreshTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="510">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
@@ -185,7 +199,7 @@
|
|||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="613">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="613">
|
||||||
<rect key="frame" x="167" y="18" width="56" height="25"/>
|
<rect key="frame" x="167" y="19" width="56" height="23"/>
|
||||||
<buttonCell key="cell" type="roundTextured" title="Cancel" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="614">
|
<buttonCell key="cell" type="roundTextured" title="Cancel" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="614">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
@@ -195,19 +209,19 @@
|
|||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<levelIndicator verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="635">
|
<levelIndicator verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="635">
|
||||||
<rect key="frame" x="90" y="190" width="173" height="16"/>
|
<rect key="frame" x="90" y="213" width="173" height="18"/>
|
||||||
<levelIndicatorCell key="cell" alignment="left" doubleValue="10" maxValue="90" warningValue="55" criticalValue="30" levelIndicatorStyle="continuousCapacity" id="636" customClass="HNHUILevelIndicatorCell"/>
|
<levelIndicatorCell key="cell" alignment="left" doubleValue="10" maxValue="90" warningValue="55" criticalValue="30" levelIndicatorStyle="continuousCapacity" id="636" customClass="HNHUILevelIndicatorCell"/>
|
||||||
</levelIndicator>
|
</levelIndicator>
|
||||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="646">
|
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="646">
|
||||||
<rect key="frame" x="18" y="190" width="66" height="17"/>
|
<rect key="frame" x="18" y="215" width="66" height="17"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Entropy:" id="647">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Entropy:" id="647">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
<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" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="652">
|
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="652">
|
||||||
<rect key="frame" x="269" y="190" width="64" height="17"/>
|
<rect key="frame" x="269" y="215" width="64" height="17"/>
|
||||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="25000 bit" id="653">
|
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="25000 bit" id="653">
|
||||||
<numberFormatter key="formatter" formatterBehavior="custom10_4" positiveFormat="# bit" negativeFormat="# bit" usesGroupingSeparator="NO" paddingCharacter="*" groupingSize="0" minimumIntegerDigits="0" maximumIntegerDigits="309" decimalSeparator="," groupingSeparator="." currencyDecimalSeparator="," plusSign="+" minusSign="-" notANumberSymbol="NaN" perMillSymbol="‰" percentSymbol="%" exponentSymbol="E" positivePrefix="" positiveSuffix=" bit" negativePrefix="-" negativeSuffix=" bit" id="681"/>
|
<numberFormatter key="formatter" formatterBehavior="custom10_4" positiveFormat="# bit" negativeFormat="# bit" usesGroupingSeparator="NO" paddingCharacter="*" groupingSize="0" minimumIntegerDigits="0" maximumIntegerDigits="309" decimalSeparator="," groupingSeparator="." currencyDecimalSeparator="," plusSign="+" minusSign="-" notANumberSymbol="NaN" perMillSymbol="‰" percentSymbol="%" exponentSymbol="E" positivePrefix="" positiveSuffix=" bit" negativePrefix="-" negativeSuffix=" bit" id="681"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
@@ -216,7 +230,7 @@
|
|||||||
</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="18" width="82" height="25"/>
|
<rect key="frame" x="20" y="19" width="82" height="23"/>
|
||||||
<buttonCell key="cell" type="roundTextured" title="Set Default" bezelStyle="texturedRounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Wvs-Md-Ob8">
|
<buttonCell key="cell" type="roundTextured" title="Set Default" bezelStyle="texturedRounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Wvs-Md-Ob8">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
@@ -226,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="232" height="18"/>
|
<rect key="frame" x="18" y="48" width="231" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Use default only for selected entry" bezelStyle="regularSquare" imagePosition="left" inset="2" id="cfZ-5F-Nge">
|
<buttonCell key="cell" type="check" title="Use default only for selected entry" bezelStyle="regularSquare" imagePosition="left" inset="2" id="cfZ-5F-Nge">
|
||||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
@@ -270,14 +284,16 @@
|
|||||||
<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 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" 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="8" symbolic="YES" id="SoR-gh-uhq"/>
|
||||||
<constraint firstAttribute="bottom" secondItem="yil-UB-jtO" secondAttribute="bottom" constant="20" id="eYK-Hw-fyy"/>
|
<constraint firstAttribute="bottom" secondItem="yil-UB-jtO" secondAttribute="bottom" constant="20" id="eYK-Hw-fyy"/>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="500" secondAttribute="trailing" constant="20" symbolic="YES" id="iUl-yt-JbV"/>
|
||||||
<constraint 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"/>
|
||||||
<constraint firstItem="178" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="pAc-di-F68"/>
|
<constraint firstItem="178" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="pAc-di-F68"/>
|
||||||
<constraint firstItem="500" firstAttribute="leading" secondItem="4yb-SC-vau" secondAttribute="leading" id="xv1-5v-Ljh"/>
|
<constraint firstItem="500" firstAttribute="leading" secondItem="4yb-SC-vau" secondAttribute="leading" id="xv1-5v-Ljh"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<point key="canvasLocation" x="-135" y="58"/>
|
<point key="canvasLocation" x="-237" y="-362"/>
|
||||||
</customView>
|
</customView>
|
||||||
</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="13196" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13196"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14460.31"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
@@ -20,17 +20,17 @@
|
|||||||
</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="Change Password" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="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="196" y="240" width="403" height="219"/>
|
||||||
<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" misplaced="YES" 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="403" height="219"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<pathControl verticalHuggingPriority="750" allowsExpansionToolTips="YES" translatesAutoresizingMaskIntoConstraints="NO" id="4">
|
<pathControl verticalHuggingPriority="750" allowsExpansionToolTips="YES" translatesAutoresizingMaskIntoConstraints="NO" id="4" customClass="MPPathControl">
|
||||||
<rect key="frame" x="105" y="87" width="242" height="26"/>
|
<rect key="frame" x="105" y="87" width="242" height="25"/>
|
||||||
<pathCell key="cell" selectable="YES" editable="YES" alignment="left" pathStyle="popUp" id="23">
|
<pathCell key="cell" selectable="YES" editable="YES" alignment="left" pathStyle="popUp" id="23">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
</pathCell>
|
</pathCell>
|
||||||
@@ -44,7 +44,7 @@
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="6">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="6">
|
||||||
<rect key="frame" x="108" y="59" width="236" height="25"/>
|
<rect key="frame" x="108" y="60" width="236" height="23"/>
|
||||||
<buttonCell key="cell" type="roundTextured" title="Generate Keyfile" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="21">
|
<buttonCell key="cell" type="roundTextured" title="Generate Keyfile" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="21">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
@@ -54,7 +54,7 @@
|
|||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="7">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="7">
|
||||||
<rect key="frame" x="352" y="153" width="31" height="25"/>
|
<rect key="frame" x="352" y="153" width="31" height="23"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" constant="31" id="59"/>
|
<constraint firstAttribute="width" constant="31" id="59"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
@@ -64,7 +64,7 @@
|
|||||||
</buttonCell>
|
</buttonCell>
|
||||||
</button>
|
</button>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8">
|
||||||
<rect key="frame" x="352" y="88" width="31" height="25"/>
|
<rect key="frame" x="352" y="89" width="31" height="23"/>
|
||||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSStopProgressTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="19">
|
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSStopProgressTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="19">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
@@ -73,14 +73,14 @@
|
|||||||
<action selector="clearKey:" target="-2" id="65"/>
|
<action selector="clearKey:" target="-2" id="65"/>
|
||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<secureTextField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="9" customClass="HNHUIRoundedSecureTextField">
|
<secureTextField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="9" customClass="HNHUISecureTextField">
|
||||||
<rect key="frame" x="108" y="153" width="236" height="24"/>
|
<rect key="frame" x="108" y="152" width="236" height="24"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="200" id="Gin-yR-DMk"/>
|
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="200" id="Gin-yR-DMk"/>
|
||||||
</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="18">
|
<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"/>
|
<font key="font" size="13" name="Menlo-Regular"/>
|
||||||
<color key="textColor" name="textColor" 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"/>
|
||||||
<allowedInputSourceLocales>
|
<allowedInputSourceLocales>
|
||||||
<string>NSAllRomanInputSourcesLocaleIdentifier</string>
|
<string>NSAllRomanInputSourcesLocaleIdentifier</string>
|
||||||
@@ -88,18 +88,18 @@
|
|||||||
</secureTextFieldCell>
|
</secureTextFieldCell>
|
||||||
</secureTextField>
|
</secureTextField>
|
||||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="10">
|
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="10">
|
||||||
<rect key="frame" x="51" y="123" width="51" height="17"/>
|
<rect key="frame" x="51" y="122" width="51" height="17"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Repeat:" id="16">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Repeat:" id="16">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<secureTextField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="11" customClass="HNHUIRoundedSecureTextField">
|
<secureTextField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="11" customClass="HNHUISecureTextField">
|
||||||
<rect key="frame" x="108" y="119" width="236" height="24"/>
|
<rect key="frame" x="108" y="118" 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">
|
<secureTextFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="Repeat Password" drawsBackground="YES" usesSingleLineMode="YES" id="15">
|
||||||
<font key="font" size="13" name="Menlo-Regular"/>
|
<font key="font" size="13" name="Menlo-Regular"/>
|
||||||
<color key="textColor" name="textColor" 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"/>
|
||||||
<allowedInputSourceLocales>
|
<allowedInputSourceLocales>
|
||||||
<string>NSAllRomanInputSourcesLocaleIdentifier</string>
|
<string>NSAllRomanInputSourcesLocaleIdentifier</string>
|
||||||
@@ -107,7 +107,7 @@
|
|||||||
</secureTextFieldCell>
|
</secureTextFieldCell>
|
||||||
</secureTextField>
|
</secureTextField>
|
||||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="12">
|
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="12">
|
||||||
<rect key="frame" x="158" y="185" width="136" height="14"/>
|
<rect key="frame" x="158" y="184" width="136" height="14"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Missmatching Passwords" id="14">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Missmatching Passwords" id="14">
|
||||||
<font key="font" metaFont="smallSystem"/>
|
<font key="font" metaFont="smallSystem"/>
|
||||||
<color key="textColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
|
<color key="textColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
@@ -138,7 +138,7 @@ Gw
|
|||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<button horizontalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="yKc-I9-uzv">
|
<button horizontalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="yKc-I9-uzv">
|
||||||
<rect key="frame" x="18" y="156" width="84" height="18"/>
|
<rect key="frame" x="18" y="155" width="84" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Password:" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="OQz-DA-SoY">
|
<buttonCell key="cell" type="check" title="Password:" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="OQz-DA-SoY">
|
||||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
@@ -189,7 +189,7 @@ Gw
|
|||||||
<constraint firstItem="6" firstAttribute="leading" secondItem="9" secondAttribute="leading" id="zeJ-6i-fY3"/>
|
<constraint firstItem="6" firstAttribute="leading" secondItem="9" secondAttribute="leading" id="zeJ-6i-fY3"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
</view>
|
</view>
|
||||||
<point key="canvasLocation" x="-226" y="45"/>
|
<point key="canvasLocation" x="-312" y="-21"/>
|
||||||
</window>
|
</window>
|
||||||
</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="13196" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13196"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14460.31"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
@@ -10,9 +10,9 @@
|
|||||||
<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="errorImageView" destination="262" id="294"/>
|
|
||||||
<outlet property="errorInfoTextField" destination="268" id="67b-K9-DZd"/>
|
|
||||||
<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="messageInfoTextField" destination="268" id="ahE-sq-QzR"/>
|
||||||
<outlet property="passwordTextField" destination="338" id="495"/>
|
<outlet property="passwordTextField" destination="338" id="495"/>
|
||||||
<outlet property="togglePasswordButton" destination="408" id="493"/>
|
<outlet property="togglePasswordButton" destination="408" id="493"/>
|
||||||
<outlet property="unlockButton" destination="2" id="ZRr-Ui-ExP"/>
|
<outlet property="unlockButton" destination="2" id="ZRr-Ui-ExP"/>
|
||||||
@@ -22,10 +22,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="524" height="303"/>
|
<rect key="frame" x="0.0" y="0.0" width="508" height="392"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2">
|
||||||
<rect key="frame" x="318" y="64" width="83" height="32"/>
|
<rect key="frame" x="309" y="105" width="83" 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 +38,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="116" y="112" width="45" height="17"/>
|
<rect key="frame" x="108" y="157" width="45" height="17"/>
|
||||||
<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,16 +46,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="164" y="108" width="197" height="26"/>
|
<rect key="frame" x="156" y="153" 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">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
</pathCell>
|
</pathCell>
|
||||||
<connections>
|
|
||||||
<outlet property="delegate" destination="MfG-kk-cQe" id="9pp-rr-g4V"/>
|
|
||||||
</connections>
|
|
||||||
</pathControl>
|
</pathControl>
|
||||||
<imageView translatesAutoresizingMaskIntoConstraints="NO" id="262">
|
<imageView translatesAutoresizingMaskIntoConstraints="NO" id="262">
|
||||||
<rect key="frame" x="238" y="197" width="48" height="48"/>
|
<rect key="frame" x="230" y="241" 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"/>
|
||||||
@@ -63,21 +60,21 @@ 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="207" y="172" width="110" height="17"/>
|
<rect key="frame" x="199" y="216" width="110" height="17"/>
|
||||||
<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"/>
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<secureTextField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="338" customClass="HNHUIRoundedSecureTextField">
|
<secureTextField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="338" customClass="HNHUISecureTextField">
|
||||||
<rect key="frame" x="167" y="140" width="191" height="24"/>
|
<rect key="frame" x="159" y="184" width="191" height="24"/>
|
||||||
<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">
|
||||||
<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="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
<allowedInputSourceLocales>
|
<allowedInputSourceLocales>
|
||||||
<string>NSAllRomanInputSourcesLocaleIdentifier</string>
|
<string>NSAllRomanInputSourcesLocaleIdentifier</string>
|
||||||
@@ -88,14 +85,14 @@ DQ
|
|||||||
</connections>
|
</connections>
|
||||||
</secureTextField>
|
</secureTextField>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="408">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="408">
|
||||||
<rect key="frame" x="366" y="140" width="29" height="25"/>
|
<rect key="frame" x="357.5" y="185" width="29" height="23"/>
|
||||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSQuickLookTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="409">
|
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSQuickLookTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="409">
|
||||||
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
</buttonCell>
|
</buttonCell>
|
||||||
</button>
|
</button>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="486">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="486">
|
||||||
<rect key="frame" x="366" y="107" width="29" height="25"/>
|
<rect key="frame" x="357.5" y="152" width="29" height="23"/>
|
||||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSStopProgressTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="487">
|
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSStopProgressTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="487">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
@@ -105,14 +102,14 @@ DQ
|
|||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="d8O-Ha-rrS">
|
<button translatesAutoresizingMaskIntoConstraints="NO" id="d8O-Ha-rrS">
|
||||||
<rect key="frame" x="80" y="143" width="81" height="18"/>
|
<rect key="frame" x="72" y="187" width="81" 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="236" y="64" width="82" height="32"/>
|
<rect key="frame" x="227" y="105" width="82" 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"/>
|
||||||
@@ -140,7 +137,6 @@ Gw
|
|||||||
<constraint firstItem="241" firstAttribute="top" secondItem="338" secondAttribute="bottom" constant="8" symbolic="YES" id="476"/>
|
<constraint firstItem="241" firstAttribute="top" secondItem="338" secondAttribute="bottom" constant="8" symbolic="YES" id="476"/>
|
||||||
<constraint firstItem="17" firstAttribute="bottom" secondItem="241" secondAttribute="bottom" id="478"/>
|
<constraint firstItem="17" firstAttribute="bottom" secondItem="241" secondAttribute="bottom" id="478"/>
|
||||||
<constraint firstAttribute="centerX" secondItem="338" secondAttribute="centerX" id="479"/>
|
<constraint firstAttribute="centerX" secondItem="338" secondAttribute="centerX" id="479"/>
|
||||||
<constraint firstItem="2" firstAttribute="top" secondItem="241" secondAttribute="bottom" constant="20" symbolic="YES" id="485"/>
|
|
||||||
<constraint firstItem="486" firstAttribute="baseline" secondItem="17" secondAttribute="baseline" id="488"/>
|
<constraint firstItem="486" firstAttribute="baseline" secondItem="17" secondAttribute="baseline" id="488"/>
|
||||||
<constraint firstItem="486" firstAttribute="leading" secondItem="241" secondAttribute="trailing" constant="8" symbolic="YES" id="489"/>
|
<constraint firstItem="486" firstAttribute="leading" secondItem="241" secondAttribute="trailing" constant="8" symbolic="YES" id="489"/>
|
||||||
<constraint firstItem="486" firstAttribute="leading" secondItem="408" secondAttribute="leading" id="490"/>
|
<constraint firstItem="486" firstAttribute="leading" secondItem="408" secondAttribute="leading" id="490"/>
|
||||||
@@ -148,14 +144,16 @@ Gw
|
|||||||
<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="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="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="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="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="-240" y="25"/>
|
<point key="canvasLocation" x="-217" y="-96"/>
|
||||||
</customView>
|
</customView>
|
||||||
<customObject id="MfG-kk-cQe" customClass="MPKeyfilePathControlDelegate"/>
|
|
||||||
</objects>
|
</objects>
|
||||||
<resources>
|
<resources>
|
||||||
<image name="02_MessageBoxWarningTemplate" width="16" height="16"/>
|
<image name="02_MessageBoxWarningTemplate" width="16" height="16"/>
|
||||||
|
|||||||
179
MacPass/Base.lproj/PickcharsView.xib
Normal file
@@ -0,0 +1,179 @@
|
|||||||
|
<?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">
|
||||||
|
<dependencies>
|
||||||
|
<deployment identifier="macosx"/>
|
||||||
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14460.31"/>
|
||||||
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
|
</dependencies>
|
||||||
|
<objects>
|
||||||
|
<customObject id="-2" userLabel="File's Owner" customClass="MPPickcharsViewController">
|
||||||
|
<connections>
|
||||||
|
<outlet property="characterTableView" destination="KJq-FZ-rAE" id="H5Y-kG-Mvm"/>
|
||||||
|
<outlet property="messageTextField" destination="wAr-f2-ZUQ" id="kaZ-v7-6UW"/>
|
||||||
|
<outlet property="pickedStatusTextField" destination="e2q-qh-Zlv" id="paL-BH-g7a"/>
|
||||||
|
<outlet property="pickedValueTextField" destination="KQ1-tZ-qja" id="ETe-j3-jdp"/>
|
||||||
|
<outlet property="submitButton" destination="k8l-uy-C3l" id="nLN-Wz-dGW"/>
|
||||||
|
<outlet property="togglePasswordDisplayButton" destination="hKI-WP-N93" id="ZDt-Rp-Ix2"/>
|
||||||
|
<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="410" height="220"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="KQ1-tZ-qja" customClass="HNHUISecureTextField">
|
||||||
|
<rect key="frame" x="20" y="74" width="278" height="24"/>
|
||||||
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" enabled="NO" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="Wi0-xp-KgI">
|
||||||
|
<font key="font" size="13" name="Menlo-Regular"/>
|
||||||
|
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="hKI-WP-N93">
|
||||||
|
<rect key="frame" x="361.5" y="74" width="29" height="23"/>
|
||||||
|
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSQuickLookTemplate" imagePosition="only" alignment="center" lineBreakMode="truncatingTail" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="95g-dp-50Q">
|
||||||
|
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
</button>
|
||||||
|
<scrollView horizontalLineScroll="26" horizontalPageScroll="10" verticalLineScroll="26" verticalPageScroll="10" hasVerticalScroller="NO" usesPredominantAxisScrolling="NO" verticalScrollElasticity="none" translatesAutoresizingMaskIntoConstraints="NO" id="MVS-ug-wys">
|
||||||
|
<rect key="frame" x="20" y="106" width="370" height="64"/>
|
||||||
|
<clipView key="contentView" drawsBackground="NO" id="8aa-cB-mUF">
|
||||||
|
<rect key="frame" x="1" y="0.0" width="368" height="63"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" selectionHighlightStyle="none" columnReordering="NO" columnResizing="NO" multipleSelection="NO" emptySelection="NO" autosaveColumns="NO" typeSelect="NO" rowHeight="24" rowSizeStyle="systemDefault" headerView="GRO-H1-N4r" viewBased="YES" id="KJq-FZ-rAE">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="368" height="40"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
<size key="intercellSpacing" width="3" height="2"/>
|
||||||
|
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<tableColumns>
|
||||||
|
<tableColumn width="365" minWidth="40" maxWidth="1000" id="Q1b-ir-hyW">
|
||||||
|
<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="pUG-4c-rTt">
|
||||||
|
<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 identifier="Cell" id="Nz8-0B-uHk">
|
||||||
|
<rect key="frame" x="1" y="1" width="365" height="17"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="prY-vi-i8N">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="365" height="17"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||||
|
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="v3T-2f-yWm">
|
||||||
|
<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>
|
||||||
|
<connections>
|
||||||
|
<outlet property="textField" destination="prY-vi-i8N" id="uX4-gz-scd"/>
|
||||||
|
</connections>
|
||||||
|
</tableCellView>
|
||||||
|
</prototypeCellViews>
|
||||||
|
</tableColumn>
|
||||||
|
</tableColumns>
|
||||||
|
<connections>
|
||||||
|
<outlet property="dataSource" destination="-2" id="UrQ-DY-2jn"/>
|
||||||
|
<outlet property="delegate" destination="-2" id="JRz-9a-dkH"/>
|
||||||
|
</connections>
|
||||||
|
</tableView>
|
||||||
|
</subviews>
|
||||||
|
<nil key="backgroundColor"/>
|
||||||
|
</clipView>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="height" constant="64" id="AIX-Tc-QJA"/>
|
||||||
|
</constraints>
|
||||||
|
<scroller key="horizontalScroller" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="sA9-kc-O5g">
|
||||||
|
<rect key="frame" x="1" y="47" width="368" height="16"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
</scroller>
|
||||||
|
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="mSX-pm-wrh">
|
||||||
|
<rect key="frame" x="-100" y="-100" width="15" height="102"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
</scroller>
|
||||||
|
<tableHeaderView key="headerView" id="GRO-H1-N4r">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="368" height="23"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
</tableHeaderView>
|
||||||
|
</scrollView>
|
||||||
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="k8l-uy-C3l">
|
||||||
|
<rect key="frame" x="313" y="13" width="83" height="32"/>
|
||||||
|
<buttonCell key="cell" type="push" title="Submit" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="8vP-Ka-vsA">
|
||||||
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<action selector="submitValue:" target="-2" id="Hvu-95-9mF"/>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Y8X-Bm-qLt">
|
||||||
|
<rect key="frame" x="305.5" y="74" width="49" height="23"/>
|
||||||
|
<buttonCell key="cell" type="roundTextured" title="Reset" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Emo-pg-Mfe">
|
||||||
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<action selector="reset:" target="-2" id="jCN-qH-N8O"/>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="e2q-qh-Zlv">
|
||||||
|
<rect key="frame" x="167" y="49" width="76" height="17"/>
|
||||||
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="StatusLabel" id="M3h-q8-FLO">
|
||||||
|
<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" translatesAutoresizingMaskIntoConstraints="NO" id="wAr-f2-ZUQ">
|
||||||
|
<rect key="frame" x="18" y="178" width="374" height="22"/>
|
||||||
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="MessageLabel" id="sHz-kg-YJQ">
|
||||||
|
<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>
|
||||||
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="hKI-WP-N93" secondAttribute="trailing" constant="20" symbolic="YES" id="0IY-n6-nZi"/>
|
||||||
|
<constraint firstItem="hKI-WP-N93" firstAttribute="centerY" secondItem="KQ1-tZ-qja" secondAttribute="centerY" id="1CC-7F-3GU"/>
|
||||||
|
<constraint firstItem="KQ1-tZ-qja" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="1D9-Zk-KrZ"/>
|
||||||
|
<constraint firstItem="MVS-ug-wys" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="9cE-TT-pqS"/>
|
||||||
|
<constraint firstItem="hKI-WP-N93" firstAttribute="leading" secondItem="Y8X-Bm-qLt" secondAttribute="trailing" constant="8" id="AVv-zt-6sj"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="k8l-uy-C3l" secondAttribute="trailing" constant="20" symbolic="YES" id="Eaa-oF-Lt5"/>
|
||||||
|
<constraint firstItem="MVS-ug-wys" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="50" id="Klq-Q9-Rjp"/>
|
||||||
|
<constraint firstItem="wAr-f2-ZUQ" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="20" symbolic="YES" id="QQM-Db-MJM"/>
|
||||||
|
<constraint firstItem="Y8X-Bm-qLt" firstAttribute="leading" secondItem="KQ1-tZ-qja" secondAttribute="trailing" constant="8" id="Qxu-Wk-ckL"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="wAr-f2-ZUQ" secondAttribute="trailing" constant="20" symbolic="YES" id="Scg-AR-d0y"/>
|
||||||
|
<constraint firstItem="Y8X-Bm-qLt" firstAttribute="centerY" secondItem="KQ1-tZ-qja" secondAttribute="centerY" id="T81-yL-LEh"/>
|
||||||
|
<constraint firstItem="e2q-qh-Zlv" firstAttribute="top" secondItem="KQ1-tZ-qja" secondAttribute="bottom" constant="8" symbolic="YES" id="UWG-aW-fsW"/>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="k8l-uy-C3l" secondAttribute="bottom" constant="20" symbolic="YES" id="UXs-2n-gB5"/>
|
||||||
|
<constraint firstItem="e2q-qh-Zlv" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="WVC-0y-S19"/>
|
||||||
|
<constraint firstItem="MVS-ug-wys" firstAttribute="top" secondItem="wAr-f2-ZUQ" secondAttribute="bottom" constant="8" symbolic="YES" id="b0M-bk-j9E"/>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="e2q-qh-Zlv" secondAttribute="trailing" constant="20" symbolic="YES" id="fCf-pK-CXQ"/>
|
||||||
|
<constraint firstItem="k8l-uy-C3l" firstAttribute="top" secondItem="e2q-qh-Zlv" secondAttribute="bottom" constant="8" id="jwg-Z1-txO"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="MVS-ug-wys" secondAttribute="trailing" constant="20" symbolic="YES" id="mMv-HC-fEv"/>
|
||||||
|
<constraint firstItem="KQ1-tZ-qja" firstAttribute="top" secondItem="MVS-ug-wys" secondAttribute="bottom" constant="8" symbolic="YES" id="nKb-eh-ba4"/>
|
||||||
|
<constraint firstItem="e2q-qh-Zlv" firstAttribute="centerX" secondItem="Hz6-mo-xeY" secondAttribute="centerX" id="tE5-PK-tp0"/>
|
||||||
|
<constraint firstItem="wAr-f2-ZUQ" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="xV9-bY-eZn"/>
|
||||||
|
<constraint firstItem="k8l-uy-C3l" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="319" id="zZ5-GH-8no"/>
|
||||||
|
</constraints>
|
||||||
|
<point key="canvasLocation" x="-1009" y="-379"/>
|
||||||
|
</customView>
|
||||||
|
</objects>
|
||||||
|
<resources>
|
||||||
|
<image name="NSQuickLookTemplate" width="19" height="12"/>
|
||||||
|
</resources>
|
||||||
|
</document>
|
||||||
153
MacPass/Base.lproj/PickfieldView.xib
Normal file
@@ -0,0 +1,153 @@
|
|||||||
|
<?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">
|
||||||
|
<dependencies>
|
||||||
|
<deployment identifier="macosx"/>
|
||||||
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14313.18"/>
|
||||||
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
|
</dependencies>
|
||||||
|
<objects>
|
||||||
|
<customObject id="-2" userLabel="File's Owner" customClass="MPPickfieldViewController">
|
||||||
|
<connections>
|
||||||
|
<outlet property="tableView" destination="5xi-x0-G4W" id="Tm9-fm-aqh"/>
|
||||||
|
<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="474" height="378"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="BDL-W9-psF">
|
||||||
|
<rect key="frame" x="18" y="341" width="237" height="17"/>
|
||||||
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Please pick a field value to be inserted" id="aJS-22-6Va">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="n1E-iQ-yd7">
|
||||||
|
<rect key="frame" x="381" y="13" width="79" height="32"/>
|
||||||
|
<buttonCell key="cell" type="push" title="Select" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="6Wi-9i-Tcb">
|
||||||
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<action selector="pickField:" target="-2" id="fLO-qW-oC9"/>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
<scrollView autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nlF-dy-Ttg">
|
||||||
|
<rect key="frame" x="20" y="61" width="434" height="272"/>
|
||||||
|
<clipView key="contentView" id="am4-w0-FSd">
|
||||||
|
<rect key="frame" x="1" y="0.0" width="432" height="271"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnReordering="NO" multipleSelection="NO" autosaveColumns="NO" rowSizeStyle="automatic" headerView="jX4-Gp-btT" viewBased="YES" id="5xi-x0-G4W">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="436" height="248"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
<size key="intercellSpacing" width="3" height="2"/>
|
||||||
|
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<tableColumns>
|
||||||
|
<tableColumn width="118" minWidth="40" maxWidth="1000" id="0H9-DW-Jyj">
|
||||||
|
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" title="Field">
|
||||||
|
<font key="font" metaFont="smallSystem"/>
|
||||||
|
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</tableHeaderCell>
|
||||||
|
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="fil-tT-GXX">
|
||||||
|
<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 identifier="DataCell" id="s1C-7e-04S">
|
||||||
|
<rect key="frame" x="1" y="1" width="118" height="17"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ADN-XZ-Lq7">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="118" height="17"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||||
|
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="e8U-mE-mZh">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</subviews>
|
||||||
|
<connections>
|
||||||
|
<outlet property="textField" destination="ADN-XZ-Lq7" id="7zs-7K-4Wg"/>
|
||||||
|
</connections>
|
||||||
|
</tableCellView>
|
||||||
|
<tableCellView identifier="HeaderCell" id="wpe-VG-m1j">
|
||||||
|
<rect key="frame" x="1" y="20" width="118" height="17"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6sH-Uk-P1B">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="118" height="17"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||||
|
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Header View Cell" id="kTy-VO-Xlg">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</subviews>
|
||||||
|
<connections>
|
||||||
|
<outlet property="textField" destination="6sH-Uk-P1B" id="4fT-uR-lzM"/>
|
||||||
|
</connections>
|
||||||
|
</tableCellView>
|
||||||
|
</prototypeCellViews>
|
||||||
|
</tableColumn>
|
||||||
|
<tableColumn width="312" minWidth="40" maxWidth="1000" id="rVo-ud-5fs">
|
||||||
|
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" title="Value">
|
||||||
|
<font key="font" metaFont="smallSystem"/>
|
||||||
|
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</tableHeaderCell>
|
||||||
|
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="z1F-Bi-PBg">
|
||||||
|
<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"/>
|
||||||
|
</tableColumn>
|
||||||
|
</tableColumns>
|
||||||
|
<connections>
|
||||||
|
<outlet property="dataSource" destination="-2" id="66g-fd-91p"/>
|
||||||
|
<outlet property="delegate" destination="-2" id="DaT-Xh-Etj"/>
|
||||||
|
</connections>
|
||||||
|
</tableView>
|
||||||
|
</subviews>
|
||||||
|
</clipView>
|
||||||
|
<scroller key="horizontalScroller" verticalHuggingPriority="750" horizontal="YES" id="RHy-ph-0lP">
|
||||||
|
<rect key="frame" x="1" y="255" width="432" height="16"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
</scroller>
|
||||||
|
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="NO" id="b5D-WW-IPI">
|
||||||
|
<rect key="frame" x="224" y="17" width="15" height="102"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
</scroller>
|
||||||
|
<tableHeaderView key="headerView" id="jX4-Gp-btT">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="436" height="23"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
</tableHeaderView>
|
||||||
|
</scrollView>
|
||||||
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstItem="BDL-W9-psF" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="11J-Yq-T60"/>
|
||||||
|
<constraint firstItem="n1E-iQ-yd7" firstAttribute="top" secondItem="nlF-dy-Ttg" secondAttribute="bottom" constant="20" symbolic="YES" id="7i7-Zj-Aco"/>
|
||||||
|
<constraint firstItem="nlF-dy-Ttg" firstAttribute="top" secondItem="BDL-W9-psF" secondAttribute="bottom" constant="8" symbolic="YES" id="JQU-HY-3hx"/>
|
||||||
|
<constraint firstItem="n1E-iQ-yd7" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="P1O-O7-bxC"/>
|
||||||
|
<constraint firstItem="nlF-dy-Ttg" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="RH7-aQ-wKU"/>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="n1E-iQ-yd7" secondAttribute="bottom" constant="20" symbolic="YES" id="SBF-2E-hzT"/>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="BDL-W9-psF" secondAttribute="trailing" constant="20" symbolic="YES" id="W73-3d-vkM"/>
|
||||||
|
<constraint firstItem="BDL-W9-psF" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="20" symbolic="YES" id="p0t-q5-CZ1"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="n1E-iQ-yd7" secondAttribute="trailing" constant="20" symbolic="YES" id="rJE-FS-dLo"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="nlF-dy-Ttg" secondAttribute="trailing" constant="20" symbolic="YES" id="yiP-Kc-fqd"/>
|
||||||
|
</constraints>
|
||||||
|
<point key="canvasLocation" x="104" y="-23"/>
|
||||||
|
</customView>
|
||||||
|
</objects>
|
||||||
|
</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="12120" systemVersion="16E195" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14313.18" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="12120"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14313.18"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
@@ -54,7 +54,7 @@
|
|||||||
<constraint firstAttribute="height" constant="22" id="QuX-qP-qVw"/>
|
<constraint firstAttribute="height" constant="22" id="QuX-qP-qVw"/>
|
||||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="50" id="iEU-n3-paT"/>
|
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="50" id="iEU-n3-paT"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="Value" drawsBackground="YES" id="mLw-O5-6D3" customClass="HNHUIRoundedTextFieldCell">
|
<textFieldCell key="cell" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="Value" drawsBackground="YES" id="mLw-O5-6D3" customClass="HNHUITextFieldCell">
|
||||||
<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"/>
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
218
MacPass/Base.lproj/PluginPreferences.xib
Normal file
@@ -0,0 +1,218 @@
|
|||||||
|
<?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">
|
||||||
|
<dependencies>
|
||||||
|
<deployment identifier="macosx"/>
|
||||||
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14460.31"/>
|
||||||
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
|
</dependencies>
|
||||||
|
<objects>
|
||||||
|
<customObject id="-2" userLabel="File's Owner" customClass="MPPluginPreferencesController">
|
||||||
|
<connections>
|
||||||
|
<outlet property="addRemovePluginsControl" destination="B9Q-hq-K4N" id="Oqj-Ko-8UR"/>
|
||||||
|
<outlet property="fallbackDescriptionTextField" destination="qPL-FR-ky7" id="xCb-ED-NIX"/>
|
||||||
|
<outlet property="fallbackSettingsView" destination="wIk-iw-Tcz" id="dHl-zW-0aI"/>
|
||||||
|
<outlet property="forceIncompatiblePluginsCheckButton" destination="XIl-03-JZP" id="Aj4-rc-Ao0"/>
|
||||||
|
<outlet property="loadInsecurePlugsinCheckButton" destination="CqP-oK-S8k" id="YET-o6-7Cc"/>
|
||||||
|
<outlet property="pluginTableView" destination="Ocu-C0-03d" id="jbH-qr-bVT"/>
|
||||||
|
<outlet property="settingsView" destination="tD5-Na-7XI" id="Pa0-Tt-20U"/>
|
||||||
|
<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="600" height="473"/>
|
||||||
|
<subviews>
|
||||||
|
<box borderType="line" title="Box" titlePosition="noTitle" translatesAutoresizingMaskIntoConstraints="NO" id="vBs-Ga-aq0">
|
||||||
|
<rect key="frame" x="175" y="46" width="408" height="321"/>
|
||||||
|
<view key="contentView" id="tD5-Na-7XI">
|
||||||
|
<rect key="frame" x="3" y="3" width="402" height="315"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<customView translatesAutoresizingMaskIntoConstraints="NO" id="wIk-iw-Tcz">
|
||||||
|
<rect key="frame" x="20" y="20" width="362" height="275"/>
|
||||||
|
<subviews>
|
||||||
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="qPL-FR-ky7">
|
||||||
|
<rect key="frame" x="18" y="238" width="326" height="17"/>
|
||||||
|
<textFieldCell key="cell" controlSize="mini" sendsActionOnEndEditing="YES" title="Plugin Settings Info" id="OOr-SW-jZb">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstItem="qPL-FR-ky7" firstAttribute="top" secondItem="wIk-iw-Tcz" secondAttribute="top" constant="20" symbolic="YES" id="BAH-sF-W03"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="qPL-FR-ky7" secondAttribute="trailing" constant="20" symbolic="YES" id="HKa-7h-OiN"/>
|
||||||
|
<constraint firstItem="qPL-FR-ky7" firstAttribute="leading" secondItem="wIk-iw-Tcz" secondAttribute="leading" constant="20" symbolic="YES" id="UTY-Lu-pvl"/>
|
||||||
|
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="qPL-FR-ky7" secondAttribute="bottom" constant="20" symbolic="YES" id="wpb-76-pxa"/>
|
||||||
|
</constraints>
|
||||||
|
</customView>
|
||||||
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstItem="wIk-iw-Tcz" firstAttribute="top" secondItem="tD5-Na-7XI" secondAttribute="top" constant="20" symbolic="YES" id="JEm-yQ-dbO"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="wIk-iw-Tcz" secondAttribute="trailing" constant="20" symbolic="YES" id="Zfc-6L-EPa"/>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="wIk-iw-Tcz" secondAttribute="bottom" constant="20" symbolic="YES" id="mGC-Qx-83s"/>
|
||||||
|
<constraint firstItem="wIk-iw-Tcz" firstAttribute="leading" secondItem="tD5-Na-7XI" secondAttribute="leading" constant="20" symbolic="YES" id="phc-Nv-2hD"/>
|
||||||
|
</constraints>
|
||||||
|
</view>
|
||||||
|
</box>
|
||||||
|
<button translatesAutoresizingMaskIntoConstraints="NO" id="CqP-oK-S8k">
|
||||||
|
<rect key="frame" x="18" y="437" width="159" height="18"/>
|
||||||
|
<buttonCell key="cell" type="check" title="Load unsecure Plugins" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="C4B-6z-ZqX">
|
||||||
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
</button>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="aoG-FD-ds8">
|
||||||
|
<rect key="frame" x="18" y="403" width="564" height="28"/>
|
||||||
|
<textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" id="2bX-8S-9XM">
|
||||||
|
<font key="font" metaFont="smallSystem"/>
|
||||||
|
<string key="title">If enabled, Plugins without proper signatures will be allowed to load. Keep in mind, that Plugins have full access to your data! Changes take affect on restart.</string>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
<scrollView autohidesScrollers="YES" horizontalLineScroll="37" horizontalPageScroll="10" verticalLineScroll="37" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fCk-fL-jU8">
|
||||||
|
<rect key="frame" x="20" y="50" width="150" height="315"/>
|
||||||
|
<clipView key="contentView" id="lTL-Q2-k45">
|
||||||
|
<rect key="frame" x="1" y="1" width="148" height="313"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<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">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="148" height="313"/>
|
||||||
|
<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="145" minWidth="40" maxWidth="1000" id="kNH-wp-Drp">
|
||||||
|
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
|
||||||
|
<font key="font" metaFont="smallSystem"/>
|
||||||
|
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</tableHeaderCell>
|
||||||
|
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="STt-PQ-Szr">
|
||||||
|
<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="vVt-P3-yLp" customClass="MPPluginTabelCellView">
|
||||||
|
<rect key="frame" x="1" y="1" width="145" height="35"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="q1P-PD-0LW">
|
||||||
|
<rect key="frame" x="0.0" y="18" width="127" height="17"/>
|
||||||
|
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Table View Cell" id="fug-79-n9g">
|
||||||
|
<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 horizontalHuggingPriority="251" verticalHuggingPriority="750" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="fQy-Sz-4VA">
|
||||||
|
<rect key="frame" x="0.0" y="2" width="145" height="14"/>
|
||||||
|
<textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" title="Label" id="yuK-qH-jxx">
|
||||||
|
<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>
|
||||||
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="fQy-Sz-4VA" secondAttribute="bottom" constant="2" id="Flm-uU-Rzj"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="fQy-Sz-4VA" secondAttribute="trailing" constant="2" id="Iy0-iV-Mbx"/>
|
||||||
|
<constraint firstItem="fQy-Sz-4VA" firstAttribute="top" secondItem="q1P-PD-0LW" secondAttribute="bottom" constant="2" id="RZb-58-Zwr"/>
|
||||||
|
<constraint firstItem="q1P-PD-0LW" firstAttribute="leading" secondItem="vVt-P3-yLp" secondAttribute="leading" constant="2" id="bTc-2c-BYB"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="q1P-PD-0LW" secondAttribute="trailing" constant="20" symbolic="YES" id="gSi-vN-xzX"/>
|
||||||
|
<constraint firstItem="q1P-PD-0LW" firstAttribute="top" secondItem="vVt-P3-yLp" secondAttribute="top" id="tTs-2E-33f"/>
|
||||||
|
<constraint firstItem="fQy-Sz-4VA" firstAttribute="leading" secondItem="vVt-P3-yLp" secondAttribute="leading" constant="2" id="zLP-Ci-nUM"/>
|
||||||
|
</constraints>
|
||||||
|
<connections>
|
||||||
|
<outlet property="addionalTextField" destination="fQy-Sz-4VA" id="nr7-5w-TEg"/>
|
||||||
|
<outlet property="textField" destination="q1P-PD-0LW" id="yB7-Uf-IIx"/>
|
||||||
|
</connections>
|
||||||
|
</tableCellView>
|
||||||
|
</prototypeCellViews>
|
||||||
|
</tableColumn>
|
||||||
|
</tableColumns>
|
||||||
|
</tableView>
|
||||||
|
</subviews>
|
||||||
|
</clipView>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="width" constant="150" id="ZpW-Bc-fSx"/>
|
||||||
|
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="150" id="eXb-yq-O8y"/>
|
||||||
|
</constraints>
|
||||||
|
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="UK5-gt-5o5">
|
||||||
|
<rect key="frame" x="1" y="328" width="148" height="16"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
</scroller>
|
||||||
|
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="oqL-7I-4H1">
|
||||||
|
<rect key="frame" x="224" y="17" width="15" height="102"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
</scroller>
|
||||||
|
</scrollView>
|
||||||
|
<segmentedControl verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="B9Q-hq-K4N">
|
||||||
|
<rect key="frame" x="20" y="19" width="71" height="23"/>
|
||||||
|
<segmentedCell key="cell" borderStyle="border" alignment="left" style="texturedSquare" trackingMode="momentary" id="cj3-R6-g1E">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<segments>
|
||||||
|
<segment image="NSAddTemplate" width="32"/>
|
||||||
|
<segment image="NSRemoveTemplate" width="32" tag="1"/>
|
||||||
|
</segments>
|
||||||
|
</segmentedCell>
|
||||||
|
<connections>
|
||||||
|
<action selector="addOrRemovePlugin:" target="-2" id="ywK-Vi-MR4"/>
|
||||||
|
</connections>
|
||||||
|
</segmentedControl>
|
||||||
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="SNe-cc-CZs">
|
||||||
|
<rect key="frame" x="406" y="19" width="174" height="23"/>
|
||||||
|
<buttonCell key="cell" type="roundTextured" title="Browse Available Plugins…" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="sqO-8H-n1y">
|
||||||
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<action selector="browsePlugins:" target="-2" id="16S-2u-Tmi"/>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="XIl-03-JZP">
|
||||||
|
<rect key="frame" x="18" y="371" width="250" height="18"/>
|
||||||
|
<buttonCell key="cell" type="check" title="Force loading of incompatible Plugins" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="yak-fS-jtA">
|
||||||
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
</button>
|
||||||
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstItem="CqP-oK-S8k" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="20" id="1Rj-zS-7t2"/>
|
||||||
|
<constraint firstItem="XIl-03-JZP" firstAttribute="top" secondItem="aoG-FD-ds8" secondAttribute="bottom" constant="16" id="2Wk-4D-AHu"/>
|
||||||
|
<constraint firstItem="vBs-Ga-aq0" firstAttribute="top" secondItem="fCk-fL-jU8" secondAttribute="top" id="2h6-C9-4N5"/>
|
||||||
|
<constraint firstItem="B9Q-hq-K4N" firstAttribute="top" secondItem="fCk-fL-jU8" secondAttribute="bottom" constant="8" symbolic="YES" id="3vA-Oh-cFO"/>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="B9Q-hq-K4N" secondAttribute="bottom" constant="20" symbolic="YES" id="7HD-ji-Whc"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="SNe-cc-CZs" secondAttribute="trailing" constant="20" symbolic="YES" id="8Je-yg-f1l"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="aoG-FD-ds8" secondAttribute="trailing" constant="20" symbolic="YES" id="95O-Jh-0KG"/>
|
||||||
|
<constraint firstItem="vBs-Ga-aq0" firstAttribute="bottom" secondItem="fCk-fL-jU8" secondAttribute="bottom" id="BQ2-Wp-Fsh"/>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="SNe-cc-CZs" secondAttribute="bottom" constant="20" symbolic="YES" id="Fqe-ch-vsS"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="vBs-Ga-aq0" secondAttribute="trailing" constant="20" id="LUb-Un-azV"/>
|
||||||
|
<constraint firstItem="aoG-FD-ds8" firstAttribute="leading" secondItem="CqP-oK-S8k" secondAttribute="leading" id="NcW-ya-DPx"/>
|
||||||
|
<constraint firstItem="B9Q-hq-K4N" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="Rtj-Ad-zkg"/>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="CqP-oK-S8k" secondAttribute="trailing" constant="20" symbolic="YES" id="TXL-mf-nxu"/>
|
||||||
|
<constraint firstItem="SNe-cc-CZs" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="B9Q-hq-K4N" secondAttribute="trailing" constant="8" symbolic="YES" id="a62-en-kDA"/>
|
||||||
|
<constraint firstItem="fCk-fL-jU8" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" id="fzW-4b-L8S"/>
|
||||||
|
<constraint firstItem="XIl-03-JZP" firstAttribute="leading" secondItem="CqP-oK-S8k" secondAttribute="leading" id="oqX-wa-jm0"/>
|
||||||
|
<constraint firstItem="SNe-cc-CZs" firstAttribute="top" secondItem="vBs-Ga-aq0" secondAttribute="bottom" constant="8" symbolic="YES" id="r4X-iM-iYU"/>
|
||||||
|
<constraint firstItem="CqP-oK-S8k" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" id="rN1-3Z-BBi"/>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="XIl-03-JZP" secondAttribute="trailing" constant="20" symbolic="YES" id="rkN-ew-RtP"/>
|
||||||
|
<constraint firstItem="fCk-fL-jU8" firstAttribute="top" secondItem="XIl-03-JZP" secondAttribute="bottom" constant="8" symbolic="YES" id="vl9-MY-WW1"/>
|
||||||
|
<constraint firstItem="vBs-Ga-aq0" firstAttribute="leading" secondItem="fCk-fL-jU8" secondAttribute="trailing" constant="8" id="xNu-Sj-xQO"/>
|
||||||
|
<constraint firstItem="aoG-FD-ds8" firstAttribute="top" secondItem="CqP-oK-S8k" secondAttribute="bottom" constant="8" symbolic="YES" id="zSW-h3-BrT"/>
|
||||||
|
</constraints>
|
||||||
|
<point key="canvasLocation" x="110" y="-97"/>
|
||||||
|
</customView>
|
||||||
|
</objects>
|
||||||
|
<resources>
|
||||||
|
<image name="NSAddTemplate" width="11" height="11"/>
|
||||||
|
<image name="NSRemoveTemplate" width="11" height="11"/>
|
||||||
|
</resources>
|
||||||
|
</document>
|
||||||
@@ -1,128 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="13196" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
|
||||||
<dependencies>
|
|
||||||
<deployment identifier="macosx"/>
|
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13196"/>
|
|
||||||
<capability name="box content view" minToolsVersion="7.0"/>
|
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
|
||||||
</dependencies>
|
|
||||||
<objects>
|
|
||||||
<customObject id="-2" userLabel="File's Owner" customClass="MPPluginSettingsController">
|
|
||||||
<connections>
|
|
||||||
<outlet property="loadInsecurePlugsinCheckButton" destination="CqP-oK-S8k" id="YET-o6-7Cc"/>
|
|
||||||
<outlet property="pluginTableView" destination="Ocu-C0-03d" id="jbH-qr-bVT"/>
|
|
||||||
<outlet property="settingsView" destination="tD5-Na-7XI" id="Pa0-Tt-20U"/>
|
|
||||||
<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="520" height="434"/>
|
|
||||||
<subviews>
|
|
||||||
<box borderType="line" title="Box" titlePosition="noTitle" translatesAutoresizingMaskIntoConstraints="NO" id="vBs-Ga-aq0">
|
|
||||||
<rect key="frame" x="175" y="16" width="328" height="342"/>
|
|
||||||
<view key="contentView" id="tD5-Na-7XI">
|
|
||||||
<rect key="frame" x="1" y="1" width="326" height="340"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
||||||
</view>
|
|
||||||
</box>
|
|
||||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="CqP-oK-S8k">
|
|
||||||
<rect key="frame" x="18" y="398" width="159" height="18"/>
|
|
||||||
<buttonCell key="cell" type="check" title="Load unsecure Plugins" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="C4B-6z-ZqX">
|
|
||||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
</buttonCell>
|
|
||||||
</button>
|
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="aoG-FD-ds8">
|
|
||||||
<rect key="frame" x="18" y="364" width="484" height="28"/>
|
|
||||||
<textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" id="2bX-8S-9XM">
|
|
||||||
<font key="font" metaFont="smallSystem"/>
|
|
||||||
<string key="title">If enabled, only properly signed Plugins will be loaded. Keep in mind, that Plugins have full access to your data! Changes take affect on restart.</string>
|
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</textFieldCell>
|
|
||||||
</textField>
|
|
||||||
<scrollView autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fCk-fL-jU8">
|
|
||||||
<rect key="frame" x="20" y="20" width="150" height="336"/>
|
|
||||||
<clipView key="contentView" id="lTL-Q2-k45">
|
|
||||||
<rect key="frame" x="1" y="1" width="148" height="334"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
||||||
<subviews>
|
|
||||||
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnReordering="NO" columnSelection="YES" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" rowSizeStyle="automatic" viewBased="YES" id="Ocu-C0-03d">
|
|
||||||
<rect key="frame" x="0.0" y="0.0" width="148" height="334"/>
|
|
||||||
<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="145" minWidth="40" maxWidth="1000" id="kNH-wp-Drp">
|
|
||||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
|
|
||||||
<font key="font" metaFont="smallSystem"/>
|
|
||||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</tableHeaderCell>
|
|
||||||
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="STt-PQ-Szr">
|
|
||||||
<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="vVt-P3-yLp">
|
|
||||||
<rect key="frame" x="1" y="1" width="145" height="17"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
||||||
<subviews>
|
|
||||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="q1P-PD-0LW">
|
|
||||||
<rect key="frame" x="0.0" y="0.0" width="100" height="17"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
|
||||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="fug-79-n9g">
|
|
||||||
<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>
|
|
||||||
<connections>
|
|
||||||
<outlet property="textField" destination="q1P-PD-0LW" id="yB7-Uf-IIx"/>
|
|
||||||
</connections>
|
|
||||||
</tableCellView>
|
|
||||||
</prototypeCellViews>
|
|
||||||
</tableColumn>
|
|
||||||
</tableColumns>
|
|
||||||
</tableView>
|
|
||||||
</subviews>
|
|
||||||
</clipView>
|
|
||||||
<constraints>
|
|
||||||
<constraint firstAttribute="width" constant="150" id="ZpW-Bc-fSx"/>
|
|
||||||
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="150" id="eXb-yq-O8y"/>
|
|
||||||
</constraints>
|
|
||||||
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="UK5-gt-5o5">
|
|
||||||
<rect key="frame" x="1" y="133" width="148" height="16"/>
|
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
|
||||||
</scroller>
|
|
||||||
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="NO" id="oqL-7I-4H1">
|
|
||||||
<rect key="frame" x="224" y="17" width="15" height="102"/>
|
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
|
||||||
</scroller>
|
|
||||||
</scrollView>
|
|
||||||
</subviews>
|
|
||||||
<constraints>
|
|
||||||
<constraint firstItem="CqP-oK-S8k" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="20" id="1Rj-zS-7t2"/>
|
|
||||||
<constraint firstItem="vBs-Ga-aq0" firstAttribute="top" secondItem="fCk-fL-jU8" secondAttribute="top" id="2h6-C9-4N5"/>
|
|
||||||
<constraint firstAttribute="trailing" secondItem="aoG-FD-ds8" secondAttribute="trailing" constant="20" symbolic="YES" id="95O-Jh-0KG"/>
|
|
||||||
<constraint firstAttribute="trailing" secondItem="vBs-Ga-aq0" secondAttribute="trailing" constant="20" id="LUb-Un-azV"/>
|
|
||||||
<constraint firstItem="aoG-FD-ds8" firstAttribute="leading" secondItem="CqP-oK-S8k" secondAttribute="leading" id="NcW-ya-DPx"/>
|
|
||||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="CqP-oK-S8k" secondAttribute="trailing" constant="20" symbolic="YES" id="TXL-mf-nxu"/>
|
|
||||||
<constraint firstAttribute="bottom" secondItem="fCk-fL-jU8" secondAttribute="bottom" constant="20" id="aeb-kZ-RSU"/>
|
|
||||||
<constraint firstAttribute="bottom" secondItem="vBs-Ga-aq0" secondAttribute="bottom" constant="20" id="czn-HC-o7k"/>
|
|
||||||
<constraint firstItem="fCk-fL-jU8" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" id="fzW-4b-L8S"/>
|
|
||||||
<constraint firstItem="CqP-oK-S8k" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" id="rN1-3Z-BBi"/>
|
|
||||||
<constraint firstItem="fCk-fL-jU8" firstAttribute="top" secondItem="aoG-FD-ds8" secondAttribute="bottom" constant="8" id="vl9-MY-WW1"/>
|
|
||||||
<constraint firstItem="vBs-Ga-aq0" firstAttribute="leading" secondItem="fCk-fL-jU8" secondAttribute="trailing" constant="8" id="xNu-Sj-xQO"/>
|
|
||||||
<constraint firstItem="aoG-FD-ds8" firstAttribute="top" secondItem="CqP-oK-S8k" secondAttribute="bottom" constant="8" symbolic="YES" id="zSW-h3-BrT"/>
|
|
||||||
</constraints>
|
|
||||||
<point key="canvasLocation" x="108" y="118"/>
|
|
||||||
</customView>
|
|
||||||
</objects>
|
|
||||||
</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="13196" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14313.18" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13196"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14313.18"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
<rect key="frame" x="13" y="152" width="82" height="25"/>
|
<rect key="frame" x="13" y="152" width="82" 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="system"/>
|
<font key="font" metaFont="menu"/>
|
||||||
<menu key="menu" id="Vxk-eO-bbf">
|
<menu key="menu" id="Vxk-eO-bbf">
|
||||||
<items>
|
<items>
|
||||||
<menuItem title="Get" id="142-bE-IMZ"/>
|
<menuItem title="Get" id="142-bE-IMZ"/>
|
||||||
@@ -36,14 +36,14 @@
|
|||||||
<action selector="updateReference:" target="-2" id="GzJ-Sy-IP4"/>
|
<action selector="updateReference:" target="-2" id="GzJ-Sy-IP4"/>
|
||||||
</connections>
|
</connections>
|
||||||
</popUpButton>
|
</popUpButton>
|
||||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="IFf-vC-3vk" customClass="HNHUIRoundedTextField">
|
<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="102" width="172" height="22"/>
|
||||||
<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>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="Value" drawsBackground="YES" id="fNP-ye-2bD">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="Value" drawsBackground="YES" id="fNP-ye-2bD">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
<color key="textColor" name="textColor" 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>
|
||||||
@@ -74,7 +74,7 @@
|
|||||||
<rect key="frame" x="103" y="152" width="82" height="25"/>
|
<rect key="frame" x="103" y="152" width="82" 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="system"/>
|
<font key="font" metaFont="menu"/>
|
||||||
<menu key="menu" id="j2A-qj-k7L">
|
<menu key="menu" id="j2A-qj-k7L">
|
||||||
<items>
|
<items>
|
||||||
<menuItem title="Matching" state="on" id="yT1-XL-k6a">
|
<menuItem title="Matching" state="on" id="yT1-XL-k6a">
|
||||||
@@ -103,7 +103,7 @@
|
|||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="b36-T7-1tO" customClass="HNHUIRoundedTextField">
|
<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="50" width="172" height="22"/>
|
||||||
<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"/>
|
||||||
|
|||||||
197
MacPass/Base.lproj/WelcomeView.xib
Normal file
@@ -0,0 +1,197 @@
|
|||||||
|
<?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">
|
||||||
|
<dependencies>
|
||||||
|
<deployment identifier="macosx"/>
|
||||||
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14460.31"/>
|
||||||
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
|
</dependencies>
|
||||||
|
<objects>
|
||||||
|
<customObject id="-2" userLabel="File's Owner" customClass="MPWelcomeViewController">
|
||||||
|
<connections>
|
||||||
|
<outlet property="tableView" destination="51b-Ql-3gM" id="g2f-YT-q5R"/>
|
||||||
|
<outlet property="view" destination="9Nv-Zl-Z9p" id="ySe-F6-puU"/>
|
||||||
|
</connections>
|
||||||
|
</customObject>
|
||||||
|
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||||
|
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||||
|
<view id="9Nv-Zl-Z9p">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="571" height="320"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<stackView orientation="horizontal" alignment="centerY" spacing="2" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" translatesAutoresizingMaskIntoConstraints="NO" id="ITj-5P-sn9">
|
||||||
|
<rect key="frame" x="20" y="0.0" width="551" height="320"/>
|
||||||
|
<middleViews>
|
||||||
|
<stackView orientation="vertical" alignment="centerX" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="jd3-xw-cZP">
|
||||||
|
<rect key="frame" x="165" y="0.0" width="222" height="320"/>
|
||||||
|
<middleViews>
|
||||||
|
<imageView misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="VWi-da-LGh">
|
||||||
|
<rect key="frame" x="47" y="115" width="128" height="128"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="height" constant="128" id="T0d-gp-edr"/>
|
||||||
|
<constraint firstAttribute="width" constant="128" id="Xdf-jE-D9H"/>
|
||||||
|
</constraints>
|
||||||
|
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="MacPassAppIcon" id="9f2-Co-St2"/>
|
||||||
|
</imageView>
|
||||||
|
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="EEg-rH-sPx">
|
||||||
|
<rect key="frame" x="-2" y="78" width="226" height="29"/>
|
||||||
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Welcome to MacPass" id="zdv-z8-khG">
|
||||||
|
<font key="font" metaFont="system" size="24"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</middleViews>
|
||||||
|
<endViews>
|
||||||
|
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="MmF-PL-dgZ">
|
||||||
|
<rect key="frame" x="39" y="22" width="144" height="32"/>
|
||||||
|
<buttonCell key="cell" type="push" title="Open Database…" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Jj3-zy-gaz">
|
||||||
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<action selector="openDatabase:" target="-1" id="iC6-yP-ZKT"/>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="IRO-Hz-Zjp">
|
||||||
|
<rect key="frame" x="26" y="-7" width="170" height="32"/>
|
||||||
|
<buttonCell key="cell" type="push" title="Create new Database" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Vxx-Ql-eI5">
|
||||||
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<action selector="createNewDatabase:" target="-1" id="hbV-Rz-x5g"/>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
</endViews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="300" id="f86-vL-FmV"/>
|
||||||
|
</constraints>
|
||||||
|
<visibilityPriorities>
|
||||||
|
<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"/>
|
||||||
|
</customSpacing>
|
||||||
|
</stackView>
|
||||||
|
</middleViews>
|
||||||
|
<endViews>
|
||||||
|
<scrollView misplaced="YES" autohidesScrollers="YES" horizontalLineScroll="40" horizontalPageScroll="10" verticalLineScroll="40" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eUA-6g-T1O">
|
||||||
|
<rect key="frame" x="389" y="0.0" width="162" height="320"/>
|
||||||
|
<clipView key="contentView" id="0Kf-Fq-by2">
|
||||||
|
<rect key="frame" x="1" y="1" width="160" height="318"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnReordering="NO" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" rowHeight="38" rowSizeStyle="automatic" viewBased="YES" id="51b-Ql-3gM">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="160" height="318"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
<size key="intercellSpacing" width="3" height="2"/>
|
||||||
|
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<tableColumns>
|
||||||
|
<tableColumn width="157" minWidth="40" maxWidth="1000" id="oLj-wZ-syY">
|
||||||
|
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
|
||||||
|
<font key="font" metaFont="smallSystem"/>
|
||||||
|
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</tableHeaderCell>
|
||||||
|
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="Fbl-HT-XIu">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||||
|
<prototypeCellViews>
|
||||||
|
<tableCellView id="6UF-Gr-4nf">
|
||||||
|
<rect key="frame" x="1" y="1" width="157" height="38"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Kko-1G-JNn">
|
||||||
|
<rect key="frame" x="2" y="3" width="32" height="32"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="width" secondItem="Kko-1G-JNn" secondAttribute="height" multiplier="1:1" id="DCx-UU-29t"/>
|
||||||
|
<constraint firstAttribute="height" constant="32" id="tUG-uX-FuQ"/>
|
||||||
|
</constraints>
|
||||||
|
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="NSActionTemplate" id="9TF-9t-7gd"/>
|
||||||
|
</imageView>
|
||||||
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsExpansionToolTips="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Kso-jb-pRH">
|
||||||
|
<rect key="frame" x="39" y="11" width="118" height="17"/>
|
||||||
|
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="vzM-ly-CYn">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstItem="Kso-jb-pRH" firstAttribute="centerY" secondItem="6UF-Gr-4nf" secondAttribute="centerY" id="EFe-Eu-cwW"/>
|
||||||
|
<constraint firstItem="Kso-jb-pRH" firstAttribute="leading" secondItem="Kko-1G-JNn" secondAttribute="trailing" constant="7" id="Jlp-gO-6rv"/>
|
||||||
|
<constraint firstItem="Kko-1G-JNn" firstAttribute="leading" secondItem="6UF-Gr-4nf" secondAttribute="leading" constant="2" id="RV0-o5-iyA"/>
|
||||||
|
<constraint firstItem="Kko-1G-JNn" firstAttribute="centerY" secondItem="6UF-Gr-4nf" secondAttribute="centerY" id="oFg-c1-o9M"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="Kso-jb-pRH" secondAttribute="trailing" constant="2" id="ptI-vC-fK9"/>
|
||||||
|
</constraints>
|
||||||
|
<connections>
|
||||||
|
<outlet property="imageView" destination="Kko-1G-JNn" id="AvW-EL-9Rw"/>
|
||||||
|
<outlet property="textField" destination="Kso-jb-pRH" id="yWg-4p-sFp"/>
|
||||||
|
</connections>
|
||||||
|
</tableCellView>
|
||||||
|
</prototypeCellViews>
|
||||||
|
</tableColumn>
|
||||||
|
</tableColumns>
|
||||||
|
<connections>
|
||||||
|
<action trigger="doubleAction" selector="openRecentURL:" target="-2" id="kTu-60-aYp"/>
|
||||||
|
<outlet property="dataSource" destination="-2" id="pLD-5Q-GVH"/>
|
||||||
|
<outlet property="delegate" destination="-2" id="hO0-G9-RVy"/>
|
||||||
|
</connections>
|
||||||
|
</tableView>
|
||||||
|
</subviews>
|
||||||
|
</clipView>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="width" constant="200" id="R0Z-La-Y3C"/>
|
||||||
|
</constraints>
|
||||||
|
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="bRy-ef-e76">
|
||||||
|
<rect key="frame" x="1" y="303" width="135" height="16"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
</scroller>
|
||||||
|
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="2e9-uR-dY7">
|
||||||
|
<rect key="frame" x="224" y="17" width="15" height="102"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
</scroller>
|
||||||
|
</scrollView>
|
||||||
|
</endViews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="jd3-xw-cZP" secondAttribute="bottom" constant="20" id="581-be-EbR"/>
|
||||||
|
<constraint firstItem="jd3-xw-cZP" firstAttribute="top" secondItem="ITj-5P-sn9" secondAttribute="top" constant="20" id="9he-mz-Ciw"/>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="eUA-6g-T1O" secondAttribute="bottom" constant="-1" id="Ejt-qZ-puH"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="eUA-6g-T1O" secondAttribute="trailing" constant="-1" id="PEw-In-uMJ"/>
|
||||||
|
<constraint firstItem="eUA-6g-T1O" firstAttribute="top" secondItem="ITj-5P-sn9" secondAttribute="top" constant="-1" id="piI-8Q-zsE"/>
|
||||||
|
</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="trailing" secondItem="ITj-5P-sn9" secondAttribute="trailing" id="7Bo-Jl-7Zu"/>
|
||||||
|
<constraint firstItem="ITj-5P-sn9" firstAttribute="top" secondItem="9Nv-Zl-Z9p" secondAttribute="top" id="lrE-f8-tD5"/>
|
||||||
|
<constraint firstItem="ITj-5P-sn9" firstAttribute="leading" secondItem="9Nv-Zl-Z9p" secondAttribute="leading" constant="20" id="oWL-PJ-VCT"/>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="ITj-5P-sn9" secondAttribute="bottom" id="syW-TO-uwv"/>
|
||||||
|
</constraints>
|
||||||
|
<point key="canvasLocation" x="-378" y="-552"/>
|
||||||
|
</view>
|
||||||
|
</objects>
|
||||||
|
<resources>
|
||||||
|
<image name="MacPassAppIcon" width="128" height="128"/>
|
||||||
|
<image name="NSActionTemplate" width="14" height="14"/>
|
||||||
|
</resources>
|
||||||
|
</document>
|
||||||
@@ -1,92 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="13196" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
|
||||||
<dependencies>
|
|
||||||
<deployment identifier="macosx"/>
|
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13196"/>
|
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
|
||||||
</dependencies>
|
|
||||||
<objects>
|
|
||||||
<customObject id="-2" userLabel="File's Owner" customClass="MPAppDelegate">
|
|
||||||
<connections>
|
|
||||||
<outlet property="welcomeWindow" destination="1" id="94"/>
|
|
||||||
</connections>
|
|
||||||
</customObject>
|
|
||||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
|
||||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
|
||||||
<window title="Welcome" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="1">
|
|
||||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
|
|
||||||
<rect key="contentRect" x="196" y="240" width="448" height="255"/>
|
|
||||||
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
|
|
||||||
<view key="contentView" id="2">
|
|
||||||
<rect key="frame" x="0.0" y="0.0" width="448" height="255"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
||||||
<subviews>
|
|
||||||
<imageView translatesAutoresizingMaskIntoConstraints="NO" id="3">
|
|
||||||
<rect key="frame" x="160" y="107" width="128" height="128"/>
|
|
||||||
<constraints>
|
|
||||||
<constraint firstAttribute="width" constant="128" id="18"/>
|
|
||||||
<constraint firstAttribute="height" constant="128" id="19"/>
|
|
||||||
</constraints>
|
|
||||||
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="MacPassAppIcon" id="4"/>
|
|
||||||
</imageView>
|
|
||||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="23">
|
|
||||||
<rect key="frame" x="108" y="70" width="233" height="29"/>
|
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Welcome to MacPass" id="24">
|
|
||||||
<font key="font" metaFont="system" size="24"/>
|
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</textFieldCell>
|
|
||||||
</textField>
|
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="43">
|
|
||||||
<rect key="frame" x="172" y="18" width="118" height="25"/>
|
|
||||||
<buttonCell key="cell" type="roundTextured" title="Open Database…" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="44">
|
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
</buttonCell>
|
|
||||||
<connections>
|
|
||||||
<action selector="openDatabase:" target="-2" id="101"/>
|
|
||||||
</connections>
|
|
||||||
</button>
|
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="47">
|
|
||||||
<rect key="frame" x="20" y="18" width="144" height="25"/>
|
|
||||||
<buttonCell key="cell" type="roundTextured" title="Create new Database" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="48">
|
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
</buttonCell>
|
|
||||||
<connections>
|
|
||||||
<action selector="createNewDatabase:" target="-2" id="102"/>
|
|
||||||
</connections>
|
|
||||||
</button>
|
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="69">
|
|
||||||
<rect key="frame" x="372" y="18" width="56" height="25"/>
|
|
||||||
<buttonCell key="cell" type="roundTextured" title="Cancel" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="70">
|
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
</buttonCell>
|
|
||||||
<connections>
|
|
||||||
<action selector="orderOut:" target="1" id="93"/>
|
|
||||||
</connections>
|
|
||||||
</button>
|
|
||||||
</subviews>
|
|
||||||
<constraints>
|
|
||||||
<constraint firstAttribute="bottom" secondItem="43" secondAttribute="bottom" constant="20" symbolic="YES" id="63"/>
|
|
||||||
<constraint firstAttribute="bottom" secondItem="47" secondAttribute="bottom" constant="20" symbolic="YES" id="65"/>
|
|
||||||
<constraint firstItem="47" firstAttribute="leading" secondItem="2" secondAttribute="leading" constant="20" symbolic="YES" id="66"/>
|
|
||||||
<constraint firstItem="43" firstAttribute="leading" secondItem="47" secondAttribute="trailing" constant="8" symbolic="YES" id="68"/>
|
|
||||||
<constraint firstAttribute="bottom" secondItem="69" secondAttribute="bottom" constant="20" symbolic="YES" id="73"/>
|
|
||||||
<constraint firstAttribute="trailing" secondItem="69" secondAttribute="trailing" constant="20" symbolic="YES" id="74"/>
|
|
||||||
<constraint firstItem="3" firstAttribute="centerX" secondItem="23" secondAttribute="centerX" id="85"/>
|
|
||||||
<constraint firstItem="3" firstAttribute="top" secondItem="2" secondAttribute="top" constant="20" symbolic="YES" id="87"/>
|
|
||||||
<constraint firstItem="23" firstAttribute="top" secondItem="3" secondAttribute="bottom" constant="8" symbolic="YES" id="89"/>
|
|
||||||
<constraint firstItem="69" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="43" secondAttribute="trailing" constant="8" symbolic="YES" id="96"/>
|
|
||||||
<constraint firstItem="43" firstAttribute="top" relation="greaterThanOrEqual" secondItem="23" secondAttribute="bottom" constant="8" symbolic="YES" id="98"/>
|
|
||||||
<constraint firstItem="3" firstAttribute="centerX" secondItem="2" secondAttribute="centerX" id="100"/>
|
|
||||||
</constraints>
|
|
||||||
</view>
|
|
||||||
<point key="canvasLocation" x="133" y="85"/>
|
|
||||||
</window>
|
|
||||||
</objects>
|
|
||||||
<resources>
|
|
||||||
<image name="MacPassAppIcon" width="128" height="128"/>
|
|
||||||
</resources>
|
|
||||||
</document>
|
|
||||||
@@ -25,14 +25,14 @@
|
|||||||
@interface DDHotKey (MPKeydata)
|
@interface DDHotKey (MPKeydata)
|
||||||
|
|
||||||
@property (readonly, copy) NSData *keyData;
|
@property (readonly, copy) NSData *keyData;
|
||||||
|
@property (readonly, copy, class) NSData *defaultHotKeyData;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Use this method to retrieve the data, since deallocation of a hotkey unregisters it, this could yield unwanted behaviour!
|
Use this method to retrieve the data, since deallocation of a hotkey unregisters it, this could yield unwanted behaviour!
|
||||||
@return data for the default hot key.
|
@return data for the default hot key.
|
||||||
*/
|
*/
|
||||||
+ (NSData *)hotKeyDataWithKeyCode:(unsigned short)keyCode modifierFlags:(NSUInteger)flags;
|
+ (NSData *)hotKeyDataWithKeyCode:(unsigned short)keyCode modifierFlags:(NSUInteger)flags;
|
||||||
+ (NSData *)defaultHotKeyData;
|
|
||||||
+ (instancetype)defaultHotKey;
|
+ (instancetype)defaultHotKey;
|
||||||
+ (instancetype)defaultHotKeyWithTask:(DDHotKeyTask)task;
|
+ (instancetype)defaultHotKeyWithTask:(DDHotKeyTask)task;
|
||||||
+ (instancetype)hotKeyWithKeyData:(NSData *)data task:(DDHotKeyTask)task;
|
+ (instancetype)hotKeyWithKeyData:(NSData *)data task:(DDHotKeyTask)task;
|
||||||
|
|||||||
@@ -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="13529" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="13771" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13529"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13771"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
</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" id="1">
|
<window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="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"/>
|
||||||
|
|||||||
@@ -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="13196" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13196"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14460.31"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
@@ -24,8 +24,8 @@
|
|||||||
<rect key="frame" x="0.0" y="0.0" width="694" height="595"/>
|
<rect key="frame" x="0.0" y="0.0" width="694" height="595"/>
|
||||||
<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" typeSelect="NO" 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="695" height="572"/>
|
<rect key="frame" x="0.0" y="0.0" width="694" height="572"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<size key="intercellSpacing" width="3" height="2"/>
|
<size key="intercellSpacing" width="3" height="2"/>
|
||||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
@@ -45,11 +45,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="104" height="17"/>
|
<rect key="frame" x="1" y="1" width="105" height="17"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="270">
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="270">
|
||||||
<rect key="frame" x="1" y="0.0" width="102" height="17"/>
|
<rect key="frame" x="1" y="0.0" width="103" height="17"/>
|
||||||
<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"/>
|
||||||
@@ -82,7 +82,7 @@
|
|||||||
<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="109" y="1" width="144" height="17"/>
|
<rect key="frame" x="108.5" y="1" width="144" height="17"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<imageView translatesAutoresizingMaskIntoConstraints="NO" id="298">
|
<imageView translatesAutoresizingMaskIntoConstraints="NO" id="298">
|
||||||
@@ -131,7 +131,7 @@
|
|||||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||||
<prototypeCellViews>
|
<prototypeCellViews>
|
||||||
<tableCellView identifier="PasswordCell" id="428">
|
<tableCellView identifier="PasswordCell" id="428">
|
||||||
<rect key="frame" x="256" y="1" width="118" height="17"/>
|
<rect key="frame" x="255.5" y="1" width="118" height="17"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="429" customClass="NSSecureTextField">
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="429" customClass="NSSecureTextField">
|
||||||
@@ -168,7 +168,7 @@
|
|||||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||||
<prototypeCellViews>
|
<prototypeCellViews>
|
||||||
<tableCellView id="421">
|
<tableCellView id="421">
|
||||||
<rect key="frame" x="378" y="1" width="113" height="17"/>
|
<rect key="frame" x="377" y="1" width="113" height="17"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="422">
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="422">
|
||||||
@@ -205,7 +205,7 @@
|
|||||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||||
<prototypeCellViews>
|
<prototypeCellViews>
|
||||||
<tableCellView id="616">
|
<tableCellView id="616">
|
||||||
<rect key="frame" x="494" y="1" width="199" height="17"/>
|
<rect key="frame" x="493" y="1" width="199" 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">
|
||||||
@@ -232,16 +232,16 @@
|
|||||||
</tableView>
|
</tableView>
|
||||||
</subviews>
|
</subviews>
|
||||||
</clipView>
|
</clipView>
|
||||||
<scroller key="horizontalScroller" 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="579" width="694" height="16"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
</scroller>
|
</scroller>
|
||||||
<scroller key="verticalScroller" hidden="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" id="676">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="695" height="23"/>
|
<rect key="frame" x="0.0" y="0.0" width="694" height="23"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
</tableHeaderView>
|
</tableHeaderView>
|
||||||
</scrollView>
|
</scrollView>
|
||||||
|
|||||||
BIN
MacPass/Icons/keyboardTemplate.pdf
Normal file
@@ -1,9 +1,9 @@
|
|||||||
//
|
//
|
||||||
// MPPreviewViewController.m
|
// KPKEntry+MPCustomAttributeProperties.h
|
||||||
// MacPass
|
// MacPass
|
||||||
//
|
//
|
||||||
// Created by Michael Starke on 18/03/14.
|
// Created by Michael Starke on 03.09.18.
|
||||||
// Copyright (c) 2014 HicknHack Software GmbH. All rights reserved.
|
// Copyright © 2018 HicknHack Software GmbH. All rights reserved.
|
||||||
//
|
//
|
||||||
// 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
|
||||||
@@ -20,16 +20,10 @@
|
|||||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
//
|
//
|
||||||
|
|
||||||
#import "MPPreviewViewController.h"
|
#import <KeePassKit/KeePassKit.h>
|
||||||
|
|
||||||
@interface MPPreviewViewController ()
|
FOUNDATION_EXTERN NSString *const MPCustomAttributePropertyPrefix;
|
||||||
|
|
||||||
@end
|
@interface KPKEntry (MPCustomAttributeProperties)
|
||||||
|
|
||||||
@implementation MPPreviewViewController
|
|
||||||
|
|
||||||
- (NSString *)nibName {
|
|
||||||
return @"PreviewView";
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
45
MacPass/KPKEntry+MPCustomAttributeProperties.m
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
//
|
||||||
|
// KPKEntry+MPCustomAttributeProperties.m
|
||||||
|
// MacPass
|
||||||
|
//
|
||||||
|
// Created by Michael Starke on 03.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 "KPKEntry+MPCustomAttributeProperties.h"
|
||||||
|
#import <objc/runtime.h>
|
||||||
|
|
||||||
|
NSString *const MPCustomAttributePropertyPrefix = @"valueForCustomAttribute";
|
||||||
|
|
||||||
|
@implementation KPKEntry (MPCustomAttributeProperties)
|
||||||
|
|
||||||
|
// generic getter
|
||||||
|
static id propertyIMP(id self, SEL _cmd) {
|
||||||
|
NSString *propertyKey = [NSStringFromSelector(_cmd) substringFromIndex:MPCustomAttributePropertyPrefix.length];
|
||||||
|
return [self valueForAttributeWithKey:propertyKey];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
+ (BOOL)resolveInstanceMethod:(SEL)aSEL {
|
||||||
|
if ([NSStringFromSelector(aSEL) hasPrefix:MPCustomAttributePropertyPrefix]) {
|
||||||
|
class_addMethod([self class], aSEL,(IMP)propertyIMP, "@@:");
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
return [super resolveInstanceMethod:aSEL];
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
@@ -32,6 +32,8 @@ typedef NS_ENUM(NSUInteger, MPActionType) {
|
|||||||
MPActionDelete, // Delete entry or group
|
MPActionDelete, // Delete entry or group
|
||||||
MPActionCopyUsername, // copy username to pasteboard
|
MPActionCopyUsername, // copy username to pasteboard
|
||||||
MPActionCopyPassword, // copy password to pasteboard
|
MPActionCopyPassword, // copy password to pasteboard
|
||||||
|
MPActionCopyCustomAttribute, // copy a custom attribute to the pasteboard
|
||||||
|
MPActionCopyAsReference, // copy a reference to the attribute {REF:…} to the pasteboard
|
||||||
MPActionCopyURL, // copy url to pasteboard
|
MPActionCopyURL, // copy url to pasteboard
|
||||||
MPActionOpenURL, // open url in default browser
|
MPActionOpenURL, // open url in default browser
|
||||||
MPActionToggleInspector,
|
MPActionToggleInspector,
|
||||||
|
|||||||
@@ -42,6 +42,8 @@
|
|||||||
@(MPActionCopyPassword): NSStringFromSelector(@selector(copyPassword:)),
|
@(MPActionCopyPassword): NSStringFromSelector(@selector(copyPassword:)),
|
||||||
@(MPActionCopyURL): NSStringFromSelector(@selector(copyURL:)),
|
@(MPActionCopyURL): NSStringFromSelector(@selector(copyURL:)),
|
||||||
@(MPActionCopyUsername): NSStringFromSelector(@selector(copyUsername:)),
|
@(MPActionCopyUsername): NSStringFromSelector(@selector(copyUsername:)),
|
||||||
|
@(MPActionCopyCustomAttribute): NSStringFromSelector(@selector(copyCustomAttribute:)),
|
||||||
|
@(MPActionCopyAsReference): NSStringFromSelector(@selector(copyAsReference:)),
|
||||||
@(MPActionDelete): NSStringFromSelector(@selector(delete:)),
|
@(MPActionDelete): NSStringFromSelector(@selector(delete:)),
|
||||||
@(MPActionEditPassword): NSStringFromSelector(@selector(editPassword:)),
|
@(MPActionEditPassword): NSStringFromSelector(@selector(editPassword:)),
|
||||||
@(MPActionOpenURL): NSStringFromSelector(@selector(openURL:)),
|
@(MPActionOpenURL): NSStringFromSelector(@selector(openURL:)),
|
||||||
|
|||||||
29
MacPass/MPAddCustomFieldContextMenuDelegate.h
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
//
|
||||||
|
// MPAddCustomFieldContextMenuDelegate.h
|
||||||
|
// MacPass
|
||||||
|
//
|
||||||
|
// Created by Michael Starke on 05.12.17.
|
||||||
|
// Copyright © 2017 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 <Foundation/Foundation.h>
|
||||||
|
|
||||||
|
@interface MPAddCustomFieldContextMenuDelegate : NSObject <NSMenuDelegate>
|
||||||
|
|
||||||
|
@property (weak) NSViewController *viewController;
|
||||||
|
|
||||||
|
@end
|
||||||
80
MacPass/MPAddCustomFieldContextMenuDelegate.m
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
//
|
||||||
|
// MPAddCustomFieldContextMenuDelegate.m
|
||||||
|
// MacPass
|
||||||
|
//
|
||||||
|
// Created by Michael Starke on 05.12.17.
|
||||||
|
// Copyright © 2017 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 "MPAddCustomFieldContextMenuDelegate.h"
|
||||||
|
#import "KeePassKit/KeePassKit.h"
|
||||||
|
|
||||||
|
NSString *const MPHMACOTPSeedAttributeKey = @"HMACOTP-Seed";
|
||||||
|
NSString *const MPHMACOTPConfigAttributeKey = @"HMACOTP-Config";
|
||||||
|
|
||||||
|
/*
|
||||||
|
HmacOtp-Secret (the UTF-8 representation of the value is the secret),
|
||||||
|
HmacOtp-Secret-Hex (secret as hex string),
|
||||||
|
HmacOtp-Secret-Base32 (secret as Base32 string)
|
||||||
|
HmacOtp-Secret-Base64 (secret as Base64 string)
|
||||||
|
|
||||||
|
HmacOtp-Counter field.
|
||||||
|
*/
|
||||||
|
|
||||||
|
@interface MPAddCustomFieldContextMenuDelegate ()
|
||||||
|
@property (readonly, nonatomic) KPKEntry *entry;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation MPAddCustomFieldContextMenuDelegate
|
||||||
|
|
||||||
|
- (KPKEntry *)entry {
|
||||||
|
KPKEntry *entry = self.viewController.representedObject;
|
||||||
|
if([entry isKindOfClass:KPKEntry.class]) {
|
||||||
|
return entry;
|
||||||
|
}
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)menuNeedsUpdate:(NSMenu *)menu {
|
||||||
|
[menu removeAllItems];
|
||||||
|
//[self _setupHOTPMenuItemsToMenu: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:@""];
|
||||||
|
item.target = self;
|
||||||
|
[menu addItem:item];
|
||||||
|
}
|
||||||
|
BOOL hasSeedAttribute = nil != [self.entry customAttributeWithKey:MPHMACOTPSeedAttributeKey];
|
||||||
|
if(!hasSeedAttribute) {
|
||||||
|
NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"ADD_CUSTOM_ATTRIBUTE_HMACOTP_SEED", @"Menu item title for adding an hmacotp seed attribute") action:@selector(_addHMACSeed:) keyEquivalent:@""];
|
||||||
|
item.target = self;
|
||||||
|
[menu addItem:item];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction)_addHMACConfig:(id)sender {
|
||||||
|
[self.entry addCustomAttribute:[[KPKAttribute alloc] initWithKey:MPHMACOTPConfigAttributeKey value:@"<config>"]];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction)_addHMACSeed:(id)sender {
|
||||||
|
[self.entry addCustomAttribute:[[KPKAttribute alloc] initWithKey:MPHMACOTPSeedAttributeKey value:@"<seed>"]];
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
@@ -37,17 +37,14 @@
|
|||||||
It's possible nicer to cache the entries and just update
|
It's possible nicer to cache the entries and just update
|
||||||
the menu entries, that actually need updating
|
the menu entries, that actually need updating
|
||||||
*/
|
*/
|
||||||
MPDocument *document = [[NSDocumentController sharedDocumentController] currentDocument];
|
MPDocument *document = NSDocumentController.sharedDocumentController.currentDocument;
|
||||||
if(!document) {
|
|
||||||
[menu removeAllItems];
|
|
||||||
}
|
|
||||||
[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:@""];
|
[menu addItemWithTitle:NSLocalizedString(@"EDIT_TEMPLATE_GROUP", "Menu item on the add entry context menu to edit template groups") action:[MPActionHelper actionOfType:MPActionEditTemplateGroup] keyEquivalent:@""];
|
||||||
|
|
||||||
[menu addItem:[NSMenuItem separatorItem]];
|
[menu addItem:[NSMenuItem separatorItem]];
|
||||||
for(KPKEntry *entry in [document.templates childEntries]) {
|
for(KPKEntry *entry in document.templates.childEntries) {
|
||||||
NSString *templateMask = NSLocalizedString(@"NEW_ENTRY_WITH_TEMPLATE_%@", "Submenu to add an entry via template");
|
NSString *templateMask = NSLocalizedString(@"NEW_ENTRY_WITH_TEMPLATE_%@", "Submenu to add an entry via template");
|
||||||
NSMenuItem *templateItem = [[NSMenuItem allocWithZone:[NSMenu menuZone]] initWithTitle:[NSString stringWithFormat:templateMask, entry.title]
|
NSMenuItem *templateItem = [[NSMenuItem alloc] initWithTitle:[NSString stringWithFormat:templateMask, entry.title]
|
||||||
action:@selector(createEntryFromTemplate:)
|
action:@selector(createEntryFromTemplate:)
|
||||||
keyEquivalent:@""];
|
keyEquivalent:@""];
|
||||||
templateItem.representedObject = entry.uuid;
|
templateItem.representedObject = entry.uuid;
|
||||||
|
|||||||
@@ -24,20 +24,23 @@
|
|||||||
|
|
||||||
APPKIT_EXTERN NSString *const MPDidChangeStoredKeyFilesSettings;
|
APPKIT_EXTERN NSString *const MPDidChangeStoredKeyFilesSettings;
|
||||||
|
|
||||||
@class MPAutotypeDaemon;
|
@class MPEntryContextMenuDelegate;
|
||||||
|
|
||||||
@interface MPAppDelegate : NSObject <NSApplicationDelegate, NSMenuDelegate>
|
@interface MPAppDelegate : NSObject <NSApplicationDelegate, NSMenuDelegate>
|
||||||
|
|
||||||
@property (strong) IBOutlet NSWindow *passwordCreatorWindow;
|
@property (strong) IBOutlet NSMenuItem *saveMenuItem;
|
||||||
@property (strong) IBOutlet NSWindow *welcomeWindow;
|
@property (strong) IBOutlet NSMenuItem *fixAutotypeMenuItem;
|
||||||
@property (weak) IBOutlet NSMenuItem *saveMenuItem;
|
@property (strong) IBOutlet NSMenuItem *fileNewMenuItem;
|
||||||
@property (weak) IBOutlet NSMenuItem *fixAutotypeMenuItem;
|
@property (strong) IBOutlet NSMenu *itemMenu;
|
||||||
@property (weak) IBOutlet NSMenuItem *fileNewMenuItem;
|
@property (strong) IBOutlet NSMenu *importMenu;
|
||||||
|
|
||||||
|
@property (strong, readonly) MPEntryContextMenuDelegate *itemActionMenuDelegate;
|
||||||
|
|
||||||
@property (nonatomic, assign) BOOL isAllowedToStoreKeyFile;
|
@property (nonatomic, assign) BOOL isAllowedToStoreKeyFile;
|
||||||
|
|
||||||
- (IBAction)checkForUpdates:(id)sender;
|
- (IBAction)checkForUpdates:(id)sender;
|
||||||
- (IBAction)showPreferences:(id)sender;
|
- (IBAction)showPreferences:(id)sender;
|
||||||
|
- (IBAction)showPluginPrefences:(id)sender;
|
||||||
- (IBAction)showPasswordCreator:(id)sender;
|
- (IBAction)showPasswordCreator:(id)sender;
|
||||||
- (IBAction)createNewDatabase:(id)sender;
|
- (IBAction)createNewDatabase:(id)sender;
|
||||||
- (IBAction)openDatabase:(id)sender;
|
- (IBAction)openDatabase:(id)sender;
|
||||||
@@ -50,4 +53,7 @@ APPKIT_EXTERN NSString *const MPDidChangeStoredKeyFilesSettings;
|
|||||||
|
|
||||||
- (void)lockAllDocuments;
|
- (void)lockAllDocuments;
|
||||||
|
|
||||||
|
- (void)showWelcomeWindow;
|
||||||
|
- (void)hideWelcomeWindow;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
#import "MPAppDelegate.h"
|
#import "MPAppDelegate.h"
|
||||||
|
|
||||||
#import "MPAutotypeDaemon.h"
|
#import "MPAutotypeDaemon.h"
|
||||||
|
#import "MPConstants.h"
|
||||||
#import "MPContextMenuHelper.h"
|
#import "MPContextMenuHelper.h"
|
||||||
#import "MPDockTileHelper.h"
|
#import "MPDockTileHelper.h"
|
||||||
#import "MPDocument.h"
|
#import "MPDocument.h"
|
||||||
@@ -32,10 +33,15 @@
|
|||||||
#import "MPPasswordCreatorViewController.h"
|
#import "MPPasswordCreatorViewController.h"
|
||||||
#import "MPPluginHost.h"
|
#import "MPPluginHost.h"
|
||||||
#import "MPSettingsHelper.h"
|
#import "MPSettingsHelper.h"
|
||||||
#import "MPSettingsWindowController.h"
|
#import "MPPreferencesWindowController.h"
|
||||||
#import "MPStringLengthValueTransformer.h"
|
#import "MPStringLengthValueTransformer.h"
|
||||||
|
#import "MPPrettyPasswordTransformer.h"
|
||||||
#import "MPTemporaryFileStorageCenter.h"
|
#import "MPTemporaryFileStorageCenter.h"
|
||||||
#import "MPValueTransformerHelper.h"
|
#import "MPValueTransformerHelper.h"
|
||||||
|
#import "MPUserNotificationCenterDelegate.h"
|
||||||
|
#import "MPWelcomeViewController.h"
|
||||||
|
#import "MPPlugin.h"
|
||||||
|
#import "MPEntryContextMenuDelegate.h"
|
||||||
|
|
||||||
#import "NSApplication+MPAdditions.h"
|
#import "NSApplication+MPAdditions.h"
|
||||||
|
|
||||||
@@ -44,16 +50,21 @@
|
|||||||
#import <Sparkle/Sparkle.h>
|
#import <Sparkle/Sparkle.h>
|
||||||
|
|
||||||
NSString *const MPDidChangeStoredKeyFilesSettings = @"com.hicknhack.macpass.MPDidChangeStoredKeyFilesSettings";
|
NSString *const MPDidChangeStoredKeyFilesSettings = @"com.hicknhack.macpass.MPDidChangeStoredKeyFilesSettings";
|
||||||
NSString *const MPHelpURLKey = @"MPHelpURL";
|
|
||||||
@interface MPAppDelegate () {
|
@interface MPAppDelegate () {
|
||||||
@private
|
@private
|
||||||
MPDockTileHelper *_dockTileHelper;
|
MPDockTileHelper *_dockTileHelper;
|
||||||
|
MPUserNotificationCenterDelegate *_userNotificationCenterDelegate;
|
||||||
BOOL _shouldOpenFile; // YES if app was started to open a
|
BOOL _shouldOpenFile; // YES if app was started to open a
|
||||||
}
|
}
|
||||||
|
|
||||||
@property (strong, nonatomic) MPSettingsWindowController *settingsController;
|
@property (strong) NSWindow *welcomeWindow;
|
||||||
|
@property (strong) IBOutlet NSWindow *passwordCreatorWindow;
|
||||||
|
@property (strong, nonatomic) MPPreferencesWindowController *preferencesController;
|
||||||
@property (strong, nonatomic) MPPasswordCreatorViewController *passwordCreatorController;
|
@property (strong, nonatomic) MPPasswordCreatorViewController *passwordCreatorController;
|
||||||
|
|
||||||
|
@property (strong) MPEntryContextMenuDelegate *itemActionMenuDelegate;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@implementation MPAppDelegate
|
@implementation MPAppDelegate
|
||||||
@@ -62,12 +73,15 @@ NSString *const MPHelpURLKey = @"MPHelpURL";
|
|||||||
[MPSettingsHelper setupDefaults];
|
[MPSettingsHelper setupDefaults];
|
||||||
[MPSettingsHelper migrateDefaults];
|
[MPSettingsHelper migrateDefaults];
|
||||||
[MPStringLengthValueTransformer registerTransformer];
|
[MPStringLengthValueTransformer registerTransformer];
|
||||||
|
[MPPrettyPasswordTransformer registerTransformer];
|
||||||
[MPValueTransformerHelper registerValueTransformer];
|
[MPValueTransformerHelper registerValueTransformer];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (instancetype)init {
|
- (instancetype)init {
|
||||||
self = [super init];
|
self = [super init];
|
||||||
if(self) {
|
if(self) {
|
||||||
|
_userNotificationCenterDelegate = [[MPUserNotificationCenterDelegate alloc] init];
|
||||||
|
self.itemActionMenuDelegate = [[MPEntryContextMenuDelegate alloc] init];
|
||||||
/* 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 push
|
||||||
#pragma clang diagnostic ignored "-Wunused-variable"
|
#pragma clang diagnostic ignored "-Wunused-variable"
|
||||||
@@ -91,7 +105,7 @@ NSString *const MPHelpURLKey = @"MPHelpURL";
|
|||||||
[self clearRememberdKeyFiles:nil];
|
[self clearRememberdKeyFiles:nil];
|
||||||
}
|
}
|
||||||
/* Inform anyone that might be interested that we can now no longer/ or can use keyfiles */
|
/* Inform anyone that might be interested that we can now no longer/ or can use keyfiles */
|
||||||
[[NSNotificationCenter defaultCenter] postNotificationName:MPDidChangeStoredKeyFilesSettings object:self];
|
[NSNotificationCenter.defaultCenter postNotificationName:MPDidChangeStoredKeyFilesSettings object:self];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -112,6 +126,11 @@ NSString *const MPHelpURLKey = @"MPHelpURL";
|
|||||||
for(NSMenuItem *item in items.reverseObjectEnumerator) {
|
for(NSMenuItem *item in items.reverseObjectEnumerator) {
|
||||||
[fileMenu insertItem:item atIndex:insertIndex];
|
[fileMenu insertItem:item atIndex:insertIndex];
|
||||||
}
|
}
|
||||||
|
[self.itemMenu removeAllItems];
|
||||||
|
for(NSMenuItem *item in [MPContextMenuHelper contextMenuItemsWithItems:MPContextMenuFull]) {
|
||||||
|
[self.itemMenu addItem:item];
|
||||||
|
}
|
||||||
|
self.itemMenu.delegate = self.itemActionMenuDelegate;
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
@@ -119,26 +138,26 @@ NSString *const MPHelpURLKey = @"MPHelpURL";
|
|||||||
|
|
||||||
- (BOOL)applicationShouldHandleReopen:(NSApplication *)sender hasVisibleWindows:(BOOL)flag {
|
- (BOOL)applicationShouldHandleReopen:(NSApplication *)sender hasVisibleWindows:(BOOL)flag {
|
||||||
if(!flag) {
|
if(!flag) {
|
||||||
BOOL reopen = [[NSUserDefaults standardUserDefaults] boolForKey:kMPSettingsKeyReopenLastDatabaseOnLaunch];
|
BOOL reopen = [NSUserDefaults.standardUserDefaults boolForKey:kMPSettingsKeyReopenLastDatabaseOnLaunch];
|
||||||
BOOL showWelcomeScreen = YES;
|
BOOL showWelcomeScreen = YES;
|
||||||
if(reopen) {
|
if(reopen) {
|
||||||
showWelcomeScreen = ![self _reopenLastDocument];
|
showWelcomeScreen = ![((MPDocumentController *)NSDocumentController.sharedDocumentController) reopenLastDocument];
|
||||||
}
|
}
|
||||||
if(showWelcomeScreen) {
|
if(showWelcomeScreen) {
|
||||||
[self _showWelcomeWindow];
|
[self showWelcomeWindow];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return YES;
|
return YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (BOOL)applicationShouldOpenUntitledFile:(NSApplication *)sender {
|
- (BOOL)applicationShouldOpenUntitledFile:(NSApplication *)sender {
|
||||||
return [[NSUserDefaults standardUserDefaults] boolForKey:kMPSettingsKeyOpenEmptyDatabaseOnLaunch];
|
return [NSUserDefaults.standardUserDefaults boolForKey:kMPSettingsKeyOpenEmptyDatabaseOnLaunch];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
- (void)applicationWillFinishLaunching:(NSNotification *)notification {
|
- (void)applicationWillFinishLaunching:(NSNotification *)notification {
|
||||||
_shouldOpenFile = NO;
|
_shouldOpenFile = NO;
|
||||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
[NSNotificationCenter.defaultCenter addObserver:self
|
||||||
selector:@selector(_applicationDidFinishRestoringWindows:)
|
selector:@selector(_applicationDidFinishRestoringWindows:)
|
||||||
name:NSApplicationDidFinishRestoringWindowsNotification
|
name:NSApplicationDidFinishRestoringWindowsNotification
|
||||||
object:nil];
|
object:nil];
|
||||||
@@ -146,10 +165,14 @@ NSString *const MPHelpURLKey = @"MPHelpURL";
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender {
|
||||||
|
return [NSUserDefaults.standardUserDefaults boolForKey:kMPSettingsKeyQuitOnLastWindowClose];
|
||||||
|
}
|
||||||
|
|
||||||
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender {
|
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender {
|
||||||
if([[MPTemporaryFileStorageCenter defaultCenter] hasPendingStorages]) {
|
if([[MPTemporaryFileStorageCenter defaultCenter] hasPendingStorages]) {
|
||||||
dispatch_async(dispatch_get_main_queue(), ^{
|
dispatch_async(dispatch_get_main_queue(), ^{
|
||||||
[[MPTemporaryFileStorageCenter defaultCenter] cleanupStorages];
|
[MPTemporaryFileStorageCenter.defaultCenter cleanupStorages];
|
||||||
[sender replyToApplicationShouldTerminate:YES];
|
[sender replyToApplicationShouldTerminate:YES];
|
||||||
});
|
});
|
||||||
return NSTerminateLater;
|
return NSTerminateLater;
|
||||||
@@ -160,7 +183,9 @@ NSString *const MPHelpURLKey = @"MPHelpURL";
|
|||||||
- (BOOL)application:(NSApplication *)sender openFile:(NSString *)filename {
|
- (BOOL)application:(NSApplication *)sender openFile:(NSString *)filename {
|
||||||
_shouldOpenFile = YES;
|
_shouldOpenFile = YES;
|
||||||
NSURL *fileURL = [NSURL fileURLWithPath:filename];
|
NSURL *fileURL = [NSURL fileURLWithPath:filename];
|
||||||
[[NSDocumentController sharedDocumentController] openDocumentWithContentsOfURL:fileURL display:YES completionHandler:^(NSDocument * _Nullable document, BOOL documentWasAlreadyOpen, NSError * _Nullable error){}];
|
[NSDocumentController.sharedDocumentController openDocumentWithContentsOfURL:fileURL
|
||||||
|
display:YES
|
||||||
|
completionHandler:^(NSDocument * _Nullable document, BOOL documentWasAlreadyOpen, NSError * _Nullable error){}];
|
||||||
return YES;
|
return YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -168,10 +193,9 @@ NSString *const MPHelpURLKey = @"MPHelpURL";
|
|||||||
#if defined(NO_SPARKLE)
|
#if defined(NO_SPARKLE)
|
||||||
NSLog(@"Sparkle explicitly disabled!!!");
|
NSLog(@"Sparkle explicitly disabled!!!");
|
||||||
#endif
|
#endif
|
||||||
/* Daemon instanziieren */
|
/* Initalizes Global Daemons */
|
||||||
[MPLockDaemon defaultDaemon];
|
[MPLockDaemon defaultDaemon];
|
||||||
[MPAutotypeDaemon defaultDaemon];
|
[MPAutotypeDaemon defaultDaemon];
|
||||||
/* Create Plugin Manager */
|
|
||||||
[MPPluginHost sharedHost];
|
[MPPluginHost sharedHost];
|
||||||
#if !defined(DEBUG) && !defined(NO_SPARKLE)
|
#if !defined(DEBUG) && !defined(NO_SPARKLE)
|
||||||
/* Disable updates if in debug or nosparkle */
|
/* Disable updates if in debug or nosparkle */
|
||||||
@@ -183,7 +207,7 @@ NSString *const MPHelpURLKey = @"MPHelpURL";
|
|||||||
#pragma mark NSMenuDelegate
|
#pragma mark NSMenuDelegate
|
||||||
- (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.hasPasswordOrKeyFile);
|
||||||
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;
|
||||||
@@ -191,41 +215,67 @@ NSString *const MPHelpURLKey = @"MPHelpURL";
|
|||||||
if(menu == self.fixAutotypeMenuItem.menu) {
|
if(menu == self.fixAutotypeMenuItem.menu) {
|
||||||
self.fixAutotypeMenuItem.hidden = !(NSEvent.modifierFlags & NSAlternateKeyMask);
|
self.fixAutotypeMenuItem.hidden = !(NSEvent.modifierFlags & NSAlternateKeyMask);
|
||||||
}
|
}
|
||||||
|
if(menu == self.importMenu) {
|
||||||
|
NSMenuItem *exportXML = menu.itemArray.firstObject;
|
||||||
|
[menu removeAllItems];
|
||||||
|
for(MPPlugin<MPImportPlugin> * plugin in MPPluginHost.sharedHost.importPlugins) {
|
||||||
|
NSMenuItem *importItem = [[NSMenuItem alloc] init];
|
||||||
|
[plugin prepareImportMenuItem:importItem];
|
||||||
|
importItem.target = nil;
|
||||||
|
importItem.action = @selector(importFromPlugin:);
|
||||||
|
}
|
||||||
|
[menu insertItem:exportXML atIndex:0];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
#pragma mark Actions
|
#pragma mark Actions
|
||||||
|
|
||||||
|
- (void)showPluginPrefences:(id)sender {
|
||||||
|
[self _showPreferencesTab:MPPreferencesTabPlugins];
|
||||||
|
}
|
||||||
|
|
||||||
- (void)showPreferences:(id)sender {
|
- (void)showPreferences:(id)sender {
|
||||||
if(self.settingsController == nil) {
|
[self _showPreferencesTab:MPPreferencesTabGeneral];
|
||||||
self.settingsController = [[MPSettingsWindowController alloc] init];
|
}
|
||||||
|
|
||||||
|
- (void)_showPreferencesTab:(MPPreferencesTab)tab {
|
||||||
|
if(self.preferencesController == nil) {
|
||||||
|
self.preferencesController = [[MPPreferencesWindowController alloc] init];
|
||||||
}
|
}
|
||||||
[self.settingsController showSettings];
|
[self.preferencesController showPreferencesTab:tab];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)showPasswordCreator:(id)sender {
|
- (void)showPasswordCreator:(id)sender {
|
||||||
if(!self.passwordCreatorWindow) {
|
if(!self.passwordCreatorWindow) {
|
||||||
[[NSBundle mainBundle] loadNibNamed:@"PasswordCreatorWindow"owner:self topLevelObjects:nil];
|
self.passwordCreatorWindow = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 100, 100)
|
||||||
|
styleMask:NSWindowStyleMaskTitled|NSWindowStyleMaskClosable|NSWindowStyleMaskResizable
|
||||||
|
backing:NSBackingStoreBuffered
|
||||||
|
defer:NO];
|
||||||
|
self.passwordCreatorWindow.releasedWhenClosed = NO;
|
||||||
|
self.passwordCreatorWindow.title = NSLocalizedString(@"PASSWORD_CREATOR_WINDOW_TITLE", @"Window title for the stand-alone password creator window");
|
||||||
}
|
}
|
||||||
if(!self.passwordCreatorController) {
|
if(!self.passwordCreatorController) {
|
||||||
self.passwordCreatorController = [[MPPasswordCreatorViewController alloc] init];
|
self.passwordCreatorController = [[MPPasswordCreatorViewController alloc] init];
|
||||||
self.passwordCreatorWindow.contentViewController = self.passwordCreatorController;
|
self.passwordCreatorWindow.contentViewController = self.passwordCreatorController;
|
||||||
}
|
}
|
||||||
[self.passwordCreatorController reset];
|
[self.passwordCreatorController reset];
|
||||||
|
[self.passwordCreatorWindow center];
|
||||||
[self.passwordCreatorWindow makeKeyAndOrderFront:self.passwordCreatorWindow];
|
[self.passwordCreatorWindow makeKeyAndOrderFront:self.passwordCreatorWindow];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)createNewDatabase:(id)sender {
|
- (void)createNewDatabase:(id)sender {
|
||||||
[self.welcomeWindow orderOut:sender];
|
[self.welcomeWindow orderOut:sender];
|
||||||
[[NSDocumentController sharedDocumentController] newDocument:sender];
|
[NSDocumentController.sharedDocumentController newDocument:sender];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)openDatabase:(id)sender {
|
- (void)openDatabase:(id)sender {
|
||||||
[self.welcomeWindow orderOut:sender];
|
[self.welcomeWindow orderOut:sender];
|
||||||
[[NSDocumentController sharedDocumentController] openDocument:sender];
|
[NSDocumentController.sharedDocumentController openDocument:sender];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)lockAllDocuments {
|
- (void)lockAllDocuments {
|
||||||
for(NSDocument *document in ((NSDocumentController *)[NSDocumentController sharedDocumentController]).documents) {
|
for(NSDocument *document in NSDocumentController.sharedDocumentController.documents) {
|
||||||
for(id windowController in [document.windowControllers reverseObjectEnumerator]) {
|
for(id windowController in [document.windowControllers reverseObjectEnumerator]) {
|
||||||
if([windowController respondsToSelector:@selector(lock:)]) {
|
if([windowController respondsToSelector:@selector(lock:)]) {
|
||||||
[windowController lock:self];
|
[windowController lock:self];
|
||||||
@@ -234,21 +284,41 @@ NSString *const MPHelpURLKey = @"MPHelpURL";
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)showWelcomeWindow {
|
||||||
|
if(!self.welcomeWindow) {
|
||||||
|
self.welcomeWindow = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 100, 100)
|
||||||
|
styleMask:NSWindowStyleMaskTitled|NSWindowStyleMaskClosable|NSWindowStyleMaskResizable
|
||||||
|
backing:NSBackingStoreBuffered
|
||||||
|
defer:NO];
|
||||||
|
self.welcomeWindow.releasedWhenClosed = NO;
|
||||||
|
}
|
||||||
|
if(!self.welcomeWindow.contentViewController) {
|
||||||
|
self.welcomeWindow.contentViewController = [[MPWelcomeViewController alloc] init];
|
||||||
|
}
|
||||||
|
|
||||||
|
[self.welcomeWindow center];
|
||||||
|
[self.welcomeWindow makeKeyAndOrderFront:nil];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)hideWelcomeWindow {
|
||||||
|
[self.welcomeWindow orderOut:nil];
|
||||||
|
}
|
||||||
|
|
||||||
- (void)clearRememberdKeyFiles:(id)sender {
|
- (void)clearRememberdKeyFiles:(id)sender {
|
||||||
[[NSUserDefaults standardUserDefaults] removeObjectForKey:kMPSettingsKeyRememeberdKeysForDatabases];
|
[NSUserDefaults.standardUserDefaults removeObjectForKey:kMPSettingsKeyRememeberdKeysForDatabases];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)showHelp:(id)sender {
|
- (void)showHelp:(id)sender {
|
||||||
NSString *urlString = [[NSBundle mainBundle] infoDictionary][MPHelpURLKey];
|
NSString *urlString = NSBundle.mainBundle.infoDictionary[MPBundleHelpURLKey];
|
||||||
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:urlString]];
|
[NSWorkspace.sharedWorkspace openURL:[NSURL URLWithString:urlString]];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)checkForUpdates:(id)sender {
|
- (void)checkForUpdates:(id)sender {
|
||||||
#if defined(DEBUG) || defined(NO_SPARKLE)
|
#if defined(DEBUG) || defined(NO_SPARKLE)
|
||||||
NSAlert *alert = [[NSAlert alloc] init];
|
NSAlert *alert = [[NSAlert alloc] init];
|
||||||
alert.messageText = NSLocalizedString(@"Updates are disabled!", @"Message text for disabled updates alert!");
|
alert.messageText = NSLocalizedString(@"ALERT_UPDATES_DISABLED_MESSAGE_TEXT", @"Message text for disabled updates alert!");
|
||||||
alert.informativeText = [NSString stringWithFormat:@"Sparkle updates are disabled for this build of %@!", NSApp.applicationName];
|
alert.informativeText = [NSString stringWithFormat:NSLocalizedString(@"ALERT_UPDATES_DISABLED_INFORMATIVE_TEXT_%@!", @"Infromative text of the disabled updates alert!"), NSApp.applicationName];
|
||||||
[alert addButtonWithTitle:NSLocalizedString(@"OK", @"Ok button")];
|
[alert addButtonWithTitle:NSLocalizedString(@"OK", @"Ok Button to dismiss disabled updates alert")];
|
||||||
[alert runModal];
|
[alert runModal];
|
||||||
#else
|
#else
|
||||||
[[SUUpdater sharedUpdater] checkForUpdates:sender];
|
[[SUUpdater sharedUpdater] checkForUpdates:sender];
|
||||||
@@ -258,75 +328,27 @@ NSString *const MPHelpURLKey = @"MPHelpURL";
|
|||||||
#pragma mark -
|
#pragma mark -
|
||||||
#pragma mark Private Helper
|
#pragma mark Private Helper
|
||||||
- (void)_applicationDidFinishRestoringWindows:(NSNotification *)notification {
|
- (void)_applicationDidFinishRestoringWindows:(NSNotification *)notification {
|
||||||
NSDocumentController *documentController = [NSDocumentController sharedDocumentController];
|
NSArray *documents = NSDocumentController.sharedDocumentController.documents;
|
||||||
NSArray *documents = [documentController documents];
|
BOOL restoredWindows = documents.count > 0;
|
||||||
BOOL restoredWindows = [documents count] > 0;
|
|
||||||
|
|
||||||
for(NSDocument *document in documents) {
|
for(NSDocument *document in documents) {
|
||||||
for(NSWindowController *windowController in [document windowControllers]) {
|
for(NSWindowController *windowController in document.windowControllers) {
|
||||||
[windowController.window.contentView layout];
|
[windowController.window.contentView layout];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL reopen = [[NSUserDefaults standardUserDefaults] boolForKey:kMPSettingsKeyReopenLastDatabaseOnLaunch];
|
BOOL reopen = [NSUserDefaults.standardUserDefaults boolForKey:kMPSettingsKeyReopenLastDatabaseOnLaunch];
|
||||||
BOOL showWelcomeScreen = !restoredWindows && !_shouldOpenFile;
|
BOOL showWelcomeScreen = !restoredWindows && !_shouldOpenFile;
|
||||||
if(reopen && !restoredWindows && !_shouldOpenFile) {
|
if(reopen && !restoredWindows && !_shouldOpenFile) {
|
||||||
showWelcomeScreen = ![self _reopenLastDocument];
|
showWelcomeScreen = ![((MPDocumentController *)NSDocumentController.sharedDocumentController) reopenLastDocument];
|
||||||
}
|
}
|
||||||
if(showWelcomeScreen) {
|
if(showWelcomeScreen) {
|
||||||
[self _showWelcomeWindow];
|
[self showWelcomeWindow];
|
||||||
}
|
}
|
||||||
}
|
/* run check for accessibilty after the windowserver should have presented the UI */
|
||||||
|
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.25 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
||||||
- (void)_showWelcomeWindow {
|
[MPAutotypeDaemon.defaultDaemon checkForAccessibiltyPermissions];
|
||||||
[self _loadWelcomeWindow];
|
});
|
||||||
[self.welcomeWindow makeKeyAndOrderFront:nil];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)_loadWelcomeWindow {
|
|
||||||
if(!_welcomeWindow) {
|
|
||||||
NSArray *topLevelObject;
|
|
||||||
[[NSBundle mainBundle] loadNibNamed:@"WelcomeWindow" owner:self topLevelObjects:&topLevelObject];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- (BOOL)_reopenLastDocument {
|
|
||||||
NSDocumentController *documentController = [NSDocumentController sharedDocumentController];
|
|
||||||
NSArray *documents = [documentController documents];
|
|
||||||
if([documents count] > 0) {
|
|
||||||
return YES; // The document is already open
|
|
||||||
}
|
|
||||||
NSArray *recentDocuments = [[NSDocumentController sharedDocumentController] recentDocumentURLs];
|
|
||||||
NSURL *documentUrl = nil;
|
|
||||||
if([recentDocuments count] > 0) {
|
|
||||||
documentUrl = recentDocuments[0];
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
NSString *lastPath = [[NSUserDefaults standardUserDefaults] stringForKey:kMPSettingsKeyLastDatabasePath];
|
|
||||||
documentUrl =[NSURL URLWithString:lastPath];
|
|
||||||
}
|
|
||||||
BOOL isFileURL = [documentUrl isFileURL];
|
|
||||||
if(isFileURL) {
|
|
||||||
[documentController openDocumentWithContentsOfURL:documentUrl
|
|
||||||
display:YES
|
|
||||||
completionHandler:^(NSDocument *document, BOOL documentWasAlreadyOpen, NSError *error) {
|
|
||||||
|
|
||||||
if(error != nil){
|
|
||||||
|
|
||||||
NSAlert *alert = [[NSAlert alloc] init];
|
|
||||||
[alert setMessageText: NSLocalizedString(@"FILE_OPEN_ERROR", nil)];
|
|
||||||
[alert setInformativeText: [error localizedDescription]];
|
|
||||||
[alert setAlertStyle:NSCriticalAlertStyle ];
|
|
||||||
[alert runModal];
|
|
||||||
}
|
|
||||||
|
|
||||||
if(document == nil){
|
|
||||||
[self _showWelcomeWindow];
|
|
||||||
}
|
|
||||||
|
|
||||||
}];
|
|
||||||
}
|
|
||||||
return isFileURL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -26,6 +26,7 @@
|
|||||||
@implementation MPAttachmentTableDataSource
|
@implementation MPAttachmentTableDataSource
|
||||||
|
|
||||||
- (NSDragOperation)tableView:(NSTableView *)tableView validateDrop:(id<NSDraggingInfo>)info proposedRow:(NSInteger)row proposedDropOperation:(NSTableViewDropOperation)dropOperation {
|
- (NSDragOperation)tableView:(NSTableView *)tableView validateDrop:(id<NSDraggingInfo>)info proposedRow:(NSInteger)row proposedDropOperation:(NSTableViewDropOperation)dropOperation {
|
||||||
|
/* allow drag between databases? */
|
||||||
NSPasteboard *draggingPasteBoard = [info draggingPasteboard];
|
NSPasteboard *draggingPasteBoard = [info draggingPasteboard];
|
||||||
NSArray *arrayOfURLs = [draggingPasteBoard readObjectsForClasses:@[NSURL.class] options:nil];
|
NSArray *arrayOfURLs = [draggingPasteBoard readObjectsForClasses:@[NSURL.class] options:nil];
|
||||||
NSUInteger numberOfDirectories = 0;
|
NSUInteger numberOfDirectories = 0;
|
||||||
@@ -33,7 +34,7 @@
|
|||||||
if(url.fileURL || url.fileReferenceURL) {
|
if(url.fileURL || url.fileReferenceURL) {
|
||||||
NSError *error = nil;
|
NSError *error = nil;
|
||||||
NSDictionary *resourceKeys = [url resourceValuesForKeys:@[NSURLIsDirectoryKey] error:&error];
|
NSDictionary *resourceKeys = [url resourceValuesForKeys:@[NSURLIsDirectoryKey] error:&error];
|
||||||
if( [resourceKeys[ NSURLIsDirectoryKey ] boolValue] == YES ) {
|
if([resourceKeys[NSURLIsDirectoryKey] boolValue] == YES) {
|
||||||
numberOfDirectories++;
|
numberOfDirectories++;
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
@@ -43,6 +44,10 @@
|
|||||||
if(numberOfDirectories == arrayOfURLs.count) {
|
if(numberOfDirectories == arrayOfURLs.count) {
|
||||||
return NSDragOperationNone;
|
return NSDragOperationNone;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(dropOperation == NSTableViewDropOn) {
|
||||||
|
[tableView setDropRow:row+1 dropOperation:NSTableViewDropAbove];
|
||||||
|
}
|
||||||
return NSDragOperationCopy;
|
return NSDragOperationCopy;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -50,40 +55,67 @@
|
|||||||
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;
|
||||||
|
|
||||||
NSPasteboard *draggingPasteBoard = [info draggingPasteboard];
|
NSArray *arrayOfURLs = [info.draggingPasteboard readObjectsForClasses:@[NSURL.class] options:nil];
|
||||||
NSArray *arrayOfURLs = [draggingPasteBoard readObjectsForClasses:@[[NSURL class]] options:nil];
|
|
||||||
|
|
||||||
for(NSURL *fileUrl in arrayOfURLs) {
|
for(NSURL *fileUrl in arrayOfURLs) {
|
||||||
[document addAttachment:fileUrl toEntry:entry];
|
[document addAttachment:fileUrl toEntry:entry];
|
||||||
}
|
}
|
||||||
return YES;
|
return YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (BOOL)tableView:(NSTableView *)tableView writeRowsWithIndexes:(NSIndexSet *)rowIndexes toPasteboard:(NSPasteboard *)pboard {
|
- (BOOL)tableView:(NSTableView *)tableView writeRowsWithIndexes:(NSIndexSet *)rowIndexes toPasteboard:(NSPasteboard *)pboard {
|
||||||
return NO;
|
[pboard declareTypes:@[NSFilesPromisePboardType] owner:nil];
|
||||||
|
MPDocument *document = tableView.window.windowController.document;
|
||||||
/*
|
KPKEntry *entry = document.selectedEntries.count == 1 ? document.selectedEntries.lastObject : nil;
|
||||||
NSString *extension;
|
NSMutableArray *fileNames = [[NSMutableArray alloc] init];
|
||||||
|
for(KPKBinary *binary in [entry.binaries objectsAtIndexes:rowIndexes]) {
|
||||||
if([rowIndexes count] != 1) {
|
if(binary.name) {
|
||||||
return NO; // We only work with one file at a time
|
[fileNames addObject:binary.name];
|
||||||
}
|
}
|
||||||
MPDocument *document = [[[tableView window] windowController] document];
|
|
||||||
id entry = document.selectedEntry;
|
|
||||||
NSUInteger row = [rowIndexes lastIndex];
|
|
||||||
if([entry isKindOfClass:[Kdb3Entry class]]) {
|
|
||||||
Kdb3Entry *entryV3 = (Kdb3Entry *)entry;
|
|
||||||
extension = [entryV3.binaryDesc pathExtension];
|
|
||||||
}
|
}
|
||||||
else if([entry isKindOfClass:[Kdb4Entry class]]) {
|
[pboard setPropertyList:fileNames forType:NSFilesPromisePboardType];
|
||||||
Kdb4Entry *entryV4 = (Kdb4Entry *)entry;
|
return YES;
|
||||||
BinaryRef *binaryRef = entryV4.binaries[row];
|
|
||||||
extension = [binaryRef.key pathExtension];
|
|
||||||
}
|
|
||||||
NSString *uti = CFBridgingRelease(UTTypeCreatePreferredIdentifierForTag( kUTTagClassFilenameExtension, (__bridge CFStringRef)(extension), NULL ));
|
|
||||||
|
|
||||||
[pboard setPropertyList:@[uti] forType:(NSString *)kPasteboardTypeFilePromiseContent];
|
|
||||||
[pboard setPropertyList:@[uti] forType:(NSString *)kPasteboardTypeFileURLPromise ];
|
|
||||||
return YES;*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (NSArray<NSString *> *)tableView:(NSTableView *)tableView namesOfPromisedFilesDroppedAtDestination:(NSURL *)dropDestination forDraggedRowsWithIndexes:(NSIndexSet *)indexSet {
|
||||||
|
MPDocument *document = tableView.window.windowController.document;
|
||||||
|
KPKEntry *entry = document.selectedEntries.count == 1 ? document.selectedEntries.lastObject : nil;
|
||||||
|
NSMutableArray<NSString *> *fileNames = [[NSMutableArray alloc] init];
|
||||||
|
NSArray<KPKBinary *> *draggedBinaries = [entry.binaries objectsAtIndexes:indexSet];
|
||||||
|
for(KPKBinary *binary in draggedBinaries) {
|
||||||
|
if(binary.name) {
|
||||||
|
[fileNames addObject:binary.name];
|
||||||
|
dispatch_queue_t queue = dispatch_get_global_queue(QOS_CLASS_USER_INITIATED, 0);
|
||||||
|
dispatch_async(queue, ^{
|
||||||
|
NSError *error;
|
||||||
|
NSURL *saveLocation = [dropDestination URLByAppendingPathComponent:binary.name];
|
||||||
|
BOOL success = [binary saveToLocation:saveLocation error:&error];
|
||||||
|
if(!success && error) {
|
||||||
|
dispatch_async(dispatch_get_main_queue(), ^{
|
||||||
|
[NSApp presentError:error];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return [fileNames copy];
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
- (id<NSPasteboardWriting>)tableView:(NSTableView *)tableView pasteboardWriterForRow:(NSInteger)row {
|
||||||
|
MPDocument *document = tableView.window.windowController.document;
|
||||||
|
KPKEntry *entry = document.selectedEntries.count == 1 ? document.selectedEntries.lastObject : nil;
|
||||||
|
|
||||||
|
if(!entry) {
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
if (@available(macOS 10.12, *)) {
|
||||||
|
KPKBinary *binary = entry.binaries[row];
|
||||||
|
NSFilePromiseProvider *provider = [[NSFilePromiseProvider alloc] initWithFileType:(NSString *)kUTTypeXML delegate:binary];
|
||||||
|
return provider;
|
||||||
|
}
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
NSTableCellView *view;
|
NSTableCellView *view;
|
||||||
if([selectedIndexes containsIndex:row]) {
|
if([selectedIndexes containsIndex:row]) {
|
||||||
MPSelectedAttachmentTableCellView *cellView = [tableView makeViewWithIdentifier:@"SelectedCell" owner:tableView];
|
MPSelectedAttachmentTableCellView *cellView = [tableView makeViewWithIdentifier:@"SelectedCell" owner:tableView];
|
||||||
[cellView.actionButton setMenu:[self allocateActionMenu]];
|
cellView.actionButton.menu = [self allocateActionMenu];
|
||||||
view = cellView;
|
view = cellView;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|||||||
@@ -41,7 +41,7 @@
|
|||||||
static dispatch_once_t onceToken;
|
static dispatch_once_t onceToken;
|
||||||
dispatch_once(&onceToken, ^{
|
dispatch_once(&onceToken, ^{
|
||||||
NSMutableArray *fields = [[NSMutableArray alloc] init];
|
NSMutableArray *fields = [[NSMutableArray alloc] init];
|
||||||
for(NSString *attribute in [KPKFormat sharedFormat].entryDefaultKeys) {
|
for(NSString *attribute in KPKFormat.sharedFormat.entryDefaultKeys) {
|
||||||
[fields addObject:[NSString stringWithFormat:@"{%@}", attribute]];
|
[fields addObject:[NSString stringWithFormat:@"{%@}", attribute]];
|
||||||
}
|
}
|
||||||
[fields addObject:@"{S:Custom}"];
|
[fields addObject:@"{S:Custom}"];
|
||||||
@@ -54,7 +54,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (void)dealloc {
|
- (void)dealloc {
|
||||||
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
[NSNotificationCenter.defaultCenter removeObserver:self];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSString *)nibName {
|
- (NSString *)nibName {
|
||||||
|
|||||||
@@ -5,6 +5,20 @@
|
|||||||
// Created by Michael Starke on 26.10.17.
|
// Created by Michael Starke on 26.10.17.
|
||||||
// Copyright © 2017 HicknHack Software GmbH. All rights reserved.
|
// Copyright © 2017 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>
|
#import <Cocoa/Cocoa.h>
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,20 @@
|
|||||||
// Created by Michael Starke on 26.10.17.
|
// Created by Michael Starke on 26.10.17.
|
||||||
// Copyright © 2017 HicknHack Software GmbH. All rights reserved.
|
// Copyright © 2017 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 "MPAutotypeCandidateSelectionViewController.h"
|
#import "MPAutotypeCandidateSelectionViewController.h"
|
||||||
#import "MPAutotypeContext.h"
|
#import "MPAutotypeContext.h"
|
||||||
#import "MPAutotypeDaemon.h"
|
#import "MPAutotypeDaemon.h"
|
||||||
@@ -29,6 +42,8 @@
|
|||||||
- (void)viewDidLoad {
|
- (void)viewDidLoad {
|
||||||
[super viewDidLoad];
|
[super viewDidLoad];
|
||||||
self.selectAutotypeContextButton.enabled = NO;
|
self.selectAutotypeContextButton.enabled = NO;
|
||||||
|
NSNotification *notification = [NSNotification notificationWithName:NSTableViewSelectionDidChangeNotification object:self.contextTableView];
|
||||||
|
[self tableViewSelectionDidChange:notification];
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark NSTableViewDataSource
|
#pragma mark NSTableViewDataSource
|
||||||
@@ -42,8 +57,9 @@
|
|||||||
- (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];
|
NSTableCellView *view = [tableView makeViewWithIdentifier:tableColumn.identifier owner:self];
|
||||||
MPAutotypeContext *context = self.candidates[row];
|
MPAutotypeContext *context = self.candidates[row];
|
||||||
NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@\n%@", context.entry.title, context.maskedEvaluatedCommand]];
|
NSString *maskedEvaluatedCommand = context.maskedEvaluatedCommand;
|
||||||
[string setAttributes:@{NSForegroundColorAttributeName: NSColor.disabledControlTextColor} range:NSMakeRange(context.entry.title.length + 1, context.maskedEvaluatedCommand.length)];
|
NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@\n%@", context.entry.title, maskedEvaluatedCommand]];
|
||||||
|
[string setAttributes:@{NSForegroundColorAttributeName: NSColor.disabledControlTextColor} range:NSMakeRange((string.length - maskedEvaluatedCommand.length), maskedEvaluatedCommand.length)];
|
||||||
view.textField.attributedStringValue = string;
|
view.textField.attributedStringValue = string;
|
||||||
view.imageView.image = context.entry.iconImage;
|
view.imageView.image = context.entry.iconImage;
|
||||||
return view;
|
return view;
|
||||||
@@ -61,7 +77,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 selectAutotypeCandiate:self.candidates[selectedRow]];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
[self cancelSelection:sender]; // cancel since the selection was invalid!
|
[self cancelSelection:sender]; // cancel since the selection was invalid!
|
||||||
|
|||||||
@@ -22,12 +22,14 @@
|
|||||||
|
|
||||||
#import "MPAutotypeClear.h"
|
#import "MPAutotypeClear.h"
|
||||||
#import "MPKeyMapper.h"
|
#import "MPKeyMapper.h"
|
||||||
|
#import "MPKeyTyper.h"
|
||||||
|
|
||||||
#import <Carbon/Carbon.h>
|
#import <Carbon/Carbon.h>
|
||||||
|
|
||||||
@implementation MPAutotypeClear
|
@implementation MPAutotypeClear
|
||||||
|
|
||||||
- (NSString *)description {
|
- (NSString *)description {
|
||||||
return [[self class] description];
|
return self.class.description;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)execute {
|
- (void)execute {
|
||||||
@@ -36,8 +38,8 @@
|
|||||||
NSLog(@"Unable to generate key code for 'A'");
|
NSLog(@"Unable to generate key code for 'A'");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
[self sendPressKey:key.keyCode modifierFlags:kCGEventFlagMaskCommand];
|
[MPKeyTyper sendKey:MPMakeModifiedKey(kCGEventFlagMaskCommand, key.keyCode)];
|
||||||
[self sendPressKey:kVK_Delete modifierFlags:0];
|
[MPKeyTyper sendKey:MPMakeModifiedKey(0, kVK_Delete)];
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -21,7 +21,6 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
#import <Foundation/Foundation.h>
|
#import <Foundation/Foundation.h>
|
||||||
#import "MPModifiedKey.h"
|
|
||||||
@class MPAutotypeContext;
|
@class MPAutotypeContext;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -30,7 +29,6 @@
|
|||||||
* entry point for creating AutotypeCommands. You should never need to build a command on your own.
|
* entry point for creating AutotypeCommands. You should never need to build a command on your own.
|
||||||
*/
|
*/
|
||||||
@interface MPAutotypeCommand : NSObject
|
@interface MPAutotypeCommand : NSObject
|
||||||
|
|
||||||
@property (readonly, strong) MPAutotypeContext *context;
|
@property (readonly, strong) MPAutotypeContext *context;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -44,22 +42,6 @@
|
|||||||
*/
|
*/
|
||||||
+ (NSArray *)commandsForContext:(MPAutotypeContext *)context;
|
+ (NSArray *)commandsForContext:(MPAutotypeContext *)context;
|
||||||
|
|
||||||
/**
|
|
||||||
* Sends a KeyPress Event with the supplied modifier flags and Keycode
|
|
||||||
* Any existing modifiers will be disabled for this event. If the user
|
|
||||||
* presses any key, those will be ignored during this event
|
|
||||||
*
|
|
||||||
* @param keyCode virtual KeyCode to be sent
|
|
||||||
* @param flags modifier flags for the key press event
|
|
||||||
*/
|
|
||||||
- (void)sendPressKey:(CGKeyCode)keyCode modifierFlags:(CGEventFlags)flags;
|
|
||||||
- (void)sendPressKey:(MPModifiedKey)key;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Convenience message to be sent for executing a simple paste command
|
|
||||||
*/
|
|
||||||
- (void)sendPasteKeyCode;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Executes the Autotype Command.
|
* Executes the Autotype Command.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -21,443 +21,17 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
#import "MPAutotypeCommand.h"
|
#import "MPAutotypeCommand.h"
|
||||||
|
#import "MPAutotypeParser.h"
|
||||||
#import "MPAutotypePaste.h"
|
|
||||||
#import "MPAutotypeKeyPress.h"
|
|
||||||
#import "MPAutotypeClear.h"
|
|
||||||
#import "MPAutotypeDelay.h"
|
|
||||||
|
|
||||||
#import "MPAutotypeContext.h"
|
#import "MPAutotypeContext.h"
|
||||||
#import "MPKeyMapper.h"
|
|
||||||
|
|
||||||
#import "KeePassKit/KeePassKit.h"
|
|
||||||
|
|
||||||
#import <Carbon/Carbon.h>
|
|
||||||
#import <CommonCrypto/CommonCrypto.h>
|
|
||||||
|
|
||||||
static CGKeyCode kMPFunctionKeyCodes[] = {
|
|
||||||
kVK_F1,
|
|
||||||
kVK_F2,
|
|
||||||
kVK_F3,
|
|
||||||
kVK_F4,
|
|
||||||
kVK_F5,
|
|
||||||
kVK_F6,
|
|
||||||
kVK_F7,
|
|
||||||
kVK_F8,
|
|
||||||
kVK_F9,
|
|
||||||
kVK_F10,
|
|
||||||
kVK_F11,
|
|
||||||
kVK_F12,
|
|
||||||
kVK_F13,
|
|
||||||
kVK_F14,
|
|
||||||
kVK_F15,
|
|
||||||
kVK_F16,
|
|
||||||
kVK_F17,
|
|
||||||
kVK_F18,
|
|
||||||
kVK_F19
|
|
||||||
};
|
|
||||||
|
|
||||||
static CGKeyCode kMPNumpadKeyCodes[] = {
|
|
||||||
kVK_ANSI_Keypad0,
|
|
||||||
kVK_ANSI_Keypad1,
|
|
||||||
kVK_ANSI_Keypad2,
|
|
||||||
kVK_ANSI_Keypad3,
|
|
||||||
kVK_ANSI_Keypad4,
|
|
||||||
kVK_ANSI_Keypad5,
|
|
||||||
kVK_ANSI_Keypad6,
|
|
||||||
kVK_ANSI_Keypad7,
|
|
||||||
kVK_ANSI_Keypad8,
|
|
||||||
kVK_ANSI_Keypad9
|
|
||||||
};
|
|
||||||
|
|
||||||
@interface NSNumber (AutotypeCommand)
|
|
||||||
|
|
||||||
@property (nonatomic, readonly, assign) CGEventFlags eventFlagsValue;
|
|
||||||
@property (nonatomic, readonly, assign) CGKeyCode keyCodeValue;
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
||||||
@implementation NSNumber (AutotypeCommand)
|
|
||||||
|
|
||||||
- (CGEventFlags)eventFlagsValue {
|
|
||||||
return (CGEventFlags)self.integerValue;
|
|
||||||
}
|
|
||||||
- (CGKeyCode)keyCodeValue {
|
|
||||||
return (CGKeyCode)self.integerValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
||||||
@interface MPAutotypeParserContext : NSObject
|
|
||||||
|
|
||||||
@property (strong) NSMutableArray *commands;
|
|
||||||
@property (copy) NSString *commandString;
|
|
||||||
@property (assign) CGEventFlags activeModifiers;
|
|
||||||
@property (assign) BOOL obfuscate;
|
|
||||||
|
|
||||||
- (instancetype)initWithString:(NSString *)commandString modifiers:(CGEventFlags)modifiers commands:(NSMutableArray *)commands;
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
||||||
@implementation MPAutotypeParserContext
|
|
||||||
|
|
||||||
- (instancetype)initWithString:(NSString *)commandString modifiers:(CGEventFlags)modifiers commands:(NSMutableArray *)commands {
|
|
||||||
self = [super init];
|
|
||||||
if(self) {
|
|
||||||
_commands = commands;
|
|
||||||
_commandString = [commandString copy];
|
|
||||||
_activeModifiers = modifiers;
|
|
||||||
}
|
|
||||||
return self;
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
||||||
@implementation MPAutotypeCommand
|
@implementation MPAutotypeCommand
|
||||||
|
|
||||||
+ (NSDictionary *)_keypressCommands {
|
|
||||||
static NSDictionary *keypressCommands;
|
|
||||||
static dispatch_once_t onceToken;
|
|
||||||
dispatch_once(&onceToken, ^{
|
|
||||||
keypressCommands = @{ kKPKAutotypeBackspace : @(kVK_Delete),
|
|
||||||
//kKPKAutotypeBreak : @0,
|
|
||||||
kKPKAutotypeCapsLock : @(kVK_CapsLock),
|
|
||||||
kKPKAutotypeDelete : @(kVK_ForwardDelete),
|
|
||||||
kKPKAutotypeDown : @(kVK_DownArrow),
|
|
||||||
kKPKAutotypeEnd : @(kVK_End),
|
|
||||||
kKPKAutotypeEnter : @(kVK_Return),
|
|
||||||
kKPKAutotypeEscape : @(kVK_Escape),
|
|
||||||
kKPKAutotypeHelp : @(kVK_Help),
|
|
||||||
kKPKAutotypeHome : @(kVK_Home),
|
|
||||||
//kKPKAutotypeInsert : @(),
|
|
||||||
kKPKAutotypeLeft : @(kVK_LeftArrow),
|
|
||||||
kKPKAutotypeLeftWindows : @(kVK_Command),
|
|
||||||
//kKPKAutotypeNumlock : @(),
|
|
||||||
kKPKAutotypePageDown : @(kVK_PageDown),
|
|
||||||
kKPKAutotypePageUp : @(kVK_PageUp),
|
|
||||||
//kKPKAutotypePrintScreen : @(),
|
|
||||||
kKPKAutotypeRight : @(kVK_RightArrow),
|
|
||||||
kKPKAutotypeRightWindows : @(kVK_Command),
|
|
||||||
//kKPKAutotypeScrollLock : @(),
|
|
||||||
kKPKAutotypeSpace : @(kVK_Space),
|
|
||||||
kKPKAutotypeTab : @(kVK_Tab),
|
|
||||||
kKPKAutotypeUp : @(kVK_UpArrow),
|
|
||||||
kKPKAutotypeWindows : @(kVK_Command)
|
|
||||||
};
|
|
||||||
});
|
|
||||||
return keypressCommands;
|
|
||||||
}
|
|
||||||
/* Commands that are actually just one symbol to be pasted */
|
|
||||||
+ (NSDictionary *)_characterCommands {
|
|
||||||
static NSDictionary *characterCommands;
|
|
||||||
static dispatch_once_t onceToken;
|
|
||||||
dispatch_once(&onceToken, ^{
|
|
||||||
characterCommands = @{
|
|
||||||
kKPKAutotypePlus: @"+",
|
|
||||||
kKPKAutotypeCaret: @"^",
|
|
||||||
kKPKAutotypePercent: @"%",
|
|
||||||
kKPKAutotypeTilde : @"~",
|
|
||||||
kKPKAutotypeRoundBracketLeft : @"(",
|
|
||||||
kKPKAutotypeRoundBracketRight : @")",
|
|
||||||
kKPKAutotypeSquareBracketLeft : @"[",
|
|
||||||
kKPKAutotypeSquareBracketRight : @"]",
|
|
||||||
kKPKAutotypeCurlyBracketLeft: @"{",
|
|
||||||
kKPKAutotypeCurlyBracketRight: @"}"
|
|
||||||
};
|
|
||||||
});
|
|
||||||
return characterCommands;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Mapping for modifier to CGEventFlags.
|
|
||||||
*
|
|
||||||
* @return dictionary with commands as keys and CGEventFlags as wrapped values
|
|
||||||
*/
|
|
||||||
+ (NSDictionary *)_modifierCommands {
|
|
||||||
static NSDictionary *modifierCommands;
|
|
||||||
static dispatch_once_t onceToken;
|
|
||||||
dispatch_once(&onceToken, ^{
|
|
||||||
modifierCommands = @{
|
|
||||||
kKPKAutotypeAlt : @(kCGEventFlagMaskAlternate),
|
|
||||||
kKPKAutotypeControl : @(kCGEventFlagMaskControl),
|
|
||||||
kKPKAutotypeShift : @(kCGEventFlagMaskShift)
|
|
||||||
};
|
|
||||||
});
|
|
||||||
return modifierCommands;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ (NSArray *)commandsForContext:(MPAutotypeContext *)context {
|
+ (NSArray *)commandsForContext:(MPAutotypeContext *)context {
|
||||||
if(!context.valid) {
|
if(!context.valid) {
|
||||||
return nil;
|
return @[];
|
||||||
}
|
}
|
||||||
NSUInteger reserverd = MAX(1,context.normalizedCommand.length / 4);
|
MPAutotypeParser *parser = [[MPAutotypeParser alloc] initWithContext:context];
|
||||||
NSMutableArray *commands = [[NSMutableArray alloc] initWithCapacity:reserverd];
|
return parser.commands;
|
||||||
NSMutableArray __block *commandRanges = [[NSMutableArray alloc] initWithCapacity:reserverd];
|
|
||||||
NSRegularExpression *commandRegExp = [[NSRegularExpression alloc] initWithPattern:@"\\{[^\\{\\}]+\\}" options:NSRegularExpressionCaseInsensitive error:0];
|
|
||||||
NSAssert(commandRegExp, @"RegExp is constant. Has to work all the time");
|
|
||||||
[commandRegExp enumerateMatchesInString:context.evaluatedCommand options:0 range:NSMakeRange(0, context.evaluatedCommand.length) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
|
|
||||||
@autoreleasepool {
|
|
||||||
[commandRanges addObject:[NSValue valueWithRange:result.range]];
|
|
||||||
}
|
|
||||||
}];
|
|
||||||
|
|
||||||
/* add range at the end as terminator */
|
|
||||||
[commandRanges addObject:[NSValue valueWithRange:NSMakeRange(context.evaluatedCommand.length, 0)]];
|
|
||||||
|
|
||||||
NSUInteger location = 0;
|
|
||||||
CGEventFlags modifiers = 0;
|
|
||||||
|
|
||||||
for(NSValue *rangeValue in commandRanges) {
|
|
||||||
NSRange commandRange = rangeValue.rangeValue;
|
|
||||||
/* All non-commands will get translated into key presses if possible, otherwiese into paste commands */
|
|
||||||
if(location < commandRange.location) {
|
|
||||||
/* If there were modifiers we need to use the next single stroke and update the modifier command */
|
|
||||||
if(modifiers) {
|
|
||||||
NSString *modifiedKey = [context.evaluatedCommand substringWithRange:NSMakeRange(location, 1)];
|
|
||||||
MPAutotypeKeyPress *press = [[MPAutotypeKeyPress alloc] initWithModifierMask:modifiers character:modifiedKey];
|
|
||||||
if(press) {
|
|
||||||
[commands addObject:press];
|
|
||||||
}
|
|
||||||
modifiers = 0;
|
|
||||||
location++;
|
|
||||||
}
|
|
||||||
NSRange textRange = NSMakeRange(location, commandRange.location - location);
|
|
||||||
if(textRange.length > 0) {
|
|
||||||
NSString *textValue = [context.evaluatedCommand substringWithRange:textRange];
|
|
||||||
[self _appendTextCommandWithContent:textValue toCommands:commands obfusctate:context.entry.autotype.obfuscateDataTransfer];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* Test for modifer Key */
|
|
||||||
NSString *commandString = [context.evaluatedCommand substringWithRange:commandRange];
|
|
||||||
/* append commands for non-modifer keys */
|
|
||||||
if(![self _updateModifierMask:&modifiers forCommand:commandString]) {
|
|
||||||
[self _appendCommandForString:commandString toCommands:commands activeModifer:modifiers obfuscate:context.entry.autotype.obfuscateDataTransfer];
|
|
||||||
modifiers = 0; // Reset the modifers;
|
|
||||||
}
|
|
||||||
location = commandRange.location + commandRange.length;
|
|
||||||
}
|
|
||||||
return commands;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ (void)_appendTextCommandWithContent:(NSString *)pasteContent toCommands:(NSMutableArray *)commands obfusctate:(BOOL)obfuscate {
|
|
||||||
if(obfuscate) {
|
|
||||||
[self _appendObfuscatedPasteCommandForContent:pasteContent toCommands:commands];
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
MPAutotypePaste *pasteCommand = [[MPAutotypePaste alloc] initWithString:pasteContent];
|
|
||||||
[commands addObject:pasteCommand];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+ (void)_appendObfuscatedPasteCommandForContent:(NSString *)pasteContent toCommands:(NSMutableArray *)commands {
|
|
||||||
if(!pasteContent) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
@autoreleasepool {
|
|
||||||
/*
|
|
||||||
* obfuscate entered data using Two-Channel Auto-Type Obfuscation
|
|
||||||
* refer to KeePass documentation for more information
|
|
||||||
* http://keepass.info/help/v2/autotype_obfuscation.html
|
|
||||||
*/
|
|
||||||
|
|
||||||
NSMutableString *paste = [@"" mutableCopy];
|
|
||||||
NSMutableArray<NSValue *> *typeKeys = [[NSMutableArray alloc] init];
|
|
||||||
|
|
||||||
/*
|
|
||||||
* seed the random number generator using the first 4 bytes of the string's SHA1
|
|
||||||
* this ensures that you get the same string split every time for a given string
|
|
||||||
*/
|
|
||||||
const char *cstr = [pasteContent cStringUsingEncoding:NSUTF8StringEncoding];
|
|
||||||
NSData *data = [NSData dataWithBytes:cstr length:pasteContent.length];
|
|
||||||
uint8_t digest[CC_SHA1_DIGEST_LENGTH];
|
|
||||||
CC_SHA1(data.bytes, (unsigned int)data.length, digest);
|
|
||||||
srandom(*((unsigned int*)digest));
|
|
||||||
|
|
||||||
for (NSUInteger i = 0; i < pasteContent.length; i++) {
|
|
||||||
NSUInteger part = random() % 2;
|
|
||||||
|
|
||||||
NSString *key = [pasteContent substringWithRange:NSMakeRange(i, 1)];
|
|
||||||
MPModifiedKey mKey = [MPKeyMapper modifiedKeyForCharacter:key];
|
|
||||||
/* append unknown keycodes to the paste since we can't type them */
|
|
||||||
if (part == 0 || mKey.keyCode == kMPUnknownKeyCode) {
|
|
||||||
[paste appendString:key];
|
|
||||||
[typeKeys addObject:[NSValue valueWithModifiedKey:MPMakeModifiedKey(0, kVK_RightArrow)]];
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
[typeKeys addObject:[NSValue valueWithModifiedKey:mKey ]];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* move to the end of the content */
|
|
||||||
for (NSUInteger i = typeKeys.count; i < pasteContent.length; i++) {
|
|
||||||
[typeKeys addObject:[NSValue valueWithModifiedKey:MPMakeModifiedKey(0, kVK_RightArrow)]];
|
|
||||||
}
|
|
||||||
|
|
||||||
/* add paste command */
|
|
||||||
MPAutotypePaste *pasteCommand = [[MPAutotypePaste alloc] initWithString:paste];
|
|
||||||
[commands addObject:pasteCommand];
|
|
||||||
|
|
||||||
/* add keypress commands */
|
|
||||||
if(typeKeys.count > 0) {
|
|
||||||
for(NSUInteger i = 0; i < paste.length; i++) {
|
|
||||||
[commands addObject:[[MPAutotypeKeyPress alloc] initWithModifiedKey:MPMakeModifiedKey(0, kVK_LeftArrow)]];
|
|
||||||
}
|
|
||||||
for(NSUInteger i = 0; i < typeKeys.count; i++) {
|
|
||||||
[commands addObject:[[MPAutotypeKeyPress alloc] initWithModifiedKey:typeKeys[i].modifiedKeyValue]];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+ (void)_appendCommandForString:(NSString *)commandString toCommands:(NSMutableArray *)commands activeModifer:(CGEventFlags)flags obfuscate:(BOOL)obfuscate {
|
|
||||||
if(!commandString || !commandString.length) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
/* Simple Special Press */
|
|
||||||
NSString *uppercaseCommand = commandString.uppercaseString;
|
|
||||||
NSNumber *keyCodeNumber = [self _keypressCommands][uppercaseCommand];
|
|
||||||
if(nil != keyCodeNumber) {
|
|
||||||
MPAutotypeKeyPress *press = [[MPAutotypeKeyPress alloc] initWithModifiedKey:MPMakeModifiedKey(flags, keyCodeNumber.keyCodeValue)];
|
|
||||||
if(press) {
|
|
||||||
[commands addObject:press];
|
|
||||||
}
|
|
||||||
return; // Done
|
|
||||||
}
|
|
||||||
/* {PLUS}, {TILDE}, {PERCENT}, {+}, etc */
|
|
||||||
NSString *character = [self _characterCommands][uppercaseCommand];
|
|
||||||
if(character) {
|
|
||||||
MPAutotypeKeyPress *press = [[MPAutotypeKeyPress alloc] initWithModifierMask:flags character:character];
|
|
||||||
if(press) {
|
|
||||||
[commands addObject:press];
|
|
||||||
}
|
|
||||||
return; // Done
|
|
||||||
}
|
|
||||||
|
|
||||||
/* F1-16 */
|
|
||||||
NSRegularExpression *functionKeyRegExp = [[NSRegularExpression alloc] initWithPattern:kKPKAutotypeFunctionMaskRegularExpression options:NSRegularExpressionCaseInsensitive error:0];
|
|
||||||
NSTextCheckingResult *functionResult = [functionKeyRegExp firstMatchInString:commandString options:0 range:NSMakeRange(0, commandString.length)];
|
|
||||||
if(functionResult && functionResult.numberOfRanges == 2) {
|
|
||||||
NSString *numberString = [commandString substringWithRange:[functionResult rangeAtIndex:1]];
|
|
||||||
NSScanner *numberScanner = [[NSScanner alloc] initWithString:numberString];
|
|
||||||
NSInteger functionNumber = 0;
|
|
||||||
if([numberScanner scanInteger:&functionNumber] && functionNumber >= 1 && functionNumber <= 19) {
|
|
||||||
MPAutotypeKeyPress *press = [[MPAutotypeKeyPress alloc] initWithModifiedKey:MPMakeModifiedKey(flags, kMPFunctionKeyCodes[functionNumber-1])];
|
|
||||||
if(press) {
|
|
||||||
[commands addObject:press];
|
|
||||||
}
|
|
||||||
return; // Done
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Numpad0-9 */
|
|
||||||
NSRegularExpression *numpadKeyRegExp = [[NSRegularExpression alloc] initWithPattern:kKPKAutotypeKeypaddNumberMaskRegularExpression options:NSRegularExpressionCaseInsensitive error:0];
|
|
||||||
NSTextCheckingResult *numpadResult = [numpadKeyRegExp firstMatchInString:commandString options:0 range:NSMakeRange(0, commandString.length)];
|
|
||||||
if(numpadResult && numpadResult.numberOfRanges == 2) {
|
|
||||||
NSString *numberString = [commandString substringWithRange:[numpadResult rangeAtIndex:1]];
|
|
||||||
NSScanner *numberScanner = [[NSScanner alloc] initWithString:numberString];
|
|
||||||
NSInteger numpadNumber = 0;
|
|
||||||
if([numberScanner scanInteger:&numpadNumber] && numpadNumber >= 0 && numpadNumber <= 9) {
|
|
||||||
MPAutotypeKeyPress *press = [[MPAutotypeKeyPress alloc] initWithModifiedKey:MPMakeModifiedKey(flags, kMPNumpadKeyCodes[numpadNumber])];
|
|
||||||
if(press) {
|
|
||||||
[commands addObject:press];
|
|
||||||
}
|
|
||||||
return; // Done
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Clearfield */
|
|
||||||
if([kKPKAutotypeClearField isEqualToString:uppercaseCommand]) {
|
|
||||||
[commands addObject:[[MPAutotypeClear alloc] init]];
|
|
||||||
return; // Done
|
|
||||||
}
|
|
||||||
// TODO: add {APPLICATION <appname>}
|
|
||||||
/* Delay */
|
|
||||||
NSString *delayPattern = [[NSString alloc] initWithFormat:@"\\{(%@|%@)[ |=]+([0-9]+)\\}",
|
|
||||||
kKPKAutotypeDelay,
|
|
||||||
kKPKAutotypeVirtualKey/*,
|
|
||||||
kKPKAutotypeVirtualExtendedKey,
|
|
||||||
kKPKAutotypeVirtualNonExtendedKey*/];
|
|
||||||
NSRegularExpression *delayRegExp = [[NSRegularExpression alloc] initWithPattern:delayPattern options:NSRegularExpressionCaseInsensitive error:0];
|
|
||||||
NSAssert(delayRegExp, @"Regex for delay should work!");
|
|
||||||
NSTextCheckingResult *result = [delayRegExp firstMatchInString:commandString options:0 range:NSMakeRange(0, commandString.length)];
|
|
||||||
if(result && (result.numberOfRanges == 3)) {
|
|
||||||
NSString *uppercaseCommand = [[commandString substringWithRange:[result rangeAtIndex:1]] uppercaseString];
|
|
||||||
NSString *valueString = [commandString substringWithRange:[result rangeAtIndex:2]];
|
|
||||||
NSScanner *numberScanner = [[NSScanner alloc] initWithString:valueString];
|
|
||||||
NSInteger value;
|
|
||||||
if([numberScanner scanInteger:&value]) {
|
|
||||||
if([kKPKAutotypeDelay isEqualToString:uppercaseCommand]) {
|
|
||||||
if(MAX(0, value) <= 0) {
|
|
||||||
return; // Value too low, just skipp
|
|
||||||
}
|
|
||||||
[commands addObject:[[MPAutotypeDelay alloc] initWithDelay:value]];
|
|
||||||
return; // Done
|
|
||||||
}
|
|
||||||
else if([kKPKAutotypeVirtualKey isEqualToString:uppercaseCommand]) {
|
|
||||||
NSLog(@"Virtual key strokes aren't supported yet!");
|
|
||||||
// TODO add key
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
NSLog(@"Unable to parse value part in command:%@", commandString);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
/* Fallback */
|
|
||||||
[self _appendTextCommandWithContent:commandString toCommands:commands obfusctate:obfuscate];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+ (BOOL)_updateModifierMask:(CGEventFlags *)mask forCommand:(NSString *)commandString {
|
|
||||||
NSAssert(mask != NULL, @"Input pointer missing!");
|
|
||||||
if(mask == NULL) {
|
|
||||||
return NO;
|
|
||||||
}
|
|
||||||
NSNumber *flagNumber = [self _modifierCommands][commandString.uppercaseString];
|
|
||||||
if(!flagNumber) {
|
|
||||||
return NO; // No modifier key, just leave
|
|
||||||
}
|
|
||||||
CGEventFlags flags = flagNumber.eventFlagsValue;
|
|
||||||
*mask |= flags;
|
|
||||||
return YES;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)sendPressKey:(MPModifiedKey)key {
|
|
||||||
[self sendPressKey:key.keyCode modifierFlags:key.modifier];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)sendPressKey:(CGKeyCode)keyCode modifierFlags:(CGEventFlags)flags {
|
|
||||||
|
|
||||||
CGEventSourceRef eventSource = CGEventSourceCreate(kCGEventSourceStatePrivate);
|
|
||||||
if(NULL == eventSource) {
|
|
||||||
return; // We could not create our own source, abort!
|
|
||||||
}
|
|
||||||
CGEventRef pressKey = CGEventCreateKeyboardEvent (eventSource, keyCode, YES);
|
|
||||||
CGEventRef releaseKey = CGEventCreateKeyboardEvent (eventSource, keyCode, NO);
|
|
||||||
|
|
||||||
/*
|
|
||||||
Set the modifiers to the ones we want
|
|
||||||
We use our private event source so no modifier reset should be needed
|
|
||||||
*/
|
|
||||||
CGEventSetFlags(pressKey, flags);
|
|
||||||
CGEventSetFlags(releaseKey, flags);
|
|
||||||
|
|
||||||
/* Send the event */
|
|
||||||
CGEventPost(kCGHIDEventTap, pressKey);
|
|
||||||
usleep(0.05 * NSEC_PER_MSEC);
|
|
||||||
CGEventPost(kCGHIDEventTap, releaseKey);
|
|
||||||
|
|
||||||
CFRelease(pressKey);
|
|
||||||
CFRelease(releaseKey);
|
|
||||||
CFRelease(eventSource);
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)sendPasteKeyCode {
|
|
||||||
MPModifiedKey mKey = [MPKeyMapper modifiedKeyForCharacter:@"v"];
|
|
||||||
if(mKey.keyCode == kMPUnknownKeyCode) {
|
|
||||||
return; // We did not find a mapping for "V"
|
|
||||||
}
|
|
||||||
[self sendPressKey:mKey.keyCode modifierFlags:kCGEventFlagMaskCommand];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)execute {
|
- (void)execute {
|
||||||
|
|||||||
@@ -41,11 +41,16 @@
|
|||||||
@property (nonatomic, readonly, copy) NSString *command;
|
@property (nonatomic, readonly, copy) NSString *command;
|
||||||
@property (nonatomic, readonly, copy) NSString *normalizedCommand;
|
@property (nonatomic, readonly, copy) NSString *normalizedCommand;
|
||||||
/**
|
/**
|
||||||
* Command with placeholders and references resolved
|
* Command with placeholders and references resolved.
|
||||||
|
* This will evaluate any placeholder regardless of side-effects.
|
||||||
|
* If you need to evaluat the command without interaction, you should call kpk_finalValueForEntry:options: directly on the normalizedCommand.
|
||||||
*/
|
*/
|
||||||
@property (nonatomic, readonly, copy) NSString *evaluatedCommand;
|
@property (nonatomic, readonly, copy) NSString *evaluatedCommand;
|
||||||
/**
|
/**
|
||||||
@return command with placeholders and references resolved but masked password placeholder
|
@return command with placeholders and references resolved but masked password placeholder.
|
||||||
|
|
||||||
|
This will call kpk_finalValueForEntry:options on the normalizedCommand with options set to KPKCommandEvaluationOptionSkipUserInteraction and KPKCommandEvaluationOptionReadOnly.
|
||||||
|
This way it is ensured that the value can be used in UI without any intereference or data changes!
|
||||||
*/
|
*/
|
||||||
@property (nonatomic, readonly, copy) NSString *maskedEvaluatedCommand;
|
@property (nonatomic, readonly, copy) NSString *maskedEvaluatedCommand;
|
||||||
/**
|
/**
|
||||||
@@ -57,7 +62,7 @@
|
|||||||
* Designated initializer
|
* Designated initializer
|
||||||
*
|
*
|
||||||
* @param entry Entry to use
|
* @param entry Entry to use
|
||||||
* @param sequence Keystroke Sequence to use
|
* @param sequence Keystroke Sequence to use, this is usefull to override any sequences stored in the entry
|
||||||
*
|
*
|
||||||
* @return AutotypeSequnce with the entry and keystroke in places
|
* @return AutotypeSequnce with the entry and keystroke in places
|
||||||
*/
|
*/
|
||||||
@@ -65,4 +70,6 @@
|
|||||||
- (instancetype)initWithDefaultSequenceForEntry:(KPKEntry *)entry;
|
- (instancetype)initWithDefaultSequenceForEntry:(KPKEntry *)entry;
|
||||||
- (instancetype)initWithWindowAssociation:(KPKWindowAssociation *)association;
|
- (instancetype)initWithWindowAssociation:(KPKWindowAssociation *)association;
|
||||||
|
|
||||||
|
- (BOOL)isEqualToAutotypeContext:(MPAutotypeContext *)context;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -57,6 +57,19 @@
|
|||||||
return copy;
|
return copy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (BOOL)isEqual:(id)object {
|
||||||
|
return [self isEqualToAutotypeContext:object];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (BOOL)isEqualToAutotypeContext:(MPAutotypeContext *)context {
|
||||||
|
if(![context isKindOfClass:self.class]) {
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
|
if(KPKComparsionDifferent == [self.entry compareToEntry:context.entry]) {
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
|
return [self.normalizedCommand isEqualToString:context.normalizedCommand];
|
||||||
|
}
|
||||||
|
|
||||||
- (BOOL)valid {
|
- (BOOL)valid {
|
||||||
return (self.normalizedCommand != nil);
|
return (self.normalizedCommand != nil);
|
||||||
@@ -73,7 +86,7 @@
|
|||||||
NSString *passwordPlaceholder = [NSString stringWithFormat:@"{%@}",kKPKPasswordKey];
|
NSString *passwordPlaceholder = [NSString stringWithFormat:@"{%@}",kKPKPasswordKey];
|
||||||
NSString *normalized = self.normalizedCommand;
|
NSString *normalized = self.normalizedCommand;
|
||||||
NSString *masked = [normalized stringByReplacingOccurrencesOfString:passwordPlaceholder withString:@"•••" options:NSCaseInsensitiveSearch range:NSMakeRange(0, normalized.length)];
|
NSString *masked = [normalized stringByReplacingOccurrencesOfString:passwordPlaceholder withString:@"•••" options:NSCaseInsensitiveSearch range:NSMakeRange(0, normalized.length)];
|
||||||
return [[masked kpk_finalValueForEntry:self.entry] copy];
|
return [[masked kpk_finalValueForEntry:self.entry options:KPKCommandEvaluationOptionSkipUserInteraction|KPKCommandEvaluationOptionReadOnly] copy];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSString *)description {
|
- (NSString *)description {
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
@class DDHotKey;
|
@class DDHotKey;
|
||||||
@class KPKEntry;
|
@class KPKEntry;
|
||||||
@class MPAutotypeContext;
|
@class MPAutotypeContext;
|
||||||
|
@class MPAutotypeExecutionContext;
|
||||||
/**
|
/**
|
||||||
* 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
|
||||||
*/
|
*/
|
||||||
@@ -34,11 +34,16 @@
|
|||||||
@property (strong) IBOutlet NSWindow *matchSelectionWindow;
|
@property (strong) IBOutlet NSWindow *matchSelectionWindow;
|
||||||
@property (weak) IBOutlet NSPopUpButton *matchSelectionButton;
|
@property (weak) IBOutlet NSPopUpButton *matchSelectionButton;
|
||||||
@property (readonly, strong) DDHotKey *registredHotKey;
|
@property (readonly, strong) DDHotKey *registredHotKey;
|
||||||
|
@property (readonly, strong, class) MPAutotypeDaemon *defaultDaemon;
|
||||||
|
@property (nonatomic, readonly) BOOL autotypeSupported; // YES if the system allows for Autotype. NO if the user has denied this.
|
||||||
|
|
||||||
+ (instancetype)defaultDaemon;
|
|
||||||
- (instancetype)init NS_UNAVAILABLE;
|
- (instancetype)init NS_UNAVAILABLE;
|
||||||
|
|
||||||
|
- (void)checkForAccessibiltyPermissions;
|
||||||
|
- (void)openAccessibiltyPreferences;
|
||||||
|
|
||||||
- (void)performAutotypeForEntry:(KPKEntry *)entry;
|
- (void)performAutotypeForEntry:(KPKEntry *)entry;
|
||||||
|
- (void)performAutotypeForEntry:(KPKEntry *)entry overrideSequence:(NSString *)sequence;
|
||||||
- (void)selectAutotypeCandiate:(MPAutotypeContext *)context;
|
- (void)selectAutotypeCandiate:(MPAutotypeContext *)context;
|
||||||
- (void)cancelAutotypeCandidateSelection;
|
- (void)cancelAutotypeCandidateSelection;
|
||||||
|
|
||||||
|
|||||||
@@ -22,23 +22,22 @@
|
|||||||
|
|
||||||
#import "MPAutotypeDaemon.h"
|
#import "MPAutotypeDaemon.h"
|
||||||
#import "MPDocument.h"
|
#import "MPDocument.h"
|
||||||
|
#import "MPDocumentWindowController.h"
|
||||||
#import "MPAutotypeCommand.h"
|
#import "MPAutotypeCommand.h"
|
||||||
#import "MPAutotypeContext.h"
|
#import "MPAutotypeContext.h"
|
||||||
#import "MPAutotypePaste.h"
|
#import "MPAutotypePaste.h"
|
||||||
|
|
||||||
#import "MPPasteBoardController.h"
|
#import "MPPasteBoardController.h"
|
||||||
#import "MPSettingsHelper.h"
|
#import "MPSettingsHelper.h"
|
||||||
|
#import "MPAutotypeCandidateSelectionViewController.h"
|
||||||
|
#import "MPUserNotificationCenterDelegate.h"
|
||||||
|
|
||||||
#import "NSApplication+MPAdditions.h"
|
#import "NSApplication+MPAdditions.h"
|
||||||
|
#import "NSUserNotification+MPAdditions.h"
|
||||||
#import "MPAutotypeCandidateSelectionViewController.h"
|
|
||||||
|
|
||||||
#import "KeePassKit/KeePassKit.h"
|
|
||||||
|
|
||||||
#import "DDHotKeyCenter.h"
|
#import "DDHotKeyCenter.h"
|
||||||
#import "DDHotKey+MacPassAdditions.h"
|
#import "DDHotKey+MacPassAdditions.h"
|
||||||
|
|
||||||
|
#import "KeePassKit/KeePassKit.h"
|
||||||
#import <Carbon/Carbon.h>
|
#import <Carbon/Carbon.h>
|
||||||
|
|
||||||
NSString *const kMPWindowTitleKey = @"kMPWindowTitleKey";
|
NSString *const kMPWindowTitleKey = @"kMPWindowTitleKey";
|
||||||
@@ -52,11 +51,14 @@ NSString *const kMPProcessIdentifierKey = @"kMPProcessIdentifierKey";
|
|||||||
@property (assign) pid_t targetPID; // The pid of the process we want to sent commands to
|
@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 (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;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@implementation MPAutotypeDaemon
|
@implementation MPAutotypeDaemon
|
||||||
|
|
||||||
|
@dynamic autotypeSupported;
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
#pragma mark Lifecylce
|
#pragma mark Lifecylce
|
||||||
|
|
||||||
@@ -80,17 +82,18 @@ static MPAutotypeDaemon *_sharedInstance;
|
|||||||
if (self) {
|
if (self) {
|
||||||
_enabled = NO;
|
_enabled = NO;
|
||||||
_targetPID = -1;
|
_targetPID = -1;
|
||||||
|
_userActionRequested = NSDate.distantPast.timeIntervalSinceReferenceDate;
|
||||||
[self bind:NSStringFromSelector(@selector(enabled))
|
[self bind:NSStringFromSelector(@selector(enabled))
|
||||||
toObject:[NSUserDefaultsController sharedUserDefaultsController]
|
toObject:NSUserDefaultsController.sharedUserDefaultsController
|
||||||
withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyEnableGlobalAutotype]
|
withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyEnableGlobalAutotype]
|
||||||
options:nil];
|
options:nil];
|
||||||
|
|
||||||
[self bind:NSStringFromSelector(@selector(hotKeyData))
|
[self bind:NSStringFromSelector(@selector(hotKeyData))
|
||||||
toObject:[NSUserDefaultsController sharedUserDefaultsController]
|
toObject:NSUserDefaultsController.sharedUserDefaultsController
|
||||||
withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyGlobalAutotypeKeyDataKey]
|
withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyGlobalAutotypeKeyDataKey]
|
||||||
options:nil];
|
options:nil];
|
||||||
|
|
||||||
[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self
|
[NSWorkspace.sharedWorkspace.notificationCenter addObserver:self
|
||||||
selector:@selector(_didDeactivateApplication:)
|
selector:@selector(_didDeactivateApplication:)
|
||||||
name:NSWorkspaceDidDeactivateApplicationNotification
|
name:NSWorkspaceDidDeactivateApplicationNotification
|
||||||
object:nil];
|
object:nil];
|
||||||
@@ -99,14 +102,22 @@ static MPAutotypeDaemon *_sharedInstance;
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (void)dealloc {
|
- (void)dealloc {
|
||||||
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
[NSNotificationCenter.defaultCenter removeObserver:self];
|
||||||
[[[NSWorkspace sharedWorkspace] notificationCenter] removeObserver:self];
|
[NSWorkspace.sharedWorkspace.notificationCenter removeObserver:self];
|
||||||
[self unbind:NSStringFromSelector(@selector(enabled))];
|
[self unbind:NSStringFromSelector(@selector(enabled))];
|
||||||
[self unbind:NSStringFromSelector(@selector(hotKeyData))];
|
[self unbind:NSStringFromSelector(@selector(hotKeyData))];
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
#pragma mark Properties
|
#pragma mark Properties
|
||||||
|
- (BOOL)autotypeSupported {
|
||||||
|
if(@available(macOS 10.14, *)) {
|
||||||
|
return AXIsProcessTrusted();
|
||||||
|
}
|
||||||
|
/* macOS 10.13 and lower allows us to send key events regardless of accessibilty trust */
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
|
||||||
- (void)setEnabled:(BOOL)enabled {
|
- (void)setEnabled:(BOOL)enabled {
|
||||||
if(_enabled != enabled) {
|
if(_enabled != enabled) {
|
||||||
_enabled = enabled;
|
_enabled = enabled;
|
||||||
@@ -124,9 +135,53 @@ static MPAutotypeDaemon *_sharedInstance;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)checkForAccessibiltyPermissions {
|
||||||
|
if(!self.enabled) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
BOOL hideAlert = NO;
|
||||||
|
if(nil != [NSUserDefaults.standardUserDefaults objectForKey:kMPSettingsKeyAutotypeHideAccessibiltyWarning]) {
|
||||||
|
hideAlert = [NSUserDefaults.standardUserDefaults boolForKey:kMPSettingsKeyAutotypeHideAccessibiltyWarning];
|
||||||
|
}
|
||||||
|
if(hideAlert || self.autotypeSupported) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
NSAlert *alert = [[NSAlert alloc] init];
|
||||||
|
alert.alertStyle = NSWarningAlertStyle;
|
||||||
|
alert.messageText = NSLocalizedString(@"ALERT_AUTOTYPE_MISSING_ACCESSIBILTY_PERMISSIONS_MESSAGE_TEXT", @"Alert message displayed when Autotype performs self check and lacks accessibilty permissions");
|
||||||
|
alert.informativeText = NSLocalizedString(@"ALERT_AUTOTYPE_MISSING_ACCESSIBILTY_PERMISSIONS_INFORMATIVE_TEXT", @"Alert informative text displayed when Autotype performs self check and lacks accessibilty permissions");
|
||||||
|
alert.showsSuppressionButton = YES;
|
||||||
|
[alert addButtonWithTitle:NSLocalizedString(@"ALERT_AUTOTYPE_MISSING_ACCESSIBILTY_PERMISSIONS_BUTTON_OK", @"Button in dialog to leave autotype disabled and continiue!")];
|
||||||
|
[alert addButtonWithTitle:NSLocalizedString(@"ALERT_AUTOTYPE_MISSING_ACCESSIBILTY_PERMISSIONS_BUTTON_OPEN_PREFERENCES", @"Button in dialog to open accessibilty preferences pane!")];
|
||||||
|
NSModalResponse returnCode = [alert runModal];
|
||||||
|
BOOL suppressWarning = (alert.suppressionButton.state == NSOnState);
|
||||||
|
[NSUserDefaults.standardUserDefaults setBool:suppressWarning forKey:kMPSettingsKeyAutotypeHideAccessibiltyWarning];
|
||||||
|
switch(returnCode) {
|
||||||
|
case NSAlertFirstButtonReturn: {
|
||||||
|
/* ok, ignore */
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case NSAlertSecondButtonReturn:
|
||||||
|
/* open prefs */
|
||||||
|
[self openAccessibiltyPreferences];
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)openAccessibiltyPreferences {
|
||||||
|
[NSWorkspace.sharedWorkspace openURL:[NSURL URLWithString:@"x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility"]];
|
||||||
|
}
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
#pragma mark Autotype Invocation
|
#pragma mark Autotype Invocation
|
||||||
- (void)performAutotypeForEntry:(KPKEntry *)entry {
|
- (void)performAutotypeForEntry:(KPKEntry *)entry {
|
||||||
|
[self performAutotypeForEntry:entry overrideSequence:nil];
|
||||||
|
}
|
||||||
|
- (void)performAutotypeForEntry:(KPKEntry *)entry overrideSequence:(NSString *)sequence {
|
||||||
if(entry) {
|
if(entry) {
|
||||||
[self _updateTargeInformationForApplication:self.previousApplication];
|
[self _updateTargeInformationForApplication:self.previousApplication];
|
||||||
[self _performAutotypeForEntry:entry];
|
[self _performAutotypeForEntry:entry];
|
||||||
@@ -134,7 +189,7 @@ static MPAutotypeDaemon *_sharedInstance;
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (void)_didPressHotKey {
|
- (void)_didPressHotKey {
|
||||||
[self _updateTargetInfoForFrontMostApplication];
|
[self _updateTargetInformationForFrontMostApplication];
|
||||||
[self _performAutotypeForEntry:nil];
|
[self _performAutotypeForEntry:nil];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -158,21 +213,37 @@ static MPAutotypeDaemon *_sharedInstance;
|
|||||||
#pragma mark Autotype Execution
|
#pragma mark Autotype Execution
|
||||||
|
|
||||||
- (void)_performAutotypeForEntry:(KPKEntry *)entryOrNil {
|
- (void)_performAutotypeForEntry:(KPKEntry *)entryOrNil {
|
||||||
NSInteger pid = [NSProcessInfo processInfo].processIdentifier;
|
/*if(!self.autotypeSupported) {
|
||||||
|
NSUserNotification *notification = [[NSUserNotification alloc] init];
|
||||||
|
notification.title = NSApp.applicationName;
|
||||||
|
notification.informativeText = NSLocalizedString(@"AUTOTYPE_NOTIFICATION_MACPASS_HAS_NO_ACCESSIBILTY_PERMISSIONS", "Notification: Autotype failed, MacPass has no permission to send key strokes");
|
||||||
|
notification.actionButtonTitle = NSLocalizedString(@"OPEN_PREFERENCES", "Action button in Notification to show the Accessibilty preferences");
|
||||||
|
notification.userInfo = @{ MPUserNotificationTypeKey: MPUserNotificationTypeShowAccessibiltyPreferences };
|
||||||
|
notification.showsButtons = YES;
|
||||||
|
[NSUserNotificationCenter.defaultUserNotificationCenter deliverNotification:notification];
|
||||||
|
return;
|
||||||
|
}*/
|
||||||
|
NSInteger pid = NSProcessInfo.processInfo.processIdentifier;
|
||||||
if(self.targetPID == pid) {
|
if(self.targetPID == pid) {
|
||||||
return; // We do not perform Autotype on ourselves
|
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 = NSApp.applicationName;
|
||||||
notification.informativeText = NSLocalizedString(@"AUTOTYPE_OVERLAY_NO_DOCUMENTS", "Notification: Autotype failed, no documents are open");
|
notification.informativeText = NSLocalizedString(@"AUTOTYPE_OVERLAY_NO_DOCUMENTS", "Notification: Autotype failed, no documents are open");
|
||||||
[[NSUserNotificationCenter defaultUserNotificationCenter] deliverNotification:notification];
|
notification.actionButtonTitle = NSLocalizedString(@"OPEN_DOCUMENT", "Action button in Notification to open a document");
|
||||||
return;
|
notification.userInfo = @{ MPUserNotificationTypeKey: MPUserNotificationTypeAutotypeOpenDocumentRequest };
|
||||||
|
notification.showsButtons = YES;
|
||||||
|
[NSUserNotificationCenter.defaultUserNotificationCenter deliverNotification:notification];
|
||||||
|
self.userActionRequested = NSDate.date.timeIntervalSinceReferenceDate;
|
||||||
|
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didUnlockDatabase:) name:MPDocumentDidUnlockDatabaseNotification object:nil];
|
||||||
|
return; // Unlock should trigger autotype
|
||||||
}
|
}
|
||||||
|
|
||||||
NSPredicate *filterPredicate = [NSPredicate predicateWithBlock:^BOOL(id _Nonnull evaluatedObject, NSDictionary<NSString *,id> * _Nullable bindings) {
|
NSPredicate *filterPredicate = [NSPredicate predicateWithBlock:^BOOL(id _Nonnull evaluatedObject, NSDictionary<NSString *,id> * _Nullable bindings) {
|
||||||
MPDocument *document = evaluatedObject;
|
MPDocument *document = evaluatedObject;
|
||||||
return !document.encrypted;}];
|
return !document.encrypted;}];
|
||||||
@@ -182,8 +253,12 @@ static MPAutotypeDaemon *_sharedInstance;
|
|||||||
[NSApp activateIgnoringOtherApps:YES];
|
[NSApp activateIgnoringOtherApps:YES];
|
||||||
[NSApp.mainWindow makeKeyAndOrderFront:self];
|
[NSApp.mainWindow makeKeyAndOrderFront:self];
|
||||||
/* show the actual document window to the user */
|
/* show the actual document window to the user */
|
||||||
[documents.firstObject showWindows];
|
MPDocument *document = documents.firstObject;
|
||||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_didUnlockDatabase:) name:MPDocumentDidUnlockDatabaseNotification object:nil];
|
[document showWindows];
|
||||||
|
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")];
|
||||||
|
self.userActionRequested = NSDate.date.timeIntervalSinceReferenceDate;
|
||||||
|
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didUnlockDatabase:) name:MPDocumentDidUnlockDatabaseNotification object:nil];
|
||||||
return; // wait for the unlock to happen
|
return; // wait for the unlock to happen
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -195,13 +270,14 @@ static MPAutotypeDaemon *_sharedInstance;
|
|||||||
if(!entryOrNil) {
|
if(!entryOrNil) {
|
||||||
NSUserNotification *notification = [[NSUserNotification alloc] init];
|
NSUserNotification *notification = [[NSUserNotification alloc] init];
|
||||||
notification.title = NSApp.applicationName;
|
notification.title = NSApp.applicationName;
|
||||||
|
notification.userInfo = @{ MPUserNotificationTypeKey: MPUserNotificationTypeAutotypeFeedback };
|
||||||
if(context) {
|
if(context) {
|
||||||
notification.informativeText = NSLocalizedString(@"AUTOTYPE_OVERLAY_SINGLE_MATCH", "Notification: Autotype found a single match.");
|
notification.informativeText = [NSString stringWithFormat:NSLocalizedString(@"AUTOTYPE_OVERLAY_SINGLE_MATCH_FOR_%@", "Notification: Autotype found a single match for %@ (string placeholder)."), self.targetWindowTitle];
|
||||||
}
|
}
|
||||||
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_OVERLAY_NO_MATCH_FOR_%@", "Noticiation: Autotype failed to find a match for %@ (string placeholder)"), self.targetWindowTitle];
|
||||||
}
|
}
|
||||||
[[NSUserNotificationCenter defaultUserNotificationCenter] deliverNotification:notification];
|
[NSUserNotificationCenter.defaultUserNotificationCenter deliverNotification:notification];
|
||||||
}
|
}
|
||||||
[self _performAutotypeForContext:context];
|
[self _performAutotypeForContext:context];
|
||||||
}
|
}
|
||||||
@@ -233,17 +309,18 @@ static MPAutotypeDaemon *_sharedInstance;
|
|||||||
if(nil == context) {
|
if(nil == context) {
|
||||||
return; // No context to work with
|
return; // No context to work with
|
||||||
}
|
}
|
||||||
|
|
||||||
if([self _orderApplicationToFront:self.targetPID]) {
|
if([self _orderApplicationToFront:self.targetPID]) {
|
||||||
/* Sleep a bit after the app was activated */
|
/* Sleep a bit after the app was activated */
|
||||||
/* TODO - we can use a saver way and use a notification to check if the app actally was activated */
|
/* TODO - we might be able to a notification to check if the app actally was activated instead of guessing a waiting time */
|
||||||
usleep(1 * NSEC_PER_MSEC);
|
usleep(1 * NSEC_PER_MSEC);
|
||||||
}
|
}
|
||||||
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
|
for(MPAutotypeCommand *command in [MPAutotypeCommand commandsForContext:context]) {
|
||||||
NSArray<MPAutotypeCommand *> *commands = [MPAutotypeCommand commandsForContext:context];
|
/* dispatch commands to main thread since most of them translate key events which is disallowed on background thread */
|
||||||
for(MPAutotypeCommand *command in commands) {
|
dispatch_async(dispatch_get_main_queue(), ^{
|
||||||
[command execute];
|
[command execute];
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
@@ -294,16 +371,17 @@ static MPAutotypeDaemon *_sharedInstance;
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (void)_presentSelectionWindow:(NSArray *)candidates {
|
- (void)_presentSelectionWindow:(NSArray *)candidates {
|
||||||
|
|
||||||
|
|
||||||
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:NSWindowStyleMaskNonactivatingPanel|NSWindowStyleMaskTitled
|
||||||
backing:NSBackingStoreRetained
|
backing:NSBackingStoreRetained
|
||||||
defer:YES];
|
defer:YES];
|
||||||
self.matchSelectionWindow.level = NSScreenSaverWindowLevel;
|
self.matchSelectionWindow.level = kCGAssistiveTechHighWindowLevel;
|
||||||
MPAutotypeCandidateSelectionViewController *vc = [[MPAutotypeCandidateSelectionViewController alloc] init];
|
MPAutotypeCandidateSelectionViewController *vc = [[MPAutotypeCandidateSelectionViewController alloc] init];
|
||||||
vc.candidates = candidates;
|
vc.candidates = candidates;
|
||||||
|
self.matchSelectionWindow.collectionBehavior |= (NSWindowCollectionBehaviorFullScreenAuxiliary |
|
||||||
|
NSWindowCollectionBehaviorMoveToActiveSpace |
|
||||||
|
NSWindowCollectionBehaviorTransient );
|
||||||
self.matchSelectionWindow.contentViewController = vc;
|
self.matchSelectionWindow.contentViewController = vc;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -315,8 +393,18 @@ static MPAutotypeDaemon *_sharedInstance;
|
|||||||
#pragma mark MPDocument Notifications
|
#pragma mark MPDocument Notifications
|
||||||
- (void)_didUnlockDatabase:(NSNotification *)notification {
|
- (void)_didUnlockDatabase:(NSNotification *)notification {
|
||||||
/* Remove ourselves and call again to search matches */
|
/* Remove ourselves and call again to search matches */
|
||||||
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
[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];
|
[self _performAutotypeForEntry:nil];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
@@ -330,15 +418,15 @@ static MPAutotypeDaemon *_sharedInstance;
|
|||||||
#pragma mark Application information
|
#pragma mark Application information
|
||||||
- (BOOL)_orderApplicationToFront:(pid_t)processIdentifier {
|
- (BOOL)_orderApplicationToFront:(pid_t)processIdentifier {
|
||||||
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 NO;
|
return NO;
|
||||||
}
|
}
|
||||||
[runingApplication activateWithOptions:NSApplicationActivateIgnoringOtherApps];
|
[runingApplication activateWithOptions:NSApplicationActivateIgnoringOtherApps];
|
||||||
return YES;
|
return YES;
|
||||||
}
|
}
|
||||||
- (void)_updateTargetInfoForFrontMostApplication {
|
- (void)_updateTargetInformationForFrontMostApplication {
|
||||||
[self _updateTargeInformationForApplication:[NSWorkspace sharedWorkspace].frontmostApplication];
|
[self _updateTargeInformationForApplication:NSWorkspace.sharedWorkspace.frontmostApplication];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)_updateTargeInformationForApplication:(NSRunningApplication *)application {
|
- (void)_updateTargeInformationForApplication:(NSRunningApplication *)application {
|
||||||
|
|||||||
@@ -28,8 +28,34 @@
|
|||||||
@interface MPAutotypeKeyPress : MPAutotypeCommand
|
@interface MPAutotypeKeyPress : MPAutotypeCommand
|
||||||
|
|
||||||
@property (readonly, assign) MPModifiedKey key;
|
@property (readonly, assign) MPModifiedKey key;
|
||||||
|
@property (readonly, copy) NSString *character;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
Initializes a command with the given keycode and modifier mask
|
||||||
|
MacPass will update the modifiers according to user preferences to accomodate
|
||||||
|
for command-control differences between windows/linux and macOS
|
||||||
|
|
||||||
|
The virtual key code is used as-is without and re-mapping.
|
||||||
|
|
||||||
|
This will result in unexpected behaviour for keyboard layouts other tha us-ascii
|
||||||
|
|
||||||
|
use initWithModifierMask:character to initalized the key press command to ensurue the
|
||||||
|
correct character is typed regardless of the keyboard layout
|
||||||
|
|
||||||
|
@param key The modified key to be pressed
|
||||||
|
@return The press key command with the supplied argurments set
|
||||||
|
*/
|
||||||
- (instancetype)initWithModifiedKey:(MPModifiedKey)key;
|
- (instancetype)initWithModifiedKey:(MPModifiedKey)key;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Initalizes a command with the given modifier mask and the character to be typed.
|
||||||
|
A suitable keycode and modifier
|
||||||
|
|
||||||
|
@param modiferMask Modifiers mask to use when typing the character
|
||||||
|
@param character The character to be typed. It is ecnoureaded to use single characters
|
||||||
|
@return The type command to type the supplied character with the given modifiers
|
||||||
|
*/
|
||||||
- (instancetype)initWithModifierMask:(CGEventFlags)modiferMask character:(NSString *)character;
|
- (instancetype)initWithModifierMask:(CGEventFlags)modiferMask character:(NSString *)character;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -23,42 +23,44 @@
|
|||||||
#import "MPAutotypeKeyPress.h"
|
#import "MPAutotypeKeyPress.h"
|
||||||
#import "MPFlagsHelper.h"
|
#import "MPFlagsHelper.h"
|
||||||
#import "MPKeyMapper.h"
|
#import "MPKeyMapper.h"
|
||||||
|
#import "MPKeyTyper.h"
|
||||||
|
|
||||||
#import "MPSettingsHelper.h"
|
#import "MPSettingsHelper.h"
|
||||||
|
|
||||||
|
@interface MPAutotypeKeyPress ()
|
||||||
|
@property (copy) NSString *character;
|
||||||
|
@end
|
||||||
|
|
||||||
@implementation MPAutotypeKeyPress
|
@implementation MPAutotypeKeyPress
|
||||||
|
|
||||||
static CGEventFlags _updateModifierMaskForCurrentDefaults(CGEventFlags modifiers) {
|
- (instancetype)initWithModifiedKey:(MPModifiedKey)key {
|
||||||
BOOL sendCommand = [[NSUserDefaults standardUserDefaults] boolForKey:kMPSettingsKeySendCommandForControlKey];
|
return [self _initWithModifiedKey:key text:nil];
|
||||||
if(sendCommand && MPIsFlagSetInOptions(kCGEventFlagMaskControl, modifiers)) {
|
|
||||||
return (modifiers ^ kCGEventFlagMaskControl) | kCGEventFlagMaskCommand;
|
|
||||||
}
|
|
||||||
return modifiers;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (instancetype)initWithModifiedKey:(MPModifiedKey)key {
|
- (instancetype)_initWithModifiedKey:(MPModifiedKey)key text:(NSString *)text {
|
||||||
self = [super init];
|
self = [super init];
|
||||||
if(self) {
|
if(self) {
|
||||||
|
_character = [text copy];
|
||||||
_key = key;
|
_key = key;
|
||||||
_key.modifier = _updateModifierMaskForCurrentDefaults(_key.modifier);
|
|
||||||
}
|
}
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
- (instancetype)initWithModifierMask:(CGEventFlags)modiferMask keyCode:(CGKeyCode)code {
|
|
||||||
self = [self initWithModifiedKey:MPMakeModifiedKey(modiferMask, code)];
|
|
||||||
return self;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (instancetype)initWithModifierMask:(CGEventFlags)modiferMask character:(NSString *)character {
|
- (instancetype)initWithModifierMask:(CGEventFlags)modiferMask character:(NSString *)character {
|
||||||
|
/* try to map the character */
|
||||||
|
if(modiferMask) {
|
||||||
MPModifiedKey mappedKey = [MPKeyMapper modifiedKeyForCharacter:character];
|
MPModifiedKey mappedKey = [MPKeyMapper modifiedKeyForCharacter:character];
|
||||||
if(mappedKey.keyCode == kMPUnknownKeyCode) {
|
if(mappedKey.keyCode == kMPUnknownKeyCode) {
|
||||||
|
NSLog(@"Error. Unable to determine virtual key for character %@ to send with modifiers %llu.", character, modiferMask);
|
||||||
self = nil;
|
self = nil;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if(mappedKey.modifier && (modiferMask != mappedKey.modifier)) {
|
mappedKey.modifier = modiferMask;
|
||||||
NSLog(@"Supplied modifiers for character %@ do not match required modifiers", character);
|
self = [self _initWithModifiedKey:mappedKey text:nil];
|
||||||
}
|
}
|
||||||
self = [self initWithModifierMask:modiferMask keyCode:mappedKey.keyCode];
|
}
|
||||||
|
else {
|
||||||
|
self = [self _initWithModifiedKey:MPMakeModifiedKey(0, 0) text:character];
|
||||||
}
|
}
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
@@ -71,8 +73,12 @@ static CGEventFlags _updateModifierMaskForCurrentDefaults(CGEventFlags modifiers
|
|||||||
if(![self isValid]) {
|
if(![self isValid]) {
|
||||||
return; // no valid command. Stop.
|
return; // no valid command. Stop.
|
||||||
}
|
}
|
||||||
//CGKeyCode mappedKey = [self _transformKeyCode];
|
if(self.character) {
|
||||||
[self sendPressKey:self.key];
|
[MPKeyTyper sendText:self.character];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
[MPKeyTyper sendKey:self.key];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (BOOL)isValid {
|
- (BOOL)isValid {
|
||||||
@@ -82,3 +88,4 @@ static CGEventFlags _updateModifierMaskForCurrentDefaults(CGEventFlags modifiers
|
|||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
|||||||
25
MacPass/MPAutotypeParser.h
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
//
|
||||||
|
// MPAutotypeParser.h
|
||||||
|
// MacPass
|
||||||
|
//
|
||||||
|
// Created by Michael Starke on 02.11.18.
|
||||||
|
// Copyright © 2018 HicknHack Software GmbH. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <Foundation/Foundation.h>
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
@class MPAutotypeCommand;
|
||||||
|
@class MPAutotypeContext;
|
||||||
|
|
||||||
|
@interface MPAutotypeParser : NSObject
|
||||||
|
|
||||||
|
@property (nonatomic, copy, readonly) NSArray<MPAutotypeCommand *> *commands;
|
||||||
|
@property (readonly, strong) MPAutotypeContext *context;
|
||||||
|
|
||||||
|
- (instancetype)initWithContext:(MPAutotypeContext *)context;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
||||||
428
MacPass/MPAutotypeParser.m
Normal file
@@ -0,0 +1,428 @@
|
|||||||
|
//
|
||||||
|
// MPAutotypeParser.m
|
||||||
|
// MacPass
|
||||||
|
//
|
||||||
|
// Created by Michael Starke on 02.11.18.
|
||||||
|
// Copyright © 2018 HicknHack Software GmbH. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "MPAutotypeParser.h"
|
||||||
|
#import "MPAutotypeClear.h"
|
||||||
|
#import "MPAutotypeContext.h"
|
||||||
|
#import "MPAutotypeDelay.h"
|
||||||
|
#import "MPAutotypeKeyPress.h"
|
||||||
|
#import "MPAutotypePaste.h"
|
||||||
|
#import "MPKeyMapper.h"
|
||||||
|
#import "MPFlagsHelper.h"
|
||||||
|
#import "MPSettingsHelper.h"
|
||||||
|
|
||||||
|
#import "NSString+MPComposedCharacterAdditions.h"
|
||||||
|
|
||||||
|
#import <KeePassKit/KeePassKit.h>
|
||||||
|
|
||||||
|
#import <Carbon/Carbon.h>
|
||||||
|
#import <CommonCrypto/CommonCrypto.h>
|
||||||
|
|
||||||
|
static CGKeyCode kMPFunctionKeyCodes[] = {
|
||||||
|
kVK_F1,
|
||||||
|
kVK_F2,
|
||||||
|
kVK_F3,
|
||||||
|
kVK_F4,
|
||||||
|
kVK_F5,
|
||||||
|
kVK_F6,
|
||||||
|
kVK_F7,
|
||||||
|
kVK_F8,
|
||||||
|
kVK_F9,
|
||||||
|
kVK_F10,
|
||||||
|
kVK_F11,
|
||||||
|
kVK_F12,
|
||||||
|
kVK_F13,
|
||||||
|
kVK_F14,
|
||||||
|
kVK_F15,
|
||||||
|
kVK_F16,
|
||||||
|
kVK_F17,
|
||||||
|
kVK_F18,
|
||||||
|
kVK_F19
|
||||||
|
};
|
||||||
|
|
||||||
|
static CGKeyCode kMPNumpadKeyCodes[] = {
|
||||||
|
kVK_ANSI_Keypad0,
|
||||||
|
kVK_ANSI_Keypad1,
|
||||||
|
kVK_ANSI_Keypad2,
|
||||||
|
kVK_ANSI_Keypad3,
|
||||||
|
kVK_ANSI_Keypad4,
|
||||||
|
kVK_ANSI_Keypad5,
|
||||||
|
kVK_ANSI_Keypad6,
|
||||||
|
kVK_ANSI_Keypad7,
|
||||||
|
kVK_ANSI_Keypad8,
|
||||||
|
kVK_ANSI_Keypad9
|
||||||
|
};
|
||||||
|
|
||||||
|
@interface NSNumber (AutotypeCommand)
|
||||||
|
|
||||||
|
@property (nonatomic, readonly, assign) CGEventFlags eventFlagsValue;
|
||||||
|
@property (nonatomic, readonly, assign) CGKeyCode keyCodeValue;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation NSNumber (AutotypeCommand)
|
||||||
|
|
||||||
|
- (CGEventFlags)eventFlagsValue {
|
||||||
|
return (CGEventFlags)self.integerValue;
|
||||||
|
}
|
||||||
|
- (CGKeyCode)keyCodeValue {
|
||||||
|
return (CGKeyCode)self.integerValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
|
||||||
|
@interface MPAutotypeParser ()
|
||||||
|
|
||||||
|
@property (strong) NSMutableArray<MPAutotypeCommand *> *mutableCommands;
|
||||||
|
@property (strong, nonatomic, readonly) NSDictionary *keyPressCommands;
|
||||||
|
@property (strong, nonatomic, readonly) NSDictionary *characterCommands;
|
||||||
|
@property (strong, nonatomic, readonly) NSDictionary *modifierCommands;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation MPAutotypeParser
|
||||||
|
|
||||||
|
@dynamic commands;
|
||||||
|
@dynamic keyPressCommands;
|
||||||
|
@dynamic characterCommands;
|
||||||
|
@dynamic modifierCommands;
|
||||||
|
|
||||||
|
- (NSDictionary *)keypressCommands {
|
||||||
|
static NSDictionary *keypressCommands;
|
||||||
|
static dispatch_once_t onceToken;
|
||||||
|
dispatch_once(&onceToken, ^{
|
||||||
|
keypressCommands = @{ kKPKAutotypeBackspace : @(kVK_Delete),
|
||||||
|
//kKPKAutotypeBreak : @0,
|
||||||
|
kKPKAutotypeCapsLock : @(kVK_CapsLock),
|
||||||
|
kKPKAutotypeDelete : @(kVK_ForwardDelete),
|
||||||
|
kKPKAutotypeDown : @(kVK_DownArrow),
|
||||||
|
kKPKAutotypeEnd : @(kVK_End),
|
||||||
|
kKPKAutotypeEnter : @(kVK_Return),
|
||||||
|
kKPKAutotypeEscape : @(kVK_Escape),
|
||||||
|
kKPKAutotypeHelp : @(kVK_Help),
|
||||||
|
kKPKAutotypeHome : @(kVK_Home),
|
||||||
|
//kKPKAutotypeInsert : @(),
|
||||||
|
kKPKAutotypeLeft : @(kVK_LeftArrow),
|
||||||
|
kKPKAutotypeLeftWindows : @(kVK_Command),
|
||||||
|
//kKPKAutotypeNumlock : @(),
|
||||||
|
kKPKAutotypePageDown : @(kVK_PageDown),
|
||||||
|
kKPKAutotypePageUp : @(kVK_PageUp),
|
||||||
|
//kKPKAutotypePrintScreen : @(),
|
||||||
|
kKPKAutotypeRight : @(kVK_RightArrow),
|
||||||
|
kKPKAutotypeRightWindows : @(kVK_Command),
|
||||||
|
//kKPKAutotypeScrollLock : @(),
|
||||||
|
kKPKAutotypeSpace : @(kVK_Space),
|
||||||
|
kKPKAutotypeTab : @(kVK_Tab),
|
||||||
|
kKPKAutotypeUp : @(kVK_UpArrow),
|
||||||
|
kKPKAutotypeWindows : @(kVK_Command)
|
||||||
|
};
|
||||||
|
});
|
||||||
|
return keypressCommands;
|
||||||
|
}
|
||||||
|
/* Commands that are actually just one symbol to be pasted */
|
||||||
|
- (NSDictionary *)characterCommands {
|
||||||
|
static NSDictionary *characterCommands;
|
||||||
|
static dispatch_once_t onceToken;
|
||||||
|
dispatch_once(&onceToken, ^{
|
||||||
|
characterCommands = @{
|
||||||
|
kKPKAutotypePlus: @"+",
|
||||||
|
kKPKAutotypeCaret: @"^",
|
||||||
|
kKPKAutotypePercent: @"%",
|
||||||
|
kKPKAutotypeTilde : @"~",
|
||||||
|
kKPKAutotypeRoundBracketLeft : @"(",
|
||||||
|
kKPKAutotypeRoundBracketRight : @")",
|
||||||
|
kKPKAutotypeSquareBracketLeft : @"[",
|
||||||
|
kKPKAutotypeSquareBracketRight : @"]",
|
||||||
|
kKPKAutotypeCurlyBracketLeft: @"{",
|
||||||
|
kKPKAutotypeCurlyBracketRight: @"}"
|
||||||
|
};
|
||||||
|
});
|
||||||
|
return characterCommands;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mapping for modifier to CGEventFlags.
|
||||||
|
*
|
||||||
|
* @return dictionary with commands as keys and CGEventFlags as wrapped values
|
||||||
|
*/
|
||||||
|
- (NSDictionary *)modifierCommands {
|
||||||
|
static NSDictionary *modifierCommands;
|
||||||
|
static dispatch_once_t onceToken;
|
||||||
|
dispatch_once(&onceToken, ^{
|
||||||
|
modifierCommands = @{
|
||||||
|
kKPKAutotypeAlt : @(kCGEventFlagMaskAlternate),
|
||||||
|
kKPKAutotypeControl : @(kCGEventFlagMaskControl),
|
||||||
|
kKPKAutotypeShift : @(kCGEventFlagMaskShift)
|
||||||
|
};
|
||||||
|
});
|
||||||
|
return modifierCommands;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
- (instancetype)initWithContext:(MPAutotypeContext *)context {
|
||||||
|
self = [super init];
|
||||||
|
if(self) {
|
||||||
|
_context = context;
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSArray<MPAutotypeCommand *> *)commands {
|
||||||
|
if(!self.mutableCommands) {
|
||||||
|
[self _parseCommands];
|
||||||
|
}
|
||||||
|
return [self.mutableCommands copy];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)_parseCommands {
|
||||||
|
if(!self.context.valid) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
NSUInteger reserverd = MAX(1,self.context.normalizedCommand.length / 4);
|
||||||
|
self.mutableCommands = [[NSMutableArray alloc] initWithCapacity:reserverd];
|
||||||
|
NSMutableArray __block *commandRanges = [[NSMutableArray alloc] initWithCapacity:reserverd];
|
||||||
|
NSRegularExpression *commandRegExp = [[NSRegularExpression alloc] initWithPattern:@"\\{[^\\{\\}]+\\}" options:NSRegularExpressionCaseInsensitive error:0];
|
||||||
|
NSAssert(commandRegExp, @"RegExp is constant. Has to work all the time");
|
||||||
|
[commandRegExp enumerateMatchesInString:self.context.evaluatedCommand options:0 range:NSMakeRange(0, self.context.evaluatedCommand.length) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
|
||||||
|
@autoreleasepool {
|
||||||
|
[commandRanges addObject:[NSValue valueWithRange:result.range]];
|
||||||
|
}
|
||||||
|
}];
|
||||||
|
|
||||||
|
/* add range at the end as terminator */
|
||||||
|
[commandRanges addObject:[NSValue valueWithRange:NSMakeRange(self.context.evaluatedCommand.length, 0)]];
|
||||||
|
|
||||||
|
NSUInteger location = 0;
|
||||||
|
CGEventFlags modifiers = 0;
|
||||||
|
|
||||||
|
for(NSValue *rangeValue in commandRanges) {
|
||||||
|
NSRange commandRange = rangeValue.rangeValue;
|
||||||
|
/* All non-commands will get translated into key presses if possible, otherwiese into paste commands */
|
||||||
|
if(location < commandRange.location) {
|
||||||
|
/* If there were modifiers we need to use the next single stroke and update the modifier command */
|
||||||
|
if(modifiers) {
|
||||||
|
NSString *modifiedKey = [self.context.evaluatedCommand substringWithRange:NSMakeRange(location, 1)];
|
||||||
|
MPAutotypeKeyPress *press = [[MPAutotypeKeyPress alloc] initWithModifierMask:modifiers character:modifiedKey];
|
||||||
|
if(press) {
|
||||||
|
[self.mutableCommands addObject:press];
|
||||||
|
}
|
||||||
|
modifiers = 0;
|
||||||
|
location++;
|
||||||
|
}
|
||||||
|
NSRange textRange = NSMakeRange(location, commandRange.location - location);
|
||||||
|
if(textRange.length > 0) {
|
||||||
|
NSString *textValue = [self.context.evaluatedCommand substringWithRange:textRange];
|
||||||
|
[self _appendTextCommandWithContent:textValue];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* Test for modifer Key */
|
||||||
|
NSString *commandString = [self.context.evaluatedCommand substringWithRange:commandRange];
|
||||||
|
/* append commands for non-modifer keys */
|
||||||
|
if(![self _updateModifierMask:&modifiers forCommand:commandString]) {
|
||||||
|
[self _appendCommandForString:commandString activeModifer:modifiers];
|
||||||
|
modifiers = 0; // Reset the modifers;
|
||||||
|
}
|
||||||
|
location = commandRange.location + commandRange.length;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (BOOL)_updateModifierMask:(CGEventFlags *)mask forCommand:(NSString *)commandString {
|
||||||
|
NSAssert(mask != NULL, @"Input pointer missing!");
|
||||||
|
if(mask == NULL) {
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
|
|
||||||
|
NSNumber *flagNumber = self.modifierCommands[commandString.uppercaseString];
|
||||||
|
if(!flagNumber) {
|
||||||
|
return NO; // No modifier key, just leave
|
||||||
|
}
|
||||||
|
CGEventFlags flags = flagNumber.eventFlagsValue;
|
||||||
|
BOOL useCommandForControl = [NSUserDefaults.standardUserDefaults boolForKey:kMPSettingsKeySendCommandForControlKey];
|
||||||
|
if(useCommandForControl && flags == kCGEventFlagMaskControl) {
|
||||||
|
flags = kCGEventFlagMaskCommand;
|
||||||
|
}
|
||||||
|
*mask |= flags;
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)_appendCommandForString:(NSString *)commandString activeModifer:(CGEventFlags)flags {
|
||||||
|
if(!commandString || !commandString.length) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
/* Simple Special Press */
|
||||||
|
NSString *uppercaseCommand = commandString.uppercaseString;
|
||||||
|
NSNumber *keyCodeNumber = self.keypressCommands[uppercaseCommand];
|
||||||
|
if(nil != keyCodeNumber) {
|
||||||
|
MPAutotypeKeyPress *press = [[MPAutotypeKeyPress alloc] initWithModifiedKey:MPMakeModifiedKey(flags, keyCodeNumber.keyCodeValue)];
|
||||||
|
if(press) {
|
||||||
|
[self.mutableCommands addObject:press];
|
||||||
|
}
|
||||||
|
return; // Done
|
||||||
|
}
|
||||||
|
/* {PLUS}, {TILDE}, {PERCENT}, {+}, etc */
|
||||||
|
NSString *character = self.characterCommands[uppercaseCommand];
|
||||||
|
if(character) {
|
||||||
|
MPAutotypeKeyPress *press = [[MPAutotypeKeyPress alloc] initWithModifierMask:flags character:character];
|
||||||
|
if(press) {
|
||||||
|
[self.mutableCommands addObject:press];
|
||||||
|
}
|
||||||
|
return; // Done
|
||||||
|
}
|
||||||
|
|
||||||
|
/* F1-16 */
|
||||||
|
static NSRegularExpression *functionKeyRegExp;
|
||||||
|
static NSRegularExpression *numpadKeyRegExp;
|
||||||
|
static NSRegularExpression *delayRegExp;
|
||||||
|
static dispatch_once_t onceToken;
|
||||||
|
dispatch_once(&onceToken, ^{
|
||||||
|
NSString *delayPattern = [[NSString alloc] initWithFormat:@"\\{(%@|%@)[ |=]+([0-9]+)\\}",
|
||||||
|
kKPKAutotypeDelay,
|
||||||
|
kKPKAutotypeVirtualKey/*,
|
||||||
|
kKPKAutotypeVirtualExtendedKey,
|
||||||
|
kKPKAutotypeVirtualNonExtendedKey*/];
|
||||||
|
functionKeyRegExp = [[NSRegularExpression alloc] initWithPattern:kKPKAutotypeFunctionMaskRegularExpression options:NSRegularExpressionCaseInsensitive error:0];
|
||||||
|
numpadKeyRegExp = [[NSRegularExpression alloc] initWithPattern:kKPKAutotypeKeypaddNumberMaskRegularExpression options:NSRegularExpressionCaseInsensitive error:0];
|
||||||
|
delayRegExp = [[NSRegularExpression alloc] initWithPattern:delayPattern options:NSRegularExpressionCaseInsensitive error:0];
|
||||||
|
});
|
||||||
|
NSTextCheckingResult *functionResult = [functionKeyRegExp firstMatchInString:commandString options:0 range:NSMakeRange(0, commandString.length)];
|
||||||
|
if(functionResult && functionResult.numberOfRanges == 2) {
|
||||||
|
NSString *numberString = [commandString substringWithRange:[functionResult rangeAtIndex:1]];
|
||||||
|
NSScanner *numberScanner = [[NSScanner alloc] initWithString:numberString];
|
||||||
|
NSInteger functionNumber = 0;
|
||||||
|
if([numberScanner scanInteger:&functionNumber] && functionNumber >= 1 && functionNumber <= 19) {
|
||||||
|
MPAutotypeKeyPress *press = [[MPAutotypeKeyPress alloc] initWithModifiedKey:MPMakeModifiedKey(flags, kMPFunctionKeyCodes[functionNumber-1])];
|
||||||
|
if(press) {
|
||||||
|
[self.mutableCommands addObject:press];
|
||||||
|
}
|
||||||
|
return; // Done
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Numpad0-9 */
|
||||||
|
NSTextCheckingResult *numpadResult = [numpadKeyRegExp firstMatchInString:commandString options:0 range:NSMakeRange(0, commandString.length)];
|
||||||
|
if(numpadResult && numpadResult.numberOfRanges == 2) {
|
||||||
|
NSString *numberString = [commandString substringWithRange:[numpadResult rangeAtIndex:1]];
|
||||||
|
NSScanner *numberScanner = [[NSScanner alloc] initWithString:numberString];
|
||||||
|
NSInteger numpadNumber = 0;
|
||||||
|
if([numberScanner scanInteger:&numpadNumber] && numpadNumber >= 0 && numpadNumber <= 9) {
|
||||||
|
MPAutotypeKeyPress *press = [[MPAutotypeKeyPress alloc] initWithModifiedKey:MPMakeModifiedKey(flags, kMPNumpadKeyCodes[numpadNumber])];
|
||||||
|
if(press) {
|
||||||
|
[self.mutableCommands addObject:press];
|
||||||
|
}
|
||||||
|
return; // Done
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Clearfield */
|
||||||
|
if([kKPKAutotypeClearField isEqualToString:uppercaseCommand]) {
|
||||||
|
[self.mutableCommands addObject:[[MPAutotypeClear alloc] init]];
|
||||||
|
return; // Done
|
||||||
|
}
|
||||||
|
// TODO: add {APPLICATION <appname>}
|
||||||
|
/* Delay */
|
||||||
|
NSTextCheckingResult *result = [delayRegExp firstMatchInString:commandString options:0 range:NSMakeRange(0, commandString.length)];
|
||||||
|
if(result && (result.numberOfRanges == 3)) {
|
||||||
|
NSString *uppercaseCommand = [[commandString substringWithRange:[result rangeAtIndex:1]] uppercaseString];
|
||||||
|
NSString *valueString = [commandString substringWithRange:[result rangeAtIndex:2]];
|
||||||
|
NSScanner *numberScanner = [[NSScanner alloc] initWithString:valueString];
|
||||||
|
NSInteger value;
|
||||||
|
if([numberScanner scanInteger:&value]) {
|
||||||
|
if([kKPKAutotypeDelay isEqualToString:uppercaseCommand]) {
|
||||||
|
if(MAX(0, value) <= 0) {
|
||||||
|
return; // Value too low, just skipp
|
||||||
|
}
|
||||||
|
[self.mutableCommands addObject:[[MPAutotypeDelay alloc] initWithDelay:value]];
|
||||||
|
return; // Done
|
||||||
|
}
|
||||||
|
else if([kKPKAutotypeVirtualKey isEqualToString:uppercaseCommand]) {
|
||||||
|
NSLog(@"Virtual key strokes aren't supported yet!");
|
||||||
|
// TODO add key
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
NSLog(@"Unable to parse value part in command:%@", commandString);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
/* Fallback */
|
||||||
|
[self _appendTextCommandWithContent:commandString];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)_appendTextCommandWithContent:(NSString *)content {
|
||||||
|
if(content.length == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
BOOL obfuscate = self.context.entry.autotype.obfuscateDataTransfer;
|
||||||
|
if(obfuscate) {
|
||||||
|
@autoreleasepool {
|
||||||
|
/*
|
||||||
|
* obfuscate entered data using Two-Channel Auto-Type Obfuscation
|
||||||
|
* refer to KeePass documentation for more information
|
||||||
|
* http://keepass.info/help/v2/autotype_obfuscation.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
NSMutableString *paste = [[NSMutableString alloc] initWithString:@""];
|
||||||
|
//NSMutableArray<NSValue *> *typeKeys = [[NSMutableArray alloc] init];
|
||||||
|
NSMutableArray<MPAutotypeCommand *> *typeCommands = [[NSMutableArray alloc] init];
|
||||||
|
|
||||||
|
/*
|
||||||
|
* seed the random number generator using the first 4 bytes of the string's SHA1
|
||||||
|
* this ensures that you get the same string split every time for a given string
|
||||||
|
*/
|
||||||
|
const char *cstr = [content cStringUsingEncoding:NSUTF8StringEncoding];
|
||||||
|
NSData *data = [NSData dataWithBytes:cstr length:content.length];
|
||||||
|
uint8_t digest[CC_SHA1_DIGEST_LENGTH];
|
||||||
|
CC_SHA1(data.bytes, (unsigned int)data.length, digest);
|
||||||
|
srandom(*((unsigned int*)digest));
|
||||||
|
|
||||||
|
for(NSString *key in content.composedCharacters) {
|
||||||
|
NSUInteger part = random() % 2;
|
||||||
|
if (part == 0) {
|
||||||
|
[paste appendString:key];
|
||||||
|
[typeCommands addObject:[[MPAutotypeKeyPress alloc] initWithModifiedKey:MPMakeModifiedKey(0, kVK_RightArrow)]];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
[typeCommands addObject:[[MPAutotypeKeyPress alloc] initWithModifierMask:0 character:key]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* move to the end of the content */
|
||||||
|
for (NSUInteger i = typeCommands.count; i < content.composedCharacterLength; i++) {
|
||||||
|
[typeCommands addObject:[[MPAutotypeKeyPress alloc] initWithModifiedKey:MPMakeModifiedKey(0, kVK_RightArrow)]];
|
||||||
|
}
|
||||||
|
|
||||||
|
/* add paste command */
|
||||||
|
MPAutotypePaste *pasteCommand = [[MPAutotypePaste alloc] initWithString:paste];
|
||||||
|
[self.mutableCommands addObject:pasteCommand];
|
||||||
|
|
||||||
|
/* add keypress commands */
|
||||||
|
if(typeCommands.count > 0) {
|
||||||
|
for(NSUInteger i = 0; i < paste.composedCharacterLength; i++) {
|
||||||
|
MPAutotypeKeyPress *pressLeftArrowCommand = [[MPAutotypeKeyPress alloc] initWithModifiedKey:MPMakeModifiedKey(0, kVK_LeftArrow)];
|
||||||
|
if(pressLeftArrowCommand) {
|
||||||
|
[self.mutableCommands addObject:pressLeftArrowCommand];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[self.mutableCommands addObjectsFromArray:typeCommands];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for(NSString *character in content.composedCharacters) {
|
||||||
|
MPAutotypeKeyPress *keyPress = [[MPAutotypeKeyPress alloc] initWithModifierMask:0 character:character];
|
||||||
|
if(keyPress) {
|
||||||
|
[self.mutableCommands addObject:keyPress];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
@@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
#import "MPAutotypePaste.h"
|
#import "MPAutotypePaste.h"
|
||||||
#import "MPPasteBoardController.h"
|
#import "MPPasteBoardController.h"
|
||||||
|
#import "MPKeyTyper.h"
|
||||||
|
|
||||||
#import "KeePassKit/KeePassKit.h"
|
#import "KeePassKit/KeePassKit.h"
|
||||||
|
|
||||||
@@ -51,12 +52,11 @@
|
|||||||
|
|
||||||
- (void)execute {
|
- (void)execute {
|
||||||
if([self.pasteData length] > 0) {
|
if([self.pasteData length] > 0) {
|
||||||
MPPasteBoardController *controller = [MPPasteBoardController defaultController];
|
[MPPasteBoardController.defaultController stashObjects];
|
||||||
[controller stashObjects];
|
[MPPasteBoardController.defaultController copyObjectsWithoutTimeout:@[self.pasteData]];
|
||||||
[controller copyObjectsWithoutTimeout:@[self.pasteData]];
|
[MPKeyTyper sendPaste];
|
||||||
[self sendPasteKeyCode];
|
usleep(0.2 * NSEC_PER_MSEC); // on 10.10 we need to wait a bit before restoring the pasteboard contents
|
||||||
usleep(0.1 * NSEC_PER_MSEC); // on 10.10 we need to wait a bit before restoring the pasteboard contents
|
[MPPasteBoardController.defaultController restoreObjects];
|
||||||
[controller restoreObjects];
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,20 @@
|
|||||||
// Created by Michael Starke on 18.09.17.
|
// Created by Michael Starke on 18.09.17.
|
||||||
// Copyright © 2017 HicknHack Software GmbH. All rights reserved.
|
// Copyright © 2017 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>
|
#import <Cocoa/Cocoa.h>
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,20 @@
|
|||||||
// Created by Michael Starke on 18.09.17.
|
// Created by Michael Starke on 18.09.17.
|
||||||
// Copyright © 2017 HicknHack Software GmbH. All rights reserved.
|
// Copyright © 2017 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 "MPCollectionView.h"
|
#import "MPCollectionView.h"
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,20 @@
|
|||||||
// Created by Michael Starke on 15.09.17.
|
// Created by Michael Starke on 15.09.17.
|
||||||
// Copyright © 2017 HicknHack Software GmbH. All rights reserved.
|
// Copyright © 2017 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>
|
#import <Cocoa/Cocoa.h>
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,20 @@
|
|||||||
// Created by Michael Starke on 15.09.17.
|
// Created by Michael Starke on 15.09.17.
|
||||||
// Copyright © 2017 HicknHack Software GmbH. All rights reserved.
|
// Copyright © 2017 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 "MPCollectionViewItem.h"
|
#import "MPCollectionViewItem.h"
|
||||||
#import "MPIconSelectViewController.h"
|
#import "MPIconSelectViewController.h"
|
||||||
|
|||||||
@@ -25,9 +25,19 @@
|
|||||||
|
|
||||||
#import <Foundation/Foundation.h>
|
#import <Foundation/Foundation.h>
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
Common UTIs
|
||||||
|
*/
|
||||||
FOUNDATION_EXPORT NSString *const MPPasteBoardType;
|
FOUNDATION_EXPORT NSString *const MPPasteBoardType;
|
||||||
FOUNDATION_EXPORT NSString *const MPKdbDocumentUTI;
|
FOUNDATION_EXPORT NSString *const MPKdbDocumentUTI;
|
||||||
FOUNDATION_EXPORT NSString *const MPKdbxDocumentUTI;
|
FOUNDATION_EXPORT NSString *const MPKdbxDocumentUTI;
|
||||||
|
FOUNDATION_EXPORT NSString *const MPPluginUTI;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Bundle keys
|
||||||
|
*/
|
||||||
|
FOUNDATION_EXPORT NSString *const MPBundleHelpURLKey;
|
||||||
|
FOUNDATION_EXPORT NSString *const MPBundlePluginRepositoryURLKey;
|
||||||
|
FOUNDATION_EXPORT NSString *const MPPluginCompatibilityURLKey;
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -25,3 +25,9 @@
|
|||||||
NSString *const MPPasteBoardType = @"com.hicknhack.macpass.pasteboard";
|
NSString *const MPPasteBoardType = @"com.hicknhack.macpass.pasteboard";
|
||||||
NSString *const MPKdbDocumentUTI = @"com.hicknhack.macpass.kdb";
|
NSString *const MPKdbDocumentUTI = @"com.hicknhack.macpass.kdb";
|
||||||
NSString *const MPKdbxDocumentUTI = @"com.hicknhack.macpass.kdbx";
|
NSString *const MPKdbxDocumentUTI = @"com.hicknhack.macpass.kdbx";
|
||||||
|
NSString *const MPPluginUTI = @"com.hicknhack.macpass.plugin";
|
||||||
|
|
||||||
|
NSString *const MPBundleHelpURLKey = @"MPHelpURL";
|
||||||
|
NSString *const MPBundlePluginRepositoryURLKey = @"MPPluginRepositoryURL";
|
||||||
|
NSString *const MPPluginCompatibilityURLKey = @"MPPluginCompatibilityURLKey";
|
||||||
|
|
||||||
|
|||||||
@@ -23,18 +23,17 @@
|
|||||||
#import "MPViewController.h"
|
#import "MPViewController.h"
|
||||||
#import "MPDocument.h"
|
#import "MPDocument.h"
|
||||||
|
|
||||||
@class HNHUIGradientView;
|
|
||||||
@class MPDocument;
|
@class MPDocument;
|
||||||
|
|
||||||
@interface MPContextBarViewController : MPViewController
|
@interface MPContextBarViewController : MPViewController <NSStackViewDelegate>
|
||||||
|
|
||||||
@property (weak) IBOutlet NSButton *titleButton;
|
@property (weak) IBOutlet NSButton *titleButton;
|
||||||
@property (weak) IBOutlet NSButton *usernameButton;
|
@property (weak) IBOutlet NSButton *usernameButton;
|
||||||
@property (weak) IBOutlet NSButton *passwordButton;
|
@property (weak) IBOutlet NSButton *passwordButton;
|
||||||
@property (weak) IBOutlet NSButton *urlButton;
|
@property (weak) IBOutlet NSButton *urlButton;
|
||||||
@property (weak) IBOutlet NSButton *notesButton;
|
@property (weak) IBOutlet NSButton *notesButton;
|
||||||
@property (weak) IBOutlet NSButton *duplicatePasswordsButton;
|
|
||||||
@property (weak) IBOutlet NSPopUpButton *specialFilterPopUpButton;
|
@property (weak) IBOutlet NSPopUpButton *specialFilterPopUpButton;
|
||||||
|
@property (weak) IBOutlet NSButton *everywhereButton;
|
||||||
|
|
||||||
- (void)registerNotificationsForDocument:(MPDocument *)document;
|
- (void)registerNotificationsForDocument:(MPDocument *)document;
|
||||||
|
|
||||||
|
|||||||
@@ -41,17 +41,17 @@ typedef NS_ENUM(NSUInteger, MPContextTab) {
|
|||||||
|
|
||||||
@interface MPContextBarViewController ()
|
@interface MPContextBarViewController ()
|
||||||
|
|
||||||
|
@property (strong) NSString *selectMenuItemTitle;
|
||||||
|
@property (strong) NSString *multipleMenuItemTitle;
|
||||||
|
|
||||||
@property (nonatomic, assign) MPContextTab activeTab;
|
@property (nonatomic, assign) MPContextTab activeTab;
|
||||||
|
|
||||||
/* Filter */
|
/* Filter */
|
||||||
@property (weak) IBOutlet NSButton *filterDoneButton;
|
@property (weak) IBOutlet NSButton *filterDoneButton;
|
||||||
@property (weak) IBOutlet NSTextField *filterLabelTextField;
|
|
||||||
/* History */
|
/* History */
|
||||||
@property (weak) IBOutlet HNHUIGradientView *historyBar;
|
|
||||||
@property (weak) IBOutlet NSTextField *historyLabel;
|
@property (weak) IBOutlet NSTextField *historyLabel;
|
||||||
@property (weak) IBOutlet NSButton *exitHistoryButton;
|
@property (weak) IBOutlet NSButton *exitHistoryButton;
|
||||||
/* Trash*/
|
/* Trash*/
|
||||||
@property (weak) IBOutlet HNHUIGradientView *trashBar;
|
|
||||||
@property (weak) IBOutlet NSButton *emptyTrashButton;
|
@property (weak) IBOutlet NSButton *emptyTrashButton;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
@@ -66,27 +66,18 @@ typedef NS_ENUM(NSUInteger, MPContextTab) {
|
|||||||
#pragma mark Livecycle
|
#pragma mark Livecycle
|
||||||
|
|
||||||
- (void)dealloc {
|
- (void)dealloc {
|
||||||
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
[NSNotificationCenter.defaultCenter removeObserver:self];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)awakeFromNib {
|
- (void)awakeFromNib {
|
||||||
self.filterLabelTextField.cell.backgroundStyle = NSBackgroundStyleRaised;
|
self.selectMenuItemTitle = NSLocalizedString(@"SELECT_FILTER_WITH_DOTS", "Menu displayed as popup selection for search options if no filter is selected");
|
||||||
//self.historyBar.activeGradient = [[NSGradient alloc] initWithStartingColor:[[NSColor orangeColor] shadowWithLevel:0.2] endingColor:[[NSColor orangeColor] highlightWithLevel:0.2]];
|
self.multipleMenuItemTitle = NSLocalizedString(@"MULTIPLE_FILTERS_ACTIVE_WITH_DOTS", "Menu displayed as popup selection for search options when multiple items are selected");
|
||||||
|
|
||||||
/* Setup Trash Bar color */
|
|
||||||
if(!HNHUIIsRunningOnYosemiteOrNewer()) {
|
|
||||||
NSArray *activeColors = @[[NSColor colorWithCalibratedWhite:0.2 alpha:1],[NSColor colorWithCalibratedWhite:0.4 alpha:1]];
|
|
||||||
NSArray *inactiveColors = @[[NSColor colorWithCalibratedWhite:0.3 alpha:1],[NSColor colorWithCalibratedWhite:0.6 alpha:1]];
|
|
||||||
self.trashBar.activeGradient = [[NSGradient alloc] initWithColors:activeColors];
|
|
||||||
self.trashBar.inactiveGradient = [[NSGradient alloc] initWithColors:inactiveColors];
|
|
||||||
//self.emptyTrashButton.textColor = [NSColor whiteColor];
|
|
||||||
}
|
|
||||||
|
|
||||||
[self.view bind:NSSelectedIndexBinding toObject:self withKeyPath:NSStringFromSelector(@selector(activeTab)) options:nil];
|
[self.view bind:NSSelectedIndexBinding toObject:self withKeyPath:NSStringFromSelector(@selector(activeTab)) options:nil];
|
||||||
|
|
||||||
/* Setup Filter Bar buttons and menu */
|
/* Setup Filter Bar buttons and menu */
|
||||||
NSInteger tags[] = { MPEntrySearchTitles, MPEntrySearchUsernames, MPEntrySearchPasswords, MPEntrySearchNotes, MPEntrySearchUrls };
|
NSInteger tags[] = { MPEntrySearchTitles, MPEntrySearchUsernames, MPEntrySearchPasswords, MPEntrySearchNotes, MPEntrySearchUrls, MPEntrySearchAllAttributes };
|
||||||
NSArray<NSControl *> *buttons = @[self.titleButton, self.usernameButton, self.passwordButton, self.notesButton, self.urlButton ];
|
NSArray<NSControl *> *buttons = @[self.titleButton, self.usernameButton, self.passwordButton, self.notesButton, self.urlButton, self.everywhereButton ];
|
||||||
for(NSUInteger iIndex = 0; iIndex < buttons.count; iIndex++) {
|
for(NSUInteger iIndex = 0; iIndex < buttons.count; iIndex++) {
|
||||||
buttons[iIndex].action = @selector(toggleSearchFlags:);
|
buttons[iIndex].action = @selector(toggleSearchFlags:);
|
||||||
buttons[iIndex].tag = tags[iIndex];
|
buttons[iIndex].tag = tags[iIndex];
|
||||||
@@ -94,25 +85,25 @@ typedef NS_ENUM(NSUInteger, MPContextTab) {
|
|||||||
NSInteger specialTags[] = { MPEntrySearchDoublePasswords, MPEntrySearchExpiredEntries };
|
NSInteger specialTags[] = { MPEntrySearchDoublePasswords, MPEntrySearchExpiredEntries };
|
||||||
NSArray *titles = @[ NSLocalizedString(@"SEARCH_DUPLICATE_PASSWORDS", "Search option: Find duplicate passwords"), NSLocalizedString(@"SEARCH_EXPIRED_ENTRIES", "Search option: Find expired entries") ];
|
NSArray *titles = @[ NSLocalizedString(@"SEARCH_DUPLICATE_PASSWORDS", "Search option: Find duplicate passwords"), NSLocalizedString(@"SEARCH_EXPIRED_ENTRIES", "Search option: Find expired entries") ];
|
||||||
NSMenu *specialMenu = [[NSMenu alloc] initWithTitle:NSLocalizedString(@"CUSTOM_SEARCH_FILTER_MENU", @"Title for menu for custom search filters")];
|
NSMenu *specialMenu = [[NSMenu alloc] initWithTitle:NSLocalizedString(@"CUSTOM_SEARCH_FILTER_MENU", @"Title for menu for custom search filters")];
|
||||||
[specialMenu addItemWithTitle:NSLocalizedString(@"SELECT_FILTER_WITH_DOTS", "Menu displayed as popup selection for search options") action:NULL keyEquivalent:@""];
|
[specialMenu addItemWithTitle:self.selectMenuItemTitle action:NULL keyEquivalent:@""];
|
||||||
[specialMenu itemAtIndex:0].enabled = NO;
|
NSMenuItem *selectItem = specialMenu.itemArray.firstObject;
|
||||||
[specialMenu itemAtIndex:0].tag = MPEntrySearchNone;
|
selectItem.enabled = NO;
|
||||||
[specialMenu itemAtIndex:0].action = @selector(toggleSearchFlags:);
|
selectItem.tag = MPEntrySearchNone;
|
||||||
for(NSInteger iIndex = 0; iIndex < (sizeof(specialTags)/sizeof(NSInteger)); iIndex++) {
|
for(NSInteger iIndex = 0; iIndex < (sizeof(specialTags)/sizeof(NSInteger)); iIndex++) {
|
||||||
NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:titles[iIndex] action:@selector(toggleSearchFlags:) keyEquivalent:@""];
|
NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:titles[iIndex] action:@selector(toggleSearchFlags:) keyEquivalent:@""];
|
||||||
item.tag = specialTags[iIndex];
|
item.tag = specialTags[iIndex];
|
||||||
[specialMenu addItem:item];
|
[specialMenu addItem:item];
|
||||||
}
|
}
|
||||||
[self.specialFilterPopUpButton setMenu:specialMenu];
|
self.specialFilterPopUpButton.menu = specialMenu;
|
||||||
[self _updateFilterButtons];
|
[self _updateFilterButtons];
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark MPDocument Notifications
|
#pragma mark MPDocument Notifications
|
||||||
- (void)registerNotificationsForDocument:(MPDocument *)document {
|
- (void)registerNotificationsForDocument:(MPDocument *)document {
|
||||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_updateFilterButtons) name:MPDocumentDidChangeSearchFlags object:document];
|
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_updateFilterButtons) name:MPDocumentDidChangeSearchFlags object:document];
|
||||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_didEnterSearch:) name:MPDocumentDidEnterSearchNotification object:document];
|
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didEnterSearch:) name:MPDocumentDidEnterSearchNotification object:document];
|
||||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_showEntryHistory:) name:MPDocumentShowEntryHistoryNotification object:document];
|
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_showEntryHistory:) name:MPDocumentShowEntryHistoryNotification object:document];
|
||||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_didChangeCurrentItem:) name:MPDocumentCurrentItemChangedNotification object:document];
|
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didChangeCurrentItem:) name:MPDocumentCurrentItemChangedNotification object:document];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)_didEnterSearch:(NSNotification *)notification {
|
- (void)_didEnterSearch:(NSNotification *)notification {
|
||||||
@@ -134,42 +125,90 @@ typedef NS_ENUM(NSUInteger, MPContextTab) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
- (void)stackView:(NSStackView *)stackView willDetachViews:(NSArray<NSView *> *)views {
|
||||||
- (BOOL)control:(NSControl*)control textView:(NSTextView*)textView doCommandBySelector:(SEL)commandSelector {
|
for(NSView *view in views) {
|
||||||
if(commandSelector == @selector(insertNewline:)) {
|
if([view isKindOfClass:NSButton.class]) {
|
||||||
[self _didChangeFilter];
|
NSButton *button = (NSButton *)view;
|
||||||
|
NSMenu *menu = self.specialFilterPopUpButton.menu;
|
||||||
|
NSMenuItem *item = [menu itemWithTag:button.tag];
|
||||||
|
if(item) {
|
||||||
|
return; // no duplicates
|
||||||
}
|
}
|
||||||
return NO;
|
item = [self _menuItemForButton:button];
|
||||||
|
if(item) {
|
||||||
|
if(menu.itemArray.count == 3) {
|
||||||
|
[menu addItem:[NSMenuItem separatorItem]];
|
||||||
}
|
}
|
||||||
*/
|
[menu addItem:item];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[self _updateFilterButtons];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)stackView:(NSStackView *)stackView didReattachViews:(NSArray<NSView *> *)views {
|
||||||
|
for(NSView *view in views) {
|
||||||
|
if([view isKindOfClass:NSButton.class]) {
|
||||||
|
NSButton *button = (NSButton *)view;
|
||||||
|
NSMenu *menu = self.specialFilterPopUpButton.menu;
|
||||||
|
NSMenuItem *item = [menu itemWithTag:button.tag];
|
||||||
|
if(item) {
|
||||||
|
[menu removeItem:item];
|
||||||
|
if(menu.itemArray.count == 4) {
|
||||||
|
[menu removeItemAtIndex:3];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[self _updateFilterButtons];
|
||||||
|
}
|
||||||
|
|
||||||
#pragma mark UI Helper
|
#pragma mark UI Helper
|
||||||
- (void)_updateFilterButtons {
|
- (void)_updateFilterButtons {
|
||||||
MPDocument *document = self.windowController.document;
|
MPDocument *document = self.windowController.document;
|
||||||
MPEntrySearchFlags currentFlags = document.searchContext.searchFlags;
|
MPEntrySearchFlags currentFlags = document.searchContext.searchFlags;
|
||||||
self.duplicatePasswordsButton.state = HNHUIStateForBool(MPIsFlagSetInOptions(MPEntrySearchDoublePasswords, currentFlags));
|
|
||||||
self.notesButton.state = HNHUIStateForBool(MPIsFlagSetInOptions(MPEntrySearchNotes, currentFlags));
|
self.notesButton.state = HNHUIStateForBool(MPIsFlagSetInOptions(MPEntrySearchNotes, currentFlags));
|
||||||
self.passwordButton.state = HNHUIStateForBool(MPIsFlagSetInOptions(MPEntrySearchPasswords, currentFlags));
|
self.passwordButton.state = HNHUIStateForBool(MPIsFlagSetInOptions(MPEntrySearchPasswords, currentFlags));
|
||||||
self.titleButton.state = HNHUIStateForBool(MPIsFlagSetInOptions(MPEntrySearchTitles, currentFlags));
|
self.titleButton.state = HNHUIStateForBool(MPIsFlagSetInOptions(MPEntrySearchTitles, currentFlags));
|
||||||
self.urlButton.state = HNHUIStateForBool(MPIsFlagSetInOptions(MPEntrySearchUrls, currentFlags));
|
self.urlButton.state = HNHUIStateForBool(MPIsFlagSetInOptions(MPEntrySearchUrls, currentFlags));
|
||||||
self.usernameButton.state = HNHUIStateForBool(MPIsFlagSetInOptions(MPEntrySearchUsernames, currentFlags));
|
self.usernameButton.state = HNHUIStateForBool(MPIsFlagSetInOptions(MPEntrySearchUsernames, currentFlags));
|
||||||
NSInteger selectedTag = MPEntrySearchNone;
|
self.everywhereButton.state = HNHUIStateForBool(MPIsFlagSetInOptions(MPEntrySearchAllAttributes, currentFlags));
|
||||||
for(NSMenuItem *item in [[self.specialFilterPopUpButton menu] itemArray]) {
|
NSMutableSet *activeTags = [[NSMutableSet alloc] init];
|
||||||
|
for(NSMenuItem *item in self.specialFilterPopUpButton.menu.itemArray) {
|
||||||
MPEntrySearchFlags flag = item.tag;
|
MPEntrySearchFlags flag = item.tag;
|
||||||
if(flag == MPEntrySearchNone) {
|
if(flag == MPEntrySearchNone) {
|
||||||
item.state = NSOffState;
|
item.state = NSOffState;
|
||||||
item.enabled = NO;
|
item.enabled = NO;
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
BOOL isActive = MPIsFlagSetInOptions(flag, currentFlags);
|
BOOL isActive = MPIsFlagSetInOptions(flag, currentFlags);
|
||||||
if(isActive) {
|
if(isActive) {
|
||||||
selectedTag = flag;
|
[activeTags addObject:@(flag)];
|
||||||
}
|
}
|
||||||
item.state = HNHUIStateForBool(isActive);
|
item.state = HNHUIStateForBool(isActive);
|
||||||
}
|
}
|
||||||
|
NSMenuItem *item = [self.specialFilterPopUpButton.menu itemWithTag:MPEntrySearchNone];
|
||||||
|
if(activeTags.count > 1) {
|
||||||
|
item.title = self.multipleMenuItemTitle;
|
||||||
|
[self.specialFilterPopUpButton selectItemWithTag:MPEntrySearchNone];
|
||||||
}
|
}
|
||||||
[self.specialFilterPopUpButton selectItemWithTag:selectedTag];
|
else {
|
||||||
|
item.title = self.selectMenuItemTitle;
|
||||||
|
if(activeTags.count == 1) {
|
||||||
|
NSInteger tag = [activeTags.anyObject integerValue];
|
||||||
|
[self.specialFilterPopUpButton selectItemWithTag:tag];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
[self.specialFilterPopUpButton selectItemWithTag:MPEntrySearchNone];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSMenuItem *)_menuItemForButton:(NSButton *)button {
|
||||||
|
NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:button.title action:@selector(toggleSearchFlags:) keyEquivalent:@""];
|
||||||
|
item.tag = button.tag;
|
||||||
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -22,12 +22,10 @@
|
|||||||
|
|
||||||
#import <Cocoa/Cocoa.h>
|
#import <Cocoa/Cocoa.h>
|
||||||
|
|
||||||
@interface MPContextToolbarButton : NSSegmentedControl
|
@interface MPContextButton : NSSegmentedControl
|
||||||
|
|
||||||
|
@property (nonatomic, strong) NSMenu *contextMenu;
|
||||||
|
|
||||||
- (void)setImage:(NSImage *)image;
|
- (void)setImage:(NSImage *)image;
|
||||||
- (void)setContextMenu:(NSMenu *)menu;
|
|
||||||
|
|
||||||
- (NSControlSize)controlSize;
|
|
||||||
- (void)setControlSize:(NSControlSize)controlSize;
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
@@ -20,40 +20,50 @@
|
|||||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
//
|
//
|
||||||
|
|
||||||
#import "MPContextToolbarButton.h"
|
#import "MPContextButton.h"
|
||||||
#import "MPSegmentedContextCell.h"
|
#import "MPSegmentedContextCell.h"
|
||||||
|
|
||||||
@interface MPContextToolbarButton () {
|
@interface MPContextButton ()
|
||||||
@private
|
|
||||||
NSMenu *_contextMenu;
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@implementation MPContextToolbarButton
|
@implementation MPContextButton
|
||||||
|
|
||||||
- (id)initWithFrame:(NSRect)frame {
|
- (instancetype)initWithCoder:(NSCoder *)coder {
|
||||||
|
self = [super initWithCoder:coder];
|
||||||
|
if(self) {
|
||||||
|
[self _setup];
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (instancetype)initWithFrame:(NSRect)frame {
|
||||||
self = [super initWithFrame:frame];
|
self = [super initWithFrame:frame];
|
||||||
if (self) {
|
if (self) {
|
||||||
|
[self _setup];
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)_setup {
|
||||||
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:[self cell]];
|
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:[self cell]];
|
||||||
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
|
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
|
||||||
MPSegmentedContextCell *cell = [[MPSegmentedContextCell alloc] initWithCoder:unarchiver];
|
MPSegmentedContextCell *cell = [[MPSegmentedContextCell alloc] initWithCoder:unarchiver];
|
||||||
self.cell = cell;
|
self.cell = cell;
|
||||||
|
|
||||||
self.focusRingType = NSFocusRingTypeNone;
|
self.focusRingType = NSFocusRingTypeNone;
|
||||||
|
self.segmentStyle = NSSegmentStyleTexturedSquare;
|
||||||
self.segmentCount = 2;
|
self.segmentCount = 2;
|
||||||
cell.trackingMode = NSSegmentSwitchTrackingMomentary;
|
cell.trackingMode = NSSegmentSwitchTrackingMomentary;
|
||||||
self.segmentStyle = NSSegmentStyleTexturedSquare;
|
|
||||||
[cell setWidth:31 forSegment:0];
|
[cell setWidth:31 forSegment:0];
|
||||||
[cell setWidth:17 forSegment:1];
|
[cell setWidth:17 forSegment:1];
|
||||||
|
cell.trackingMode = NSSegmentSwitchTrackingMomentary;
|
||||||
|
|
||||||
NSImage *contextTriangle = [[NSBundle mainBundle] imageForResource:@"contextTriangleTemplate"];
|
NSImage *contextTriangle = [NSBundle.mainBundle imageForResource:@"contextTriangleTemplate"];
|
||||||
[self setImage:contextTriangle forSegment:1];
|
[self setImage:contextTriangle forSegment:1];
|
||||||
|
|
||||||
cell.contextMenuAction = @selector(showContextMenu:);
|
cell.contextMenuAction = @selector(showContextMenu:);
|
||||||
cell.contextMenuTarget = self;
|
cell.contextMenuTarget = self;
|
||||||
}
|
|
||||||
return self;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)setContextMenu:(NSMenu *)menu {
|
- (void)setContextMenu:(NSMenu *)menu {
|
||||||
@@ -106,25 +116,11 @@
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if([self.superclass instancesRespondToSelector:@selector(setControlSize:)]) {
|
|
||||||
#pragma clang diagnostic push
|
|
||||||
#pragma clang diagnostic ignored "-Wunguarded-availability"
|
|
||||||
super.controlSize = controlSize;
|
super.controlSize = controlSize;
|
||||||
#pragma clang diagnostic pop
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
self.cell.controlSize = controlSize;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSControlSize)controlSize {
|
- (NSControlSize)controlSize {
|
||||||
if([self.superclass instancesRespondToSelector:@selector(controlSize)]) {
|
|
||||||
#pragma clang diagnostic push
|
|
||||||
#pragma clang diagnostic ignored "-Wunguarded-availability"
|
|
||||||
return super.controlSize;
|
return super.controlSize;
|
||||||
#pragma clang diagnostic pop
|
|
||||||
}
|
|
||||||
return self.cell.controlSize;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
@@ -41,6 +41,6 @@ typedef NS_OPTIONS(NSUInteger, MPContextMenuItemsFlags) {
|
|||||||
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 *)contextMenuItemsWithItems:(MPContextMenuItemsFlags)flags;
|
+ (NSArray <NSMenuItem *> *)contextMenuItemsWithItems:(MPContextMenuItemsFlags)flags;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ static void MPContextmenuHelperBeginSection(NSMutableArray *items) {
|
|||||||
|
|
||||||
@implementation MPContextMenuHelper
|
@implementation MPContextMenuHelper
|
||||||
|
|
||||||
+ (NSArray *)contextMenuItemsWithItems:(MPContextMenuItemsFlags)flags {
|
+ (NSArray<NSMenuItem *> *)contextMenuItemsWithItems:(MPContextMenuItemsFlags)flags {
|
||||||
|
|
||||||
BOOL const insertCreate = MPIsFlagSetInOptions(MPContextMenuCreate, flags);
|
BOOL const insertCreate = MPIsFlagSetInOptions(MPContextMenuCreate, flags);
|
||||||
BOOL const insertDelete = MPIsFlagSetInOptions(MPContextMenuDelete, flags);
|
BOOL const insertDelete = MPIsFlagSetInOptions(MPContextMenuDelete, flags);
|
||||||
@@ -118,8 +118,7 @@ static void MPContextmenuHelperBeginSection(NSMutableArray *items) {
|
|||||||
if(insertAutotype) {
|
if(insertAutotype) {
|
||||||
NSMenuItem *performAutotype = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"PERFORM_AUTOTYPE_FOR_ENTRY", @"Menu item to perform autotype with the selected entry")
|
NSMenuItem *performAutotype = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"PERFORM_AUTOTYPE_FOR_ENTRY", @"Menu item to perform autotype with the selected entry")
|
||||||
action:[MPActionHelper actionOfType:MPActionPerformAutotypeForSelectedEntry]
|
action:[MPActionHelper actionOfType:MPActionPerformAutotypeForSelectedEntry]
|
||||||
keyEquivalent:@"a"];
|
keyEquivalent:@"t"];
|
||||||
performAutotype.keyEquivalentModifierMask = (performAutotype.keyEquivalentModifierMask | NSControlKeyMask);
|
|
||||||
[items addObject:performAutotype];
|
[items addObject:performAutotype];
|
||||||
}
|
}
|
||||||
if(insertHistory) {
|
if(insertHistory) {
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
//
|
//
|
||||||
// MPPreviewViewController.h
|
// MPCustomFieldTableView.h
|
||||||
// MacPass
|
// MacPass
|
||||||
//
|
//
|
||||||
// Created by Michael Starke on 18/03/14.
|
// Created by Michael Starke on 11.09.18.
|
||||||
// Copyright (c) 2014 HicknHack Software GmbH. All rights reserved.
|
// Copyright © 2018 HicknHack Software GmbH. All rights reserved.
|
||||||
//
|
//
|
||||||
// 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
|
||||||
@@ -20,8 +20,8 @@
|
|||||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
//
|
//
|
||||||
|
|
||||||
#import "MPViewController.h"
|
#import <Cocoa/Cocoa.h>
|
||||||
|
|
||||||
@interface MPPreviewViewController : MPViewController
|
@interface MPCustomFieldTableView : NSTableView
|
||||||
|
|
||||||
@end
|
@end
|
||||||
40
MacPass/MPCustomFieldTableView.m
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
//
|
||||||
|
// 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
|
||||||
@@ -32,23 +32,30 @@ NSInteger MPCustomFieldIndexFromTag(NSInteger tag) {
|
|||||||
return MAX(-1, tag - MPCustomFieldTagOffset);
|
return MAX(-1, tag - MPCustomFieldTagOffset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NSInteger MPCustomFieldTagFromIndex(NSInteger index) {
|
||||||
|
return (index + MPCustomFieldTagOffset);
|
||||||
|
}
|
||||||
|
|
||||||
@implementation MPCustomFieldTableViewDelegate
|
@implementation MPCustomFieldTableViewDelegate
|
||||||
|
|
||||||
|
|
||||||
/*
|
- (void)tableView:(NSTableView *)tableView didRemoveRowView:(NSTableRowView *)rowView forRow:(NSInteger)row {
|
||||||
- (CGFloat)tableView:(NSTableView *)tableView heightOfRow:(NSInteger)row {
|
if(@available(macOS 10.12, *)) {
|
||||||
static NSTextFieldCell *cell;
|
// 10.12 and higher are working correctly
|
||||||
static dispatch_once_t onceToken;
|
}
|
||||||
dispatch_once(&onceToken, ^{
|
else {
|
||||||
cell = [[NSTextFieldCell alloc] init];
|
[tableView invalidateIntrinsicContentSize];
|
||||||
});
|
}
|
||||||
|
}
|
||||||
cell.stringValue = @"Mutli!";
|
|
||||||
NSTableColumn *column = tableView.tableColumns.firstObject;
|
- (void)tableView:(NSTableView *)tableView didAddRowView:(NSTableRowView *)rowView forRow:(NSInteger)row {
|
||||||
NSRect frame = NSMakeRect(0, 0, column.width, CGFLOAT_MAX);
|
if(@available(macOS 10.12, *)) {
|
||||||
return [cell cellSizeForBounds:frame].height + 38;
|
// 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];
|
||||||
@@ -63,12 +70,12 @@ NSInteger MPCustomFieldIndexFromTag(NSInteger tag) {
|
|||||||
options:nil];
|
options:nil];
|
||||||
[view.protectedButton bind:NSValueBinding
|
[view.protectedButton bind:NSValueBinding
|
||||||
toObject:view
|
toObject:view
|
||||||
withKeyPath:@"objectValue.isProtected"
|
withKeyPath:@"objectValue.protect"
|
||||||
options:nil];
|
options:nil];
|
||||||
|
|
||||||
[view.valueTextField bind:NSStringFromSelector(@selector(showPassword))
|
[view.valueTextField bind:NSStringFromSelector(@selector(showPassword))
|
||||||
toObject:view
|
toObject:view
|
||||||
withKeyPath:@"objectValue.isProtected"
|
withKeyPath:@"objectValue.protect"
|
||||||
options:@{NSValueTransformerNameBindingOption: NSNegateBooleanTransformerName}];
|
options:@{NSValueTransformerNameBindingOption: NSNegateBooleanTransformerName}];
|
||||||
|
|
||||||
|
|
||||||
@@ -79,7 +86,7 @@ NSInteger MPCustomFieldIndexFromTag(NSInteger tag) {
|
|||||||
options:@{NSConditionallySetsEditableBindingOption: @NO }];
|
options:@{NSConditionallySetsEditableBindingOption: @NO }];
|
||||||
|
|
||||||
}
|
}
|
||||||
view.valueTextField.tag = (MPCustomFieldTagOffset + row);
|
view.valueTextField.tag = MPCustomFieldTagFromIndex(row);
|
||||||
view.valueTextField.delegate = self.viewController;
|
view.valueTextField.delegate = self.viewController;
|
||||||
|
|
||||||
view.removeButton.target = self.viewController;
|
view.removeButton.target = self.viewController;
|
||||||
|
|||||||