Compare commits
592 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b028ef51f9 | ||
|
|
ae9278c4b5 | ||
|
|
86d4defc78 | ||
|
|
c85a9cdce1 | ||
|
|
9409887942 | ||
|
|
40c62954e4 | ||
|
|
c6f93ef59a | ||
|
|
5eef186ab2 | ||
|
|
6c60d72ef9 | ||
|
|
217b311783 | ||
|
|
8cd5273082 | ||
|
|
3e8a320598 | ||
|
|
0197bdc5bc | ||
|
|
a425acea4d | ||
|
|
c4222a3159 | ||
|
|
bd0fe6baf8 | ||
|
|
b2999ca8a8 | ||
|
|
77d96976ec | ||
|
|
a4b9b0be8b | ||
|
|
8e52da7069 | ||
|
|
228170c717 | ||
|
|
2216a14729 | ||
|
|
77f3f23cfe | ||
|
|
07ae4675d4 | ||
|
|
f2279863db | ||
|
|
df68d0140f | ||
|
|
1b6efbfd0c | ||
|
|
626bb35f80 | ||
|
|
e6bb9ad191 | ||
|
|
4cfe54b65c | ||
|
|
2b2e5ddbea | ||
|
|
334451471e | ||
|
|
4069052c86 | ||
|
|
7be5190ada | ||
|
|
7a1510b77b | ||
|
|
f16c767cbd | ||
|
|
3f76188bf5 | ||
|
|
1215b7317b | ||
|
|
e5ba73589b | ||
|
|
9ba902471c | ||
|
|
b1568c5eef | ||
|
|
8535579de2 | ||
|
|
6ec89e146c | ||
|
|
09a7a15141 | ||
|
|
9b77790ddc | ||
|
|
16cdd4dd4f | ||
|
|
0a7fcc415c | ||
|
|
ff72632b3b | ||
|
|
b6a7240534 | ||
|
|
f10735f96f | ||
|
|
ba538d05af | ||
|
|
3639913e6d | ||
|
|
b87e20ca7e | ||
|
|
c7bdce46ff | ||
|
|
11bea5fa32 | ||
|
|
e8a6af086c | ||
|
|
f1033c1006 | ||
|
|
264866dff0 | ||
|
|
631741d30b | ||
|
|
6897f9e51c | ||
|
|
21a5b5d6bb | ||
|
|
3817bf503f | ||
|
|
2beb033572 | ||
|
|
d7b016e5ef | ||
|
|
46b6ab3925 | ||
|
|
c5ed3c42e6 | ||
|
|
00d69d5bad | ||
|
|
fa58c7e423 | ||
|
|
f134290c27 | ||
|
|
3b244c3145 | ||
|
|
541ef6e749 | ||
|
|
eb9d15ffa5 | ||
|
|
05cfb73734 | ||
|
|
d9322d7544 | ||
|
|
7de8d0abd5 | ||
|
|
3289ffb2e4 | ||
|
|
38d64c7cb9 | ||
|
|
01b1372dda | ||
|
|
c76a8baa88 | ||
|
|
d048ea47a6 | ||
|
|
2a8766eccb | ||
|
|
a2078f721a | ||
|
|
7e402601f8 | ||
|
|
88d7d8792a | ||
|
|
68bdcb461f | ||
|
|
ec8ce8ec29 | ||
|
|
95275d9c8a | ||
|
|
7671a6e3f5 | ||
|
|
c0c053d422 | ||
|
|
4cda972d14 | ||
|
|
09eb1dcf41 | ||
|
|
224ca6c65b | ||
|
|
10dd3e352d | ||
|
|
48aa21faa8 | ||
|
|
c295f5df6f | ||
|
|
2103eb8875 | ||
|
|
3b7bf0d77b | ||
|
|
9298feea2d | ||
|
|
7f79dde83a | ||
|
|
ed4e4b0f72 | ||
|
|
62670a605e | ||
|
|
9e5d9f3bf5 | ||
|
|
bc47fb592c | ||
|
|
4b04699b30 | ||
|
|
3910b117a8 | ||
|
|
81dce1928a | ||
|
|
05f820a4a3 | ||
|
|
b9fbe43653 | ||
|
|
145f27c334 | ||
|
|
bf93ab574d | ||
|
|
7fc1dd8a1b | ||
|
|
e31c7c6cd7 | ||
|
|
7d8bb85d9b | ||
|
|
245a58d81b | ||
|
|
6b94cbd81b | ||
|
|
cbc74ccca6 | ||
|
|
9b2f8e5f6f | ||
|
|
9c177afdb0 | ||
|
|
6b13ab37b8 | ||
|
|
d4efba00ae | ||
|
|
2d3e81a5c1 | ||
|
|
c523ba716f | ||
|
|
32c6bae7e4 | ||
|
|
2aba4cbd93 | ||
|
|
5fbd6d1cde | ||
|
|
091a565bc8 | ||
|
|
0d3bf5ba71 | ||
|
|
d3a575fce3 | ||
|
|
1baf2cd8e6 | ||
|
|
0455628d72 | ||
|
|
9d0dc1630d | ||
|
|
fc21257173 | ||
|
|
53b807788a | ||
|
|
024131de35 | ||
|
|
a47557672f | ||
|
|
9a55559e71 | ||
|
|
e82db2fe9d | ||
|
|
50dad4de30 | ||
|
|
f7eb7147f3 | ||
|
|
d37164ad89 | ||
|
|
add09827ba | ||
|
|
9a625dd57d | ||
|
|
3191e56e58 | ||
|
|
a5c97469eb | ||
|
|
02840548ba | ||
|
|
52720a79d4 | ||
|
|
71e795c4f4 | ||
|
|
2381acfde9 | ||
|
|
9d2819ce2c | ||
|
|
d5592774d1 | ||
|
|
55f1ce22a9 | ||
|
|
2d98c480da | ||
|
|
30a68fc9e3 | ||
|
|
32899cb707 | ||
|
|
b1cb776e14 | ||
|
|
176a3b7db4 | ||
|
|
38e61b96a5 | ||
|
|
54d7ce4f77 | ||
|
|
2e523f6018 | ||
|
|
077a5851cf | ||
|
|
3cab0ea4dd | ||
|
|
ddb0f92dce | ||
|
|
0c12236401 | ||
|
|
c7d85d6daa | ||
|
|
28817b6c80 | ||
|
|
972f775ab3 | ||
|
|
4a33a7ece2 | ||
|
|
e0d12bea5a | ||
|
|
8f5914afd2 | ||
|
|
eaa0f68c7b | ||
|
|
9f43d52917 | ||
|
|
9e474375bf | ||
|
|
714bba4ce5 | ||
|
|
8d66621803 | ||
|
|
3ef2c01859 | ||
|
|
4abdff79a5 | ||
|
|
f9b36177fd | ||
|
|
9134f4959b | ||
|
|
6e011c00fa | ||
|
|
64de5a0d21 | ||
|
|
5da86637e5 | ||
|
|
ba2fc255dc | ||
|
|
8cc701af5f | ||
|
|
305ce06ab4 | ||
|
|
349eb5791e | ||
|
|
2beb1bbceb | ||
|
|
c46dba59c3 | ||
|
|
25538dd3bf | ||
|
|
e8fa409cef | ||
|
|
6b6c4fb736 | ||
|
|
7c2cf6eadb | ||
|
|
853e47c43f | ||
|
|
a5da80f094 | ||
|
|
878cef88c5 | ||
|
|
43508ad3a5 | ||
|
|
d909c377fb | ||
|
|
ae4656c79a | ||
|
|
1c0a76dc74 | ||
|
|
b667cf75bf | ||
|
|
4222922b68 | ||
|
|
81d722dd3a | ||
|
|
d26304285f | ||
|
|
1f4966e4c0 | ||
|
|
c72566d4c1 | ||
|
|
3dedbc1f68 | ||
|
|
7df1c9dff8 | ||
|
|
76b76526e3 | ||
|
|
bb4390aa84 | ||
|
|
e5e0e689c3 | ||
|
|
9026efa662 | ||
|
|
9a721c0a1f | ||
|
|
be5b2577f0 | ||
|
|
1372dbd444 | ||
|
|
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 |
2
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
github: mstarke
|
||||||
|
custom: https://flattr.com/thing/1550529/mstarkeMacPass-on-GitHub
|
||||||
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.
|
||||||
2
.gitignore
vendored
@@ -23,3 +23,5 @@ 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
|
||||||
|
MacPass/en.lproj/Localizable.strings.updated
|
||||||
|
|||||||
3
.gitmodules
vendored
@@ -1,6 +1,3 @@
|
|||||||
[submodule "DDHotKey"]
|
[submodule "DDHotKey"]
|
||||||
path = DDHotKey
|
path = DDHotKey
|
||||||
url = https://github.com/mstarke/DDHotKey.git
|
url = https://github.com/mstarke/DDHotKey.git
|
||||||
[submodule "TransformerKit"]
|
|
||||||
path = TransformerKit
|
|
||||||
url = https://github.com/mattt/TransformerKit.git
|
|
||||||
|
|||||||
27
.travis.yml
@@ -1,18 +1,34 @@
|
|||||||
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:
|
||||||
|
- xcodebuild -project MacPass.xcodeproj -exportLocalizations -localizationPath Localisations -exportLanguage de
|
||||||
|
- xcodebuild -project MacPass.xcodeproj -exportLocalizations -localizationPath Localisations -exportLanguage en
|
||||||
|
- xcodebuild -project MacPass.xcodeproj -exportLocalizations -localizationPath Localisations -exportLanguage es
|
||||||
|
- xcodebuild -project MacPass.xcodeproj -exportLocalizations -localizationPath Localisations -exportLanguage fr
|
||||||
|
- xcodebuild -project MacPass.xcodeproj -exportLocalizations -localizationPath Localisations -exportLanguage it
|
||||||
|
- xcodebuild -project MacPass.xcodeproj -exportLocalizations -localizationPath Localisations -exportLanguage nl
|
||||||
|
- xcodebuild -project MacPass.xcodeproj -exportLocalizations -localizationPath Localisations -exportLanguage ru
|
||||||
|
- xcodebuild -project MacPass.xcodeproj -exportLocalizations -localizationPath Localisations -exportLanguage sv-SE
|
||||||
|
- xcodebuild -project MacPass.xcodeproj -exportLocalizations -localizationPath Localisations -exportLanguage zh-Hans
|
||||||
|
- zip -9ry Localisations.zip Localisations
|
||||||
- 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 +39,12 @@ 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:
|
||||||
|
- Localisations.zip
|
||||||
|
- 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
24
CONTRIBUTE.md
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# 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:
|
||||||
|
|
||||||
|
- Get a XLIFF editor for translating localization files. For example [XLIFFTool](https://itunes.apple.com/us/app/xlifftool/id1074282695)
|
||||||
|
- Get the current XLIFF export for your language. You can either download the `Localizations.zip` on the [Continous release](https://github.com/MacPass/MacPass/releases) or you can export them in Xcode:
|
||||||
|
- 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
|
||||||
|
- For present localizations directly 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 after you are done with your translations
|
||||||
|
- Go back to XCode and use `Editor -> Import Localization` to import the changes
|
||||||
|
- Open a Pull Request with your changes.
|
||||||
|
|
||||||
|
Alternatively, you can open an issue to ask a dev to create the XLIFF file for you and send it back after you've finished localising.
|
||||||
7
Cartfile
@@ -1,3 +1,4 @@
|
|||||||
github "sparkle-project/Sparkle" ~> 1.18.1
|
github "sparkle-project/Sparkle" ~> 1.22
|
||||||
github "MacPass/KeePassKit" ~> 1.7.5
|
github "MacPass/TransformerKit" "b28de3a7de9249dd886979cae4985092523b6dd1"
|
||||||
github "mstarke/HNHUi" ~> 1.4.1
|
github "MacPass/KeePassKit" ~> 2.4
|
||||||
|
github "mstarke/HNHUi" ~> 3.0
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
github "MacPass/KeePassKit" "1.7.6"
|
github "MacPass/KeePassKit" "2.4.7"
|
||||||
github "mstarke/HNHUi" "1.4.1"
|
github "MacPass/TransformerKit" "b28de3a7de9249dd886979cae4985092523b6dd1"
|
||||||
github "sparkle-project/Sparkle" "1.18.1"
|
github "mstarke/HNHUi" "3.0"
|
||||||
|
github "robbiehanson/KissXML" "5.3.1"
|
||||||
|
github "sparkle-project/Sparkle" "1.22.0"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<Scheme
|
<Scheme
|
||||||
LastUpgradeVersion = "0910"
|
LastUpgradeVersion = "1130"
|
||||||
version = "1.3">
|
version = "2.0">
|
||||||
<BuildAction
|
<BuildAction
|
||||||
parallelizeBuildables = "YES"
|
parallelizeBuildables = "YES"
|
||||||
buildImplicitDependencies = "YES">
|
buildImplicitDependencies = "YES">
|
||||||
@@ -26,21 +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 = ""
|
|
||||||
shouldUseLaunchSchemeArgsEnv = "NO"
|
shouldUseLaunchSchemeArgsEnv = "NO"
|
||||||
codeCoverageEnabled = "YES">
|
codeCoverageEnabled = "YES">
|
||||||
<Testables>
|
|
||||||
<TestableReference
|
|
||||||
skipped = "NO">
|
|
||||||
<BuildableReference
|
|
||||||
BuildableIdentifier = "primary"
|
|
||||||
BlueprintIdentifier = "4C45FB19178E09ED0010007D"
|
|
||||||
BuildableName = "MacPassTests.xctest"
|
|
||||||
BlueprintName = "MacPassTests"
|
|
||||||
ReferencedContainer = "container:MacPass.xcodeproj">
|
|
||||||
</BuildableReference>
|
|
||||||
</TestableReference>
|
|
||||||
</Testables>
|
|
||||||
<MacroExpansion>
|
<MacroExpansion>
|
||||||
<BuildableReference
|
<BuildableReference
|
||||||
BuildableIdentifier = "primary"
|
BuildableIdentifier = "primary"
|
||||||
@@ -56,19 +43,34 @@
|
|||||||
value = "YES"
|
value = "YES"
|
||||||
isEnabled = "YES">
|
isEnabled = "YES">
|
||||||
</EnvironmentVariable>
|
</EnvironmentVariable>
|
||||||
|
<EnvironmentVariable
|
||||||
|
key = "MPIsRunningTests"
|
||||||
|
value = "YES"
|
||||||
|
isEnabled = "YES">
|
||||||
|
</EnvironmentVariable>
|
||||||
</EnvironmentVariables>
|
</EnvironmentVariables>
|
||||||
<AdditionalOptions>
|
<Testables>
|
||||||
</AdditionalOptions>
|
<TestableReference
|
||||||
|
skipped = "NO">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "4C45FB19178E09ED0010007D"
|
||||||
|
BuildableName = "MacPassTests.xctest"
|
||||||
|
BlueprintName = "MacPassTests"
|
||||||
|
ReferencedContainer = "container:MacPass.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</TestableReference>
|
||||||
|
</Testables>
|
||||||
</TestAction>
|
</TestAction>
|
||||||
<LaunchAction
|
<LaunchAction
|
||||||
buildConfiguration = "Debug"
|
buildConfiguration = "Debug"
|
||||||
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,9 +99,12 @@
|
|||||||
value = "YES"
|
value = "YES"
|
||||||
isEnabled = "YES">
|
isEnabled = "YES">
|
||||||
</EnvironmentVariable>
|
</EnvironmentVariable>
|
||||||
|
<EnvironmentVariable
|
||||||
|
key = "OS_ACTIVITY_MODE"
|
||||||
|
value = "disable"
|
||||||
|
isEnabled = "NO">
|
||||||
|
</EnvironmentVariable>
|
||||||
</EnvironmentVariables>
|
</EnvironmentVariables>
|
||||||
<AdditionalOptions>
|
|
||||||
</AdditionalOptions>
|
|
||||||
</LaunchAction>
|
</LaunchAction>
|
||||||
<ProfileAction
|
<ProfileAction
|
||||||
buildConfiguration = "Release"
|
buildConfiguration = "Release"
|
||||||
|
|||||||
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,14 +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="13196" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13196"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
<customObject id="-2" userLabel="File's Owner" customClass="MPAutotypeCandidateSelectionViewController">
|
<customObject id="-2" userLabel="File's Owner" customClass="MPAutotypeCandidateSelectionViewController">
|
||||||
<connections>
|
<connections>
|
||||||
<outlet property="contextTableView" destination="Ih2-lo-t2W" id="8uy-Mz-1vc"/>
|
<outlet property="contextTableView" destination="Ih2-lo-t2W" id="8uy-Mz-1vc"/>
|
||||||
|
<outlet property="messageTextField" destination="kDw-2l-7gQ" id="7bW-as-yGU"/>
|
||||||
<outlet property="selectAutotypeContextButton" destination="V5B-Qq-GN8" id="mqv-H3-N01"/>
|
<outlet property="selectAutotypeContextButton" destination="V5B-Qq-GN8" id="mqv-H3-N01"/>
|
||||||
<outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
|
<outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
|
||||||
</connections>
|
</connections>
|
||||||
@@ -18,13 +19,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 +51,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">
|
||||||
@@ -78,17 +83,18 @@
|
|||||||
</tableColumn>
|
</tableColumn>
|
||||||
</tableColumns>
|
</tableColumns>
|
||||||
<connections>
|
<connections>
|
||||||
|
<action trigger="doubleAction" selector="selectAutotypeContext:" target="-2" id="NoK-fa-xIL"/>
|
||||||
<outlet property="dataSource" destination="-2" id="4ld-qs-eNP"/>
|
<outlet property="dataSource" destination="-2" id="4ld-qs-eNP"/>
|
||||||
<outlet property="delegate" destination="-2" id="ibb-G8-tPQ"/>
|
<outlet property="delegate" destination="-2" id="ibb-G8-tPQ"/>
|
||||||
</connections>
|
</connections>
|
||||||
</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 +148,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>
|
||||||
|
|||||||
149
MacPass/Base.lproj/AutotypeDoctorReportViewController.xib
Normal file
@@ -0,0 +1,149 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="15702" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||||
|
<dependencies>
|
||||||
|
<deployment identifier="macosx"/>
|
||||||
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="15702"/>
|
||||||
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
|
</dependencies>
|
||||||
|
<objects>
|
||||||
|
<customObject id="-2" userLabel="File's Owner" customClass="MPAutotypeDoctorReportViewController">
|
||||||
|
<connections>
|
||||||
|
<outlet property="accessibiltyStatusImageView" destination="Xzw-kJ-WoH" id="jEb-0z-dNB"/>
|
||||||
|
<outlet property="accessibiltyStatusTextField" destination="Pqa-Ff-7cc" id="h5M-ZN-GhR"/>
|
||||||
|
<outlet property="requestScreenRecordingButton" destination="d5Z-hD-bpr" id="gS2-vu-2zM"/>
|
||||||
|
<outlet property="screenRecordingStatusImageView" destination="vvZ-Lj-v22" id="7h0-cF-Mxt"/>
|
||||||
|
<outlet property="screenRecordingStatusTextField" destination="IP0-CP-tlA" id="AfL-XZ-KRk"/>
|
||||||
|
<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="400" height="469"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Xzw-kJ-WoH">
|
||||||
|
<rect key="frame" x="20" y="433" width="16" height="16"/>
|
||||||
|
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="NSStatusAvailable" id="DWu-HI-z3k"/>
|
||||||
|
</imageView>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Pqa-Ff-7cc">
|
||||||
|
<rect key="frame" x="42" y="433" width="80" height="16"/>
|
||||||
|
<textFieldCell key="cell" lineBreakMode="clipping" title="Accessibility" id="aIL-8W-63g">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" verticalCompressionResistancePriority="751" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hY9-T0-hke">
|
||||||
|
<rect key="frame" x="42" y="369" width="340" height="56"/>
|
||||||
|
<textFieldCell key="cell" controlSize="small" selectable="YES" id="6GI-KJ-Xue">
|
||||||
|
<font key="font" metaFont="smallSystem"/>
|
||||||
|
<string key="title">MacPass will send key press events to the system when Autotype or Global Autotype is executed. Since macOS 10.14 Mojave this is only possible, if Accessibility permissions are granted to the application.</string>
|
||||||
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="x9d-0h-hyJ">
|
||||||
|
<rect key="frame" x="38" y="321" width="236" height="32"/>
|
||||||
|
<buttonCell key="cell" type="push" title="Open Accessibilty Preferences…" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="8m1-vs-pd5">
|
||||||
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<action selector="openAccessibiltyPreferences:" target="-2" id="aZf-xi-w73"/>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="vvZ-Lj-v22">
|
||||||
|
<rect key="frame" x="20" y="283" width="16" height="16"/>
|
||||||
|
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="NSStatusAvailable" id="kCX-CB-5vQ"/>
|
||||||
|
</imageView>
|
||||||
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" verticalCompressionResistancePriority="751" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6vq-iM-inn">
|
||||||
|
<rect key="frame" x="42" y="177" width="340" height="98"/>
|
||||||
|
<textFieldCell key="cell" controlSize="small" selectable="YES" id="7of-1z-Nfk">
|
||||||
|
<font key="font" metaFont="smallSystem"/>
|
||||||
|
<string key="title">MacPass will read every window title when Global Autotype is executed to find a match. Since macOS 10.15 Catalina it is not possible to read any window title, if the user has not granted permissions to record the screen. If you are running macOS 10.15 or higher, MacPass will check if it can read every window title of currently visible windows. This test will not read the actual title. The titles aren't stored or processed in any way.</string>
|
||||||
|
<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="IP0-CP-tlA">
|
||||||
|
<rect key="frame" x="42" y="283" width="112" height="16"/>
|
||||||
|
<textFieldCell key="cell" lineBreakMode="clipping" title="Screen Recording" id="9gr-mz-2I4">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
<box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="BHb-cd-Q0r">
|
||||||
|
<rect key="frame" x="20" y="305" width="360" height="5"/>
|
||||||
|
</box>
|
||||||
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="d5Z-hD-bpr">
|
||||||
|
<rect key="frame" x="38" y="129" width="177" height="32"/>
|
||||||
|
<buttonCell key="cell" type="push" title="Request Permissions…" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="1Nx-Cg-TCn">
|
||||||
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<action selector="requestScreenRecordingPermissions:" target="-2" id="dvF-Aw-j5Q"/>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" preferredMaxLayoutWidth="336" translatesAutoresizingMaskIntoConstraints="NO" id="cu4-Jq-eaS">
|
||||||
|
<rect key="frame" x="42" y="86" width="340" height="42"/>
|
||||||
|
<textFieldCell key="cell" selectable="YES" id="Mhg-rd-1hK">
|
||||||
|
<font key="font" metaFont="smallSystem"/>
|
||||||
|
<string key="title">To request Screen Recording permissions, MacPass will try to capture a 1 by 1 Pixel sized screenshot of the top left part of your screen. The data is not stored nor processed in any way.</string>
|
||||||
|
<color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="dek-ho-dPm">
|
||||||
|
<rect key="frame" x="38" y="50" width="271" height="32"/>
|
||||||
|
<buttonCell key="cell" type="push" title="Open Screen Recording Preferences…" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="lgB-Ys-L9R">
|
||||||
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<action selector="openScreenRecordingPreferences:" target="-2" id="rvE-ff-sR2"/>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstItem="IP0-CP-tlA" firstAttribute="top" secondItem="BHb-cd-Q0r" secondAttribute="bottom" constant="8" symbolic="YES" id="0sS-li-mx4"/>
|
||||||
|
<constraint firstItem="d5Z-hD-bpr" firstAttribute="top" secondItem="6vq-iM-inn" secondAttribute="bottom" constant="20" symbolic="YES" id="1SD-9R-lf0"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="hY9-T0-hke" secondAttribute="trailing" constant="20" symbolic="YES" id="1lC-Hg-bzq"/>
|
||||||
|
<constraint firstItem="vvZ-Lj-v22" firstAttribute="leading" secondItem="Xzw-kJ-WoH" secondAttribute="leading" id="2ZC-Uf-Pe3"/>
|
||||||
|
<constraint firstItem="vvZ-Lj-v22" firstAttribute="centerY" secondItem="IP0-CP-tlA" secondAttribute="centerY" id="2t3-9h-RIf"/>
|
||||||
|
<constraint firstItem="Pqa-Ff-7cc" firstAttribute="leading" secondItem="Xzw-kJ-WoH" secondAttribute="trailing" constant="8" symbolic="YES" id="57a-U7-goz"/>
|
||||||
|
<constraint firstItem="6vq-iM-inn" firstAttribute="top" secondItem="IP0-CP-tlA" secondAttribute="bottom" constant="8" symbolic="YES" id="5ag-ah-YEW"/>
|
||||||
|
<constraint firstItem="dek-ho-dPm" firstAttribute="leading" secondItem="6vq-iM-inn" secondAttribute="leading" id="6Zj-Te-qHt"/>
|
||||||
|
<constraint firstItem="cu4-Jq-eaS" firstAttribute="leading" secondItem="6vq-iM-inn" secondAttribute="leading" id="A1C-96-raA"/>
|
||||||
|
<constraint firstItem="x9d-0h-hyJ" firstAttribute="top" secondItem="hY9-T0-hke" secondAttribute="bottom" constant="20" symbolic="YES" id="Avt-sj-8GL"/>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="Pqa-Ff-7cc" secondAttribute="trailing" constant="20" symbolic="YES" id="Bmg-tH-M7Q"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="6vq-iM-inn" secondAttribute="trailing" constant="20" symbolic="YES" id="Cga-EU-fSf"/>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="x9d-0h-hyJ" secondAttribute="trailing" constant="20" symbolic="YES" id="D8o-Gu-s2Y"/>
|
||||||
|
<constraint firstItem="dek-ho-dPm" firstAttribute="top" secondItem="cu4-Jq-eaS" secondAttribute="bottom" constant="8" symbolic="YES" id="EH9-BF-LGO"/>
|
||||||
|
<constraint firstItem="x9d-0h-hyJ" firstAttribute="leading" secondItem="Pqa-Ff-7cc" secondAttribute="leading" id="J4Y-VM-MZt"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="cu4-Jq-eaS" secondAttribute="trailing" constant="20" symbolic="YES" id="Mvl-zI-d9a"/>
|
||||||
|
<constraint firstItem="BHb-cd-Q0r" firstAttribute="top" secondItem="x9d-0h-hyJ" secondAttribute="bottom" constant="20" symbolic="YES" id="TlD-dn-LEm"/>
|
||||||
|
<constraint firstItem="BHb-cd-Q0r" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="YdV-6E-JaO"/>
|
||||||
|
<constraint firstItem="IP0-CP-tlA" firstAttribute="leading" secondItem="Pqa-Ff-7cc" secondAttribute="leading" id="c76-Ak-WXw"/>
|
||||||
|
<constraint firstItem="Xzw-kJ-WoH" firstAttribute="centerY" secondItem="Pqa-Ff-7cc" secondAttribute="centerY" id="dF3-uj-K2q"/>
|
||||||
|
<constraint firstItem="Pqa-Ff-7cc" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="20" symbolic="YES" id="eyJ-B0-kI3"/>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="d5Z-hD-bpr" secondAttribute="trailing" constant="20" symbolic="YES" id="hEn-cJ-Ymz"/>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="dek-ho-dPm" secondAttribute="trailing" constant="20" symbolic="YES" id="jIb-UJ-efk"/>
|
||||||
|
<constraint firstItem="hY9-T0-hke" firstAttribute="leading" secondItem="Pqa-Ff-7cc" secondAttribute="leading" id="kLD-8A-d1Y"/>
|
||||||
|
<constraint firstItem="cu4-Jq-eaS" firstAttribute="top" secondItem="d5Z-hD-bpr" secondAttribute="bottom" constant="8" symbolic="YES" id="nRl-Zo-yCx"/>
|
||||||
|
<constraint firstItem="6vq-iM-inn" firstAttribute="leading" secondItem="IP0-CP-tlA" secondAttribute="leading" id="nby-S7-orD"/>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="IP0-CP-tlA" secondAttribute="trailing" constant="20" symbolic="YES" id="ntn-yh-HC3"/>
|
||||||
|
<constraint firstItem="Xzw-kJ-WoH" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="oAi-Zl-LCI"/>
|
||||||
|
<constraint firstItem="hY9-T0-hke" firstAttribute="top" secondItem="Pqa-Ff-7cc" secondAttribute="bottom" constant="8" symbolic="YES" id="oK3-FK-r0S"/>
|
||||||
|
<constraint firstItem="d5Z-hD-bpr" firstAttribute="leading" secondItem="6vq-iM-inn" secondAttribute="leading" id="oZ8-mG-RYJ"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="BHb-cd-Q0r" secondAttribute="trailing" constant="20" symbolic="YES" id="ryW-3O-g6b"/>
|
||||||
|
</constraints>
|
||||||
|
<point key="canvasLocation" x="-409" y="-112.5"/>
|
||||||
|
</customView>
|
||||||
|
</objects>
|
||||||
|
<resources>
|
||||||
|
<image name="NSStatusAvailable" width="16" height="16"/>
|
||||||
|
</resources>
|
||||||
|
</document>
|
||||||
@@ -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>
|
||||||
|
|||||||
118
MacPass/Base.lproj/Credits.rtf
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
{\rtf1\ansi\ansicpg1252\cocoartf1671\cocoasubrtf600
|
||||||
|
{\fonttbl\f0\fswiss\fcharset0 Helvetica-Bold;\f1\fswiss\fcharset0 Helvetica;\f2\fnil\fcharset0 SFProText-Regular;
|
||||||
|
}
|
||||||
|
{\colortbl;\red255\green255\blue255;\red0\green0\blue0;\red9\green79\blue209;\red69\green60\blue204;
|
||||||
|
\red52\green110\blue183;\red38\green38\blue38;}
|
||||||
|
{\*\expandedcolortbl;;\cssrgb\c0\c0\c0\cname textColor;\cssrgb\c0\c40784\c85490\cname linkColor;\cssrgb\c34510\c33725\c83922;
|
||||||
|
\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://macpassapp.org"}}{\fldrslt
|
||||||
|
\f1\b0 \cf2 macpassapp.org}}
|
||||||
|
\f1\b0 \cf3 \
|
||||||
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||||
|
{\field{\*\fldinst{HYPERLINK "https://github.com/mstarke/MacPass"}}{\fldrslt \cf3 MacPass}} \cf2 on GitHub.\
|
||||||
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||||
|
|
||||||
|
\f0\b \cf2 \
|
||||||
|
License:\
|
||||||
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||||
|
|
||||||
|
\f1\b0 \cf2 MacPass KeePass compatible client for OS X\
|
||||||
|
Copyright (c) 2012-2020 Michael Starke, HicknHack Software GmbH\
|
||||||
|
\
|
||||||
|
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/FrankKooij"}}{\fldrslt \cf3 Frank Kooij}},
|
||||||
|
\f2 \cf4 \expnd0\expndtw0\kerning0
|
||||||
|
{\field{\*\fldinst{HYPERLINK "https://github.com/clone1612"}}{\fldrslt
|
||||||
|
\f1 \cf3 \kerning1\expnd0\expndtw0 Jannick Hemelhof}}
|
||||||
|
\f1 \cf0 \kerning1\expnd0\expndtw0 \
|
||||||
|
\
|
||||||
|
\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}}\cf5 \
|
||||||
|
\
|
||||||
|
\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}}\cf6 \
|
||||||
|
\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}}\cf6 \
|
||||||
|
\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.\cf6 \
|
||||||
|
\
|
||||||
|
\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}}\cf6 \kerning1\expnd0\expndtw3
|
||||||
|
\
|
||||||
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||||
|
\cf2 \kerning1\expnd0\expndtw3
|
||||||
|
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}}\cf6 \
|
||||||
|
\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
|
||||||
|
\cf6 \
|
||||||
|
\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\cf6 \
|
||||||
|
\
|
||||||
|
\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.\cf6 \
|
||||||
|
\
|
||||||
|
\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.\cf6 \
|
||||||
|
\
|
||||||
|
\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,9 +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="14490.70" 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="14490.70"/>
|
||||||
<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>
|
||||||
<objects>
|
<objects>
|
||||||
@@ -30,6 +29,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"/>
|
||||||
@@ -47,17 +47,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="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="1">
|
<window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="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 +70,7 @@ DQ
|
|||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="956">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="956">
|
||||||
<rect key="frame" x="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,27 +83,27 @@ 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>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="232">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="232">
|
||||||
<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>
|
||||||
<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 +111,7 @@ Gw
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="189">
|
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="189">
|
||||||
<rect key="frame" x="46" y="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 +119,7 @@ Gw
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1394">
|
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1394">
|
||||||
<rect key="frame" x="152" y="48" width="70" height="26"/>
|
<rect key="frame" x="152" y="73" width="71" height="25"/>
|
||||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="1395">
|
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="1395">
|
||||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="menu"/>
|
<font key="font" metaFont="menu"/>
|
||||||
@@ -132,7 +132,7 @@ Gw
|
|||||||
</popUpButtonCell>
|
</popUpButtonCell>
|
||||||
</popUpButton>
|
</popUpButton>
|
||||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1404">
|
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1404">
|
||||||
<rect key="frame" x="60" y="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 +140,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 +148,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,43 +156,63 @@ 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" drawsBackground="NO" id="WOI-1v-RCe">
|
||||||
<rect key="frame" x="1" y="1" width="278" height="98"/>
|
<rect key="frame" x="1" y="1" width="278" height="98"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<textView importsGraphics="NO" verticallyResizable="YES" usesFontPanel="YES" findStyle="panel" continuousSpellChecking="YES" allowsUndo="YES" usesRuler="YES" allowsNonContiguousLayout="YES" spellingCorrection="YES" smartInsertDelete="YES" id="1531">
|
<textView importsGraphics="NO" verticallyResizable="YES" usesFontPanel="YES" findStyle="panel" continuousSpellChecking="YES" allowsUndo="YES" usesRuler="YES" allowsNonContiguousLayout="YES" spellingCorrection="YES" smartInsertDelete="YES" id="1531">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="278" height="98"/>
|
<rect key="frame" x="0.0" y="0.0" width="278" height="98"/>
|
||||||
<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="textColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
<size key="minSize" width="278" height="98"/>
|
<size key="minSize" width="278" height="98"/>
|
||||||
<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"/>
|
||||||
</textView>
|
</textView>
|
||||||
</subviews>
|
</subviews>
|
||||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
|
||||||
</clipView>
|
</clipView>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="height" constant="100" id="8fE-cP-ksD"/>
|
<constraint firstAttribute="height" constant="100" id="8fE-cP-ksD"/>
|
||||||
<constraint firstAttribute="width" constant="280" id="J06-kE-yVi"/>
|
<constraint firstAttribute="width" constant="280" id="J06-kE-yVi"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="YES" id="1532">
|
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="YES" id="1532">
|
||||||
<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" horizontal="NO" id="1533">
|
<scroller key="verticalScroller" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="1533">
|
||||||
<rect key="frame" x="263" y="1" width="16" height="98"/>
|
<rect key="frame" x="263" y="1" width="16" height="98"/>
|
||||||
<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 +224,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>
|
||||||
@@ -218,7 +240,7 @@ Gw
|
|||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="3ek-Rg-w82">
|
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="3ek-Rg-w82">
|
||||||
<rect key="frame" x="150" y="199" width="155" height="26"/>
|
<rect key="frame" x="150" y="199" width="155" height="25"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="150" id="F8Y-Uw-4mL"/>
|
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="150" id="F8Y-Uw-4mL"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
@@ -229,7 +251,7 @@ Gw
|
|||||||
</popUpButtonCell>
|
</popUpButtonCell>
|
||||||
</popUpButton>
|
</popUpButton>
|
||||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="vH7-5a-52C">
|
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="vH7-5a-52C">
|
||||||
<rect key="frame" x="73" y="206" width="73" height="17"/>
|
<rect key="frame" x="73" y="205" width="73" height="17"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Encryption:" id="gxY-UL-bEG">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Encryption:" id="gxY-UL-bEG">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
@@ -239,18 +261,18 @@ Gw
|
|||||||
<box title="Key derivation" translatesAutoresizingMaskIntoConstraints="NO" id="pbl-Mb-r8V">
|
<box title="Key derivation" translatesAutoresizingMaskIntoConstraints="NO" id="pbl-Mb-r8V">
|
||||||
<rect key="frame" x="17" y="16" width="420" height="178"/>
|
<rect key="frame" x="17" y="16" width="420" height="178"/>
|
||||||
<view key="contentView" id="hkT-SX-Te1">
|
<view key="contentView" id="hkT-SX-Te1">
|
||||||
<rect key="frame" x="2" y="2" width="416" height="161"/>
|
<rect key="frame" x="3" y="3" width="414" height="160"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="P98-Cu-Tha">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="P98-Cu-Tha">
|
||||||
<rect key="frame" x="253" y="18" width="143" height="25"/>
|
<rect key="frame" x="251" y="18" width="143" height="23"/>
|
||||||
<buttonCell key="cell" type="roundTextured" title="Generate Parameters" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="PoI-Er-Y8P">
|
<buttonCell key="cell" type="roundTextured" title="Generate Parameters" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="PoI-Er-Y8P">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
</buttonCell>
|
</buttonCell>
|
||||||
</button>
|
</button>
|
||||||
<tabView drawsBackground="NO" type="noTabsNoBorder" translatesAutoresizingMaskIntoConstraints="NO" id="2MY-PW-kzL">
|
<tabView drawsBackground="NO" type="noTabsNoBorder" translatesAutoresizingMaskIntoConstraints="NO" id="2MY-PW-kzL">
|
||||||
<rect key="frame" x="13" y="50" width="390" height="62"/>
|
<rect key="frame" x="12" y="49" width="390" height="62"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
<tabViewItems>
|
<tabViewItems>
|
||||||
<tabViewItem label="Aes" identifier="1" id="ft1-pl-lpO">
|
<tabViewItem label="Aes" identifier="1" id="ft1-pl-lpO">
|
||||||
@@ -276,7 +298,7 @@ Gw
|
|||||||
<real key="minimum" value="0.0"/>
|
<real key="minimum" value="0.0"/>
|
||||||
</numberFormatter>
|
</numberFormatter>
|
||||||
<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>
|
||||||
@@ -324,7 +346,7 @@ Gw
|
|||||||
<real key="maximum" value="16777215"/>
|
<real key="maximum" value="16777215"/>
|
||||||
</numberFormatter>
|
</numberFormatter>
|
||||||
<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>
|
||||||
@@ -336,7 +358,7 @@ Gw
|
|||||||
<real key="maximum" value="4294967295"/>
|
<real key="maximum" value="4294967295"/>
|
||||||
</numberFormatter>
|
</numberFormatter>
|
||||||
<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>
|
||||||
@@ -392,7 +414,7 @@ Gw
|
|||||||
</tabViewItems>
|
</tabViewItems>
|
||||||
</tabView>
|
</tabView>
|
||||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2cq-R3-Ksh">
|
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2cq-R3-Ksh">
|
||||||
<rect key="frame" x="131" y="117" width="155" height="26"/>
|
<rect key="frame" x="130" y="116" width="155" height="25"/>
|
||||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="Pb9-YV-rYe">
|
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="Pb9-YV-rYe">
|
||||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="menu"/>
|
<font key="font" metaFont="menu"/>
|
||||||
@@ -403,7 +425,7 @@ Gw
|
|||||||
</connections>
|
</connections>
|
||||||
</popUpButton>
|
</popUpButton>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="4el-r1-iRL">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="4el-r1-iRL">
|
||||||
<rect key="frame" x="64" y="124" width="63" height="17"/>
|
<rect key="frame" x="63" y="122" width="63" height="17"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Algorithm" id="GVd-KH-pHc">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Algorithm" id="GVd-KH-pHc">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
@@ -471,12 +493,12 @@ Gw
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1294">
|
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1294">
|
||||||
<rect key="frame" x="255" y="324" width="19" height="27"/>
|
<rect key="frame" x="255" y="325" width="19" height="27"/>
|
||||||
<stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="1295"/>
|
<stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="1295"/>
|
||||||
</stepper>
|
</stepper>
|
||||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1268">
|
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1268">
|
||||||
<rect key="frame" x="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"/>
|
||||||
@@ -499,18 +521,18 @@ Gw
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="599">
|
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="599">
|
||||||
<rect key="frame" x="255" y="296" width="19" height="27"/>
|
<rect key="frame" x="255" y="297" width="19" height="27"/>
|
||||||
<stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="600"/>
|
<stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="600"/>
|
||||||
</stepper>
|
</stepper>
|
||||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="535">
|
<button translatesAutoresizingMaskIntoConstraints="NO" id="535">
|
||||||
<rect key="frame" x="184" y="265" width="137" height="18"/>
|
<rect key="frame" x="184" y="266" width="137" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Enable Recycle Bin" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="536">
|
<buttonCell key="cell" type="check" title="Enable Recycle Bin" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="536">
|
||||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
</buttonCell>
|
</buttonCell>
|
||||||
</button>
|
</button>
|
||||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="678">
|
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="678">
|
||||||
<rect key="frame" x="184" y="235" width="37" height="26"/>
|
<rect key="frame" x="184" y="236" width="38" height="25"/>
|
||||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="679">
|
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="679">
|
||||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="menu"/>
|
<font key="font" metaFont="menu"/>
|
||||||
@@ -518,10 +540,10 @@ Gw
|
|||||||
</popUpButtonCell>
|
</popUpButtonCell>
|
||||||
</popUpButton>
|
</popUpButton>
|
||||||
<box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="U7M-MH-EFw">
|
<box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="U7M-MH-EFw">
|
||||||
<rect key="frame" x="20" y="287" width="467" height="5"/>
|
<rect key="frame" x="20" y="288" width="467" height="5"/>
|
||||||
</box>
|
</box>
|
||||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1582">
|
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1582">
|
||||||
<rect key="frame" x="63" y="199" width="117" height="17"/>
|
<rect key="frame" x="63" y="200" width="117" height="17"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Default Username:" id="1591">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Default Username:" id="1591">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
@@ -529,15 +551,15 @@ Gw
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1730">
|
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1730">
|
||||||
<rect key="frame" x="186" y="196" width="301" height="22"/>
|
<rect key="frame" x="186" y="197" width="301" height="22"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="1731">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="1731">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
<color key="textColor" name="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>
|
||||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1738">
|
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1738">
|
||||||
<rect key="frame" x="184" y="152" width="37" height="26"/>
|
<rect key="frame" x="184" y="153" width="38" height="25"/>
|
||||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="1739">
|
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="1739">
|
||||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="menu"/>
|
<font key="font" metaFont="menu"/>
|
||||||
@@ -545,7 +567,7 @@ Gw
|
|||||||
</popUpButtonCell>
|
</popUpButtonCell>
|
||||||
</popUpButton>
|
</popUpButton>
|
||||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="19r-LE-7X5">
|
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="19r-LE-7X5">
|
||||||
<rect key="frame" x="186" y="94" width="128" height="22"/>
|
<rect key="frame" x="186" y="95" width="128" height="22"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="128" id="COb-0V-OmT"/>
|
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="128" id="COb-0V-OmT"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
@@ -561,21 +583,21 @@ Gw
|
|||||||
<stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="qQV-3d-GpK"/>
|
<stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="qQV-3d-GpK"/>
|
||||||
</stepper>
|
</stepper>
|
||||||
<button verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Hqc-B0-xyz">
|
<button verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Hqc-B0-xyz">
|
||||||
<rect key="frame" x="184" y="122" width="171" height="18"/>
|
<rect key="frame" x="184" y="123" width="171" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Recommend key change" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="CtU-Eq-dgy">
|
<buttonCell key="cell" type="check" title="Recommend key change" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="CtU-Eq-dgy">
|
||||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
</buttonCell>
|
</buttonCell>
|
||||||
</button>
|
</button>
|
||||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="upv-b3-vCc">
|
<button translatesAutoresizingMaskIntoConstraints="NO" id="upv-b3-vCc">
|
||||||
<rect key="frame" x="184" y="70" width="129" height="18"/>
|
<rect key="frame" x="184" y="71" width="129" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Force key change" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="z6u-YT-7LE">
|
<buttonCell key="cell" type="check" title="Force key change" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="z6u-YT-7LE">
|
||||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
</buttonCell>
|
</buttonCell>
|
||||||
</button>
|
</button>
|
||||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="VYh-cm-fix">
|
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="VYh-cm-fix">
|
||||||
<rect key="frame" x="186" y="42" width="128" height="22"/>
|
<rect key="frame" x="186" y="43" width="128" height="22"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="M9G-Yy-1s4">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="M9G-Yy-1s4">
|
||||||
<customFormatter key="formatter" id="3Ax-U4-Ofb" customClass="MPDayCountFormatter"/>
|
<customFormatter key="formatter" id="3Ax-U4-Ofb" customClass="MPDayCountFormatter"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
@@ -596,7 +618,7 @@ Gw
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="I0d-r2-ySf">
|
<box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="I0d-r2-ySf">
|
||||||
<rect key="frame" x="20" y="144" width="467" height="5"/>
|
<rect key="frame" x="20" y="145" width="467" height="5"/>
|
||||||
</box>
|
</box>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="NPm-5h-2Mz">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="NPm-5h-2Mz">
|
||||||
<rect key="frame" x="65" y="242" width="115" height="17"/>
|
<rect key="frame" x="65" y="242" width="115" height="17"/>
|
||||||
@@ -607,7 +629,7 @@ Gw
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="OmP-GD-2nA">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="OmP-GD-2nA">
|
||||||
<rect key="frame" x="27" y="111" width="153" height="17"/>
|
<rect key="frame" x="27" y="98" width="153" height="17"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Recommend key change" id="Xib-Fn-sqx">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Recommend key change" id="Xib-Fn-sqx">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
@@ -615,7 +637,7 @@ Gw
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="S0c-4E-42z">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="S0c-4E-42z">
|
||||||
<rect key="frame" x="56" y="59" width="124" height="17"/>
|
<rect key="frame" x="56" y="46" width="124" height="17"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Enforce key change" id="5QH-N1-FHK">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Enforce key change" id="5QH-N1-FHK">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
@@ -623,7 +645,7 @@ Gw
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="VMc-Qg-eCr">
|
<button translatesAutoresizingMaskIntoConstraints="NO" id="VMc-Qg-eCr">
|
||||||
<rect key="frame" x="184" y="18" width="257" height="18"/>
|
<rect key="frame" x="184" y="19" width="257" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Force key change once after unlocking" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="pA1-aL-KjT">
|
<buttonCell key="cell" type="check" title="Force key change once after unlocking" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="pA1-aL-KjT">
|
||||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
@@ -727,7 +749,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,9 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="6254" systemVersion="13F34" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="15702" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="6254"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="15702"/>
|
||||||
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
<customObject id="-2" userLabel="File's Owner" customClass="MPDatePickingViewController">
|
<customObject id="-2" userLabel="File's Owner" customClass="MPDatePickingViewController">
|
||||||
@@ -15,24 +16,23 @@
|
|||||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||||
<customView id="1">
|
<customView id="1">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="316" height="259"/>
|
<rect key="frame" x="0.0" y="0.0" width="180" height="134"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<datePicker horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="3">
|
<datePicker horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="3">
|
||||||
<rect key="frame" x="20" y="91" width="277" height="148"/>
|
<rect key="frame" x="20" y="91" width="143" height="27"/>
|
||||||
<datePickerCell key="cell" borderStyle="bezel" alignment="left" datePickerStyle="clockAndCalendar" id="4">
|
<datePickerCell key="cell" borderStyle="bezel" alignment="left" id="4">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
<calendarDate key="date" timeIntervalSinceReferenceDate="-595929600" calendarFormat="%Y-%m-%d %H:%M:%S %z">
|
<date key="date" timeIntervalSinceReferenceDate="-595929600">
|
||||||
<!--1982-02-12 16:00:00 +0000-->
|
<!--1982-02-12 16:00:00 +0000-->
|
||||||
<timeZone key="timeZone" name="US/Pacific"/>
|
</date>
|
||||||
</calendarDate>
|
|
||||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
<datePickerElements key="datePickerElements" year="YES" month="YES" day="YES" hour="YES" minute="YES"/>
|
<datePickerElements key="datePickerElements" year="YES" month="YES" day="YES" hour="YES" minute="YES"/>
|
||||||
</datePickerCell>
|
</datePickerCell>
|
||||||
</datePicker>
|
</datePicker>
|
||||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="15">
|
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="15">
|
||||||
<rect key="frame" x="18" y="47" width="281" height="26"/>
|
<rect key="frame" x="18" y="47" width="145" height="25"/>
|
||||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="16">
|
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="16">
|
||||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="menu"/>
|
<font key="font" metaFont="menu"/>
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
</connections>
|
</connections>
|
||||||
</popUpButton>
|
</popUpButton>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="25">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="25">
|
||||||
<rect key="frame" x="226" y="18" width="70" height="25"/>
|
<rect key="frame" x="90" y="19" width="70" height="23"/>
|
||||||
<buttonCell key="cell" type="roundTextured" title="Use Date" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="26">
|
<buttonCell key="cell" type="roundTextured" title="Use Date" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="26">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
@@ -53,7 +53,7 @@
|
|||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="29">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="29">
|
||||||
<rect key="frame" x="162" y="18" width="56" height="25"/>
|
<rect key="frame" x="26" y="19" width="56" height="23"/>
|
||||||
<buttonCell key="cell" type="roundTextured" title="Cancel" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="30">
|
<buttonCell key="cell" type="roundTextured" title="Cancel" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="30">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
@@ -77,6 +77,7 @@
|
|||||||
<constraint firstItem="15" firstAttribute="top" secondItem="3" secondAttribute="bottom" constant="20" symbolic="YES" id="qKB-vi-OAw"/>
|
<constraint firstItem="15" firstAttribute="top" secondItem="3" secondAttribute="bottom" constant="20" symbolic="YES" id="qKB-vi-OAw"/>
|
||||||
<constraint firstItem="25" firstAttribute="top" secondItem="15" secondAttribute="bottom" constant="8" symbolic="YES" id="sxX-fk-xaJ"/>
|
<constraint firstItem="25" firstAttribute="top" secondItem="15" secondAttribute="bottom" constant="8" symbolic="YES" id="sxX-fk-xaJ"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
|
<point key="canvasLocation" x="-89" y="77"/>
|
||||||
</customView>
|
</customView>
|
||||||
</objects>
|
</objects>
|
||||||
</document>
|
</document>
|
||||||
|
|||||||
@@ -1,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,19 +1,22 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="12121" systemVersion="16G29" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="15702" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<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="15702"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
<customObject id="-2" userLabel="File's Owner" customClass="MPGeneralSettingsController">
|
<customObject id="-2" userLabel="File's Owner" customClass="MPGeneralPreferencesController">
|
||||||
<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="lockOnScreenSleepCheckButton" destination="nRe-7S-HwK" id="0IB-5B-pfw"/>
|
||||||
<outlet property="lockOnSleepCheckButton" destination="630" id="810"/>
|
<outlet property="lockOnSleepCheckButton" destination="630" id="810"/>
|
||||||
|
<outlet property="preventUniversalClipboardSupportCheckButton" destination="nqZ-rB-mFS" id="sbx-rl-reT"/>
|
||||||
<outlet property="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 +25,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="411" height="547"/>
|
||||||
<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="377" height="381"/>
|
||||||
<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="371" height="363"/>
|
||||||
<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="335" width="120" height="17"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="height" constant="17" id="803"/>
|
<constraint firstAttribute="height" constant="17" id="803"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
@@ -42,27 +45,25 @@
|
|||||||
</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="138" y="332" width="143" height="21"/>
|
||||||
<constraints>
|
<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">
|
||||||
<constraint firstAttribute="width" constant="165" id="877"/>
|
|
||||||
</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">
|
|
||||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="menu"/>
|
<font key="font" metaFont="system"/>
|
||||||
<menu key="menu" title="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="311" width="164" height="18"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="height" constant="14" id="773"/>
|
<constraint firstAttribute="height" constant="14" id="773"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
@@ -72,10 +73,10 @@
|
|||||||
</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="111" y="192" width="125" height="25"/>
|
||||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="585">
|
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="585">
|
||||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="menu"/>
|
<font key="font" metaFont="system"/>
|
||||||
<menu key="menu" title="LockTimes" id="586">
|
<menu key="menu" title="LockTimes" id="586">
|
||||||
<items>
|
<items>
|
||||||
<menuItem title="Never" id="804"/>
|
<menuItem title="Never" id="804"/>
|
||||||
@@ -89,14 +90,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="173" width="119" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Lock after sleep" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="631">
|
<buttonCell key="cell" type="check" title="Lock after sleep" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="631">
|
||||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
</buttonCell>
|
</buttonCell>
|
||||||
</button>
|
</button>
|
||||||
<textField verticalHuggingPriority="750" 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="197" width="93" height="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Lock while idle" id="806">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Lock while idle" id="806">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
@@ -104,14 +105,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="335" 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 +121,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="171" 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 +131,63 @@
|
|||||||
</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="151" width="129" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Lock after log out" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="Dzn-9R-JjE">
|
<buttonCell key="cell" type="check" title="Lock after log out" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="Dzn-9R-JjE">
|
||||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
</buttonCell>
|
</buttonCell>
|
||||||
</button>
|
</button>
|
||||||
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="nqZ-rB-mFS">
|
||||||
|
<rect key="frame" x="14" y="286" width="242" height="18"/>
|
||||||
|
<buttonCell key="cell" type="check" title="Prevent Universal Clipboard support" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="fNy-mS-phi">
|
||||||
|
<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="224" width="335" 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>
|
||||||
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="nRe-7S-HwK">
|
||||||
|
<rect key="frame" x="29" y="129" width="164" height="18"/>
|
||||||
|
<buttonCell key="cell" type="check" title="Lock after screen sleep" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="l3t-og-mJd">
|
||||||
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
</button>
|
||||||
</subviews>
|
</subviews>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstItem="bSt-Wf-FNZ" firstAttribute="top" secondItem="5SP-Vi-1sn" secondAttribute="bottom" constant="11" id="WUG-Uf-FCO"/>
|
<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="bSt-Wf-FNZ" firstAttribute="top" secondItem="nRe-7S-HwK" secondAttribute="bottom" constant="11" id="MkJ-O0-qYd"/>
|
||||||
|
<constraint firstItem="nRe-7S-HwK" firstAttribute="leading" secondItem="447" secondAttribute="leading" id="Mrg-k2-soG"/>
|
||||||
|
<constraint firstItem="584" firstAttribute="top" secondItem="hy4-RL-dAa" secondAttribute="bottom" constant="8" symbolic="YES" id="SV7-PD-nId"/>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="bSt-Wf-FNZ" secondAttribute="trailing" constant="20" symbolic="YES" id="VQY-eq-fCM"/>
|
||||||
|
<constraint firstItem="nRe-7S-HwK" firstAttribute="top" secondItem="5SP-Vi-1sn" secondAttribute="bottom" constant="8" id="YZv-Dp-CrZ"/>
|
||||||
<constraint firstItem="5SP-Vi-1sn" firstAttribute="leading" secondItem="447" secondAttribute="leading" id="Ylr-aA-jaD"/>
|
<constraint firstItem="5SP-Vi-1sn" firstAttribute="leading" secondItem="447" secondAttribute="leading" id="Ylr-aA-jaD"/>
|
||||||
<constraint firstItem="5SP-Vi-1sn" firstAttribute="top" secondItem="630" secondAttribute="bottom" constant="6" symbolic="YES" id="acg-vp-LeB"/>
|
<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="8" id="acg-vp-LeB"/>
|
||||||
|
<constraint firstItem="584" firstAttribute="leading" secondItem="805" secondAttribute="trailing" constant="8" symbolic="YES" id="aoz-sS-O0n"/>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="447" secondAttribute="trailing" constant="20" symbolic="YES" id="i8H-ad-IKb"/>
|
||||||
|
<constraint firstItem="419" firstAttribute="leading" secondItem="431" secondAttribute="trailing" constant="8" symbolic="YES" id="pN3-pB-Z5I"/>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="nRe-7S-HwK" secondAttribute="trailing" constant="20" symbolic="YES" id="pgB-km-W16"/>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="5SP-Vi-1sn" secondAttribute="trailing" constant="20" symbolic="YES" id="q0v-Wo-mHx"/>
|
||||||
|
<constraint 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" relation="greaterThanOrEqual" 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" relation="greaterThanOrEqual" 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 +201,42 @@
|
|||||||
<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="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="399" width="377" height="128"/>
|
||||||
<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="371" height="110"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<button verticalHuggingPriority="252" translatesAutoresizingMaskIntoConstraints="NO" id="530">
|
<button verticalHuggingPriority="252" translatesAutoresizingMaskIntoConstraints="NO" id="530">
|
||||||
<rect key="frame" x="16" y="43" width="234" height="18"/>
|
<rect key="frame" x="14" y="84" width="234" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Reopen last Database after Launch" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="531">
|
<buttonCell key="cell" type="check" title="Reopen last Database after Launch" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="531">
|
||||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
</buttonCell>
|
</buttonCell>
|
||||||
</button>
|
</button>
|
||||||
<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="64" width="123" height="18"/>
|
||||||
|
<buttonCell key="cell" type="check" title="Enable Autosave" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="wG7-bi-2fi">
|
||||||
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
</button>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="3Bo-Ml-1KB">
|
||||||
|
<rect key="frame" x="18" y="44" width="335" height="14"/>
|
||||||
|
<textFieldCell key="cell" controlSize="small" title="Close and open all documents for changes to take effect" id="ya5-ps-c4W">
|
||||||
|
<font key="font" metaFont="smallSystem"/>
|
||||||
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<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="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="If file changes:" id="QrK-hM-Xt1">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="If file changes:" id="QrK-hM-Xt1">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
@@ -191,21 +244,28 @@
|
|||||||
</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="13" width="38" height="25"/>
|
||||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="1R2-5t-LWk">
|
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="1R2-5t-LWk">
|
||||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="menu"/>
|
<font key="font" metaFont="system"/>
|
||||||
<menu key="menu" id="DQY-17-yKP"/>
|
<menu key="menu" id="DQY-17-yKP"/>
|
||||||
</popUpButtonCell>
|
</popUpButtonCell>
|
||||||
</popUpButton>
|
</popUpButton>
|
||||||
</subviews>
|
</subviews>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="trailing" secondItem="wIu-Sh-2a2" secondAttribute="trailing" constant="20" id="2Qw-fT-Dd8"/>
|
<constraint firstItem="3Bo-Ml-1KB" firstAttribute="leading" secondItem="cpg-tt-SHE" secondAttribute="leading" constant="20" symbolic="YES" id="2Jh-pk-bN7"/>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" 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>
|
||||||
@@ -220,11 +280,11 @@
|
|||||||
<constraint firstItem="888" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="891"/>
|
<constraint firstItem="888" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="891"/>
|
||||||
<constraint firstAttribute="trailing" secondItem="888" secondAttribute="trailing" constant="20" symbolic="YES" id="893"/>
|
<constraint firstAttribute="trailing" secondItem="888" secondAttribute="trailing" constant="20" symbolic="YES" id="893"/>
|
||||||
<constraint firstItem="888" firstAttribute="top" secondItem="1" secondAttribute="top" constant="20" symbolic="YES" id="903"/>
|
<constraint firstItem="888" firstAttribute="top" secondItem="1" secondAttribute="top" constant="20" symbolic="YES" id="903"/>
|
||||||
<constraint firstAttribute="width" constant="400" id="918"/>
|
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="400" id="918"/>
|
||||||
<constraint firstAttribute="bottom" secondItem="465" secondAttribute="bottom" constant="20" symbolic="YES" id="uwq-az-XwJ"/>
|
<constraint 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="-458" y="-295"/>
|
||||||
</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,19 +122,20 @@
|
|||||||
</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="editable2" keyPath="representedObject" previousBinding="3gj-Fz-0G8" id="unc-qC-MMH">
|
<binding destination="-2" name="editable2" keyPath="representedObject" previousBinding="3gj-Fz-0G8" id="AI9-fU-m4Z">
|
||||||
<dictionary key="options">
|
<dictionary key="options">
|
||||||
<integer key="NSMultipleValuesPlaceholder" value="-1"/>
|
<integer key="NSMultipleValuesPlaceholder" value="-1"/>
|
||||||
<integer key="NSNoSelectionPlaceholder" value="-1"/>
|
<integer key="NSNoSelectionPlaceholder" value="-1"/>
|
||||||
@@ -148,23 +149,23 @@
|
|||||||
<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>
|
||||||
|
|||||||
235
MacPass/Base.lproj/IntegrationPreferences.xib
Normal file
@@ -0,0 +1,235 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
|
<dependencies>
|
||||||
|
<deployment identifier="macosx"/>
|
||||||
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
||||||
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
|
</dependencies>
|
||||||
|
<objects>
|
||||||
|
<customObject id="-2" userLabel="File's Owner" customClass="MPIntegrationPreferencesController">
|
||||||
|
<connections>
|
||||||
|
<outlet property="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="enableQuicklookCheckBox" destination="LNw-5t-TS4" id="YiZ-Kk-0dF"/>
|
||||||
|
<outlet property="hotKeyTextField" destination="Kvg-he-3c8" id="c7p-1F-zth"/>
|
||||||
|
<outlet property="hotkeyWarningTextField" destination="f5q-EW-RHf" id="Z2Q-Sb-HCS"/>
|
||||||
|
<outlet property="matchHostCheckBox" destination="TiO-ah-BlR" id="MWr-Uh-TRB"/>
|
||||||
|
<outlet property="matchTagsCheckBox" destination="9MH-jx-GpG" id="j1Y-BT-J81"/>
|
||||||
|
<outlet property="matchTitleCheckBox" destination="DAX-V8-Say" id="rbc-nA-1bQ"/>
|
||||||
|
<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="view" destination="1" id="18"/>
|
||||||
|
</connections>
|
||||||
|
</customObject>
|
||||||
|
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||||
|
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||||
|
<customView translatesAutoresizingMaskIntoConstraints="NO" id="1">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="400" height="449"/>
|
||||||
|
<subviews>
|
||||||
|
<box autoresizesSubviews="NO" verticalHuggingPriority="500" borderType="line" title="Autotype" translatesAutoresizingMaskIntoConstraints="NO" id="P9N-HM-wER">
|
||||||
|
<rect key="frame" x="17" y="115" width="366" height="314"/>
|
||||||
|
<view key="contentView" id="faU-Ok-HJ3">
|
||||||
|
<rect key="frame" x="3" y="3" width="360" height="296"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<stackView orientation="vertical" alignment="leading" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" translatesAutoresizingMaskIntoConstraints="NO" id="j52-9L-k7c">
|
||||||
|
<rect key="frame" x="16" y="17" width="328" height="269"/>
|
||||||
|
<beginningViews>
|
||||||
|
<textField verticalHuggingPriority="750" fixedFrame="YES" preferredMaxLayoutWidth="328" translatesAutoresizingMaskIntoConstraints="NO" id="hMJ-Mo-xOM">
|
||||||
|
<rect key="frame" x="-2" y="227" width="332" height="42"/>
|
||||||
|
<textFieldCell key="cell" controlSize="small" id="H37-ku-aTc">
|
||||||
|
<font key="font" metaFont="smallSystem"/>
|
||||||
|
<string key="title">Autotype might not work properly. Some issues where found that prevent Autotype or Global Autotype to work. Please run the Autotype Doctor to fix those issues.</string>
|
||||||
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="jai-b6-Qv4">
|
||||||
|
<rect key="frame" x="-6" y="191" width="177" height="32"/>
|
||||||
|
<buttonCell key="cell" type="push" title="Run Autotype Doctor…" bezelStyle="rounded" alignment="center" borderStyle="border" inset="2" id="NP0-R3-m6n">
|
||||||
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<action selector="runAutotypeDoctor:" target="-2" id="u2q-ab-rQY"/>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
<button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="tik-Ar-FJg">
|
||||||
|
<rect key="frame" x="-2" y="174" width="162" height="18"/>
|
||||||
|
<buttonCell key="cell" type="check" title="Enable global Autotype" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="1qb-Rd-jYu">
|
||||||
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
</button>
|
||||||
|
<stackView orientation="horizontal" alignment="centerY" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="d6A-Vb-CMt">
|
||||||
|
<rect key="frame" x="0.0" y="146" width="328" height="22"/>
|
||||||
|
<beginningViews>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="buI-Wb-o3V">
|
||||||
|
<rect key="frame" x="-2" y="3" width="57" height="17"/>
|
||||||
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Shortcut" id="6oN-CH-T0O">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
<textField verticalHuggingPriority="750" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Kvg-he-3c8" customClass="DDHotKeyTextField">
|
||||||
|
<rect key="frame" x="61" y="0.0" width="136" height="22"/>
|
||||||
|
<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">
|
||||||
|
<font key="font" metaFont="smallSystem"/>
|
||||||
|
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</beginningViews>
|
||||||
|
<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">
|
||||||
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
</button>
|
||||||
|
<button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="8Wz-lo-AXG">
|
||||||
|
<rect key="frame" x="-2" y="100" width="206" height="18"/>
|
||||||
|
<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">
|
||||||
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
</button>
|
||||||
|
<button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="9MH-jx-GpG">
|
||||||
|
<rect key="frame" x="-2" y="56" width="210" height="18"/>
|
||||||
|
<buttonCell key="cell" type="check" title="Include Entry Tags for matches" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="rbu-G7-MT8">
|
||||||
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
</button>
|
||||||
|
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="VK8-z4-2ci">
|
||||||
|
<rect key="frame" x="-2" y="34" width="122" height="18"/>
|
||||||
|
<buttonCell key="cell" type="check" title="Interpret ⌃ as ⌘" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="QfO-yG-l3F">
|
||||||
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
</button>
|
||||||
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="wbP-A9-jpw">
|
||||||
|
<rect key="frame" x="-2" y="0.0" width="332" height="28"/>
|
||||||
|
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="If enabled, every {CONTROL} command will be sent as ⌘. Only disable this if you are sure you need to." id="QRy-CY-ENC">
|
||||||
|
<font key="font" metaFont="smallSystem"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</beginningViews>
|
||||||
|
<visibilityPriorities>
|
||||||
|
<integer value="1000"/>
|
||||||
|
<integer value="1000"/>
|
||||||
|
<integer value="1000"/>
|
||||||
|
<integer value="1000"/>
|
||||||
|
<integer value="1000"/>
|
||||||
|
<integer value="1000"/>
|
||||||
|
<integer value="1000"/>
|
||||||
|
<integer value="1000"/>
|
||||||
|
<integer value="1000"/>
|
||||||
|
<integer value="1000"/>
|
||||||
|
</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>
|
||||||
|
</view>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="j52-9L-k7c" secondAttribute="trailing" constant="16" id="DbO-uU-dBc"/>
|
||||||
|
<constraint firstItem="j52-9L-k7c" firstAttribute="top" secondItem="P9N-HM-wER" secondAttribute="top" constant="25" id="GW1-NJ-TjL"/>
|
||||||
|
<constraint firstItem="j52-9L-k7c" firstAttribute="leading" secondItem="P9N-HM-wER" secondAttribute="leading" constant="16" id="I0o-Ef-GNj"/>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="j52-9L-k7c" secondAttribute="bottom" constant="16" id="stS-Jr-dyi"/>
|
||||||
|
</constraints>
|
||||||
|
</box>
|
||||||
|
<box autoresizesSubviews="NO" verticalHuggingPriority="500" borderType="line" title="Preview" translatesAutoresizingMaskIntoConstraints="NO" id="VVs-b5-cX9">
|
||||||
|
<rect key="frame" x="17" y="16" width="366" height="95"/>
|
||||||
|
<view key="contentView" id="ww4-uR-8gP">
|
||||||
|
<rect key="frame" x="3" y="3" width="360" height="77"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<button translatesAutoresizingMaskIntoConstraints="NO" id="LNw-5t-TS4">
|
||||||
|
<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">
|
||||||
|
<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="V6l-R9-hIj">
|
||||||
|
<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">
|
||||||
|
<font key="font" metaFont="smallSystem"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="LNw-5t-TS4" secondAttribute="trailing" constant="20" symbolic="YES" id="5bd-ta-CgC"/>
|
||||||
|
</constraints>
|
||||||
|
</view>
|
||||||
|
<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="top" secondItem="LNw-5t-TS4" secondAttribute="bottom" constant="8" id="DJD-D7-pAx"/>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="V6l-R9-hIj" secondAttribute="bottom" constant="16" id="GEG-HY-C2F"/>
|
||||||
|
<constraint firstItem="LNw-5t-TS4" firstAttribute="top" secondItem="VVs-b5-cX9" secondAttribute="top" constant="25" id="IhZ-TA-uHR"/>
|
||||||
|
<constraint firstItem="LNw-5t-TS4" firstAttribute="leading" secondItem="VVs-b5-cX9" secondAttribute="leading" constant="16" id="NsS-Nl-Lso"/>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="V6l-R9-hIj" secondAttribute="trailing" constant="16" id="ivY-UD-QFJ"/>
|
||||||
|
</constraints>
|
||||||
|
</box>
|
||||||
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="width" constant="400" id="19"/>
|
||||||
|
<constraint firstItem="P9N-HM-wER" firstAttribute="top" secondItem="1" secondAttribute="top" constant="20" symbolic="YES" id="8fy-q5-VJy"/>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="VVs-b5-cX9" secondAttribute="bottom" constant="20" symbolic="YES" id="TZB-qe-7eg"/>
|
||||||
|
<constraint firstItem="VVs-b5-cX9" firstAttribute="top" secondItem="P9N-HM-wER" secondAttribute="bottom" constant="8" id="VCX-JW-cBe"/>
|
||||||
|
<constraint firstItem="VVs-b5-cX9" firstAttribute="trailing" secondItem="P9N-HM-wER" secondAttribute="trailing" id="k9i-4T-WY0"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="P9N-HM-wER" secondAttribute="trailing" constant="20" id="n5w-Cw-Bbt"/>
|
||||||
|
<constraint firstItem="P9N-HM-wER" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" id="ulV-xL-ldJ"/>
|
||||||
|
<constraint firstItem="VVs-b5-cX9" firstAttribute="leading" secondItem="P9N-HM-wER" secondAttribute="leading" id="z4a-9C-78h"/>
|
||||||
|
</constraints>
|
||||||
|
<point key="canvasLocation" x="-558" y="-1123"/>
|
||||||
|
</customView>
|
||||||
|
</objects>
|
||||||
|
</document>
|
||||||
@@ -1,188 +0,0 @@
|
|||||||
<?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">
|
|
||||||
<dependencies>
|
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="12121"/>
|
|
||||||
<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="MPIntegrationSettingsController">
|
|
||||||
<connections>
|
|
||||||
<outlet property="enableGlobalAutotypeCheckBox" destination="tik-Ar-FJg" id="yVA-bM-sSh"/>
|
|
||||||
<outlet property="enableQuicklookCheckBox" destination="LNw-5t-TS4" id="YiZ-Kk-0dF"/>
|
|
||||||
<outlet property="hotKeyTextField" destination="Kvg-he-3c8" id="c7p-1F-zth"/>
|
|
||||||
<outlet property="hotkeyWarningTextField" destination="f5q-EW-RHf" id="Z2Q-Sb-HCS"/>
|
|
||||||
<outlet property="matchHostCheckBox" destination="TiO-ah-BlR" id="MWr-Uh-TRB"/>
|
|
||||||
<outlet property="matchTagsCheckBox" destination="9MH-jx-GpG" id="j1Y-BT-J81"/>
|
|
||||||
<outlet property="matchTitleCheckBox" destination="DAX-V8-Say" id="rbc-nA-1bQ"/>
|
|
||||||
<outlet property="matchURLCheckBox" destination="8Wz-lo-AXG" id="jTp-2n-oO7"/>
|
|
||||||
<outlet property="sendCommandForControlCheckBox" destination="VK8-z4-2ci" id="nIa-ap-QfD"/>
|
|
||||||
<outlet property="view" destination="1" id="18"/>
|
|
||||||
</connections>
|
|
||||||
</customObject>
|
|
||||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
|
||||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
|
||||||
<customView translatesAutoresizingMaskIntoConstraints="NO" id="1">
|
|
||||||
<rect key="frame" x="0.0" y="0.0" width="400" height="366"/>
|
|
||||||
<subviews>
|
|
||||||
<box autoresizesSubviews="NO" verticalHuggingPriority="500" borderType="line" title="Autotype" translatesAutoresizingMaskIntoConstraints="NO" id="P9N-HM-wER">
|
|
||||||
<rect key="frame" x="17" y="115" width="366" height="231"/>
|
|
||||||
<view key="contentView" id="faU-Ok-HJ3">
|
|
||||||
<rect key="frame" x="1" y="1" width="364" height="215"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
||||||
<subviews>
|
|
||||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Kvg-he-3c8" customClass="DDHotKeyTextField">
|
|
||||||
<rect key="frame" x="79" y="161" width="89" 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="textColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</textFieldCell>
|
|
||||||
</textField>
|
|
||||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="tik-Ar-FJg">
|
|
||||||
<rect key="frame" x="16" y="189" 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">
|
|
||||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
</buttonCell>
|
|
||||||
</button>
|
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="buI-Wb-o3V">
|
|
||||||
<rect key="frame" x="16" y="164" width="57" height="17"/>
|
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Shortcut" id="6oN-CH-T0O">
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</textFieldCell>
|
|
||||||
</textField>
|
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="f5q-EW-RHf">
|
|
||||||
<rect key="frame" x="174" y="167" width="127" height="14"/>
|
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Shortcut is missing Key" id="Lxp-wI-yQy">
|
|
||||||
<font key="font" metaFont="smallSystem"/>
|
|
||||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</textFieldCell>
|
|
||||||
</textField>
|
|
||||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="DAX-V8-Say">
|
|
||||||
<rect key="frame" x="16" y="133" 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">
|
|
||||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
</buttonCell>
|
|
||||||
</button>
|
|
||||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="TiO-ah-BlR">
|
|
||||||
<rect key="frame" x="16" y="93" 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">
|
|
||||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
</buttonCell>
|
|
||||||
</button>
|
|
||||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="9MH-jx-GpG">
|
|
||||||
<rect key="frame" x="16" y="73" 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">
|
|
||||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
</buttonCell>
|
|
||||||
</button>
|
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="VK8-z4-2ci">
|
|
||||||
<rect key="frame" x="16" y="53" width="123" height="18"/>
|
|
||||||
<buttonCell key="cell" type="check" title="Interpret ⌃ as ⌘" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="QfO-yG-l3F">
|
|
||||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
</buttonCell>
|
|
||||||
</button>
|
|
||||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wbP-A9-jpw">
|
|
||||||
<rect key="frame" x="18" y="19" width="330" height="28"/>
|
|
||||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="If enabled, every {CONTROL} command will be sent as ⌘. Only disable this if you are sure you need to." id="QRy-CY-ENC">
|
|
||||||
<font key="font" metaFont="smallSystem"/>
|
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</textFieldCell>
|
|
||||||
</textField>
|
|
||||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="8Wz-lo-AXG">
|
|
||||||
<rect key="frame" x="16" y="113" width="207" 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>
|
|
||||||
</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>
|
|
||||||
<constraints>
|
|
||||||
<constraint firstAttribute="trailing" secondItem="wbP-A9-jpw" secondAttribute="trailing" constant="16" id="2V3-QT-fHc"/>
|
|
||||||
<constraint firstItem="DAX-V8-Say" firstAttribute="top" secondItem="Kvg-he-3c8" secondAttribute="bottom" constant="12" id="3uN-8n-txN"/>
|
|
||||||
<constraint firstItem="Kvg-he-3c8" firstAttribute="leading" secondItem="buI-Wb-o3V" secondAttribute="trailing" constant="8" symbolic="YES" id="53L-pe-f6c"/>
|
|
||||||
<constraint firstAttribute="bottom" secondItem="wbP-A9-jpw" secondAttribute="bottom" constant="16" id="Cz4-ys-xjj"/>
|
|
||||||
<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>
|
|
||||||
</box>
|
|
||||||
<box autoresizesSubviews="NO" verticalHuggingPriority="500" borderType="line" title="Preview" translatesAutoresizingMaskIntoConstraints="NO" id="VVs-b5-cX9">
|
|
||||||
<rect key="frame" x="17" y="16" width="366" height="95"/>
|
|
||||||
<view key="contentView" id="ww4-uR-8gP">
|
|
||||||
<rect key="frame" x="1" y="1" width="364" height="79"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
||||||
<subviews>
|
|
||||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="LNw-5t-TS4">
|
|
||||||
<rect key="frame" x="16" y="53" 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">
|
|
||||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
</buttonCell>
|
|
||||||
</button>
|
|
||||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="V6l-R9-hIj">
|
|
||||||
<rect key="frame" x="16" y="19" 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">
|
|
||||||
<font key="font" metaFont="smallSystem"/>
|
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</textFieldCell>
|
|
||||||
</textField>
|
|
||||||
</subviews>
|
|
||||||
</view>
|
|
||||||
<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="top" secondItem="LNw-5t-TS4" secondAttribute="bottom" constant="8" id="DJD-D7-pAx"/>
|
|
||||||
<constraint firstAttribute="bottom" secondItem="V6l-R9-hIj" secondAttribute="bottom" constant="16" id="GEG-HY-C2F"/>
|
|
||||||
<constraint firstItem="LNw-5t-TS4" firstAttribute="top" secondItem="VVs-b5-cX9" secondAttribute="top" constant="25" id="IhZ-TA-uHR"/>
|
|
||||||
<constraint firstItem="LNw-5t-TS4" firstAttribute="leading" secondItem="VVs-b5-cX9" secondAttribute="leading" constant="16" id="NsS-Nl-Lso"/>
|
|
||||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="V6l-R9-hIj" secondAttribute="trailing" constant="16" id="ivY-UD-QFJ"/>
|
|
||||||
</constraints>
|
|
||||||
</box>
|
|
||||||
</subviews>
|
|
||||||
<constraints>
|
|
||||||
<constraint firstAttribute="width" constant="400" id="19"/>
|
|
||||||
<constraint firstItem="P9N-HM-wER" firstAttribute="top" secondItem="1" secondAttribute="top" constant="20" symbolic="YES" id="8fy-q5-VJy"/>
|
|
||||||
<constraint firstAttribute="bottom" secondItem="VVs-b5-cX9" secondAttribute="bottom" constant="20" symbolic="YES" id="TZB-qe-7eg"/>
|
|
||||||
<constraint firstItem="VVs-b5-cX9" firstAttribute="top" secondItem="P9N-HM-wER" secondAttribute="bottom" constant="8" id="VCX-JW-cBe"/>
|
|
||||||
<constraint firstItem="VVs-b5-cX9" firstAttribute="trailing" secondItem="P9N-HM-wER" secondAttribute="trailing" id="k9i-4T-WY0"/>
|
|
||||||
<constraint firstAttribute="trailing" secondItem="P9N-HM-wER" secondAttribute="trailing" constant="20" id="n5w-Cw-Bbt"/>
|
|
||||||
<constraint firstItem="P9N-HM-wER" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" id="ulV-xL-ldJ"/>
|
|
||||||
<constraint firstItem="VVs-b5-cX9" firstAttribute="leading" secondItem="P9N-HM-wER" secondAttribute="leading" id="z4a-9C-78h"/>
|
|
||||||
</constraints>
|
|
||||||
<point key="canvasLocation" x="130" y="148"/>
|
|
||||||
</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">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13196"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
|
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
|
||||||
@@ -145,15 +145,15 @@
|
|||||||
<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"/>
|
||||||
</connections>
|
</connections>
|
||||||
</menuItem>
|
</menuItem>
|
||||||
<menuItem title="Import" id="aTb-sW-nUd">
|
<menuItem title="Import From" id="aTb-sW-nUd">
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
<menu key="submenu" title="Import" id="4q9-u1-pcm">
|
<menu key="submenu" title="Import From" id="4q9-u1-pcm">
|
||||||
<items>
|
<items>
|
||||||
<menuItem title="XML…" id="rW0-r1-QYL">
|
<menuItem title="XML…" id="rW0-r1-QYL">
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
@@ -162,18 +162,25 @@
|
|||||||
</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 To" id="tz9-yK-pOf">
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
<menu key="submenu" title="Export" id="p8h-Fg-h1O">
|
<menu key="submenu" title="Export To" id="p8h-Fg-h1O">
|
||||||
<items>
|
<items>
|
||||||
<menuItem title="XML…" keyEquivalent="E" id="1259">
|
<menuItem title="XML…" id="1259">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
<connections>
|
<connections>
|
||||||
<action selector="exportAsXML:" target="-1" id="NCG-gr-YI5"/>
|
<action selector="exportAsXML:" target="-1" id="NCG-gr-YI5"/>
|
||||||
</connections>
|
</connections>
|
||||||
</menuItem>
|
</menuItem>
|
||||||
</items>
|
</items>
|
||||||
|
<connections>
|
||||||
|
<outlet property="delegate" destination="494" id="ALY-P3-PzW"/>
|
||||||
|
</connections>
|
||||||
</menu>
|
</menu>
|
||||||
</menuItem>
|
</menuItem>
|
||||||
<menuItem isSeparatorItem="YES" id="74">
|
<menuItem isSeparatorItem="YES" id="74">
|
||||||
@@ -250,6 +257,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,12 +321,18 @@ 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="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"/>
|
||||||
</connections>
|
</connections>
|
||||||
</menuItem>
|
</menuItem>
|
||||||
|
<menuItem title="Autotype Doctor" id="zWx-Re-iuJ">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="showAutotypeDoctor:" target="494" id="fsq-lt-9gZ"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
<menuItem isSeparatorItem="YES" id="92">
|
<menuItem isSeparatorItem="YES" id="92">
|
||||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||||
</menuItem>
|
</menuItem>
|
||||||
@@ -336,12 +357,15 @@ 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="exportMenu" destination="p8h-Fg-h1O" id="elV-BC-ZZt"/>
|
||||||
<outlet property="fileNewMenuItem" destination="82" id="BUX-dy-HS2"/>
|
<outlet property="fileNewMenuItem" destination="82" id="BUX-dy-HS2"/>
|
||||||
<outlet property="fixAutotypeMenuItem" destination="nx7-Vf-LiD" id="5n1-bG-JxJ"/>
|
<outlet property="fixAutotypeMenuItem" destination="nx7-Vf-LiD" id="5n1-bG-JxJ"/>
|
||||||
|
<outlet property="importMenu" destination="4q9-u1-pcm" id="0XM-fS-Vyy"/>
|
||||||
|
<outlet property="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="14490.70" 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="14490.70"/>
|
||||||
|
<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,16 +20,16 @@
|
|||||||
</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="1280" height="777"/>
|
||||||
<view key="contentView" id="2">
|
<view key="contentView" 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="26"/>
|
||||||
<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"/>
|
||||||
@@ -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="153" 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>
|
||||||
@@ -95,11 +95,11 @@
|
|||||||
<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="119" width="236" height="24"/>
|
||||||
<secureTextFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="Repeat Password" drawsBackground="YES" usesSingleLineMode="YES" id="15">
|
<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,8 +107,8 @@
|
|||||||
</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="161" y="185" width="131" 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="Mismatching 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"/>
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
@@ -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="-8" y="-14"/>
|
||||||
</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="15705" 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="15705"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
@@ -10,9 +10,10 @@
|
|||||||
<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="keyFileWarningTextField" destination="txI-yI-5nE" id="WhF-O8-fsZ"/>
|
||||||
<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 +23,10 @@
|
|||||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||||
<customView horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="1">
|
<customView horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="1">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="524" height="303"/>
|
<rect key="frame" x="0.0" y="0.0" width="508" height="526"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2">
|
||||||
<rect key="frame" x="318" y="64" width="83" height="32"/>
|
<rect key="frame" x="310" y="168" 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 +39,7 @@ DQ
|
|||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="17">
|
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="17">
|
||||||
<rect key="frame" x="116" y="112" width="45" height="17"/>
|
<rect key="frame" x="108" y="226" width="45" height="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Keyfile" id="18">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Keyfile" id="18">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
@@ -46,16 +47,13 @@ DQ
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<pathControl verticalHuggingPriority="750" allowsExpansionToolTips="YES" translatesAutoresizingMaskIntoConstraints="NO" id="241" customClass="MPPathControl">
|
<pathControl verticalHuggingPriority="750" allowsExpansionToolTips="YES" translatesAutoresizingMaskIntoConstraints="NO" id="241" customClass="MPPathControl">
|
||||||
<rect key="frame" x="164" y="108" width="197" height="26"/>
|
<rect key="frame" x="156" y="222" width="197" height="25"/>
|
||||||
<pathCell key="cell" selectable="YES" editable="YES" alignment="left" pathStyle="popUp" id="242">
|
<pathCell key="cell" selectable="YES" editable="YES" alignment="left" pathStyle="popUp" id="242" customClass="MPPathCell">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
</pathCell>
|
</pathCell>
|
||||||
<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="305" width="48" height="48"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="height" constant="48" id="273"/>
|
<constraint firstAttribute="height" constant="48" id="273"/>
|
||||||
<constraint firstAttribute="width" constant="48" id="456"/>
|
<constraint firstAttribute="width" constant="48" id="456"/>
|
||||||
@@ -63,21 +61,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="281" width="110" height="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Wrong password!" id="269">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Wrong password!" id="269">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
<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="253" width="191" height="20"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" constant="191" id="389"/>
|
<constraint firstAttribute="width" constant="191" id="389"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<secureTextFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="Enter Password" drawsBackground="YES" usesSingleLineMode="YES" id="339">
|
<secureTextFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="Enter Password" drawsBackground="YES" usesSingleLineMode="YES" id="339">
|
||||||
<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 +86,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="358" y="250" width="29" height="23"/>
|
||||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSQuickLookTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="409">
|
<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="358" y="220" width="29" height="23"/>
|
||||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSStopProgressTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="487">
|
<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 +103,14 @@ DQ
|
|||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="d8O-Ha-rrS">
|
<button translatesAutoresizingMaskIntoConstraints="NO" id="d8O-Ha-rrS">
|
||||||
<rect key="frame" x="80" y="143" width="81" height="18"/>
|
<rect key="frame" x="72" y="254" 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="228" y="168" 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"/>
|
||||||
@@ -124,6 +122,14 @@ Gw
|
|||||||
<action selector="_submit:" target="-2" id="aVF-1d-1Hq"/>
|
<action selector="_submit:" target="-2" id="aVF-1d-1Hq"/>
|
||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
|
<textField hidden="YES" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="txI-yI-5nE">
|
||||||
|
<rect key="frame" x="157" y="204" width="195" height="14"/>
|
||||||
|
<textFieldCell key="cell" selectable="YES" title="key_file_warnig" id="f6J-5f-ZvP">
|
||||||
|
<font key="font" metaFont="smallSystem"/>
|
||||||
|
<color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
</subviews>
|
</subviews>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="2" secondAttribute="bottom" constant="20" symbolic="YES" id="122"/>
|
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="2" secondAttribute="bottom" constant="20" symbolic="YES" id="122"/>
|
||||||
@@ -140,7 +146,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 +153,19 @@ 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="txI-yI-5nE" firstAttribute="trailing" secondItem="241" secondAttribute="trailing" id="AVL-HO-SMq"/>
|
||||||
|
<constraint firstItem="17" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="EOa-K4-v7J"/>
|
||||||
<constraint firstItem="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="2" firstAttribute="top" secondItem="txI-yI-5nE" secondAttribute="bottom" constant="8" symbolic="YES" id="jJs-hc-O2O"/>
|
||||||
<constraint firstItem="d8O-Ha-rrS" firstAttribute="centerY" secondItem="338" secondAttribute="centerY" id="kgB-jV-OGy"/>
|
<constraint firstItem="d8O-Ha-rrS" firstAttribute="centerY" secondItem="338" secondAttribute="centerY" id="kgB-jV-OGy"/>
|
||||||
|
<constraint firstItem="txI-yI-5nE" firstAttribute="top" secondItem="241" secondAttribute="bottom" constant="8" symbolic="YES" id="lfg-eB-T2O"/>
|
||||||
|
<constraint firstItem="txI-yI-5nE" firstAttribute="leading" secondItem="241" secondAttribute="leading" id="nGY-6Q-Vwy"/>
|
||||||
<constraint firstItem="d8O-Ha-rrS" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="vxq-YP-UhR"/>
|
<constraint firstItem="d8O-Ha-rrS" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="vxq-YP-UhR"/>
|
||||||
<constraint firstItem="2" firstAttribute="leading" secondItem="2pb-ZG-spA" secondAttribute="trailing" constant="12" id="ytJ-5Z-5rT"/>
|
<constraint firstItem="2" firstAttribute="leading" secondItem="2pb-ZG-spA" secondAttribute="trailing" constant="12" id="ytJ-5Z-5rT"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<point key="canvasLocation" x="-240" y="25"/>
|
<point key="canvasLocation" x="-127" y="-46"/>
|
||||||
</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>
|
||||||
156
MacPass/Base.lproj/PickfieldView.xib
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||||
|
<dependencies>
|
||||||
|
<deployment identifier="macosx"/>
|
||||||
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
||||||
|
<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"/>
|
||||||
|
<string key="keyEquivalent" base64-UTF8="YES">
|
||||||
|
DQ
|
||||||
|
</string>
|
||||||
|
</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" wantsLayer="YES" 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" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="b5D-WW-IPI">
|
||||||
|
<rect key="frame" x="224" y="17" width="15" height="102"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
</scroller>
|
||||||
|
<tableHeaderView key="headerView" id="jX4-Gp-btT">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="436" height="23"/>
|
||||||
|
<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"/>
|
||||||
@@ -1,15 +1,18 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="13529" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13529"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
||||||
<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>
|
||||||
<objects>
|
<objects>
|
||||||
<customObject id="-2" userLabel="File's Owner" customClass="MPPluginSettingsController">
|
<customObject id="-2" userLabel="File's Owner" customClass="MPPluginPreferencesController">
|
||||||
<connections>
|
<connections>
|
||||||
<outlet property="addRemovePluginsControl" destination="B9Q-hq-K4N" id="Oqj-Ko-8UR"/>
|
<outlet property="addRemovePluginsControl" destination="B9Q-hq-K4N" id="Oqj-Ko-8UR"/>
|
||||||
|
<outlet property="allowRemoteConnectionCheckButton" destination="K0z-aD-K2P" id="VDW-fd-evK"/>
|
||||||
|
<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="loadInsecurePlugsinCheckButton" destination="CqP-oK-S8k" id="YET-o6-7Cc"/>
|
||||||
<outlet property="pluginTableView" destination="Ocu-C0-03d" id="jbH-qr-bVT"/>
|
<outlet property="pluginTableView" destination="Ocu-C0-03d" id="jbH-qr-bVT"/>
|
||||||
<outlet property="settingsView" destination="tD5-Na-7XI" id="Pa0-Tt-20U"/>
|
<outlet property="settingsView" destination="tD5-Na-7XI" id="Pa0-Tt-20U"/>
|
||||||
@@ -19,39 +22,66 @@
|
|||||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||||
<customView translatesAutoresizingMaskIntoConstraints="NO" id="Hz6-mo-xeY">
|
<customView translatesAutoresizingMaskIntoConstraints="NO" id="Hz6-mo-xeY">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="520" height="473"/>
|
<rect key="frame" x="0.0" y="0.0" width="607" height="502"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<box borderType="line" title="Box" titlePosition="noTitle" translatesAutoresizingMaskIntoConstraints="NO" id="vBs-Ga-aq0">
|
<box borderType="line" title="Box" titlePosition="noTitle" translatesAutoresizingMaskIntoConstraints="NO" id="vBs-Ga-aq0">
|
||||||
<rect key="frame" x="175" y="46" width="328" height="351"/>
|
<rect key="frame" x="175" y="46" width="415" height="306"/>
|
||||||
<view key="contentView" id="tD5-Na-7XI">
|
<view key="contentView" id="tD5-Na-7XI">
|
||||||
<rect key="frame" x="1" y="1" width="326" height="349"/>
|
<rect key="frame" x="3" y="3" width="409" height="300"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<customView translatesAutoresizingMaskIntoConstraints="NO" id="wIk-iw-Tcz">
|
||||||
|
<rect key="frame" x="20" y="20" width="369" height="260"/>
|
||||||
|
<subviews>
|
||||||
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="qPL-FR-ky7">
|
||||||
|
<rect key="frame" x="18" y="223" width="333" 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>
|
</view>
|
||||||
</box>
|
</box>
|
||||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="CqP-oK-S8k">
|
<button translatesAutoresizingMaskIntoConstraints="NO" id="CqP-oK-S8k">
|
||||||
<rect key="frame" x="18" y="437" width="159" height="18"/>
|
<rect key="frame" x="18" y="422" width="159" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Load unsecure Plugins" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="C4B-6z-ZqX">
|
<buttonCell key="cell" type="check" title="Load unsecure Plugins" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="C4B-6z-ZqX">
|
||||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
</buttonCell>
|
</buttonCell>
|
||||||
</button>
|
</button>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="aoG-FD-ds8">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="aoG-FD-ds8">
|
||||||
<rect key="frame" x="18" y="403" width="484" height="28"/>
|
<rect key="frame" x="18" y="388" width="571" height="28"/>
|
||||||
<textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" id="2bX-8S-9XM">
|
<textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" id="2bX-8S-9XM">
|
||||||
<font key="font" metaFont="smallSystem"/>
|
<font key="font" metaFont="smallSystem"/>
|
||||||
<string key="title">If enabled, only properly signed Plugins will be loaded. Keep in mind, that Plugins have full access to your data! Changes take affect on restart.</string>
|
<string key="title">If enabled, Plugins without proper signatures will be allowed to load. Keep in mind, that Plugins have full access to your data! Changes take affect on restart.</string>
|
||||||
<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>
|
||||||
<scrollView autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fCk-fL-jU8">
|
<scrollView autohidesScrollers="YES" horizontalLineScroll="37" horizontalPageScroll="10" verticalLineScroll="37" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fCk-fL-jU8">
|
||||||
<rect key="frame" x="20" y="50" width="150" height="345"/>
|
<rect key="frame" x="20" y="50" width="150" height="300"/>
|
||||||
<clipView key="contentView" id="lTL-Q2-k45">
|
<clipView key="contentView" id="lTL-Q2-k45">
|
||||||
<rect key="frame" x="1" y="1" width="148" height="343"/>
|
<rect key="frame" x="1" y="1" width="148" height="298"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnReordering="NO" columnSelection="YES" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" rowSizeStyle="automatic" viewBased="YES" id="Ocu-C0-03d">
|
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnReordering="NO" columnSelection="YES" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" rowHeight="35" rowSizeStyle="automatic" viewBased="YES" id="Ocu-C0-03d">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="148" height="343"/>
|
<rect key="frame" x="0.0" y="0.0" width="148" height="298"/>
|
||||||
<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"/>
|
||||||
@@ -70,21 +100,38 @@
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||||
<prototypeCellViews>
|
<prototypeCellViews>
|
||||||
<tableCellView id="vVt-P3-yLp">
|
<tableCellView id="vVt-P3-yLp" customClass="MPPluginTabelCellView">
|
||||||
<rect key="frame" x="1" y="1" width="145" height="17"/>
|
<rect key="frame" x="1" y="1" width="145" height="35"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="q1P-PD-0LW">
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="q1P-PD-0LW">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="100" height="17"/>
|
<rect key="frame" x="0.0" y="18" width="145" height="17"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Table View Cell" id="fug-79-n9g">
|
||||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="fug-79-n9g">
|
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
<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" 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>
|
</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="2" 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>
|
<connections>
|
||||||
|
<outlet property="addionalTextField" destination="fQy-Sz-4VA" id="nr7-5w-TEg"/>
|
||||||
<outlet property="textField" destination="q1P-PD-0LW" id="yB7-Uf-IIx"/>
|
<outlet property="textField" destination="q1P-PD-0LW" id="yB7-Uf-IIx"/>
|
||||||
</connections>
|
</connections>
|
||||||
</tableCellView>
|
</tableCellView>
|
||||||
@@ -98,17 +145,17 @@
|
|||||||
<constraint firstAttribute="width" constant="150" id="ZpW-Bc-fSx"/>
|
<constraint firstAttribute="width" constant="150" id="ZpW-Bc-fSx"/>
|
||||||
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="150" id="eXb-yq-O8y"/>
|
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="150" id="eXb-yq-O8y"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="UK5-gt-5o5">
|
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="UK5-gt-5o5">
|
||||||
<rect key="frame" x="1" y="133" width="148" height="16"/>
|
<rect key="frame" x="1" y="328" width="148" height="16"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
</scroller>
|
</scroller>
|
||||||
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="NO" id="oqL-7I-4H1">
|
<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"/>
|
<rect key="frame" x="224" y="17" width="15" height="102"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
</scroller>
|
</scroller>
|
||||||
</scrollView>
|
</scrollView>
|
||||||
<segmentedControl verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="B9Q-hq-K4N">
|
<segmentedControl verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="B9Q-hq-K4N">
|
||||||
<rect key="frame" x="20" y="18" width="67" height="25"/>
|
<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">
|
<segmentedCell key="cell" borderStyle="border" alignment="left" style="texturedSquare" trackingMode="momentary" id="cj3-R6-g1E">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
<segments>
|
<segments>
|
||||||
@@ -121,8 +168,8 @@
|
|||||||
</connections>
|
</connections>
|
||||||
</segmentedControl>
|
</segmentedControl>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="SNe-cc-CZs">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="SNe-cc-CZs">
|
||||||
<rect key="frame" x="383" y="18" width="117" height="25"/>
|
<rect key="frame" x="413" y="19" width="174" height="23"/>
|
||||||
<buttonCell key="cell" type="roundTextured" title="Browse Plugins…" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="sqO-8H-n1y">
|
<buttonCell key="cell" type="roundTextured" title="Browse Available Plugins…" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="sqO-8H-n1y">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
</buttonCell>
|
</buttonCell>
|
||||||
@@ -130,29 +177,60 @@
|
|||||||
<action selector="browsePlugins:" target="-2" id="16S-2u-Tmi"/>
|
<action selector="browsePlugins:" target="-2" id="16S-2u-Tmi"/>
|
||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="XIl-03-JZP">
|
||||||
|
<rect key="frame" x="18" y="356" width="250" height="18"/>
|
||||||
|
<buttonCell key="cell" type="check" title="Force loading of incompatible Plugins" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="yak-fS-jtA">
|
||||||
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
</button>
|
||||||
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="K0z-aD-K2P">
|
||||||
|
<rect key="frame" x="18" y="466" width="243" height="18"/>
|
||||||
|
<buttonCell key="cell" type="check" title="Download current Plugin information" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="uHR-uL-Ddm">
|
||||||
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
</button>
|
||||||
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="nrf-Hz-0vB">
|
||||||
|
<rect key="frame" x="18" y="446" width="349" height="14"/>
|
||||||
|
<textFieldCell key="cell" controlSize="small" selectable="YES" title="If enabled, a remote connection is established to macpassapp.org" id="i3S-9b-Bpf">
|
||||||
|
<font key="font" metaFont="smallSystem"/>
|
||||||
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
</subviews>
|
</subviews>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstItem="CqP-oK-S8k" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="20" id="1Rj-zS-7t2"/>
|
<constraint firstItem="CqP-oK-S8k" firstAttribute="top" secondItem="nrf-Hz-0vB" secondAttribute="bottom" constant="8" symbolic="YES" 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="vBs-Ga-aq0" firstAttribute="top" secondItem="fCk-fL-jU8" secondAttribute="top" id="2h6-C9-4N5"/>
|
||||||
|
<constraint firstItem="nrf-Hz-0vB" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="2hE-FW-30g"/>
|
||||||
<constraint firstItem="B9Q-hq-K4N" firstAttribute="top" secondItem="fCk-fL-jU8" secondAttribute="bottom" constant="8" symbolic="YES" id="3vA-Oh-cFO"/>
|
<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="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="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 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 firstItem="vBs-Ga-aq0" firstAttribute="bottom" secondItem="fCk-fL-jU8" secondAttribute="bottom" id="BQ2-Wp-Fsh"/>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="K0z-aD-K2P" secondAttribute="trailing" constant="20" symbolic="YES" id="CFf-LD-G7q"/>
|
||||||
<constraint firstAttribute="bottom" secondItem="SNe-cc-CZs" secondAttribute="bottom" constant="20" symbolic="YES" id="Fqe-ch-vsS"/>
|
<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 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="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 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 firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="CqP-oK-S8k" secondAttribute="trailing" constant="20" symbolic="YES" id="TXL-mf-nxu"/>
|
||||||
|
<constraint firstItem="K0z-aD-K2P" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="XzM-3L-OgP"/>
|
||||||
<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="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="fCk-fL-jU8" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" id="fzW-4b-L8S"/>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="nrf-Hz-0vB" secondAttribute="trailing" constant="20" symbolic="YES" id="hMs-HE-d8h"/>
|
||||||
|
<constraint firstItem="nrf-Hz-0vB" firstAttribute="top" secondItem="K0z-aD-K2P" secondAttribute="bottom" constant="8" symbolic="YES" id="ohE-9y-xO4"/>
|
||||||
|
<constraint firstItem="XIl-03-JZP" firstAttribute="leading" secondItem="CqP-oK-S8k" secondAttribute="leading" id="oqX-wa-jm0"/>
|
||||||
|
<constraint firstItem="K0z-aD-K2P" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="20" symbolic="YES" id="q4N-Jc-F3L"/>
|
||||||
<constraint firstItem="SNe-cc-CZs" firstAttribute="top" secondItem="vBs-Ga-aq0" secondAttribute="bottom" constant="8" symbolic="YES" id="r4X-iM-iYU"/>
|
<constraint firstItem="SNe-cc-CZs" firstAttribute="top" secondItem="vBs-Ga-aq0" secondAttribute="bottom" constant="8" symbolic="YES" id="r4X-iM-iYU"/>
|
||||||
<constraint firstItem="CqP-oK-S8k" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" id="rN1-3Z-BBi"/>
|
<constraint firstItem="CqP-oK-S8k" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" id="rN1-3Z-BBi"/>
|
||||||
<constraint firstItem="fCk-fL-jU8" firstAttribute="top" secondItem="aoG-FD-ds8" secondAttribute="bottom" constant="8" id="vl9-MY-WW1"/>
|
<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="vBs-Ga-aq0" firstAttribute="leading" secondItem="fCk-fL-jU8" secondAttribute="trailing" constant="8" id="xNu-Sj-xQO"/>
|
||||||
<constraint firstItem="aoG-FD-ds8" firstAttribute="top" secondItem="CqP-oK-S8k" secondAttribute="bottom" constant="8" symbolic="YES" id="zSW-h3-BrT"/>
|
<constraint firstItem="aoG-FD-ds8" firstAttribute="top" secondItem="CqP-oK-S8k" secondAttribute="bottom" constant="8" symbolic="YES" id="zSW-h3-BrT"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<point key="canvasLocation" x="-214" y="11"/>
|
<point key="canvasLocation" x="179" y="115"/>
|
||||||
</customView>
|
</customView>
|
||||||
</objects>
|
</objects>
|
||||||
<resources>
|
<resources>
|
||||||
234
MacPass/Base.lproj/PluginRepositoryBrowserView.xib
Normal file
@@ -0,0 +1,234 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||||
|
<dependencies>
|
||||||
|
<deployment identifier="macosx"/>
|
||||||
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
||||||
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
|
</dependencies>
|
||||||
|
<objects>
|
||||||
|
<customObject id="-2" userLabel="File's Owner" customClass="MPPluginRepositoryBrowserViewController">
|
||||||
|
<connections>
|
||||||
|
<outlet property="itemTable" destination="gDR-Fx-c0h" id="yYx-qm-i7K"/>
|
||||||
|
<outlet property="updatedAtTextField" destination="d2Q-7O-ilP" id="uiZ-VA-MQv"/>
|
||||||
|
<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="638" height="513"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<scrollView autohidesScrollers="YES" horizontalLineScroll="26" horizontalPageScroll="10" verticalLineScroll="26" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="V1g-KK-vjw">
|
||||||
|
<rect key="frame" x="20" y="74" width="598" height="419"/>
|
||||||
|
<clipView key="contentView" id="Sqy-VI-iH4">
|
||||||
|
<rect key="frame" x="1" y="0.0" width="596" height="418"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="sequential" alternatingRowBackgroundColors="YES" columnReordering="NO" columnResizing="NO" multipleSelection="NO" emptySelection="NO" autosaveColumns="NO" rowHeight="24" rowSizeStyle="systemDefault" headerView="uVe-04-Now" viewBased="YES" id="gDR-Fx-c0h">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="599" height="395"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
<size key="intercellSpacing" width="3" height="2"/>
|
||||||
|
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<tableColumns>
|
||||||
|
<tableColumn width="145" minWidth="10" maxWidth="3.4028234663852886e+38" id="Nzo-rR-Hfx">
|
||||||
|
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left" title="Plugin">
|
||||||
|
<font key="font" metaFont="smallSystem"/>
|
||||||
|
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
|
</tableHeaderCell>
|
||||||
|
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" alignment="left" title="Text Cell" id="cFE-KE-Xjx">
|
||||||
|
<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="Uuc-Kh-oDl">
|
||||||
|
<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="6fB-f9-l44">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="145" height="17"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||||
|
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="DRt-Gz-DUm">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<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="6fB-f9-l44" id="gS0-YM-TI7"/>
|
||||||
|
</connections>
|
||||||
|
</tableCellView>
|
||||||
|
</prototypeCellViews>
|
||||||
|
</tableColumn>
|
||||||
|
<tableColumn width="88" minWidth="10" maxWidth="3.4028234663852886e+38" id="hFg-AD-SqD">
|
||||||
|
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left" title="Latest Version">
|
||||||
|
<font key="font" metaFont="smallSystem"/>
|
||||||
|
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
|
</tableHeaderCell>
|
||||||
|
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" alignment="left" title="Text Cell" id="QPj-W1-su1">
|
||||||
|
<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="AKl-7g-maS">
|
||||||
|
<rect key="frame" x="149" y="1" width="88" height="17"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="gZz-x5-KVH">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="88" height="17"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||||
|
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="nc9-mo-2e5">
|
||||||
|
<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="gZz-x5-KVH" id="1HS-lu-tZv"/>
|
||||||
|
</connections>
|
||||||
|
</tableCellView>
|
||||||
|
</prototypeCellViews>
|
||||||
|
</tableColumn>
|
||||||
|
<tableColumn width="357" minWidth="10" maxWidth="3.4028234663852886e+38" id="g1Q-BS-vCR">
|
||||||
|
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left" title="Status">
|
||||||
|
<font key="font" metaFont="smallSystem"/>
|
||||||
|
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
|
</tableHeaderCell>
|
||||||
|
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" alignment="left" title="Text Cell" id="Pl1-4o-5uY">
|
||||||
|
<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="RMm-PO-UNp" customClass="MPPluginStatusTableCellView">
|
||||||
|
<rect key="frame" x="240" y="1" width="357" height="17"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="RBa-0B-xVt">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="96" height="17"/>
|
||||||
|
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="ZIf-CU-gh7">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="tVV-rz-Aff">
|
||||||
|
<rect key="frame" x="291" y="-1" width="46" height="19"/>
|
||||||
|
<buttonCell key="cell" type="roundTextured" title="Action" bezelStyle="texturedRounded" alignment="center" controlSize="small" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="6jQ-Uk-uqD">
|
||||||
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
|
<font key="font" metaFont="smallSystem"/>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<action selector="executePluginAction:" target="-2" id="F6d-ns-ats"/>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstItem="tVV-rz-Aff" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="RBa-0B-xVt" secondAttribute="trailing" constant="8" symbolic="YES" id="KPq-aq-5m6"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="tVV-rz-Aff" secondAttribute="trailing" constant="20" symbolic="YES" id="MRd-Ov-adP"/>
|
||||||
|
<constraint firstItem="RBa-0B-xVt" firstAttribute="centerY" secondItem="RMm-PO-UNp" secondAttribute="centerY" id="V1D-iD-NGv"/>
|
||||||
|
<constraint firstItem="RBa-0B-xVt" firstAttribute="leading" secondItem="RMm-PO-UNp" secondAttribute="leading" constant="2" id="kE3-bd-GY0"/>
|
||||||
|
<constraint firstItem="tVV-rz-Aff" firstAttribute="centerY" secondItem="RMm-PO-UNp" secondAttribute="centerY" id="uxx-BA-DzR"/>
|
||||||
|
</constraints>
|
||||||
|
<connections>
|
||||||
|
<outlet property="actionButton" destination="tVV-rz-Aff" id="ikh-RO-wMJ"/>
|
||||||
|
<outlet property="textField" destination="RBa-0B-xVt" id="d6i-pV-UrO"/>
|
||||||
|
</connections>
|
||||||
|
</tableCellView>
|
||||||
|
</prototypeCellViews>
|
||||||
|
</tableColumn>
|
||||||
|
</tableColumns>
|
||||||
|
<connections>
|
||||||
|
<outlet property="dataSource" destination="-2" id="h4c-vn-wkB"/>
|
||||||
|
<outlet property="delegate" destination="-2" id="Z3g-L4-Koe"/>
|
||||||
|
</connections>
|
||||||
|
</tableView>
|
||||||
|
</subviews>
|
||||||
|
</clipView>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="400" id="gYM-eK-y5v"/>
|
||||||
|
</constraints>
|
||||||
|
<scroller key="horizontalScroller" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="ajb-Vb-WhY">
|
||||||
|
<rect key="frame" x="1" y="402" width="596" height="16"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
</scroller>
|
||||||
|
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="3eJ-oK-GNt">
|
||||||
|
<rect key="frame" x="224" y="17" width="15" height="102"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
</scroller>
|
||||||
|
<tableHeaderView key="headerView" id="uVe-04-Now">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="599" height="23"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
</tableHeaderView>
|
||||||
|
</scrollView>
|
||||||
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="bGv-Zc-Vrk">
|
||||||
|
<rect key="frame" x="14" y="13" width="87" height="32"/>
|
||||||
|
<buttonCell key="cell" type="push" title="Refresh" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="NZw-nO-lZ3">
|
||||||
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<action selector="refresh:" target="-2" id="kif-fN-nkM"/>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Pkh-la-7FU">
|
||||||
|
<rect key="frame" x="552" y="13" width="72" height="32"/>
|
||||||
|
<buttonCell key="cell" type="push" title="Done" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="j9a-fn-Pye">
|
||||||
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<action selector="dismissController:" target="-2" id="oAU-cX-l8e"/>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="d2Q-7O-ilP">
|
||||||
|
<rect key="frame" x="110" y="49" width="72" height="17"/>
|
||||||
|
<textFieldCell key="cell" lineBreakMode="clipping" title="Updated at" id="DhR-ED-6gV">
|
||||||
|
<dateFormatter key="formatter" dateStyle="short" timeStyle="medium" doesRelativeDateFormatting="YES" id="0Ll-SA-lFN"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<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="fjQ-ni-Ayx">
|
||||||
|
<rect key="frame" x="18" y="49" width="88" height="17"/>
|
||||||
|
<textFieldCell key="cell" lineBreakMode="clipping" title="Last updated:" id="ntD-sJ-NRw">
|
||||||
|
<dateFormatter key="formatter" dateStyle="short" timeStyle="medium" doesRelativeDateFormatting="YES" id="fJu-2Q-skm"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstItem="d2Q-7O-ilP" firstAttribute="top" secondItem="V1g-KK-vjw" secondAttribute="bottom" constant="8" symbolic="YES" id="0Pm-R2-Jb4"/>
|
||||||
|
<constraint firstItem="Pkh-la-7FU" firstAttribute="top" secondItem="d2Q-7O-ilP" secondAttribute="bottom" constant="8" symbolic="YES" id="30X-fR-rks"/>
|
||||||
|
<constraint firstItem="V1g-KK-vjw" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="20" symbolic="YES" id="3jQ-NX-W3e"/>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="Pkh-la-7FU" secondAttribute="bottom" constant="20" symbolic="YES" id="AwW-xp-Lps"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="V1g-KK-vjw" secondAttribute="trailing" constant="20" symbolic="YES" id="DVA-MO-e4e"/>
|
||||||
|
<constraint firstItem="fjQ-ni-Ayx" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="Ftg-vZ-sS7"/>
|
||||||
|
<constraint firstItem="bGv-Zc-Vrk" firstAttribute="centerY" secondItem="Pkh-la-7FU" secondAttribute="centerY" id="J68-4H-1yJ"/>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="d2Q-7O-ilP" secondAttribute="trailing" constant="20" symbolic="YES" id="LAb-xb-eeR"/>
|
||||||
|
<constraint firstItem="V1g-KK-vjw" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="SQs-j2-6HH"/>
|
||||||
|
<constraint firstItem="fjQ-ni-Ayx" firstAttribute="top" secondItem="V1g-KK-vjw" secondAttribute="bottom" constant="8" symbolic="YES" id="gPb-YD-MaI"/>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="bGv-Zc-Vrk" secondAttribute="bottom" constant="20" symbolic="YES" id="hyU-hm-uRL"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="Pkh-la-7FU" secondAttribute="trailing" constant="20" symbolic="YES" id="iTm-72-HFD"/>
|
||||||
|
<constraint firstItem="Pkh-la-7FU" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="bGv-Zc-Vrk" secondAttribute="trailing" constant="12" symbolic="YES" id="lUQ-jf-KWR"/>
|
||||||
|
<constraint firstItem="bGv-Zc-Vrk" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" id="tk3-kF-k22"/>
|
||||||
|
<constraint firstItem="d2Q-7O-ilP" firstAttribute="leading" secondItem="fjQ-ni-Ayx" secondAttribute="trailing" constant="8" symbolic="YES" id="wHQ-Lk-2fv"/>
|
||||||
|
</constraints>
|
||||||
|
<point key="canvasLocation" x="193" y="-18"/>
|
||||||
|
</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="15702" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13196"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="15702"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
@@ -18,14 +18,14 @@
|
|||||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||||
<customView id="c22-O7-iKe">
|
<customView id="c22-O7-iKe">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="205" height="215"/>
|
<rect key="frame" x="0.0" y="0.0" width="207" height="213"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="IZP-Gd-jdU">
|
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="IZP-Gd-jdU">
|
||||||
<rect key="frame" x="13" y="152" width="82" height="25"/>
|
<rect key="frame" x="13" y="151" width="83" height="23"/>
|
||||||
<popUpButtonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="KPf-xE-gde">
|
<popUpButtonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="KPf-xE-gde">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="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,26 +36,26 @@
|
|||||||
<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="101" width="174" height="21"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="100" id="Seu-01-P53"/>
|
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="100" id="Seu-01-P53"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<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>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="T2o-aJ-JmD">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="T2o-aJ-JmD">
|
||||||
<rect key="frame" x="147" y="18" width="38" height="25"/>
|
<rect key="frame" x="149" y="19" width="38" height="23"/>
|
||||||
<buttonCell key="cell" type="roundTextured" title="Use" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Kqx-qm-nMG">
|
<buttonCell key="cell" type="roundTextured" title="Use" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Kqx-qm-nMG">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
</buttonCell>
|
</buttonCell>
|
||||||
</button>
|
</button>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="VR5-Rx-ueN">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="VR5-Rx-ueN">
|
||||||
<rect key="frame" x="101" y="184" width="24" height="14"/>
|
<rect key="frame" x="102" y="182" width="24" height="14"/>
|
||||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Key" id="K1t-OZ-ACe">
|
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Key" id="K1t-OZ-ACe">
|
||||||
<font key="font" metaFont="smallSystem"/>
|
<font key="font" metaFont="smallSystem"/>
|
||||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
@@ -63,7 +63,7 @@
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="sZo-ie-Asw">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="sZo-ie-Asw">
|
||||||
<rect key="frame" x="11" y="184" width="58" height="14"/>
|
<rect key="frame" x="11" y="182" width="58" height="14"/>
|
||||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Reference" id="r1V-VE-ngy">
|
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Reference" id="r1V-VE-ngy">
|
||||||
<font key="font" metaFont="smallSystem"/>
|
<font key="font" metaFont="smallSystem"/>
|
||||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
@@ -71,7 +71,7 @@
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<popUpButton horizontalHuggingPriority="249" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="b4e-k2-WPS">
|
<popUpButton horizontalHuggingPriority="249" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="b4e-k2-WPS">
|
||||||
<rect key="frame" x="103" y="152" width="82" height="25"/>
|
<rect key="frame" x="104" y="151" width="83" height="23"/>
|
||||||
<popUpButtonCell key="cell" type="roundTextured" title="Matching" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" selectedItem="yT1-XL-k6a" id="Aob-tW-bUP">
|
<popUpButtonCell key="cell" type="roundTextured" title="Matching" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" selectedItem="yT1-XL-k6a" id="Aob-tW-bUP">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
@@ -88,7 +88,7 @@
|
|||||||
</connections>
|
</connections>
|
||||||
</popUpButton>
|
</popUpButton>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="WTJ-he-uTu">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="WTJ-he-uTu">
|
||||||
<rect key="frame" x="11" y="132" width="37" height="14"/>
|
<rect key="frame" x="11" y="130" width="37" height="14"/>
|
||||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Match" id="9ce-da-syF">
|
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Match" id="9ce-da-syF">
|
||||||
<font key="font" metaFont="smallSystem"/>
|
<font key="font" metaFont="smallSystem"/>
|
||||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
@@ -96,15 +96,15 @@
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="mcC-bG-cCz">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="mcC-bG-cCz">
|
||||||
<rect key="frame" x="11" y="80" width="92" height="14"/>
|
<rect key="frame" x="11" y="79" width="92" height="14"/>
|
||||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Reference String" id="gik-Ha-hRd">
|
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Reference String" id="gik-Ha-hRd">
|
||||||
<font key="font" metaFont="smallSystem"/>
|
<font key="font" metaFont="smallSystem"/>
|
||||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
<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="174" height="21"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="Reference" drawsBackground="YES" id="dr9-x8-kKk">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="Reference" drawsBackground="YES" id="dr9-x8-kKk">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
|||||||
@@ -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,7 +20,7 @@
|
|||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2">
|
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2">
|
||||||
<rect key="frame" x="180" y="53" width="148" height="26"/>
|
<rect key="frame" x="179" y="53" width="149" height="25"/>
|
||||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="3">
|
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="3">
|
||||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="menu"/>
|
<font key="font" metaFont="menu"/>
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
</popUpButtonCell>
|
</popUpButtonCell>
|
||||||
</popUpButton>
|
</popUpButton>
|
||||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="11">
|
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="11">
|
||||||
<rect key="frame" x="125" y="58" width="51" height="17"/>
|
<rect key="frame" x="124" y="58" width="51" height="17"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Format:" id="12">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Format:" id="12">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="358" translatesAutoresizingMaskIntoConstraints="NO" id="51">
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="358" translatesAutoresizingMaskIntoConstraints="NO" id="51">
|
||||||
<rect key="frame" x="125" y="20" width="363" height="28"/>
|
<rect key="frame" x="124" y="20" width="364" height="28"/>
|
||||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Not all Information inside your current database can be stored with this format." id="52">
|
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Not all Information inside your current database can be stored with this format." id="52">
|
||||||
<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"/>
|
||||||
@@ -61,7 +61,7 @@
|
|||||||
<constraint firstItem="51" firstAttribute="top" secondItem="2" secondAttribute="bottom" constant="8" symbolic="YES" id="101"/>
|
<constraint firstItem="51" firstAttribute="top" secondItem="2" secondAttribute="bottom" constant="8" symbolic="YES" id="101"/>
|
||||||
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="51" secondAttribute="bottom" constant="20" symbolic="YES" id="103"/>
|
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="51" secondAttribute="bottom" constant="20" symbolic="YES" id="103"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<point key="canvasLocation" x="-36" y="-32"/>
|
<point key="canvasLocation" x="31" y="-47"/>
|
||||||
</customView>
|
</customView>
|
||||||
</objects>
|
</objects>
|
||||||
</document>
|
</document>
|
||||||
@@ -1,11 +1,12 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="10117" systemVersion="15G31" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="15702" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="10117"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="15702"/>
|
||||||
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
<customObject id="-2" userLabel="File's Owner" customClass="MPUpdateSettingsController">
|
<customObject id="-2" userLabel="File's Owner" customClass="MPUpdatePreferencesController">
|
||||||
<connections>
|
<connections>
|
||||||
<outlet property="automaticallyCheckForUpdatesCheckButton" destination="Z6x-oU-NC5" id="xHU-Lt-PmA"/>
|
<outlet property="automaticallyCheckForUpdatesCheckButton" destination="Z6x-oU-NC5" id="xHU-Lt-PmA"/>
|
||||||
<outlet property="checkIntervallPopupButton" destination="pWJ-eJ-MBf" id="znu-Me-2Me"/>
|
<outlet property="checkIntervallPopupButton" destination="pWJ-eJ-MBf" id="znu-Me-2Me"/>
|
||||||
@@ -17,8 +18,8 @@
|
|||||||
<customView translatesAutoresizingMaskIntoConstraints="NO" id="1">
|
<customView translatesAutoresizingMaskIntoConstraints="NO" id="1">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="400" height="95"/>
|
<rect key="frame" x="0.0" y="0.0" width="400" height="95"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<button verticalHuggingPriority="500" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Z6x-oU-NC5">
|
<button verticalHuggingPriority="500" translatesAutoresizingMaskIntoConstraints="NO" id="Z6x-oU-NC5">
|
||||||
<rect key="frame" x="21" y="59" width="228" height="18"/>
|
<rect key="frame" x="22" y="59" width="221" height="18"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="height" constant="14" id="ppB-Ka-SVN"/>
|
<constraint firstAttribute="height" constant="14" id="ppB-Ka-SVN"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
@@ -27,11 +28,11 @@
|
|||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
</buttonCell>
|
</buttonCell>
|
||||||
</button>
|
</button>
|
||||||
<popUpButton verticalHuggingPriority="750" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="pWJ-eJ-MBf">
|
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="pWJ-eJ-MBf">
|
||||||
<rect key="frame" x="145" y="17" width="112" height="26"/>
|
<rect key="frame" x="144" y="17" width="114" height="25"/>
|
||||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="Hl5-gO-B1c">
|
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="Hl5-gO-B1c">
|
||||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="menu"/>
|
<font key="font" metaFont="system"/>
|
||||||
<menu key="menu" title="OtherViews" id="RKd-H8-eCF">
|
<menu key="menu" title="OtherViews" id="RKd-H8-eCF">
|
||||||
<items>
|
<items>
|
||||||
<menuItem title="every Hour" tag="3600" id="DjF-1I-6Nq"/>
|
<menuItem title="every Hour" tag="3600" id="DjF-1I-6Nq"/>
|
||||||
@@ -44,8 +45,8 @@
|
|||||||
</menu>
|
</menu>
|
||||||
</popUpButtonCell>
|
</popUpButtonCell>
|
||||||
</popUpButton>
|
</popUpButton>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ckg-9t-MDS">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ckg-9t-MDS">
|
||||||
<rect key="frame" x="21" y="23" width="120" height="17"/>
|
<rect key="frame" x="22" y="23" width="118" height="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Check for Updates" id="9tL-CA-Vdg">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Check for Updates" id="9tL-CA-Vdg">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
@@ -61,10 +62,11 @@
|
|||||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="pWJ-eJ-MBf" secondAttribute="trailing" constant="20" symbolic="YES" id="QsU-uT-lfo"/>
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="pWJ-eJ-MBf" secondAttribute="trailing" constant="20" symbolic="YES" id="QsU-uT-lfo"/>
|
||||||
<constraint firstItem="ckg-9t-MDS" firstAttribute="leading" secondItem="Z6x-oU-NC5" secondAttribute="leading" id="W0y-Rp-Ucq"/>
|
<constraint firstItem="ckg-9t-MDS" firstAttribute="leading" secondItem="Z6x-oU-NC5" secondAttribute="leading" id="W0y-Rp-Ucq"/>
|
||||||
<constraint firstItem="pWJ-eJ-MBf" firstAttribute="top" secondItem="Z6x-oU-NC5" secondAttribute="bottom" constant="20" symbolic="YES" id="fhM-Ri-Op9"/>
|
<constraint firstItem="pWJ-eJ-MBf" firstAttribute="top" secondItem="Z6x-oU-NC5" secondAttribute="bottom" constant="20" symbolic="YES" id="fhM-Ri-Op9"/>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="Z6x-oU-NC5" secondAttribute="trailing" constant="20" symbolic="YES" id="mpe-6b-p3W"/>
|
||||||
<constraint firstItem="ckg-9t-MDS" firstAttribute="baseline" secondItem="pWJ-eJ-MBf" secondAttribute="baseline" id="ozZ-bW-f7y"/>
|
<constraint firstItem="ckg-9t-MDS" firstAttribute="baseline" secondItem="pWJ-eJ-MBf" secondAttribute="baseline" id="ozZ-bW-f7y"/>
|
||||||
<constraint firstAttribute="bottom" secondItem="pWJ-eJ-MBf" secondAttribute="bottom" constant="20" symbolic="YES" id="pHW-e8-EU6"/>
|
<constraint firstAttribute="bottom" secondItem="pWJ-eJ-MBf" secondAttribute="bottom" constant="20" symbolic="YES" id="pHW-e8-EU6"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<point key="canvasLocation" x="504" y="511.5"/>
|
<point key="canvasLocation" x="21" y="2"/>
|
||||||
</customView>
|
</customView>
|
||||||
</objects>
|
</objects>
|
||||||
</document>
|
</document>
|
||||||
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="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
|
<dependencies>
|
||||||
|
<deployment identifier="macosx"/>
|
||||||
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
||||||
|
<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="-680" y="-522"/>
|
||||||
|
</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>
|
|
||||||
@@ -1,16 +1,17 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="10117" systemVersion="15G31" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="15702" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="10117"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="15702"/>
|
||||||
<capability name="box content view" minToolsVersion="7.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="MPWorkflowSettingsController">
|
<customObject id="-2" userLabel="File's Owner" customClass="MPWorkflowPreferencesController">
|
||||||
<connections>
|
<connections>
|
||||||
<outlet property="browserPopup" destination="ehI-gq-lsb" id="YMy-L1-pQw"/>
|
<outlet property="browserPopup" destination="ehI-gq-lsb" id="YMy-L1-pQw"/>
|
||||||
<outlet property="doubleClickTitlePopup" destination="40" id="aKJ-q9-xjb"/>
|
<outlet property="doubleClickTitlePopup" destination="40" id="aKJ-q9-xjb"/>
|
||||||
<outlet property="doubleClickURLPopup" destination="13" id="fGP-5I-0XK"/>
|
<outlet property="doubleClickURLPopup" destination="13" id="fGP-5I-0XK"/>
|
||||||
|
<outlet property="hideAfterCopyToClipboardCheckButton" destination="vT4-wF-ned" id="d7e-vc-cAQ"/>
|
||||||
<outlet property="updatePasswordOnTemplateEntriesCheckButton" destination="LPY-sM-hjS" id="wav-op-uck"/>
|
<outlet property="updatePasswordOnTemplateEntriesCheckButton" destination="LPY-sM-hjS" id="wav-op-uck"/>
|
||||||
<outlet property="view" destination="1" id="52"/>
|
<outlet property="view" destination="1" id="52"/>
|
||||||
</connections>
|
</connections>
|
||||||
@@ -18,16 +19,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="231"/>
|
<rect key="frame" x="0.0" y="0.0" width="400" height="314"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<box autoresizesSubviews="NO" verticalHuggingPriority="500" title="Entry Table" borderType="line" translatesAutoresizingMaskIntoConstraints="NO" id="2">
|
<box autoresizesSubviews="NO" verticalHuggingPriority="500" borderType="line" title="Entry Table" translatesAutoresizingMaskIntoConstraints="NO" id="2">
|
||||||
<rect key="frame" x="17" y="90" width="366" height="92"/>
|
<rect key="frame" x="17" y="166" width="366" height="99"/>
|
||||||
<view key="contentView" id="cfa-nq-Kzt">
|
<view key="contentView" id="cfa-nq-Kzt">
|
||||||
<rect key="frame" x="1" y="1" width="364" height="76"/>
|
<rect key="frame" x="3" y="3" width="360" height="81"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="9">
|
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="9">
|
||||||
<rect key="frame" x="17" y="47" width="133" height="17"/>
|
<rect key="frame" x="18" y="53" width="134" height="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Double-click on URL:" id="10">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Double-click on URL:" id="10">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
@@ -35,10 +36,10 @@
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="13">
|
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="13">
|
||||||
<rect key="frame" x="154" y="42" width="108" height="26"/>
|
<rect key="frame" x="156" y="47" width="109" height="25"/>
|
||||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="14">
|
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="14">
|
||||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="menu"/>
|
<font key="font" metaFont="system"/>
|
||||||
<menu key="menu" title="OtherViews" id="15">
|
<menu key="menu" title="OtherViews" id="15">
|
||||||
<items>
|
<items>
|
||||||
<menuItem title="Copies URL" id="16"/>
|
<menuItem title="Copies URL" id="16"/>
|
||||||
@@ -48,7 +49,7 @@
|
|||||||
</popUpButtonCell>
|
</popUpButtonCell>
|
||||||
</popUpButton>
|
</popUpButton>
|
||||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="36">
|
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="36">
|
||||||
<rect key="frame" x="16" y="16" width="134" height="17"/>
|
<rect key="frame" x="18" y="22" width="134" height="16"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" enabled="NO" sendsActionOnEndEditing="YES" title="Double-click on Title:" id="37">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" enabled="NO" sendsActionOnEndEditing="YES" title="Double-click on Title:" id="37">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
@@ -56,10 +57,10 @@
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="40">
|
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="40">
|
||||||
<rect key="frame" x="154" y="11" width="138" height="26"/>
|
<rect key="frame" x="156" y="17" width="139" height="24"/>
|
||||||
<popUpButtonCell key="cell" type="push" title="Opens Inspector" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="44" id="41">
|
<popUpButtonCell key="cell" type="push" title="Opens Inspector" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="44" id="41">
|
||||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="menu"/>
|
<font key="font" metaFont="system"/>
|
||||||
<menu key="menu" title="OtherViews" id="42">
|
<menu key="menu" title="OtherViews" id="42">
|
||||||
<items>
|
<items>
|
||||||
<menuItem title="Opens Inspector" state="on" id="44"/>
|
<menuItem title="Opens Inspector" state="on" id="44"/>
|
||||||
@@ -69,27 +70,30 @@
|
|||||||
</popUpButtonCell>
|
</popUpButtonCell>
|
||||||
</popUpButton>
|
</popUpButton>
|
||||||
</subviews>
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="40" secondAttribute="trailing" constant="20" symbolic="YES" id="3iK-WD-tbs"/>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="13" secondAttribute="trailing" constant="20" symbolic="YES" id="EQn-DK-viK"/>
|
||||||
|
<constraint firstItem="9" firstAttribute="leading" secondItem="cfa-nq-Kzt" secondAttribute="leading" constant="20" symbolic="YES" id="FHR-zo-tjR"/>
|
||||||
|
<constraint firstItem="9" firstAttribute="firstBaseline" secondItem="13" secondAttribute="firstBaseline" id="Swb-ay-7G0"/>
|
||||||
|
<constraint firstItem="36" firstAttribute="firstBaseline" secondItem="40" secondAttribute="firstBaseline" id="dWh-SS-Sc4"/>
|
||||||
|
<constraint firstItem="36" firstAttribute="leading" secondItem="cfa-nq-Kzt" secondAttribute="leading" constant="20" symbolic="YES" id="eqy-R2-mpP"/>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="40" secondAttribute="bottom" constant="20" symbolic="YES" id="lle-u8-JWP"/>
|
||||||
|
</constraints>
|
||||||
</view>
|
</view>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstItem="13" firstAttribute="leading" secondItem="9" secondAttribute="trailing" constant="8" symbolic="YES" id="1WE-nm-pp2"/>
|
<constraint firstItem="13" firstAttribute="leading" secondItem="9" secondAttribute="trailing" constant="8" symbolic="YES" id="1WE-nm-pp2"/>
|
||||||
<constraint firstItem="40" firstAttribute="centerY" secondItem="36" secondAttribute="centerY" id="1hi-oU-uNn"/>
|
<constraint firstItem="40" firstAttribute="centerY" secondItem="36" secondAttribute="centerY" id="1hi-oU-uNn"/>
|
||||||
<constraint firstItem="36" firstAttribute="leading" secondItem="2" secondAttribute="leading" constant="16" id="MEC-5G-cdx"/>
|
|
||||||
<constraint firstItem="13" firstAttribute="top" secondItem="2" secondAttribute="top" constant="25" id="Nd9-4H-y8b"/>
|
<constraint firstItem="13" firstAttribute="top" secondItem="2" secondAttribute="top" constant="25" id="Nd9-4H-y8b"/>
|
||||||
<constraint firstAttribute="bottom" secondItem="40" secondAttribute="bottom" constant="11" id="OcJ-8r-v55"/>
|
|
||||||
<constraint firstItem="36" firstAttribute="centerY" secondItem="40" secondAttribute="centerY" id="Rts-Ze-x1u"/>
|
|
||||||
<constraint firstItem="40" firstAttribute="top" secondItem="13" secondAttribute="bottom" constant="10" symbolic="YES" id="YWX-K2-P8C"/>
|
<constraint firstItem="40" firstAttribute="top" secondItem="13" secondAttribute="bottom" constant="10" symbolic="YES" id="YWX-K2-P8C"/>
|
||||||
<constraint firstItem="13" firstAttribute="centerY" secondItem="9" secondAttribute="centerY" id="YqK-Q6-jmb"/>
|
|
||||||
<constraint firstItem="13" firstAttribute="leading" secondItem="40" secondAttribute="leading" id="mih-x6-1K0"/>
|
<constraint firstItem="13" firstAttribute="leading" secondItem="40" secondAttribute="leading" id="mih-x6-1K0"/>
|
||||||
<constraint firstItem="40" firstAttribute="leading" secondItem="36" secondAttribute="trailing" constant="8" symbolic="YES" id="tsy-wg-saI"/>
|
<constraint firstItem="40" firstAttribute="leading" secondItem="36" secondAttribute="trailing" constant="8" symbolic="YES" id="tsy-wg-saI"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
|
|
||||||
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
|
||||||
</box>
|
</box>
|
||||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ehI-gq-lsb">
|
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ehI-gq-lsb">
|
||||||
<rect key="frame" x="115" y="187" width="134" height="26"/>
|
<rect key="frame" x="113" y="270" width="135" height="25"/>
|
||||||
<popUpButtonCell key="cell" type="push" title="Default Browser" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="7YX-EA-9KA" id="7Ip-sU-sAK">
|
<popUpButtonCell key="cell" type="push" title="Default Browser" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="7YX-EA-9KA" id="7Ip-sU-sAK">
|
||||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="menu"/>
|
<font key="font" metaFont="system"/>
|
||||||
<menu key="menu" title="OtherViews" id="XgO-Tj-QjO">
|
<menu key="menu" title="OtherViews" id="XgO-Tj-QjO">
|
||||||
<items>
|
<items>
|
||||||
<menuItem title="Default Browser" state="on" id="7YX-EA-9KA"/>
|
<menuItem title="Default Browser" state="on" id="7YX-EA-9KA"/>
|
||||||
@@ -100,21 +104,21 @@
|
|||||||
</popUpButtonCell>
|
</popUpButtonCell>
|
||||||
</popUpButton>
|
</popUpButton>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="lOo-NI-b07">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="lOo-NI-b07">
|
||||||
<rect key="frame" x="20" y="190" width="91" height="21"/>
|
<rect key="frame" x="18" y="273" width="91" height="19"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" enabled="NO" sendsActionOnEndEditing="YES" title="Open URLs in:" id="soD-wI-YOH">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" enabled="NO" sendsActionOnEndEditing="YES" title="Open URLs in:" id="soD-wI-YOH">
|
||||||
<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>
|
||||||
<box title="Templates" borderType="line" translatesAutoresizingMaskIntoConstraints="NO" id="Xvt-tP-TbR">
|
<box borderType="line" title="Templates" translatesAutoresizingMaskIntoConstraints="NO" id="Xvt-tP-TbR">
|
||||||
<rect key="frame" x="17" y="16" width="366" height="70"/>
|
<rect key="frame" x="17" y="92" width="366" height="72"/>
|
||||||
<view key="contentView" id="g0i-00-sng">
|
<view key="contentView" id="g0i-00-sng">
|
||||||
<rect key="frame" x="1" y="1" width="364" height="54"/>
|
<rect key="frame" x="3" y="3" width="360" height="54"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="LPY-sM-hjS">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="LPY-sM-hjS">
|
||||||
<rect key="frame" x="18" y="18" width="328" height="18"/>
|
<rect key="frame" x="18" y="18" width="222" height="18"/>
|
||||||
<buttonCell key="cell" type="check" title="Update password for new entries" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="RaM-t2-DVR">
|
<buttonCell key="cell" type="check" title="Update password for new entries" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="RaM-t2-DVR">
|
||||||
<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"/>
|
||||||
@@ -125,31 +129,53 @@
|
|||||||
<constraint firstItem="LPY-sM-hjS" firstAttribute="top" secondItem="g0i-00-sng" secondAttribute="top" constant="20" symbolic="YES" id="Ip3-vX-0L9"/>
|
<constraint firstItem="LPY-sM-hjS" firstAttribute="top" secondItem="g0i-00-sng" secondAttribute="top" constant="20" symbolic="YES" id="Ip3-vX-0L9"/>
|
||||||
<constraint firstItem="LPY-sM-hjS" firstAttribute="leading" secondItem="g0i-00-sng" secondAttribute="leading" constant="20" symbolic="YES" id="RE9-Jf-nFR"/>
|
<constraint firstItem="LPY-sM-hjS" firstAttribute="leading" secondItem="g0i-00-sng" secondAttribute="leading" constant="20" symbolic="YES" id="RE9-Jf-nFR"/>
|
||||||
<constraint firstAttribute="bottom" secondItem="LPY-sM-hjS" secondAttribute="bottom" constant="20" symbolic="YES" id="nGd-XA-Jj9"/>
|
<constraint firstAttribute="bottom" secondItem="LPY-sM-hjS" secondAttribute="bottom" constant="20" symbolic="YES" id="nGd-XA-Jj9"/>
|
||||||
<constraint firstAttribute="trailing" secondItem="LPY-sM-hjS" secondAttribute="trailing" constant="20" symbolic="YES" id="wyU-eZ-BSC"/>
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="LPY-sM-hjS" secondAttribute="trailing" constant="20" symbolic="YES" id="wyU-eZ-BSC"/>
|
||||||
|
</constraints>
|
||||||
|
</view>
|
||||||
|
</box>
|
||||||
|
<box title="Clipboard" translatesAutoresizingMaskIntoConstraints="NO" id="Kff-Xp-hAT">
|
||||||
|
<rect key="frame" x="17" y="16" width="366" height="72"/>
|
||||||
|
<view key="contentView" id="Ntf-zj-VZL">
|
||||||
|
<rect key="frame" x="3" y="3" width="360" height="54"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="vT4-wF-ned">
|
||||||
|
<rect key="frame" x="18" y="18" width="280" height="18"/>
|
||||||
|
<buttonCell key="cell" type="check" title="Hide application after copying to clipboard" bezelStyle="regularSquare" imagePosition="left" inset="2" id="1Vr-nY-Ogv">
|
||||||
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
</button>
|
||||||
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstItem="vT4-wF-ned" firstAttribute="leading" secondItem="Ntf-zj-VZL" secondAttribute="leading" constant="20" symbolic="YES" id="3ck-ZU-EY0"/>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="vT4-wF-ned" secondAttribute="bottom" constant="20" symbolic="YES" id="coG-iy-hF8"/>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="vT4-wF-ned" secondAttribute="trailing" constant="20" symbolic="YES" id="grJ-mW-4AM"/>
|
||||||
|
<constraint firstItem="vT4-wF-ned" firstAttribute="top" secondItem="Ntf-zj-VZL" secondAttribute="top" constant="20" symbolic="YES" id="ibE-Gy-bR6"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
</view>
|
</view>
|
||||||
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
|
|
||||||
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
|
||||||
</box>
|
</box>
|
||||||
</subviews>
|
</subviews>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstItem="2" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="5"/>
|
<constraint firstItem="2" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="5"/>
|
||||||
<constraint firstAttribute="trailing" secondItem="2" secondAttribute="trailing" constant="20" symbolic="YES" id="8"/>
|
<constraint firstAttribute="trailing" secondItem="2" secondAttribute="trailing" constant="20" symbolic="YES" id="8"/>
|
||||||
<constraint firstAttribute="width" constant="400" id="53"/>
|
<constraint firstAttribute="width" constant="400" id="53"/>
|
||||||
<constraint firstItem="Xvt-tP-TbR" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" id="BH4-4y-uma"/>
|
<constraint firstItem="Kff-Xp-hAT" firstAttribute="top" secondItem="Xvt-tP-TbR" secondAttribute="bottom" constant="8" symbolic="YES" id="3RL-tm-4wu"/>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="Kff-Xp-hAT" secondAttribute="bottom" constant="20" symbolic="YES" id="8k6-1d-wPj"/>
|
||||||
|
<constraint firstItem="Xvt-tP-TbR" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="BH4-4y-uma"/>
|
||||||
<constraint firstItem="2" firstAttribute="top" secondItem="ehI-gq-lsb" secondAttribute="bottom" constant="8" symbolic="YES" id="CnN-aU-Qa1"/>
|
<constraint firstItem="2" firstAttribute="top" secondItem="ehI-gq-lsb" secondAttribute="bottom" constant="8" symbolic="YES" id="CnN-aU-Qa1"/>
|
||||||
<constraint firstAttribute="bottom" secondItem="Xvt-tP-TbR" secondAttribute="bottom" constant="20" symbolic="YES" id="Dnn-I2-lsA"/>
|
|
||||||
<constraint firstItem="Xvt-tP-TbR" firstAttribute="top" secondItem="cfa-nq-Kzt" secondAttribute="bottom" constant="5" id="FVK-Uf-kLv"/>
|
<constraint firstItem="Xvt-tP-TbR" firstAttribute="top" secondItem="cfa-nq-Kzt" secondAttribute="bottom" constant="5" id="FVK-Uf-kLv"/>
|
||||||
<constraint firstItem="ehI-gq-lsb" firstAttribute="leading" secondItem="lOo-NI-b07" secondAttribute="trailing" constant="8" symbolic="YES" id="KxB-TG-rH5"/>
|
<constraint firstItem="ehI-gq-lsb" firstAttribute="leading" secondItem="lOo-NI-b07" secondAttribute="trailing" constant="8" symbolic="YES" id="KxB-TG-rH5"/>
|
||||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="ehI-gq-lsb" secondAttribute="trailing" constant="20" symbolic="YES" id="Ldw-aO-wuX"/>
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="ehI-gq-lsb" secondAttribute="trailing" constant="20" symbolic="YES" id="Ldw-aO-wuX"/>
|
||||||
<constraint firstItem="ehI-gq-lsb" firstAttribute="top" secondItem="1" secondAttribute="top" constant="20" symbolic="YES" id="MAe-l7-8k2"/>
|
<constraint firstItem="ehI-gq-lsb" firstAttribute="top" secondItem="1" secondAttribute="top" constant="20" symbolic="YES" id="MAe-l7-8k2"/>
|
||||||
<constraint firstItem="lOo-NI-b07" firstAttribute="centerY" secondItem="ehI-gq-lsb" secondAttribute="centerY" id="agv-2Z-m5A"/>
|
<constraint firstAttribute="trailing" secondItem="Kff-Xp-hAT" secondAttribute="trailing" constant="20" symbolic="YES" id="VLC-2A-Vdd"/>
|
||||||
|
<constraint firstItem="Kff-Xp-hAT" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="Vle-Z0-mh8"/>
|
||||||
<constraint firstAttribute="trailing" secondItem="Xvt-tP-TbR" secondAttribute="trailing" constant="20" id="anU-nC-YAw"/>
|
<constraint firstAttribute="trailing" secondItem="Xvt-tP-TbR" secondAttribute="trailing" constant="20" id="anU-nC-YAw"/>
|
||||||
<constraint firstItem="lOo-NI-b07" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="22" id="kaP-lB-tDY"/>
|
<constraint firstItem="lOo-NI-b07" firstAttribute="firstBaseline" secondItem="ehI-gq-lsb" secondAttribute="firstBaseline" id="gFK-Ce-Q3b"/>
|
||||||
<constraint firstItem="lOo-NI-b07" firstAttribute="top" secondItem="1" secondAttribute="top" constant="20" symbolic="YES" id="tEf-Ag-oTi"/>
|
<constraint firstItem="lOo-NI-b07" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="kaP-lB-tDY"/>
|
||||||
<constraint firstItem="2" firstAttribute="top" secondItem="lOo-NI-b07" secondAttribute="bottom" constant="8" symbolic="YES" id="xlS-Dj-cOt"/>
|
<constraint firstItem="2" firstAttribute="top" secondItem="lOo-NI-b07" secondAttribute="bottom" constant="8" symbolic="YES" id="xlS-Dj-cOt"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<point key="canvasLocation" x="435" y="649"/>
|
<point key="canvasLocation" x="-2" y="125"/>
|
||||||
</customView>
|
</customView>
|
||||||
</objects>
|
</objects>
|
||||||
</document>
|
</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="14490.70" 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="14490.70"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
@@ -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>
|
||||||
|
|||||||
@@ -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 = @"mp_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
|
||||||
@@ -28,10 +28,13 @@ typedef NS_ENUM(NSUInteger, MPActionType) {
|
|||||||
MPActionAddGroup, // Add a new group
|
MPActionAddGroup, // Add a new group
|
||||||
MPActionDuplicateEntry, // Simply duplicate an entry (including history)
|
MPActionDuplicateEntry, // Simply duplicate an entry (including history)
|
||||||
MPActionDuplicateEntryWithOptions, // Request user input on what to duplicate
|
MPActionDuplicateEntryWithOptions, // Request user input on what to duplicate
|
||||||
|
MPActionDuplicateGroup, // Duplicate the group and all it's children
|
||||||
MPActionReverToHistoryEntry, // Restore an entry to an older state in history
|
MPActionReverToHistoryEntry, // Restore an entry to an older state in history
|
||||||
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,
|
||||||
@@ -45,6 +48,7 @@ typedef NS_ENUM(NSUInteger, MPActionType) {
|
|||||||
MPActionToggleQuicklook,
|
MPActionToggleQuicklook,
|
||||||
MPActionShowEntryHistory, // show history
|
MPActionShowEntryHistory, // show history
|
||||||
MPActionHideEntryHistory, // exit history
|
MPActionHideEntryHistory, // exit history
|
||||||
|
MPActionShowGroupInOutline, // show the group (of the entry) in the outline view
|
||||||
MPActionPerformAutotypeForSelectedEntry, // Perform Autotype for selected Entry
|
MPActionPerformAutotypeForSelectedEntry, // Perform Autotype for selected Entry
|
||||||
MPActionRemoveAttachment // Remove an attachment
|
MPActionRemoveAttachment // Remove an attachment
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -38,10 +38,13 @@
|
|||||||
@(MPActionAddGroup): NSStringFromSelector(@selector(createGroup:)),
|
@(MPActionAddGroup): NSStringFromSelector(@selector(createGroup:)),
|
||||||
@(MPActionDuplicateEntry): NSStringFromSelector(@selector(duplicateEntry:)),
|
@(MPActionDuplicateEntry): NSStringFromSelector(@selector(duplicateEntry:)),
|
||||||
@(MPActionDuplicateEntryWithOptions): NSStringFromSelector(@selector(duplicateEntryWithOptions:)),
|
@(MPActionDuplicateEntryWithOptions): NSStringFromSelector(@selector(duplicateEntryWithOptions:)),
|
||||||
|
@(MPActionDuplicateGroup): NSStringFromSelector(@selector(duplicateGroup:)),
|
||||||
@(MPActionReverToHistoryEntry): NSStringFromSelector(@selector(revertToHistoryEntry:)),
|
@(MPActionReverToHistoryEntry): NSStringFromSelector(@selector(revertToHistoryEntry:)),
|
||||||
@(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:)),
|
||||||
@@ -55,6 +58,7 @@
|
|||||||
@(MPActionToggleQuicklook): NSStringFromSelector(@selector(toggleQuicklookPreview:)),
|
@(MPActionToggleQuicklook): NSStringFromSelector(@selector(toggleQuicklookPreview:)),
|
||||||
@(MPActionShowEntryHistory): NSStringFromSelector(@selector(showEntryHistory:)),
|
@(MPActionShowEntryHistory): NSStringFromSelector(@selector(showEntryHistory:)),
|
||||||
@(MPActionHideEntryHistory): NSStringFromSelector(@selector(hideEntryHistory:)),
|
@(MPActionHideEntryHistory): NSStringFromSelector(@selector(hideEntryHistory:)),
|
||||||
|
@(MPActionShowGroupInOutline): NSStringFromSelector(@selector(showGroupInOutline:)),
|
||||||
@(MPActionPerformAutotypeForSelectedEntry): NSStringFromSelector(@selector(performAutotypeForEntry:)),
|
@(MPActionPerformAutotypeForSelectedEntry): NSStringFromSelector(@selector(performAutotypeForEntry:)),
|
||||||
@(MPActionRemoveAttachment): NSStringFromSelector(@selector(removeAttachment:))
|
@(MPActionRemoveAttachment): NSStringFromSelector(@selector(removeAttachment:))
|
||||||
};
|
};
|
||||||
|
|||||||
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
|
||||||
@@ -24,6 +24,7 @@
|
|||||||
#import "MPDocument.h"
|
#import "MPDocument.h"
|
||||||
#import "MPDocumentWindowController.h"
|
#import "MPDocumentWindowController.h"
|
||||||
#import "MPActionHelper.h"
|
#import "MPActionHelper.h"
|
||||||
|
#import "KPKNode+IconImage.h"
|
||||||
|
|
||||||
#import "KeePassKit/KeePassKit.h"
|
#import "KeePassKit/KeePassKit.h"
|
||||||
|
|
||||||
@@ -37,19 +38,18 @@
|
|||||||
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.image = [entry.iconImage copy];
|
||||||
|
templateItem.image.size = NSMakeSize(14, 14);
|
||||||
templateItem.representedObject = entry.uuid;
|
templateItem.representedObject = entry.uuid;
|
||||||
[menu addItem:templateItem];
|
[menu addItem:templateItem];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,21 +24,26 @@
|
|||||||
|
|
||||||
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) IBOutlet NSMenu *exportMenu;
|
||||||
|
|
||||||
|
@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)showAutotypeDoctor:(id)sender;
|
||||||
- (IBAction)createNewDatabase:(id)sender;
|
- (IBAction)createNewDatabase:(id)sender;
|
||||||
- (IBAction)openDatabase:(id)sender;
|
- (IBAction)openDatabase:(id)sender;
|
||||||
- (IBAction)showHelp:(id)sender;
|
- (IBAction)showHelp:(id)sender;
|
||||||
@@ -50,4 +55,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,27 +33,46 @@
|
|||||||
#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 "MPAutotypeDoctor.h"
|
||||||
|
|
||||||
#import "NSApplication+MPAdditions.h"
|
#import "NSApplication+MPAdditions.h"
|
||||||
|
#import "NSTextView+MPTouchBarExtension.h"
|
||||||
|
|
||||||
#import "KeePassKit/KeePassKit.h"
|
#import "KeePassKit/KeePassKit.h"
|
||||||
|
|
||||||
#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";
|
|
||||||
|
typedef NS_OPTIONS(NSInteger, MPAppStartupState) {
|
||||||
|
MPAppStartupStateNone = 0,
|
||||||
|
MPAppStartupStateRestoredWindows = 1,
|
||||||
|
MPAppStartupStateFinishedLaunch = 2
|
||||||
|
};
|
||||||
|
|
||||||
@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 (assign, nonatomic) MPAppStartupState startupState;
|
||||||
|
|
||||||
|
@property (strong) MPEntryContextMenuDelegate *itemActionMenuDelegate;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@@ -62,17 +82,31 @@ 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];
|
||||||
|
_shouldOpenFile = NO;
|
||||||
|
self.startupState = MPAppStartupStateNone;
|
||||||
|
|
||||||
|
[NSNotificationCenter.defaultCenter addObserver:self
|
||||||
|
selector:@selector(_applicationDidFinishRestoringWindows:)
|
||||||
|
name:NSApplicationDidFinishRestoringWindowsNotification
|
||||||
|
object:nil];
|
||||||
|
|
||||||
/* We know that we do not use the variable after instantiation */
|
/* We know that we do not use the variable after instantiation */
|
||||||
#pragma clang diagnostic push
|
#pragma clang diagnostic push
|
||||||
#pragma clang diagnostic ignored "-Wunused-variable"
|
#pragma clang diagnostic ignored "-Wunused-variable"
|
||||||
MPDocumentController *documentController = [[MPDocumentController alloc] init];
|
MPDocumentController *documentController = [[MPDocumentController alloc] init];
|
||||||
#pragma clang diagnostic pop
|
#pragma clang diagnostic pop
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
@@ -91,7 +125,18 @@ 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];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)setStartupState:(MPAppStartupState)notificationState {
|
||||||
|
if(notificationState != self.startupState) {
|
||||||
|
_startupState = notificationState;
|
||||||
|
BOOL restored = self.startupState & MPAppStartupStateRestoredWindows;
|
||||||
|
BOOL launched = self.startupState & MPAppStartupStateFinishedLaunch;
|
||||||
|
if(restored && launched ) {
|
||||||
|
[self _applicationDidFinishLaunchingAndDidRestoreWindows];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -112,6 +157,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|MPContextMenuShowGroupInOutline]) {
|
||||||
|
[self.itemMenu addItem:item];
|
||||||
|
}
|
||||||
|
self.itemMenu.delegate = self.itemActionMenuDelegate;
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
@@ -119,37 +169,31 @@ 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];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender {
|
||||||
- (void)applicationWillFinishLaunching:(NSNotification *)notification {
|
return [NSUserDefaults.standardUserDefaults boolForKey:kMPSettingsKeyQuitOnLastWindowClose];
|
||||||
_shouldOpenFile = NO;
|
|
||||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
|
||||||
selector:@selector(_applicationDidFinishRestoringWindows:)
|
|
||||||
name:NSApplicationDidFinishRestoringWindowsNotification
|
|
||||||
object:nil];
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender {
|
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender {
|
||||||
if([[MPTemporaryFileStorageCenter defaultCenter] hasPendingStorages]) {
|
[self hideWelcomeWindow];
|
||||||
|
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 +204,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,64 +214,113 @@ 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 */
|
||||||
[SUUpdater sharedUpdater];
|
[SUUpdater sharedUpdater];
|
||||||
#endif
|
#endif
|
||||||
|
self.startupState |= MPAppStartupStateFinishedLaunch;
|
||||||
|
// Here we just opt-in for allowing our bar to be customized throughout the app.
|
||||||
|
if([NSApplication.sharedApplication respondsToSelector:@selector(isAutomaticCustomizeTouchBarMenuItemEnabled)]) {
|
||||||
|
if(@available(macOS 10.12.2, *)) {
|
||||||
|
NSApplication.sharedApplication.automaticCustomizeTouchBarMenuItemEnabled = YES;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
#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;
|
||||||
}
|
}
|
||||||
if(menu == self.fixAutotypeMenuItem.menu) {
|
else if(menu == self.fixAutotypeMenuItem.menu) {
|
||||||
self.fixAutotypeMenuItem.hidden = !(NSEvent.modifierFlags & NSAlternateKeyMask);
|
self.fixAutotypeMenuItem.hidden = !(NSEvent.modifierFlags & NSAlternateKeyMask);
|
||||||
}
|
}
|
||||||
|
else if(menu == self.importMenu) {
|
||||||
|
NSMenuItem *exportXML = menu.itemArray.firstObject;
|
||||||
|
[menu removeAllItems];
|
||||||
|
[menu addItem:exportXML];
|
||||||
|
for(MPPlugin<MPImportPlugin> * plugin in MPPluginHost.sharedHost.importPlugins) {
|
||||||
|
NSMenuItem *importItem = [[NSMenuItem alloc] init];
|
||||||
|
[plugin prepareImportMenuItem:importItem];
|
||||||
|
importItem.submenu = nil; // kill any potential submenu!
|
||||||
|
importItem.representedObject = plugin.identifier;
|
||||||
|
importItem.target = nil;
|
||||||
|
importItem.action = @selector(importWithPlugin:);
|
||||||
|
[menu addItem:importItem];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(menu == self.exportMenu) {
|
||||||
|
NSMenuItem *importXML = menu.itemArray.firstObject;
|
||||||
|
[menu removeAllItems];
|
||||||
|
[menu addItem:importXML];
|
||||||
|
for(MPPlugin<MPExportPlugin> * plugin in MPPluginHost.sharedHost.exportPlugins) {
|
||||||
|
NSMenuItem *exportItem = [[NSMenuItem alloc] init];
|
||||||
|
[plugin prepareExportMenuItem:exportItem];
|
||||||
|
exportItem.submenu = nil; // kill any potential submenu!
|
||||||
|
exportItem.representedObject = plugin.identifier;
|
||||||
|
exportItem.target = nil;
|
||||||
|
exportItem.action = @selector(exportWithPlugin:);
|
||||||
|
[menu addItem:exportItem];
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
#pragma mark Actions
|
#pragma mark Actions
|
||||||
- (void)showPreferences:(id)sender {
|
|
||||||
if(self.settingsController == nil) {
|
- (void)showPluginPrefences:(id)sender {
|
||||||
self.settingsController = [[MPSettingsWindowController alloc] init];
|
[self _showPreferencesTab:MPPreferencesTabPlugins];
|
||||||
}
|
}
|
||||||
[self.settingsController showSettings];
|
|
||||||
|
- (void)showPreferences:(id)sender {
|
||||||
|
[self _showPreferencesTab:MPPreferencesTabGeneral];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)_showPreferencesTab:(MPPreferencesTab)tab {
|
||||||
|
if(self.preferencesController == nil) {
|
||||||
|
self.preferencesController = [[MPPreferencesWindowController alloc] init];
|
||||||
|
}
|
||||||
|
[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 +329,46 @@ 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.restorable = NO; // do not restore the welcome window!
|
||||||
|
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)showAutotypeDoctor:(id)sender {
|
||||||
|
[MPAutotypeDoctor.defaultDoctor runChecksAndPresentResults];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (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_%@!", @"Informative 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 +378,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];
|
self.startupState |= MPAppStartupStateRestoredWindows;
|
||||||
NSArray *documents = [documentController documents];
|
}
|
||||||
BOOL restoredWindows = [documents count] > 0;
|
|
||||||
|
- (void)_applicationDidFinishLaunchingAndDidRestoreWindows {
|
||||||
|
NSArray *documents = NSDocumentController.sharedDocumentController.documents;
|
||||||
|
BOOL hasOpenDocuments = 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 = !hasOpenDocuments && !_shouldOpenFile;
|
||||||
if(reopen && !restoredWindows && !_shouldOpenFile) {
|
if(reopen && !hasOpenDocuments && !_shouldOpenFile) {
|
||||||
showWelcomeScreen = ![self _reopenLastDocument];
|
showWelcomeScreen = ![((MPDocumentController *)NSDocumentController.sharedDocumentController) reopenLastDocument];
|
||||||
}
|
}
|
||||||
if(showWelcomeScreen) {
|
if(showWelcomeScreen) {
|
||||||
[self _showWelcomeWindow];
|
[self showWelcomeWindow];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)_showWelcomeWindow {
|
|
||||||
[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;
|
||||||
@@ -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;
|
||||||
|
NSMutableArray *fileNames = [[NSMutableArray alloc] init];
|
||||||
|
for(KPKBinary *binary in [entry.binaries objectsAtIndexes:rowIndexes]) {
|
||||||
|
if(binary.name) {
|
||||||
|
[fileNames addObject:binary.name];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[pboard setPropertyList:fileNames forType:NSFilesPromisePboardType];
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSArray<NSString *> *)tableView:(NSTableView *)tableView namesOfPromisedFilesDroppedAtDestination:(NSURL *)dropDestination forDraggedRowsWithIndexes:(NSIndexSet *)indexSet {
|
||||||
|
MPDocument *document = tableView.window.windowController.document;
|
||||||
|
KPKEntry *entry = document.selectedEntries.count == 1 ? document.selectedEntries.lastObject : nil;
|
||||||
|
NSMutableArray<NSString *> *fileNames = [[NSMutableArray alloc] init];
|
||||||
|
NSArray<KPKBinary *> *draggedBinaries = [entry.binaries objectsAtIndexes:indexSet];
|
||||||
|
for(KPKBinary *binary in draggedBinaries) {
|
||||||
|
if(binary.name) {
|
||||||
|
[fileNames addObject:binary.name];
|
||||||
|
dispatch_queue_t queue = dispatch_get_global_queue(QOS_CLASS_USER_INITIATED, 0);
|
||||||
|
dispatch_async(queue, ^{
|
||||||
|
NSError *error;
|
||||||
|
NSURL *saveLocation = [dropDestination URLByAppendingPathComponent:binary.name];
|
||||||
|
BOOL success = [binary saveToLocation:saveLocation error:&error];
|
||||||
|
if(!success && error) {
|
||||||
|
dispatch_async(dispatch_get_main_queue(), ^{
|
||||||
|
[NSApp presentError:error];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return [fileNames copy];
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
NSString *extension;
|
- (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([rowIndexes count] != 1) {
|
if(!entry) {
|
||||||
return NO; // We only work with one file at a time
|
return nil;
|
||||||
}
|
}
|
||||||
MPDocument *document = [[[tableView window] windowController] document];
|
if (@available(macOS 10.12, *)) {
|
||||||
id entry = document.selectedEntry;
|
KPKBinary *binary = entry.binaries[row];
|
||||||
NSUInteger row = [rowIndexes lastIndex];
|
NSFilePromiseProvider *provider = [[NSFilePromiseProvider alloc] initWithFileType:(NSString *)kUTTypeXML delegate:binary];
|
||||||
if([entry isKindOfClass:[Kdb3Entry class]]) {
|
return provider;
|
||||||
Kdb3Entry *entryV3 = (Kdb3Entry *)entry;
|
|
||||||
extension = [entryV3.binaryDesc pathExtension];
|
|
||||||
}
|
}
|
||||||
else if([entry isKindOfClass:[Kdb4Entry class]]) {
|
return nil;
|
||||||
Kdb4Entry *entryV4 = (Kdb4Entry *)entry;
|
|
||||||
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;*/
|
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
@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,15 +5,36 @@
|
|||||||
// 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>
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
@class MPAutotypeEnvironment;
|
||||||
|
@class MPAutotypeContext;
|
||||||
|
|
||||||
@interface MPAutotypeCandidateSelectionViewController : NSViewController
|
@interface MPAutotypeCandidateSelectionViewController : NSViewController
|
||||||
|
|
||||||
@property (copy) NSArray *candidates;
|
@property (strong) MPAutotypeEnvironment *environment;
|
||||||
|
@property (copy) NSArray<MPAutotypeContext *> *candidates;
|
||||||
|
|
||||||
- (IBAction)selectAutotypeContext:(id)sender;
|
- (IBAction)selectAutotypeContext:(id)sender;
|
||||||
- (IBAction)cancelSelection:(id)sender;
|
- (IBAction)cancelSelection:(id)sender;
|
||||||
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
||||||
|
|||||||
@@ -5,18 +5,33 @@
|
|||||||
// 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"
|
||||||
|
#import "MPAutotypeEnvironment.h"
|
||||||
|
|
||||||
#import "KPKNode+IconImage.h"
|
#import "KPKNode+IconImage.h"
|
||||||
|
|
||||||
#import <KeePassKit/KeePassKit.h>
|
#import <KeePassKit/KeePassKit.h>
|
||||||
|
|
||||||
@interface MPAutotypeCandidateSelectionViewController () <NSTableViewDataSource, NSTableViewDelegate>
|
@interface MPAutotypeCandidateSelectionViewController () <NSTableViewDataSource, NSTableViewDelegate>
|
||||||
@property (weak) IBOutlet NSButton *selectAutotypeContextButton;
|
@property (strong) IBOutlet NSButton *selectAutotypeContextButton;
|
||||||
@property (weak) IBOutlet NSTableView *contextTableView;
|
@property (strong) IBOutlet NSTableView *contextTableView;
|
||||||
|
@property (strong) IBOutlet NSTextField *messageTextField;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@@ -28,7 +43,11 @@
|
|||||||
|
|
||||||
- (void)viewDidLoad {
|
- (void)viewDidLoad {
|
||||||
[super viewDidLoad];
|
[super viewDidLoad];
|
||||||
|
NSString *template = NSLocalizedString(@"AUTOTYPE_CANDIDATE_SELECTION_WINDOW_MESSAGE_%@", "Message text in the autotype selection window. Placeholder is %1 - windowTitle");
|
||||||
|
self.messageTextField.stringValue = [NSString stringWithFormat:template, self.environment.windowTitle];
|
||||||
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 +61,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 +81,7 @@
|
|||||||
- (void)selectAutotypeContext:(id)sender {
|
- (void)selectAutotypeContext:(id)sender {
|
||||||
NSInteger selectedRow = self.contextTableView.selectedRow;
|
NSInteger selectedRow = self.contextTableView.selectedRow;
|
||||||
if(selectedRow >= 0 && selectedRow < self.candidates.count) {
|
if(selectedRow >= 0 && selectedRow < self.candidates.count) {
|
||||||
[[MPAutotypeDaemon defaultDaemon] selectAutotypeCandiate:self.candidates[selectedRow]];
|
[MPAutotypeDaemon.defaultDaemon selectAutotypeContext:self.candidates[selectedRow] forEnvironment:self.environment];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
[self cancelSelection:sender]; // cancel since the selection was invalid!
|
[self cancelSelection:sender]; // cancel since the selection was invalid!
|
||||||
@@ -69,7 +89,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (void)cancelSelection:(id)sender {
|
- (void)cancelSelection:(id)sender {
|
||||||
[[MPAutotypeDaemon defaultDaemon] cancelAutotypeCandidateSelection];
|
[MPAutotypeDaemon.defaultDaemon cancelAutotypeContextSelectionForEnvironment:self.environment];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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 MPAutotypeEnvironment;
|
||||||
/**
|
/**
|
||||||
* The autotype daemon is responsible for registering the global hotkey and to perform any autotype actions
|
* The autotype daemon is responsible for registering the global hotkey and to perform any autotype actions
|
||||||
*/
|
*/
|
||||||
@@ -34,12 +34,13 @@
|
|||||||
@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;
|
||||||
|
|
||||||
+ (instancetype)defaultDaemon;
|
|
||||||
- (instancetype)init NS_UNAVAILABLE;
|
- (instancetype)init NS_UNAVAILABLE;
|
||||||
|
|
||||||
- (void)performAutotypeForEntry:(KPKEntry *)entry;
|
- (void)performAutotypeForEntry:(KPKEntry *)entry;
|
||||||
- (void)selectAutotypeCandiate:(MPAutotypeContext *)context;
|
- (void)performAutotypeForEntry:(KPKEntry *)entry overrideSequence:(NSString *)sequence;
|
||||||
- (void)cancelAutotypeCandidateSelection;
|
- (void)selectAutotypeContext:(MPAutotypeContext *)context forEnvironment:(MPAutotypeEnvironment *)environment;
|
||||||
|
- (void)cancelAutotypeContextSelectionForEnvironment:(MPAutotypeEnvironment *)environment;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -22,37 +22,40 @@
|
|||||||
|
|
||||||
#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 "MPAutotypeEnvironment.h"
|
||||||
#import "MPAutotypePaste.h"
|
#import "MPAutotypePaste.h"
|
||||||
|
#import "MPAutotypeDelay.h"
|
||||||
#import "MPPasteBoardController.h"
|
#import "MPPasteBoardController.h"
|
||||||
#import "MPSettingsHelper.h"
|
#import "MPSettingsHelper.h"
|
||||||
|
#import "MPAutotypeCandidateSelectionViewController.h"
|
||||||
|
#import "MPUserNotificationCenterDelegate.h"
|
||||||
|
#import "MPAutotypeDoctor.h"
|
||||||
|
|
||||||
|
#import "MPPluginHost.h"
|
||||||
|
#import "MPPlugin.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 kMPProcessIdentifierKey = @"kMPProcessIdentifierKey";
|
|
||||||
|
|
||||||
@interface MPAutotypeDaemon ()
|
@interface MPAutotypeDaemon ()
|
||||||
|
|
||||||
@property (nonatomic, assign) BOOL enabled;
|
@property (nonatomic, assign) BOOL enabled;
|
||||||
@property (nonatomic, copy) NSData *hotKeyData;
|
@property (nonatomic, copy) NSData *hotKeyData;
|
||||||
@property (strong) DDHotKey *registredHotKey;
|
@property (strong) DDHotKey *registredHotKey;
|
||||||
@property (assign) pid_t targetPID; // The pid of the process we want to sent commands to
|
|
||||||
@property (copy) NSString *targetWindowTitle; // The title of the window that we are targeting
|
|
||||||
@property (strong) NSRunningApplication *previousApplication; // The application that was active before we got invoked
|
|
||||||
|
|
||||||
|
@property (strong) NSRunningApplication *previousApplication; // The application that was active before we got invoked
|
||||||
|
@property (assign) NSTimeInterval userActionRequested;
|
||||||
|
@property (strong) id applicationActivationObserver;
|
||||||
|
@property (nonatomic, readonly) BOOL hasNecessaryAutotypePermissions;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@implementation MPAutotypeDaemon
|
@implementation MPAutotypeDaemon
|
||||||
@@ -79,18 +82,18 @@ static MPAutotypeDaemon *_sharedInstance;
|
|||||||
self = [super init];
|
self = [super init];
|
||||||
if (self) {
|
if (self) {
|
||||||
_enabled = NO;
|
_enabled = NO;
|
||||||
_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,18 @@ 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];
|
||||||
|
if(self.applicationActivationObserver) {
|
||||||
|
[NSWorkspace.sharedWorkspace.notificationCenter removeObserver:self.applicationActivationObserver name:NSWorkspaceDidActivateApplicationNotification object:nil];
|
||||||
|
}
|
||||||
[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
|
||||||
|
|
||||||
- (void)setEnabled:(BOOL)enabled {
|
- (void)setEnabled:(BOOL)enabled {
|
||||||
if(_enabled != enabled) {
|
if(_enabled != enabled) {
|
||||||
_enabled = enabled;
|
_enabled = enabled;
|
||||||
@@ -124,127 +131,214 @@ static MPAutotypeDaemon *_sharedInstance;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (BOOL)hasNecessaryAutotypePermissions {
|
||||||
|
return MPAutotypeDoctor.defaultDoctor.hasNecessaryAutotypePermissions;
|
||||||
|
}
|
||||||
|
|
||||||
#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];
|
MPAutotypeEnvironment *env = [MPAutotypeEnvironment environmentWithTargetApplication:self.previousApplication entry:entry];
|
||||||
[self _performAutotypeForEntry:entry];
|
[self _runAutotypeWithEnvironment:env];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)_didPressHotKey {
|
- (void)_didPressHotKey {
|
||||||
[self _updateTargetInfoForFrontMostApplication];
|
MPAutotypeEnvironment *env = [MPAutotypeEnvironment environmentWithTargetApplication:NSWorkspace.sharedWorkspace.frontmostApplication entry:nil];
|
||||||
[self _performAutotypeForEntry:nil];
|
[self _runAutotypeWithEnvironment:env];
|
||||||
}
|
|
||||||
|
|
||||||
#pragma mark -
|
|
||||||
#pragma mark Actions
|
|
||||||
- (void)selectAutotypeCandiate:(MPAutotypeContext *)context {
|
|
||||||
[self.matchSelectionWindow orderOut:self];
|
|
||||||
self.matchSelectionWindow = nil;
|
|
||||||
[self _performAutotypeForContext:context];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)cancelAutotypeCandidateSelection {
|
|
||||||
[self.matchSelectionWindow orderOut:self];
|
|
||||||
self.matchSelectionWindow = nil;
|
|
||||||
if(self.targetPID) {
|
|
||||||
[self _orderApplicationToFront:self.targetPID];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
#pragma mark Autotype Execution
|
#pragma mark Autotype Execution
|
||||||
|
- (void)selectAutotypeContext:(MPAutotypeContext *)context forEnvironment:(MPAutotypeEnvironment *)environment {
|
||||||
|
[self.matchSelectionWindow orderOut:self];
|
||||||
|
self.matchSelectionWindow = nil;
|
||||||
|
[self _runAutotypeWithEnvironment:environment forContext:context];
|
||||||
|
if(environment.hidden) {
|
||||||
|
[NSApplication.sharedApplication hide:nil];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
- (void)_performAutotypeForEntry:(KPKEntry *)entryOrNil {
|
- (void)cancelAutotypeContextSelectionForEnvironment:(MPAutotypeEnvironment *)environment {
|
||||||
NSInteger pid = [NSProcessInfo processInfo].processIdentifier;
|
[self.matchSelectionWindow orderOut:self];
|
||||||
if(self.targetPID == pid) {
|
self.matchSelectionWindow = nil;
|
||||||
return; // We do not perform Autotype on ourselves
|
if(environment.hidden) {
|
||||||
|
[NSApplication.sharedApplication hide:nil];
|
||||||
|
}
|
||||||
|
if(environment.pid) {
|
||||||
|
[self _orderApplicationToFront:environment.pid completionHandler:nil];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)_runAutotypeAfterDatabaseUnlockWithEnvironment:(MPAutotypeEnvironment *)environment requestedAt:(NSTimeInterval)requestTime {
|
||||||
|
NSTimeInterval now = NSDate.date.timeIntervalSinceReferenceDate;
|
||||||
|
if(now - requestTime > 30) {
|
||||||
|
NSUserNotification *notification = [[NSUserNotification alloc] init];
|
||||||
|
notification.title = NSLocalizedString(@"AUTOTYPE_NOTIFICATION_TIMED_OUT_TITLE", "Title for the notification when the Autotype operation timed out");
|
||||||
|
notification.informativeText = NSLocalizedString(@"AUTOTYPE_TIMED_OUT", "Notficication: Autotype timed out");
|
||||||
|
notification.userInfo = @{ MPUserNotificationTypeKey: MPUserNotificationTypeAutotypeFeedback };
|
||||||
|
[NSUserNotificationCenter.defaultUserNotificationCenter deliverNotification:notification];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
[self _runAutotypeWithEnvironment:environment];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)_runAutotypeWithEnvironment:(MPAutotypeEnvironment *)env {
|
||||||
|
if(env.isSelfTargeting) {
|
||||||
|
return; // we do not want to target ourselves
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!self.hasNecessaryAutotypePermissions) {
|
||||||
|
NSUserNotification *notification = [[NSUserNotification alloc] init];
|
||||||
|
notification.title = NSLocalizedString(@"AUTOTYPE_NOTIFICATION_PERMISSIONS_MISSING_TITLE", "Title for autotype feedback on missing permissions");
|
||||||
|
notification.informativeText = NSLocalizedString(@"AUTOTYPE_NOTIFICATION_MACPASS_IS_MISSING_PERMISSIONS", "Notification: Autotype failed, MacPass has not enough permissions to perform autotype");
|
||||||
|
notification.actionButtonTitle = NSLocalizedString(@"SHOW_AUTOTYPE_DOCTOR", "Action button in Notification to show the Autotype Doctor");
|
||||||
|
notification.userInfo = @{ MPUserNotificationTypeKey: MPUserNotificationTypeRunAutotypeDoctor };
|
||||||
|
notification.showsButtons = YES;
|
||||||
|
[NSUserNotificationCenter.defaultUserNotificationCenter deliverNotification:notification];
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* find autotype documents */
|
/* find autotype documents */
|
||||||
NSArray *documents = [NSApp orderedDocuments];
|
NSArray *documents = NSApp.orderedDocuments;
|
||||||
/* No open document, inform the user and return without any action */
|
/* No open document, inform the user and return without any action */
|
||||||
if(documents.count == 0) {
|
if(documents.count == 0) {
|
||||||
NSUserNotification *notification = [[NSUserNotification alloc] init];
|
NSUserNotification *notification = [[NSUserNotification alloc] init];
|
||||||
notification.title = NSApp.applicationName;
|
notification.title = NSLocalizedString(@"AUTOTYPE_NOTIFICATION_NO_DOCUMENTS_TITLE", "Notification: Title for autotype feedback");
|
||||||
notification.informativeText = NSLocalizedString(@"AUTOTYPE_OVERLAY_NO_DOCUMENTS", "Notification: Autotype failed, no documents are open");
|
notification.informativeText = NSLocalizedString(@"AUTOTYPE_NOTIFICATION_NO_DOCUMENTS_INFORMATIVE_TEXT", "Notification: Autotype failed, no documents are open");
|
||||||
[[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];
|
||||||
|
NSNotificationCenter * __weak nc = [NSNotificationCenter defaultCenter];
|
||||||
|
MPAutotypeDaemon * __weak welf = self;
|
||||||
|
NSTimeInterval requestTime = NSDate.date.timeIntervalSinceReferenceDate;
|
||||||
|
id __block unlockToken = [nc addObserverForName:MPDocumentDidUnlockDatabaseNotification
|
||||||
|
object:nil
|
||||||
|
queue:NSOperationQueue.mainQueue
|
||||||
|
usingBlock:^(NSNotification *notification) {
|
||||||
|
[welf _runAutotypeAfterDatabaseUnlockWithEnvironment:env requestedAt:requestTime];
|
||||||
|
[nc removeObserver:unlockToken];
|
||||||
|
}];
|
||||||
|
return; // Unlock should trigger autotype
|
||||||
}
|
}
|
||||||
|
|
||||||
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;
|
||||||
|
}];
|
||||||
|
|
||||||
NSArray *unlockedDocuments = [documents filteredArrayUsingPredicate:filterPredicate];
|
NSArray *unlockedDocuments = [documents filteredArrayUsingPredicate:filterPredicate];
|
||||||
/* We look for all unlocked documents, if all open documents are locked, we pop the front most and try to search again */
|
/* We look for all unlocked documents, if all open documents are locked, we pop the front most and try to search again */
|
||||||
if(unlockedDocuments.count == 0) {
|
if(unlockedDocuments.count == 0) {
|
||||||
[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")];
|
||||||
|
NSNotificationCenter * __weak nc = [NSNotificationCenter defaultCenter];
|
||||||
|
MPAutotypeDaemon * __weak welf = self;
|
||||||
|
NSTimeInterval requestTime = NSDate.date.timeIntervalSinceReferenceDate;
|
||||||
|
id __block unlockToken = [nc addObserverForName:MPDocumentDidUnlockDatabaseNotification
|
||||||
|
object:nil
|
||||||
|
queue:NSOperationQueue.mainQueue
|
||||||
|
usingBlock:^(NSNotification *notification) {
|
||||||
|
[welf _runAutotypeAfterDatabaseUnlockWithEnvironment:env requestedAt:requestTime];
|
||||||
|
|
||||||
|
[nc removeObserver:unlockToken];
|
||||||
|
}];
|
||||||
return; // wait for the unlock to happen
|
return; // wait for the unlock to happen
|
||||||
}
|
}
|
||||||
|
|
||||||
MPAutotypeContext *context = [self _autotypeContextForDocuments:documents forWindowTitle:self.targetWindowTitle preferredEntry:entryOrNil];
|
MPAutotypeContext *context = [self _autotypeContextForDocuments:documents withEnvironment:env];
|
||||||
/* TODO: that's popping up if the mulit selection dialog goes up! */
|
|
||||||
if(self.matchSelectionWindow) {
|
if(self.matchSelectionWindow) {
|
||||||
return; // we present the match selection window, just return
|
return; // we present the match selection window, just return
|
||||||
}
|
}
|
||||||
if(!entryOrNil) {
|
if(!env.preferredEntry) {
|
||||||
NSUserNotification *notification = [[NSUserNotification alloc] init];
|
NSUserNotification *notification = [[NSUserNotification alloc] init];
|
||||||
notification.title = NSApp.applicationName;
|
notification.title = NSLocalizedString(@"AUTOTYPE_NOTIFICATION_MATCH_TITLE", "Notification: Title for autotype feedback");
|
||||||
|
notification.userInfo = @{ MPUserNotificationTypeKey: MPUserNotificationTypeAutotypeFeedback };
|
||||||
if(context) {
|
if(context) {
|
||||||
notification.informativeText = NSLocalizedString(@"AUTOTYPE_OVERLAY_SINGLE_MATCH", "Notification: Autotype found a single match.");
|
notification.informativeText = [NSString stringWithFormat:NSLocalizedString(@"AUTOTYPE_NOTIFICATION_SINGLE_MATCH_FOR_%@", "Notification: Autotype found a single match for %@ (string placeholder)."), env.windowTitle];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
notification.informativeText = [NSString stringWithFormat:NSLocalizedString(@"AUTOTYPE_OVERLAY_NO_MATCH_FOR_%@", "Noticiation: Autotype failed to find a match for %@ (string placeholder)"), self.targetWindowTitle];
|
notification.informativeText = [NSString stringWithFormat:NSLocalizedString(@"AUTOTYPE_NOTIFICATION_NO_MATCH_FOR_%@", "Noticiation: Autotype failed to find a match for %@ (string placeholder)"), env.windowTitle];
|
||||||
}
|
}
|
||||||
[[NSUserNotificationCenter defaultUserNotificationCenter] deliverNotification:notification];
|
[NSUserNotificationCenter.defaultUserNotificationCenter deliverNotification:notification];
|
||||||
}
|
}
|
||||||
[self _performAutotypeForContext:context];
|
[self _runAutotypeWithEnvironment:env forContext:context];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (MPAutotypeContext *)_autotypeContextForDocuments:(NSArray<MPDocument *> *)documents forWindowTitle:(NSString *)windowTitle preferredEntry:(KPKEntry *)entry {
|
- (MPAutotypeContext *)_autotypeContextForDocuments:(NSArray<MPDocument *> *)documents withEnvironment:(MPAutotypeEnvironment *)environment {
|
||||||
/*
|
/*
|
||||||
Query the document to generate a autotype command list for the window title
|
Query the document to generate a autotype command list for the window title
|
||||||
We do not care where this came form, just get the autotype commands
|
We do not care where this came form, just get the autotype commands
|
||||||
*/
|
*/
|
||||||
NSMutableArray *autotypeCandidates = [[NSMutableArray alloc] init];
|
NSMutableArray *autotypeCandidates = [[NSMutableArray alloc] init];
|
||||||
for(MPDocument *document in documents) {
|
for(MPDocument *document in documents) {
|
||||||
NSArray *contexts = [document autotypContextsForWindowTitle:windowTitle preferredEntry:entry];
|
NSArray *contexts = [document autotypContextsForWindowTitle:environment.windowTitle preferredEntry:environment.preferredEntry];
|
||||||
if(contexts ) {
|
if(contexts ) {
|
||||||
[autotypeCandidates addObjectsFromArray:contexts];
|
[autotypeCandidates addObjectsFromArray:contexts];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
NSUInteger candidates = autotypeCandidates.count;
|
|
||||||
if(candidates == 0) {
|
if(autotypeCandidates.count <= 1) {
|
||||||
return nil;
|
|
||||||
}
|
|
||||||
if(candidates == 1 ) {
|
|
||||||
return autotypeCandidates.lastObject;
|
return autotypeCandidates.lastObject;
|
||||||
}
|
}
|
||||||
[self _presentSelectionWindow:autotypeCandidates];
|
[self _presentCandiadates:autotypeCandidates forEnvironment:environment];
|
||||||
return nil; // Nothing to do, we get called back by the window
|
return nil; // Nothing to do, we get called back by the window
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)_performAutotypeForContext:(MPAutotypeContext *)context {
|
- (void)_runAutotypeWithEnvironment:(MPAutotypeEnvironment *)environment forContext:(MPAutotypeContext *)context {
|
||||||
|
if(nil == environment) {
|
||||||
|
return; // no Environment to work in
|
||||||
|
}
|
||||||
if(nil == context) {
|
if(nil == context) {
|
||||||
return; // No context to work with
|
return; // No context to work with
|
||||||
}
|
}
|
||||||
if([self _orderApplicationToFront:self.targetPID]) {
|
__weak MPAutotypeDaemon *welf = self;
|
||||||
/* Sleep a bit after the app was activated */
|
BOOL appIsFrontmost = [self _orderApplicationToFront:environment.pid completionHandler:^{
|
||||||
/* TODO - we can use a saver way and use a notification to check if the app actally was activated */
|
[welf _runAutotypeWithEnvironment:environment forContext:context];
|
||||||
usleep(1 * NSEC_PER_MSEC);
|
}];
|
||||||
|
if(!appIsFrontmost) {
|
||||||
|
return; // We will get called back when the application is in front - hopfully
|
||||||
|
}
|
||||||
|
|
||||||
|
useconds_t globalDelay = 0;
|
||||||
|
for(MPAutotypeCommand *command in [MPAutotypeCommand commandsForContext:context]) {
|
||||||
|
/*
|
||||||
|
FIXME: Introduce a global state for execution to allow command to set state value
|
||||||
|
e.g. [command executeWithContext:(MPCommandExectionContext *)context]
|
||||||
|
and inside the command set the sate e.g. context.delay = myDelay
|
||||||
|
then use this state in the command scheduling to set the global delay
|
||||||
|
*/
|
||||||
|
if([command isKindOfClass:MPAutotypeDelay.class]) {
|
||||||
|
MPAutotypeDelay *delayCommand = (MPAutotypeDelay *)command;
|
||||||
|
if(delayCommand.isGlobal) {
|
||||||
|
globalDelay = (useconds_t)delayCommand.delay;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* dispatch commands to main thread since most of them translate key events which is disallowed on background thread */
|
||||||
|
dispatch_async(dispatch_get_main_queue(), ^{
|
||||||
|
if(globalDelay > 0) {
|
||||||
|
usleep(globalDelay*NSEC_PER_USEC);
|
||||||
}
|
}
|
||||||
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
|
|
||||||
NSArray<MPAutotypeCommand *> *commands = [MPAutotypeCommand commandsForContext:context];
|
|
||||||
for(MPAutotypeCommand *command in commands) {
|
|
||||||
[command execute];
|
[command execute];
|
||||||
|
/* re-hide after every command since this might have put us back up front */
|
||||||
|
if(environment.hidden) {
|
||||||
|
[NSApplication.sharedApplication hide:nil];
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
#pragma mark Hotkey Registration
|
#pragma mark Hotkey Registration
|
||||||
@@ -266,44 +360,19 @@ static MPAutotypeDaemon *_sharedInstance;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSDictionary *)_infoDictionaryForApplication:(NSRunningApplication *)application {
|
- (void)_presentCandiadates:(NSArray *)candidates forEnvironment:(MPAutotypeEnvironment *)environment {
|
||||||
NSArray *currentWindows = CFBridgingRelease(CGWindowListCopyWindowInfo(kCGWindowListExcludeDesktopElements, kCGNullWindowID));
|
|
||||||
NSArray *windowNumbers = [NSWindow windowNumbersWithOptions:NSWindowNumberListAllApplications];
|
|
||||||
NSUInteger minZIndex = NSNotFound;
|
|
||||||
NSDictionary *infoDict = nil;
|
|
||||||
for(NSDictionary *windowDict in currentWindows) {
|
|
||||||
NSString *windowTitle = windowDict[(NSString *)kCGWindowName];
|
|
||||||
if(windowTitle.length <= 0) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
NSNumber *processId = windowDict[(NSString *)kCGWindowOwnerPID];
|
|
||||||
if(processId && [processId isEqualToNumber:@(application.processIdentifier)]) {
|
|
||||||
|
|
||||||
NSNumber *number = (NSNumber *)windowDict[(NSString *)kCGWindowNumber];
|
|
||||||
NSUInteger zIndex = [windowNumbers indexOfObject:number];
|
|
||||||
if(zIndex < minZIndex) {
|
|
||||||
minZIndex = zIndex;
|
|
||||||
infoDict = @{
|
|
||||||
kMPWindowTitleKey: windowTitle,
|
|
||||||
kMPProcessIdentifierKey : processId
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return infoDict;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (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;
|
||||||
|
vc.environment = environment;
|
||||||
|
self.matchSelectionWindow.collectionBehavior |= (NSWindowCollectionBehaviorFullScreenAuxiliary |
|
||||||
|
NSWindowCollectionBehaviorMoveToActiveSpace |
|
||||||
|
NSWindowCollectionBehaviorTransient );
|
||||||
self.matchSelectionWindow.contentViewController = vc;
|
self.matchSelectionWindow.contentViewController = vc;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -311,14 +380,6 @@ static MPAutotypeDaemon *_sharedInstance;
|
|||||||
[self.matchSelectionWindow makeKeyAndOrderFront:self];
|
[self.matchSelectionWindow makeKeyAndOrderFront:self];
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark -
|
|
||||||
#pragma mark MPDocument Notifications
|
|
||||||
- (void)_didUnlockDatabase:(NSNotification *)notification {
|
|
||||||
/* Remove ourselves and call again to search matches */
|
|
||||||
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
|
||||||
[self _performAutotypeForEntry:nil];
|
|
||||||
}
|
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
#pragma mark NSApplication Notifications
|
#pragma mark NSApplication Notifications
|
||||||
- (void)_didDeactivateApplication:(NSNotification *)notification {
|
- (void)_didDeactivateApplication:(NSNotification *)notification {
|
||||||
@@ -328,29 +389,25 @@ static MPAutotypeDaemon *_sharedInstance;
|
|||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
#pragma mark Application information
|
#pragma mark Application information
|
||||||
- (BOOL)_orderApplicationToFront:(pid_t)processIdentifier {
|
//- (BOOL)_orderApplicationToFront:(pid_t)processIdentifier inEnvironment:(MPAutotypeEnvironment *) environment {
|
||||||
|
- (BOOL)_orderApplicationToFront:(pid_t)processIdentifier completionHandler:(void (^_Nullable)(void))completionHandler {
|
||||||
NSRunningApplication *runingApplication = [NSRunningApplication runningApplicationWithProcessIdentifier:processIdentifier];
|
NSRunningApplication *runingApplication = [NSRunningApplication runningApplicationWithProcessIdentifier:processIdentifier];
|
||||||
NSRunningApplication *frontApplication = [NSWorkspace sharedWorkspace].frontmostApplication;
|
NSRunningApplication *frontApplication = NSWorkspace.sharedWorkspace.frontmostApplication;
|
||||||
if(frontApplication.processIdentifier == processIdentifier) {
|
if(frontApplication.processIdentifier == processIdentifier) {
|
||||||
return NO;
|
|
||||||
}
|
|
||||||
[runingApplication activateWithOptions:NSApplicationActivateIgnoringOtherApps];
|
|
||||||
return YES;
|
return YES;
|
||||||
}
|
}
|
||||||
- (void)_updateTargetInfoForFrontMostApplication {
|
|
||||||
[self _updateTargeInformationForApplication:[NSWorkspace sharedWorkspace].frontmostApplication];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)_updateTargeInformationForApplication:(NSRunningApplication *)application {
|
NSNotificationCenter * __weak nc = NSWorkspace.sharedWorkspace.notificationCenter;
|
||||||
if(!application) {
|
id __block didActivateToken = [nc addObserverForName:NSWorkspaceDidActivateApplicationNotification
|
||||||
self.targetPID = -1;
|
object:nil
|
||||||
self.targetWindowTitle = @"";
|
queue:NSOperationQueue.mainQueue
|
||||||
|
usingBlock:^(NSNotification *notification) {
|
||||||
|
[nc removeObserver:didActivateToken];
|
||||||
|
if(completionHandler) {
|
||||||
|
completionHandler();
|
||||||
}
|
}
|
||||||
else {
|
}];
|
||||||
NSDictionary *frontApplicationInfoDict = [self _infoDictionaryForApplication:application];
|
[runingApplication activateWithOptions:NSApplicationActivateIgnoringOtherApps];
|
||||||
self.targetPID = [frontApplicationInfoDict[kMPProcessIdentifierKey] intValue];
|
return NO;
|
||||||
self.targetWindowTitle = frontApplicationInfoDict[kMPWindowTitleKey];
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
@interface MPAutotypeDelay : MPAutotypeCommand
|
@interface MPAutotypeDelay : MPAutotypeCommand
|
||||||
|
|
||||||
@property (readonly) NSUInteger delay;
|
@property (readonly) NSUInteger delay;
|
||||||
|
@property (readonly) BOOL isGlobal;
|
||||||
/**
|
/**
|
||||||
* Creates an DelayCommand that delays the execution for n milliseconds
|
* Creates an DelayCommand that delays the execution for n milliseconds
|
||||||
*
|
*
|
||||||
@@ -33,5 +34,6 @@
|
|||||||
* @return <#return value description#>
|
* @return <#return value description#>
|
||||||
*/
|
*/
|
||||||
- (instancetype)initWithDelay:(NSUInteger)delay;
|
- (instancetype)initWithDelay:(NSUInteger)delay;
|
||||||
|
- (instancetype)initWithGlobalDelay:(NSUInteger)delay;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
@implementation MPAutotypeDelay
|
@implementation MPAutotypeDelay
|
||||||
|
|
||||||
- (id)init {
|
- (id)init {
|
||||||
self = [self initWithDelay:0];
|
self = [self _initWithDelay:0 global:NO];
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -38,17 +38,32 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (instancetype)initWithDelay:(NSUInteger)delay {
|
- (instancetype)initWithDelay:(NSUInteger)delay {
|
||||||
|
self = [self _initWithDelay:delay global:NO];
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (instancetype)initWithGlobalDelay:(NSUInteger)delay {
|
||||||
|
self = [self _initWithDelay:delay global:YES];
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (instancetype)_initWithDelay:(NSUInteger)delay global:(BOOL)global {
|
||||||
self = [super init];
|
self = [super init];
|
||||||
if(self) {
|
if(self) {
|
||||||
|
_isGlobal = global;
|
||||||
/* Delays longer than a minute are a bit long */
|
/* Delays longer than a minute are a bit long */
|
||||||
_delay = MIN(60*1000,delay);
|
_delay = MIN(60*NSEC_PER_USEC,delay);
|
||||||
}
|
}
|
||||||
return self;
|
return self;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)execute {
|
- (void)execute {
|
||||||
/* milliseconds * 10000 = microseconds */
|
/* milliseconds * 10000 = microseconds */
|
||||||
usleep((useconds_t)(self.delay*1000));
|
if(self.isGlobal) {
|
||||||
|
return; // global delays should not be executed locally
|
||||||
|
}
|
||||||
|
usleep((useconds_t)(self.delay*NSEC_PER_USEC));
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
30
MacPass/MPAutotypeDoctor.h
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
//
|
||||||
|
// MPAutotypeDoctor.h
|
||||||
|
// MacPass
|
||||||
|
//
|
||||||
|
// Created by Michael Starke on 03.07.19.
|
||||||
|
// Copyright © 2019 HicknHack Software GmbH. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <Foundation/Foundation.h>
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
@interface MPAutotypeDoctor : NSObject
|
||||||
|
|
||||||
|
|
||||||
|
@property (class, readonly, strong) MPAutotypeDoctor *defaultDoctor;
|
||||||
|
@property (nonatomic, readonly) BOOL hasNecessaryAutotypePermissions; // MacPass has all the permissions it needs to run autotype on the current system
|
||||||
|
|
||||||
|
- (BOOL)hasScreenRecordingPermissions:(NSError *__autoreleasing*)error;
|
||||||
|
- (BOOL)hasAccessibiltyPermissions:(NSError *__autoreleasing*)error;
|
||||||
|
|
||||||
|
- (void)runChecksAndPresentResults;
|
||||||
|
- (void)openScreenRecordingPreferences;
|
||||||
|
- (void)requestScreenRecordingPermission;
|
||||||
|
- (void)openAccessibiltyPreferences;
|
||||||
|
- (void)openAutomationPreferences;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
||||||
172
MacPass/MPAutotypeDoctor.m
Normal file
@@ -0,0 +1,172 @@
|
|||||||
|
//
|
||||||
|
// MPAutotypeDoctor.m
|
||||||
|
// MacPass
|
||||||
|
//
|
||||||
|
// Created by Michael Starke on 03.07.19.
|
||||||
|
// Copyright © 2019 HicknHack Software GmbH. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "MPAutotypeDoctor.h"
|
||||||
|
#import "MPSettingsHelper.h"
|
||||||
|
#import "NSApplication+MPAdditions.h"
|
||||||
|
#import "MPAutotypeDoctorReportViewController.h"
|
||||||
|
#import "NSError+Messages.h"
|
||||||
|
|
||||||
|
|
||||||
|
@interface MPReportItem : NSObject
|
||||||
|
|
||||||
|
@property (copy) NSString *statusDescription;
|
||||||
|
@property (copy) NSString *label;
|
||||||
|
@property (copy) NSString *actionLabel;
|
||||||
|
@property BOOL isOK;
|
||||||
|
@property (weak) id target;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation MPReportItem
|
||||||
|
|
||||||
|
- (instancetype)init {
|
||||||
|
self = [super init];
|
||||||
|
if(self) {
|
||||||
|
_isOK = NO;
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
|
||||||
|
@interface MPAutotypeDoctor () <NSWindowDelegate>
|
||||||
|
@property (strong) NSWindow *reportWindow;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation MPAutotypeDoctor
|
||||||
|
|
||||||
|
+ (MPAutotypeDoctor *)defaultDoctor {
|
||||||
|
static MPAutotypeDoctor *instance;
|
||||||
|
static dispatch_once_t onceToken;
|
||||||
|
dispatch_once(&onceToken, ^{
|
||||||
|
instance = [[MPAutotypeDoctor alloc] init];
|
||||||
|
});
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (BOOL)hasNecessaryAutotypePermissions {
|
||||||
|
if(![self hasAccessibiltyPermissions:NULL]) {
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
|
if(![self hasScreenRecordingPermissions:NULL]) {
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (BOOL)hasScreenRecordingPermissions:(NSError *__autoreleasing*)error {
|
||||||
|
/* macos 10.14 and lower do not require screen recording permission to get window titles */
|
||||||
|
|
||||||
|
/*
|
||||||
|
Solution is heavily inspired by Craig Hockenberry's
|
||||||
|
https://stackoverflow.com/questions/56597221/detecting-screen-recording-settings-on-macos-catalina/58985069#58985069
|
||||||
|
*/
|
||||||
|
if(@available(macOS 10.15, *)) {
|
||||||
|
CFArrayRef windowList = CGWindowListCopyWindowInfo(kCGWindowListOptionOnScreenOnly, kCGNullWindowID);
|
||||||
|
NSUInteger numberOfWindows = CFArrayGetCount(windowList);
|
||||||
|
BOOL canRecordScreen = NO;
|
||||||
|
for(int idx = 0; idx < numberOfWindows; idx++) {
|
||||||
|
NSDictionary *windowInfo = (NSDictionary *)CFArrayGetValueAtIndex(windowList, idx);
|
||||||
|
NSNumber *ownerPid = windowInfo[(id)kCGWindowOwnerPID];
|
||||||
|
/*
|
||||||
|
Skip over our own windows
|
||||||
|
*/
|
||||||
|
if(ownerPid.intValue == NSProcessInfo.processInfo.processIdentifier) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
Skip applications we aren't allowed to access anyway
|
||||||
|
*/
|
||||||
|
NSRunningApplication *ownerApp = [NSRunningApplication runningApplicationWithProcessIdentifier:ownerPid.intValue];
|
||||||
|
if(!ownerApp) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
NSString *windowName = windowInfo[(id)kCGWindowName];
|
||||||
|
if(windowName) {
|
||||||
|
if([ownerApp.executableURL.lastPathComponent isEqualToString:@"Dock"]) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
canRecordScreen = YES;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CFRelease(windowList);
|
||||||
|
if(!canRecordScreen && error) {
|
||||||
|
*error = [NSError errorInDomain:MPAutotypeErrorDomain withCode:MPErrorAutotypeIsMissingScreenRecordingPermissions description:NSLocalizedString(@"ERROR_NO_PERMISSION_TO_RECORD_SCREEN", "Error description for missing screen recording permissions")];
|
||||||
|
}
|
||||||
|
return canRecordScreen;
|
||||||
|
}
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (BOOL)hasAccessibiltyPermissions:(NSError *__autoreleasing*)error {
|
||||||
|
BOOL isTrusted = YES;
|
||||||
|
/* macOS 10.13 and lower allows us to send key events regardless of accessibilty trust */
|
||||||
|
if(@available(macOS 10.14, *)) {
|
||||||
|
isTrusted = AXIsProcessTrusted();
|
||||||
|
if(!isTrusted && error) {
|
||||||
|
*error = [NSError errorInDomain:MPAutotypeErrorDomain withCode:MPErrorAutotypeIsMissingAccessibiltyPermissions description:NSLocalizedString(@"ERROR_NO_ACCESSIBILITY_PERMISSIONS", "Error description for missing accessibility permissions")];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return isTrusted;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)openAccessibiltyPreferences {
|
||||||
|
[NSWorkspace.sharedWorkspace openURL:[NSURL URLWithString:@"x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility"]];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)openScreenRecordingPreferences {
|
||||||
|
[NSWorkspace.sharedWorkspace openURL:[NSURL URLWithString:@"x-apple.systempreferences:com.apple.preference.security?Privacy_ScreenCapture"]];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)requestScreenRecordingPermission {
|
||||||
|
/* macos 10.14 and lower do not require screen recording permission to get window titles */
|
||||||
|
if(@available(macos 10.15, *)) {
|
||||||
|
/*
|
||||||
|
To minimize the intrusion just make a 1px image of the upper left corner
|
||||||
|
This way there is no real possibilty to access any private data
|
||||||
|
*/
|
||||||
|
CGImageRef screenshot = CGWindowListCreateImage(
|
||||||
|
CGRectMake(0, 0, 1, 1),
|
||||||
|
kCGWindowListOptionOnScreenOnly,
|
||||||
|
kCGNullWindowID,
|
||||||
|
kCGWindowImageDefault);
|
||||||
|
CFRelease(screenshot);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)openAutomationPreferences {
|
||||||
|
[NSWorkspace.sharedWorkspace openURL:[NSURL URLWithString:@"x-apple.systempreferences:com.apple.preference.security?Privacy_Automation"]];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)runChecksAndPresentResults {
|
||||||
|
if(!self.reportWindow) {
|
||||||
|
self.reportWindow = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 100, 100)
|
||||||
|
styleMask:NSWindowStyleMaskTitled|NSWindowStyleMaskClosable|NSWindowStyleMaskResizable
|
||||||
|
backing:NSBackingStoreBuffered
|
||||||
|
defer:NO];
|
||||||
|
self.reportWindow.releasedWhenClosed = NO;
|
||||||
|
self.reportWindow.title = NSLocalizedString(@"AUTOTYPE_DOCTOR_RESULTS_WINDOW_TITLE", @"Window title for the stand-alone password creator window");
|
||||||
|
self.reportWindow.delegate = self;
|
||||||
|
}
|
||||||
|
MPAutotypeDoctorReportViewController *vc = [[MPAutotypeDoctorReportViewController alloc] init];
|
||||||
|
self.reportWindow.contentViewController = vc;
|
||||||
|
|
||||||
|
[self.reportWindow center];
|
||||||
|
[self.reportWindow makeKeyAndOrderFront:vc];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)windowWillClose:(NSNotification *)notification {
|
||||||
|
if(notification.object == self.reportWindow) {
|
||||||
|
self.reportWindow = nil;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
29
MacPass/MPAutotypeDoctorReportViewController.h
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
//
|
||||||
|
// MPAutotypeDoctorReportViewController.h
|
||||||
|
// MacPass
|
||||||
|
//
|
||||||
|
// Created by Michael Starke on 05.07.19.
|
||||||
|
// Copyright © 2019 HicknHack Software GmbH. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <Cocoa/Cocoa.h>
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
@interface MPAutotypeDoctorReportViewController : NSViewController
|
||||||
|
|
||||||
|
@property (strong) IBOutlet NSImageView *accessibiltyStatusImageView;
|
||||||
|
@property (strong) IBOutlet NSTextField *accessibiltyStatusTextField;
|
||||||
|
|
||||||
|
@property (strong) IBOutlet NSImageView *screenRecordingStatusImageView;
|
||||||
|
@property (strong) IBOutlet NSTextField *screenRecordingStatusTextField;
|
||||||
|
@property (strong) IBOutlet NSButton *requestScreenRecordingButton;
|
||||||
|
|
||||||
|
- (IBAction)openAccessibiltyPreferences:(id)sender;
|
||||||
|
- (IBAction)openScreenRecordingPreferences:(id)sender;
|
||||||
|
- (IBAction)requestScreenRecordingPermissions:(id)sender;
|
||||||
|
- (IBAction)openAutomationPreferences:(id)sender;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
||||||
73
MacPass/MPAutotypeDoctorReportViewController.m
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
//
|
||||||
|
// MPAutotypeDoctorReportViewController.m
|
||||||
|
// MacPass
|
||||||
|
//
|
||||||
|
// Created by Michael Starke on 05.07.19.
|
||||||
|
// Copyright © 2019 HicknHack Software GmbH. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "MPAutotypeDoctorReportViewController.h"
|
||||||
|
#import "MPAutotypeDoctor.h"
|
||||||
|
|
||||||
|
@implementation MPAutotypeDoctorReportViewController
|
||||||
|
|
||||||
|
- (NSNibName)nibName {
|
||||||
|
return @"AutotypeDoctorReportViewController";
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)viewDidLoad {
|
||||||
|
[super viewDidLoad];
|
||||||
|
[self _updateView];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)openAccessibiltyPreferences:(id)sender {
|
||||||
|
[MPAutotypeDoctor.defaultDoctor openAccessibiltyPreferences];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)openScreenRecordingPreferences:(id)sender {
|
||||||
|
[MPAutotypeDoctor.defaultDoctor openScreenRecordingPreferences];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction)requestScreenRecordingPermissions:(id)sender {
|
||||||
|
[MPAutotypeDoctor.defaultDoctor requestScreenRecordingPermission];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)openAutomationPreferences:(id)sender {
|
||||||
|
[MPAutotypeDoctor.defaultDoctor openAutomationPreferences];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
- (void)_updateView {
|
||||||
|
NSError *error;
|
||||||
|
if([MPAutotypeDoctor.defaultDoctor hasAccessibiltyPermissions:&error]) {
|
||||||
|
self.accessibiltyStatusImageView.image = [NSImage imageNamed:NSImageNameStatusAvailable];
|
||||||
|
self.accessibiltyStatusTextField.stringValue = NSLocalizedString(@"AUTOTYPE_STATUS_ACCESSIBILTY_PERMISSIONS_OK", "Status label when no issue were found in accessibilty");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
self.accessibiltyStatusImageView.image = [NSImage imageNamed:NSImageNameStatusUnavailable];
|
||||||
|
if(error && error.localizedDescription) {
|
||||||
|
self.accessibiltyStatusTextField.stringValue = error.localizedDescription;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
self.accessibiltyStatusTextField.stringValue = NSLocalizedString(@"AUTOTYPE_STATUS_NO_ACCESSIBILTY_PERMISSIONS", "Status MacPass has no accessibilty permissions");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if([MPAutotypeDoctor.defaultDoctor hasScreenRecordingPermissions:&error]) {
|
||||||
|
self.requestScreenRecordingButton.enabled = NO;
|
||||||
|
self.screenRecordingStatusImageView.image = [NSImage imageNamed:NSImageNameStatusAvailable];
|
||||||
|
self.screenRecordingStatusTextField.stringValue = NSLocalizedString(@"AUTOTYPE_STATUS_SCREEN_RECORDING_PERMISSIONS_OK", "Status label when no issue were found in screen recording permissions");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
self.requestScreenRecordingButton.enabled = YES;
|
||||||
|
self.screenRecordingStatusImageView.image = [NSImage imageNamed:NSImageNameStatusUnavailable];
|
||||||
|
if(error && error.localizedDescription) {
|
||||||
|
self.screenRecordingStatusTextField.stringValue = error.localizedDescription;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
self.screenRecordingStatusTextField.stringValue = NSLocalizedString(@"AUTOTYPE_STATUS_NO_SCREEN_RECORDING_PERMISSIONS", "Status MacPass has no screen recording permissions");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
34
MacPass/MPAutotypeEnvironment.h
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
//
|
||||||
|
// MPAutotypeEnvironment.h
|
||||||
|
// MacPass
|
||||||
|
//
|
||||||
|
// Created by Michael Starke on 15.01.20.
|
||||||
|
// Copyright © 2020 HicknHack Software GmbH. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <Foundation/Foundation.h>
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
@class KPKEntry;
|
||||||
|
@class MPAutotypeContext;
|
||||||
|
|
||||||
|
@interface MPAutotypeEnvironment : NSObject
|
||||||
|
|
||||||
|
/**
|
||||||
|
The selected entry, if Autotype is run only for a single entry.
|
||||||
|
If autotype should search for entries, set this to nil.
|
||||||
|
*/
|
||||||
|
@property (readonly, weak, nullable) KPKEntry *preferredEntry;
|
||||||
|
@property (readonly) pid_t pid; // the PID of the target application to which the key strokes should be sent
|
||||||
|
@property (readonly, copy) NSString *windowTitle; /// The window title of the target application.
|
||||||
|
@property (readonly) BOOL hidden; /// If set to YES, MacPass was hidden when autotype was initiated
|
||||||
|
@property (readonly) BOOL isSelfTargeting; /// If MacPass should autotype to itself, YES, otherwise NO
|
||||||
|
|
||||||
|
+ (instancetype)environmentWithTargetApplication:(NSRunningApplication *)targetApplication entry:(KPKEntry * _Nullable)entry;
|
||||||
|
- (instancetype)initWithTargetApplication:(NSRunningApplication *)targetApplication entry:(KPKEntry * _Nullable)entry NS_DESIGNATED_INITIALIZER;
|
||||||
|
- (instancetype)init NS_UNAVAILABLE;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
||||||
84
MacPass/MPAutotypeEnvironment.m
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
//
|
||||||
|
// MPAutotypeEnvironment.m
|
||||||
|
// MacPass
|
||||||
|
//
|
||||||
|
// Created by Michael Starke on 15.01.20.
|
||||||
|
// Copyright © 2020 HicknHack Software GmbH. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "MPAutotypeEnvironment.h"
|
||||||
|
#import "NSRunningApplication+MPAdditions.h"
|
||||||
|
#import "MPPluginHost.h"
|
||||||
|
#import "MPPlugin.h"
|
||||||
|
|
||||||
|
@implementation MPAutotypeEnvironment
|
||||||
|
|
||||||
|
+ (instancetype)environmentWithTargetApplication:(NSRunningApplication *)targetApplication entry:(KPKEntry *)entry {
|
||||||
|
return [[MPAutotypeEnvironment alloc] initWithTargetApplication:targetApplication entry:entry];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (instancetype)initWithTargetApplication:(NSRunningApplication *)targetApplication entry:(KPKEntry *)entry {
|
||||||
|
self = [super init];
|
||||||
|
if(self) {
|
||||||
|
_preferredEntry = entry;
|
||||||
|
if(!targetApplication) {
|
||||||
|
_pid = -1;
|
||||||
|
_windowTitle = @"";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
NSDictionary *frontApplicationInfoDict = targetApplication.mp_infoDictionary;
|
||||||
|
|
||||||
|
_pid = [frontApplicationInfoDict[MPProcessIdentifierKey] intValue];
|
||||||
|
_windowTitle = frontApplicationInfoDict[MPWindowTitleKey];
|
||||||
|
|
||||||
|
/* if we have any resolvers, let them provide the window title */
|
||||||
|
NSArray *resolvers = [MPPluginHost.sharedHost windowTitleResolverForRunningApplication:targetApplication];
|
||||||
|
for(MPPlugin<MPAutotypeWindowTitleResolverPlugin> *resolver in resolvers) {
|
||||||
|
NSString *windowTitle = [resolver windowTitleForRunningApplication:targetApplication];
|
||||||
|
if(windowTitle.length > 0) {
|
||||||
|
_windowTitle = windowTitle;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_hidden = NSRunningApplication.currentApplication.isHidden;
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (BOOL)isSelfTargeting {
|
||||||
|
return NSRunningApplication.currentApplication.processIdentifier == _pid;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSDictionary *)_infoDictionaryForApplication:(NSRunningApplication *)application {
|
||||||
|
NSArray *currentWindows = CFBridgingRelease(CGWindowListCopyWindowInfo(kCGWindowListExcludeDesktopElements, kCGNullWindowID));
|
||||||
|
NSArray *windowNumbers = [NSWindow windowNumbersWithOptions:NSWindowNumberListAllApplications];
|
||||||
|
NSUInteger minZIndex = NSNotFound;
|
||||||
|
NSDictionary *infoDict = nil;
|
||||||
|
for(NSDictionary *windowDict in currentWindows) {
|
||||||
|
NSString *windowTitle = windowDict[(NSString *)kCGWindowName];
|
||||||
|
if(windowTitle.length <= 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
NSNumber *processId = windowDict[(NSString *)kCGWindowOwnerPID];
|
||||||
|
if(processId && [processId isEqualToNumber:@(application.processIdentifier)]) {
|
||||||
|
|
||||||
|
NSNumber *number = (NSNumber *)windowDict[(NSString *)kCGWindowNumber];
|
||||||
|
NSUInteger zIndex = [windowNumbers indexOfObject:number];
|
||||||
|
if(zIndex < minZIndex) {
|
||||||
|
minZIndex = zIndex;
|
||||||
|
infoDict = @{
|
||||||
|
MPWindowTitleKey: windowTitle,
|
||||||
|
MPProcessIdentifierKey : processId
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(currentWindows.count > 0 && infoDict.count == 0) {
|
||||||
|
// show some information about not being able to determine any windows
|
||||||
|
NSLog(@"Unable to retrieve any window names. If you encounter this issue you might be running 10.15 and MacPass has no permission for screen recording.");
|
||||||
|
}
|
||||||
|
return infoDict;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
@@ -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
|
||||||
434
MacPass/MPAutotypeParser.m
Normal file
@@ -0,0 +1,434 @@
|
|||||||
|
//
|
||||||
|
// 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 == 4)) {
|
||||||
|
NSString *uppercaseCommand = [[commandString substringWithRange:[result rangeAtIndex:1]] uppercaseString];
|
||||||
|
NSString *assignOrNot = [commandString substringWithRange:[result rangeAtIndex:2]];
|
||||||
|
NSString *valueString = [commandString substringWithRange:[result rangeAtIndex:3]];
|
||||||
|
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
|
||||||
|
}
|
||||||
|
if([assignOrNot isEqualToString:@"="]) {
|
||||||
|
[self.mutableCommands addObject:[[MPAutotypeDelay alloc] initWithGlobalDelay:value]];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
[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];
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||