mirror of
https://github.com/MacPass/MacPass.git
synced 2026-01-30 18:08:17 +00:00
Compare commits
22 Commits
continuous
...
feature-to
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9851a7b4e2 | ||
|
|
d1690d76d1 | ||
|
|
3c54cd9d7a | ||
|
|
4aa812740f | ||
|
|
197a4145e8 | ||
|
|
88a5af995e | ||
|
|
7b79c0b814 | ||
|
|
c5e30a0fa0 | ||
|
|
9d058f9d15 | ||
|
|
33907e07d6 | ||
|
|
02b3fc2945 | ||
|
|
484b5e4acd | ||
|
|
82558936da | ||
|
|
92a120c405 | ||
|
|
3fc73a7fd9 | ||
|
|
431b636057 | ||
|
|
51bdf12198 | ||
|
|
700dd43282 | ||
|
|
5157ec823f | ||
|
|
94956a673b | ||
|
|
4e56740577 | ||
|
|
a7b8be1886 |
45
.github/workflows/nightly.yml
vendored
45
.github/workflows/nightly.yml
vendored
@@ -30,48 +30,3 @@ jobs:
|
||||
set -o pipefail
|
||||
xcodebuild clean
|
||||
xcodebuild build -configuration release -project MacPass.xcodeproj -scheme MacPass CODE_SIGNING_REQUIRED=NO -derivedDataPath ./build | xcpretty -c
|
||||
|
||||
- name: Export Localizations
|
||||
run: |
|
||||
xcodebuild -project MacPass.xcodeproj -exportLocalizations -localizationPath Localisations -exportLanguage de
|
||||
xcodebuild -project MacPass.xcodeproj -exportLocalizations -localizationPath Localisations -exportLanguage en
|
||||
xcodebuild -project MacPass.xcodeproj -exportLocalizations -localizationPath Localisations -exportLanguage es
|
||||
xcodebuild -project MacPass.xcodeproj -exportLocalizations -localizationPath Localisations -exportLanguage fr
|
||||
xcodebuild -project MacPass.xcodeproj -exportLocalizations -localizationPath Localisations -exportLanguage it
|
||||
xcodebuild -project MacPass.xcodeproj -exportLocalizations -localizationPath Localisations -exportLanguage nl
|
||||
xcodebuild -project MacPass.xcodeproj -exportLocalizations -localizationPath Localisations -exportLanguage ru
|
||||
xcodebuild -project MacPass.xcodeproj -exportLocalizations -localizationPath Localisations -exportLanguage sv-SE
|
||||
xcodebuild -project MacPass.xcodeproj -exportLocalizations -localizationPath Localisations -exportLanguage zh-Hans
|
||||
|
||||
- name: Zip Localizations
|
||||
run: zip -9ry Localisations.zip Localisations
|
||||
|
||||
- name: Package Release
|
||||
run: |
|
||||
cd ./build/Build/Products/Release
|
||||
zip -9ry MacPass-continuous.zip MacPass.app
|
||||
|
||||
- name: Create MD5 Hash
|
||||
run: |
|
||||
cd ./build/Build/Products/Release
|
||||
shasum -a 256 MacPass-continuous.zip > MacPass-continuous.zip.sha256
|
||||
|
||||
#- name: Release
|
||||
# uses: eine/tip@master
|
||||
# with:
|
||||
# token: ${{ secrets.GITHUB_TOKEN }}
|
||||
# tag: continuous
|
||||
# files: |
|
||||
# Localisations.zip
|
||||
# ./build/Build/Products/Release/MacPass-continuous.zip
|
||||
# ./build/Build/Products/Release/MacPass-continuous.zip.sha256
|
||||
|
||||
- name: Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
with:
|
||||
tag_name: continuous
|
||||
files: |
|
||||
Localisations.zip
|
||||
./build/Build/Products/Release/MacPass-continuous.zip
|
||||
./build/Build/Products/Release/MacPass-continuous.zip.sha256
|
||||
|
||||
6
Cartfile
6
Cartfile
@@ -1,4 +1,4 @@
|
||||
github "sparkle-project/Sparkle" ~> 1.22
|
||||
github "MacPass/TransformerKit" "a8b5bb73cc327ec6798569b865c32fec5eb2289f"
|
||||
github "MacPass/KeePassKit" ~> 3.2.0
|
||||
github "mstarke/HNHUi" ~> 6.0
|
||||
github "mattt/TransformerKit" ~> 1.1.1
|
||||
github "MacPass/KeePassKit" "76e6ecda942f9e328efde7883ad75aed7290b632"
|
||||
github "mstarke/HNHUi" ~> 4.0
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
github "MacPass/KeePassKit" "3.2.0"
|
||||
github "MacPass/KissXML" "933f04fe5ad95c2be07ec0c2f801e140007f20fa"
|
||||
github "MacPass/TransformerKit" "a8b5bb73cc327ec6798569b865c32fec5eb2289f"
|
||||
github "mstarke/HNHUi" "6.0"
|
||||
github "sparkle-project/Sparkle" "1.27.1"
|
||||
github "MacPass/KeePassKit" "76e6ecda942f9e328efde7883ad75aed7290b632"
|
||||
github "mattt/TransformerKit" "1.1.1"
|
||||
github "mstarke/HNHUi" "4.0.3"
|
||||
github "robbiehanson/KissXML" "5.3.3"
|
||||
github "sparkle-project/Sparkle" "1.24.0"
|
||||
|
||||
@@ -49,6 +49,7 @@
|
||||
4C25D58716CF0FAA00F6806C /* EntryView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C25D58616CF0FAA00F6806C /* EntryView.xib */; };
|
||||
4C26C33F18D8C92100CF1A1C /* MPTemporaryFileStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C26C33E18D8C92100CF1A1C /* MPTemporaryFileStorage.m */; };
|
||||
4C2892A8257103F9003C7732 /* MPTOTPViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C2892A6257103F9003C7732 /* MPTOTPViewController.m */; };
|
||||
4C2892A9257103F9003C7732 /* MPTOTPViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C2892A7257103F9003C7732 /* MPTOTPViewController.xib */; };
|
||||
4C2E381D16D11FF900037A9D /* 03_ServerTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C2E381A16D11FF900037A9D /* 03_ServerTemplate.pdf */; };
|
||||
4C2E381E16D11FF900037A9D /* 04_KlipperTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C2E381B16D11FF900037A9D /* 04_KlipperTemplate.pdf */; };
|
||||
4C2E381F16D11FF900037A9D /* 05_LanguagesTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C2E381C16D11FF900037A9D /* 05_LanguagesTemplate.pdf */; };
|
||||
@@ -59,6 +60,7 @@
|
||||
4C349A00218852160055AF45 /* MPKeyTyper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C3499FF218852160055AF45 /* MPKeyTyper.m */; };
|
||||
4C35664025824C0A00CAB95B /* NSImage+MPQRCode.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C35663F25824C0A00CAB95B /* NSImage+MPQRCode.m */; };
|
||||
4C356645258259AA00CAB95B /* MPTOTPSetupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C356643258259AA00CAB95B /* MPTOTPSetupViewController.m */; };
|
||||
4C356646258259AA00CAB95B /* MPTOTPSetupViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C356644258259AA00CAB95B /* MPTOTPSetupViewController.xib */; };
|
||||
4C3666411787327E00B249F1 /* MPDocument+Attachments.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C3666401787327E00B249F1 /* MPDocument+Attachments.m */; };
|
||||
4C370EFE215B76CB00703AAE /* MPOutlineTableCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C370EFD215B76CB00703AAE /* MPOutlineTableCellView.m */; };
|
||||
4C37A84015B8B474005EF8EE /* MPOutlineDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C37A83F15B8B474005EF8EE /* MPOutlineDataSource.m */; };
|
||||
@@ -132,7 +134,6 @@
|
||||
4C4F72D118DF704400E8D378 /* DDHotKeyTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C4F72CF18DF704400E8D378 /* DDHotKeyTextField.m */; };
|
||||
4C4FCE15177CFE6B00BBF7AE /* MPCustomFieldTableCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C4FCE14177CFE6B00BBF7AE /* MPCustomFieldTableCellView.m */; };
|
||||
4C50CC041F6C18830095629D /* MPCollectionViewItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C50CC031F6C18830095629D /* MPCollectionViewItem.m */; };
|
||||
4C521981273D192C00C719D3 /* MPOpenURLHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C521980273D192C00C719D3 /* MPOpenURLHandler.m */; };
|
||||
4C52A88E1788628B00868229 /* 06_BlockDeviceTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C52A88B1788628B00868229 /* 06_BlockDeviceTemplate.pdf */; };
|
||||
4C52A88F1788628B00868229 /* 13_KeysTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C52A88C1788628B00868229 /* 13_KeysTemplate.pdf */; };
|
||||
4C52A8901788628B00868229 /* 18_DisplayTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C52A88D1788628B00868229 /* 18_DisplayTemplate.pdf */; };
|
||||
@@ -146,8 +147,6 @@
|
||||
4C586FA216D07F6A00E7DB57 /* 02_MessageBoxWarningTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C586FA116D07F6A00E7DB57 /* 02_MessageBoxWarningTemplate.pdf */; };
|
||||
4C58A4A32192EC1600B13370 /* NSIndexPath+MPAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C58A4A22192EC1600B13370 /* NSIndexPath+MPAdditions.m */; };
|
||||
4C58A4A82192EEBE00B13370 /* MPTestIndexPathAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C58A4A72192EEBE00B13370 /* MPTestIndexPathAdditions.m */; };
|
||||
4C59AC9D2722C12200F54B20 /* MPNodeExpirationViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C59AC9B2722C12200F54B20 /* MPNodeExpirationViewController.m */; };
|
||||
4C59AC9E2722C12200F54B20 /* MPNodeExpirationViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C59AC9C2722C12200F54B20 /* MPNodeExpirationViewController.xib */; };
|
||||
4C5A11FE1708DE8700223D8A /* MPPasswordCreatorViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C5A11FC1708DE8700223D8A /* MPPasswordCreatorViewController.m */; };
|
||||
4C5EF816218CA03F0003C00E /* MPAutotypeParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C5EF815218CA03F0003C00E /* MPAutotypeParser.m */; };
|
||||
4C5FE9AE17843CE20001D5A8 /* MPSelectedAttachmentTableCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C5FE9AD17843CE20001D5A8 /* MPSelectedAttachmentTableCellView.m */; };
|
||||
@@ -219,8 +218,6 @@
|
||||
4C8F0C711FCEF91400BE157F /* MPPickcharsParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C8F0C701FCEF91400BE157F /* MPPickcharsParser.m */; };
|
||||
4C8F0C731FCF1B7A00BE157F /* MPTestPickcharsParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C8F0C721FCF1B7A00BE157F /* MPTestPickcharsParser.m */; };
|
||||
4C8F0C791FD05A6A00BE157F /* NSString+MPPrettyPasswordDisplay.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C8F0C781FD05A6A00BE157F /* NSString+MPPrettyPasswordDisplay.m */; };
|
||||
4C9328C8273E6A38000DCBEE /* MPTOTPSetupViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C9328CA273E6A38000DCBEE /* MPTOTPSetupViewController.xib */; };
|
||||
4C9328D0273E6A83000DCBEE /* MPTOTPViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C9328D2273E6A83000DCBEE /* MPTOTPViewController.xib */; };
|
||||
4C978E0D19AE54AB003067DF /* MPFlagsHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C978E0C19AE54AB003067DF /* MPFlagsHelper.m */; };
|
||||
4C9BFFFB1FD19B5400264B16 /* MPPrettyPasswordTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C9BFFFA1FD19B5400264B16 /* MPPrettyPasswordTransformer.m */; };
|
||||
4CA08DA017A831B200A6544B /* MPAddEntryContextMenuDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA08D9F17A831B200A6544B /* MPAddEntryContextMenuDelegate.m */; };
|
||||
@@ -247,8 +244,6 @@
|
||||
4CBA2ABA17074C07006D8139 /* MPSettingsHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CBA2AB917074C07006D8139 /* MPSettingsHelper.m */; };
|
||||
4CBC5DDD23C61C8900D14B92 /* TransformerKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4CBC5DDB23C61C8300D14B92 /* TransformerKit.framework */; };
|
||||
4CBC5DDE23C61C8900D14B92 /* TransformerKit.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4CBC5DDB23C61C8300D14B92 /* TransformerKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
4CC0192E271836CD00459789 /* MPEntryAttributeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC0192C271836CD00459789 /* MPEntryAttributeViewController.m */; };
|
||||
4CC0192F271836CD00459789 /* MPEntryAttributeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4CC0192D271836CD00459789 /* MPEntryAttributeViewController.xib */; };
|
||||
4CC0D2CE17974A47000B4BDA /* MPCustomFieldTableViewDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC0D2CD17974A47000B4BDA /* MPCustomFieldTableViewDelegate.m */; };
|
||||
4CC0D2D117974A5A000B4BDA /* MPAttachmentTableViewDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC0D2D017974A5A000B4BDA /* MPAttachmentTableViewDelegate.m */; };
|
||||
4CC281891C0F675B00B9174D /* HNHUi.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4CC281881C0F675B00B9174D /* HNHUi.framework */; };
|
||||
@@ -285,18 +280,10 @@
|
||||
4CE39ABF16ECE34A000FE29D /* MPIconSelectViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE39ABE16ECE34A000FE29D /* MPIconSelectViewController.m */; };
|
||||
4CE39AC416ECE4F7000FE29D /* MPIconImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE39AC316ECE4F7000FE29D /* MPIconImageView.m */; };
|
||||
4CE3E62617AB0D2D00D9E4B4 /* MPAttachmentTableDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE3E62517AB0D2D00D9E4B4 /* MPAttachmentTableDataSource.m */; };
|
||||
4CE4FFA22746953A00789F75 /* MPAdvancedDatabaseSettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4FFA02746953A00789F75 /* MPAdvancedDatabaseSettingsViewController.m */; };
|
||||
4CE4FFA32746953A00789F75 /* MPAdvancedDatabaseSettingsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4CE4FFA12746953A00789F75 /* MPAdvancedDatabaseSettingsViewController.xib */; };
|
||||
4CE4FFA72746955E00789F75 /* MPSecurityDatabaseSettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4FFA52746955E00789F75 /* MPSecurityDatabaseSettingsViewController.m */; };
|
||||
4CE4FFA82746955E00789F75 /* MPSecurityDatabaseSettingsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4CE4FFA62746955E00789F75 /* MPSecurityDatabaseSettingsViewController.xib */; };
|
||||
4CE4FFAC2746956F00789F75 /* MPGeneralDatabaseSettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4FFAA2746956F00789F75 /* MPGeneralDatabaseSettingsViewController.m */; };
|
||||
4CE4FFAD2746956F00789F75 /* MPGeneralDatabaseSettingsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4CE4FFAB2746956F00789F75 /* MPGeneralDatabaseSettingsViewController.xib */; };
|
||||
4CE501341BBC47F500FB819D /* MPTagsTokenFieldDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE501331BBC47F500FB819D /* MPTagsTokenFieldDelegate.m */; };
|
||||
4CE5B54B173AFBA700207B39 /* MPDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE5B549173AFBA700207B39 /* MPDocument.m */; };
|
||||
4CE8246F16E2E93400573141 /* MPOverlayWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE8246E16E2E93400573141 /* MPOverlayWindowController.m */; };
|
||||
4CE8247516E2F2B900573141 /* MPOverlayView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE8247416E2F2B900573141 /* MPOverlayView.m */; };
|
||||
4CE84903271E10AC00EBAB0C /* MPEntryPasswordAttributeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE84901271E10AC00EBAB0C /* MPEntryPasswordAttributeViewController.m */; };
|
||||
4CE84904271E10AC00EBAB0C /* MPEntryPasswordAttributeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4CE84902271E10AC00EBAB0C /* MPEntryPasswordAttributeViewController.xib */; };
|
||||
4CE88B9717BA651C0042E078 /* contextTriangleTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4CE88B9617BA651C0042E078 /* contextTriangleTemplate.pdf */; };
|
||||
4CEE46DD181C301D006BF1E5 /* MPAutotypeDaemon.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CEE46DC181C301D006BF1E5 /* MPAutotypeDaemon.m */; };
|
||||
4CEED1C617D7BD0E007180F1 /* NSError+Messages.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CEED1C517D7BD0E007180F1 /* NSError+Messages.m */; };
|
||||
@@ -319,6 +306,7 @@
|
||||
6021FE9818E1650F00C3BC51 /* DatabaseSettingsWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6021FE9A18E1650F00C3BC51 /* DatabaseSettingsWindow.xib */; };
|
||||
7837112C225540D1009BD28D /* PluginRepositoryBrowserView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7837112E225540D1009BD28D /* PluginRepositoryBrowserView.xib */; };
|
||||
78E1F8B022E3A5D600E738AE /* AutotypeDoctorReportViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 78E1F8B222E3A5D600E738AE /* AutotypeDoctorReportViewController.xib */; };
|
||||
AF105CF325FE5B2000C4FD3C /* MPTouchIdCompositeKeyStore.m in Sources */ = {isa = PBXBuildFile; fileRef = AF105CF125FE5B2000C4FD3C /* MPTouchIdCompositeKeyStore.m */; };
|
||||
FA13910C1F9CD9EB0033D256 /* Localizable.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = FA13910A1F9CD9EB0033D256 /* Localizable.stringsdict */; };
|
||||
FA9FD3271FB5E8F4003CEDD6 /* AutotypeCandidateSelectionView.xib in Resources */ = {isa = PBXBuildFile; fileRef = FA9FD3291FB5E8F4003CEDD6 /* AutotypeCandidateSelectionView.xib */; };
|
||||
FA9FD32C1FB5EDD3003CEDD6 /* AutotypeBuilderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = FA9FD32E1FB5EDD3003CEDD6 /* AutotypeBuilderView.xib */; };
|
||||
@@ -454,6 +442,7 @@
|
||||
4C272A2B2224871900186EEC /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/PickfieldView.strings; sourceTree = "<group>"; };
|
||||
4C2892A5257103F9003C7732 /* MPTOTPViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPTOTPViewController.h; sourceTree = "<group>"; };
|
||||
4C2892A6257103F9003C7732 /* MPTOTPViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPTOTPViewController.m; sourceTree = "<group>"; };
|
||||
4C2892A7257103F9003C7732 /* MPTOTPViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MPTOTPViewController.xib; sourceTree = "<group>"; };
|
||||
4C2B0B7419F66F6400E48913 /* MPTargetNodeResolving.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPTargetNodeResolving.h; sourceTree = "<group>"; };
|
||||
4C2E381A16D11FF900037A9D /* 03_ServerTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 03_ServerTemplate.pdf; sourceTree = "<group>"; };
|
||||
4C2E381B16D11FF900037A9D /* 04_KlipperTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 04_KlipperTemplate.pdf; sourceTree = "<group>"; };
|
||||
@@ -472,6 +461,7 @@
|
||||
4C35663F25824C0A00CAB95B /* NSImage+MPQRCode.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSImage+MPQRCode.m"; sourceTree = "<group>"; };
|
||||
4C356642258259AA00CAB95B /* MPTOTPSetupViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPTOTPSetupViewController.h; sourceTree = "<group>"; };
|
||||
4C356643258259AA00CAB95B /* MPTOTPSetupViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPTOTPSetupViewController.m; sourceTree = "<group>"; };
|
||||
4C356644258259AA00CAB95B /* MPTOTPSetupViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MPTOTPSetupViewController.xib; sourceTree = "<group>"; };
|
||||
4C3666401787327E00B249F1 /* MPDocument+Attachments.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MPDocument+Attachments.m"; sourceTree = "<group>"; };
|
||||
4C370EFC215B76CB00703AAE /* MPOutlineTableCellView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPOutlineTableCellView.h; sourceTree = "<group>"; };
|
||||
4C370EFD215B76CB00703AAE /* MPOutlineTableCellView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPOutlineTableCellView.m; sourceTree = "<group>"; };
|
||||
@@ -561,7 +551,6 @@
|
||||
4C45FB2F178E0CE20010007D /* MPTestDocument.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPTestDocument.m; sourceTree = "<group>"; };
|
||||
4C46B88317063A070046109A /* NSString+MPPasswordCreation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+MPPasswordCreation.h"; sourceTree = "<group>"; };
|
||||
4C46B88417063A070046109A /* NSString+MPPasswordCreation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+MPPasswordCreation.m"; sourceTree = "<group>"; };
|
||||
4C47090727184AC8003777EB /* MPInspectorEditor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPInspectorEditor.h; sourceTree = "<group>"; };
|
||||
4C473A8518AFD7250073FD2E /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
|
||||
4C49CFD424252389004092E7 /* KPKEntry+MPTags.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "KPKEntry+MPTags.h"; sourceTree = "<group>"; };
|
||||
4C49CFD524252389004092E7 /* KPKEntry+MPTags.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "KPKEntry+MPTags.m"; sourceTree = "<group>"; };
|
||||
@@ -587,8 +576,6 @@
|
||||
4C4FCE14177CFE6B00BBF7AE /* MPCustomFieldTableCellView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPCustomFieldTableCellView.m; sourceTree = "<group>"; };
|
||||
4C50CC021F6C18830095629D /* MPCollectionViewItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPCollectionViewItem.h; sourceTree = "<group>"; };
|
||||
4C50CC031F6C18830095629D /* MPCollectionViewItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPCollectionViewItem.m; sourceTree = "<group>"; };
|
||||
4C52197F273D192C00C719D3 /* MPOpenURLHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPOpenURLHandler.h; sourceTree = "<group>"; };
|
||||
4C521980273D192C00C719D3 /* MPOpenURLHandler.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPOpenURLHandler.m; sourceTree = "<group>"; };
|
||||
4C52A88B1788628B00868229 /* 06_BlockDeviceTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 06_BlockDeviceTemplate.pdf; sourceTree = "<group>"; };
|
||||
4C52A88C1788628B00868229 /* 13_KeysTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 13_KeysTemplate.pdf; sourceTree = "<group>"; };
|
||||
4C52A88D1788628B00868229 /* 18_DisplayTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 18_DisplayTemplate.pdf; sourceTree = "<group>"; };
|
||||
@@ -607,9 +594,6 @@
|
||||
4C58A4A12192EC1600B13370 /* NSIndexPath+MPAdditions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSIndexPath+MPAdditions.h"; sourceTree = "<group>"; };
|
||||
4C58A4A22192EC1600B13370 /* NSIndexPath+MPAdditions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSIndexPath+MPAdditions.m"; sourceTree = "<group>"; };
|
||||
4C58A4A72192EEBE00B13370 /* MPTestIndexPathAdditions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPTestIndexPathAdditions.m; sourceTree = "<group>"; };
|
||||
4C59AC9A2722C12200F54B20 /* MPNodeExpirationViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPNodeExpirationViewController.h; sourceTree = "<group>"; };
|
||||
4C59AC9B2722C12200F54B20 /* MPNodeExpirationViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPNodeExpirationViewController.m; sourceTree = "<group>"; };
|
||||
4C59AC9C2722C12200F54B20 /* MPNodeExpirationViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MPNodeExpirationViewController.xib; sourceTree = "<group>"; };
|
||||
4C5A11FB1708DE8700223D8A /* MPPasswordCreatorViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPPasswordCreatorViewController.h; sourceTree = "<group>"; };
|
||||
4C5A11FC1708DE8700223D8A /* MPPasswordCreatorViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPPasswordCreatorViewController.m; sourceTree = "<group>"; };
|
||||
4C5ADC3017830B09004E1E8D /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InspectorView.strings; sourceTree = "<group>"; };
|
||||
@@ -771,12 +755,6 @@
|
||||
4C8F0C771FD05A6A00BE157F /* NSString+MPPrettyPasswordDisplay.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSString+MPPrettyPasswordDisplay.h"; sourceTree = "<group>"; };
|
||||
4C8F0C781FD05A6A00BE157F /* NSString+MPPrettyPasswordDisplay.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSString+MPPrettyPasswordDisplay.m"; sourceTree = "<group>"; };
|
||||
4C8FB9FA1FC2D0EF003691AA /* MPPlugin_Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPPlugin_Private.h; sourceTree = "<group>"; };
|
||||
4C9328C9273E6A38000DCBEE /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MPTOTPSetupViewController.xib; sourceTree = "<group>"; };
|
||||
4C9328CD273E6A5F000DCBEE /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/MPTOTPSetupViewController.strings"; sourceTree = "<group>"; };
|
||||
4C9328CF273E6A63000DCBEE /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/MPTOTPSetupViewController.strings; sourceTree = "<group>"; };
|
||||
4C9328D1273E6A83000DCBEE /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MPTOTPViewController.xib; sourceTree = "<group>"; };
|
||||
4C9328D4273E6A85000DCBEE /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/MPTOTPViewController.strings"; sourceTree = "<group>"; };
|
||||
4C9328D6273E6A85000DCBEE /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/MPTOTPViewController.strings; sourceTree = "<group>"; };
|
||||
4C978E0C19AE54AB003067DF /* MPFlagsHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPFlagsHelper.m; sourceTree = "<group>"; };
|
||||
4C97CCEF1FA727DC00E58F8C /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||
4C9BFFF91FD19B5400264B16 /* MPPrettyPasswordTransformer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPPrettyPasswordTransformer.h; sourceTree = "<group>"; };
|
||||
@@ -829,9 +807,6 @@
|
||||
4CBA2AB617074B59006D8139 /* MPSettingsHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPSettingsHelper.h; sourceTree = "<group>"; };
|
||||
4CBA2AB917074C07006D8139 /* MPSettingsHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPSettingsHelper.m; sourceTree = "<group>"; };
|
||||
4CBC5DDB23C61C8300D14B92 /* TransformerKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = TransformerKit.framework; path = Carthage/Build/Mac/TransformerKit.framework; sourceTree = "<group>"; };
|
||||
4CC0192B271836CD00459789 /* MPEntryAttributeViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPEntryAttributeViewController.h; sourceTree = "<group>"; };
|
||||
4CC0192C271836CD00459789 /* MPEntryAttributeViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPEntryAttributeViewController.m; sourceTree = "<group>"; };
|
||||
4CC0192D271836CD00459789 /* MPEntryAttributeViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MPEntryAttributeViewController.xib; sourceTree = "<group>"; };
|
||||
4CC0D2CC17974A47000B4BDA /* MPCustomFieldTableViewDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPCustomFieldTableViewDelegate.h; sourceTree = "<group>"; };
|
||||
4CC0D2CD17974A47000B4BDA /* MPCustomFieldTableViewDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPCustomFieldTableViewDelegate.m; sourceTree = "<group>"; };
|
||||
4CC0D2CF17974A5A000B4BDA /* MPAttachmentTableViewDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPAttachmentTableViewDelegate.h; sourceTree = "<group>"; };
|
||||
@@ -892,15 +867,6 @@
|
||||
4CE39AC316ECE4F7000FE29D /* MPIconImageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPIconImageView.m; sourceTree = "<group>"; };
|
||||
4CE3E62417AB0D2D00D9E4B4 /* MPAttachmentTableDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPAttachmentTableDataSource.h; sourceTree = "<group>"; };
|
||||
4CE3E62517AB0D2D00D9E4B4 /* MPAttachmentTableDataSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPAttachmentTableDataSource.m; sourceTree = "<group>"; };
|
||||
4CE4FF9F2746953A00789F75 /* MPAdvancedDatabaseSettingsViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPAdvancedDatabaseSettingsViewController.h; sourceTree = "<group>"; };
|
||||
4CE4FFA02746953A00789F75 /* MPAdvancedDatabaseSettingsViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPAdvancedDatabaseSettingsViewController.m; sourceTree = "<group>"; };
|
||||
4CE4FFA12746953A00789F75 /* MPAdvancedDatabaseSettingsViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MPAdvancedDatabaseSettingsViewController.xib; sourceTree = "<group>"; };
|
||||
4CE4FFA42746955E00789F75 /* MPSecurityDatabaseSettingsViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPSecurityDatabaseSettingsViewController.h; sourceTree = "<group>"; };
|
||||
4CE4FFA52746955E00789F75 /* MPSecurityDatabaseSettingsViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPSecurityDatabaseSettingsViewController.m; sourceTree = "<group>"; };
|
||||
4CE4FFA62746955E00789F75 /* MPSecurityDatabaseSettingsViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MPSecurityDatabaseSettingsViewController.xib; sourceTree = "<group>"; };
|
||||
4CE4FFA92746956F00789F75 /* MPGeneralDatabaseSettingsViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPGeneralDatabaseSettingsViewController.h; sourceTree = "<group>"; };
|
||||
4CE4FFAA2746956F00789F75 /* MPGeneralDatabaseSettingsViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPGeneralDatabaseSettingsViewController.m; sourceTree = "<group>"; };
|
||||
4CE4FFAB2746956F00789F75 /* MPGeneralDatabaseSettingsViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MPGeneralDatabaseSettingsViewController.xib; sourceTree = "<group>"; };
|
||||
4CE501321BBC47F500FB819D /* MPTagsTokenFieldDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPTagsTokenFieldDelegate.h; sourceTree = "<group>"; };
|
||||
4CE501331BBC47F500FB819D /* MPTagsTokenFieldDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPTagsTokenFieldDelegate.m; sourceTree = "<group>"; };
|
||||
4CE5B548173AFBA700207B39 /* MPDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPDocument.h; sourceTree = "<group>"; };
|
||||
@@ -909,9 +875,6 @@
|
||||
4CE8246E16E2E93400573141 /* MPOverlayWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPOverlayWindowController.m; sourceTree = "<group>"; };
|
||||
4CE8247316E2F2B900573141 /* MPOverlayView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPOverlayView.h; sourceTree = "<group>"; };
|
||||
4CE8247416E2F2B900573141 /* MPOverlayView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPOverlayView.m; sourceTree = "<group>"; };
|
||||
4CE84900271E10AC00EBAB0C /* MPEntryPasswordAttributeViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPEntryPasswordAttributeViewController.h; sourceTree = "<group>"; };
|
||||
4CE84901271E10AC00EBAB0C /* MPEntryPasswordAttributeViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPEntryPasswordAttributeViewController.m; sourceTree = "<group>"; };
|
||||
4CE84902271E10AC00EBAB0C /* MPEntryPasswordAttributeViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MPEntryPasswordAttributeViewController.xib; sourceTree = "<group>"; };
|
||||
4CE88B9617BA651C0042E078 /* contextTriangleTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = contextTriangleTemplate.pdf; sourceTree = "<group>"; };
|
||||
4CE88C2417C163FE00BFD195 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; };
|
||||
4CE88C3317C1647400BFD195 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||
@@ -979,39 +942,6 @@
|
||||
60ECAD221F12231B00EA9DB3 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/PluginPreferences.strings"; sourceTree = "<group>"; };
|
||||
60ECAD251F12253C00EA9DB3 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/WorkflowPreferences.strings"; sourceTree = "<group>"; };
|
||||
60ECAD271F12262400EA9DB3 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/IntegrationPreferences.strings"; sourceTree = "<group>"; };
|
||||
69385E2F274ACFDE001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/DatabaseSettingsWindow.strings; sourceTree = "<group>"; };
|
||||
69385E30274ACFDE001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/DuplicateEntryOptionsWindow.strings; sourceTree = "<group>"; };
|
||||
69385E31274ACFDE001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/PasswordEditWindow.strings; sourceTree = "<group>"; };
|
||||
69385E32274ACFDE001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/SavePanelAccessoryView.strings; sourceTree = "<group>"; };
|
||||
69385E33274ACFDE001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/EntryInspectorView.strings; sourceTree = "<group>"; };
|
||||
69385E34274ACFDF001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/GroupInspectorView.strings; sourceTree = "<group>"; };
|
||||
69385E35274ACFDF001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/InspectorView.strings; sourceTree = "<group>"; };
|
||||
69385E37274ACFDF001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/GeneralPreferences.strings; sourceTree = "<group>"; };
|
||||
69385E38274ACFDF001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/IntegrationPreferences.strings; sourceTree = "<group>"; };
|
||||
69385E39274ACFDF001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/PluginPreferences.strings; sourceTree = "<group>"; };
|
||||
69385E3A274ACFDF001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/PluginRepositoryBrowserView.strings; sourceTree = "<group>"; };
|
||||
69385E3B274ACFDF001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/UpdatePreferences.strings; sourceTree = "<group>"; };
|
||||
69385E3C274ACFDF001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/WorkflowPreferences.strings; sourceTree = "<group>"; };
|
||||
69385E3D274ACFDF001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/MPTOTPSetupViewController.strings; sourceTree = "<group>"; };
|
||||
69385E3E274ACFDF001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/AutotypeBuilderView.strings; sourceTree = "<group>"; };
|
||||
69385E3F274ACFDF001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/AutotypeCandidateSelectionView.strings; sourceTree = "<group>"; };
|
||||
69385E40274ACFDF001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/AutotypeDoctorReportViewController.strings; sourceTree = "<group>"; };
|
||||
69385E41274ACFE0001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/ContextBar.strings; sourceTree = "<group>"; };
|
||||
69385E42274ACFE0001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/DatePickingView.strings; sourceTree = "<group>"; };
|
||||
69385E43274ACFE0001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/IconSelection.strings; sourceTree = "<group>"; };
|
||||
69385E44274ACFE0001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/PasswordCreatorView.strings; sourceTree = "<group>"; };
|
||||
69385E45274ACFE0001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/PasswordInputView.strings; sourceTree = "<group>"; };
|
||||
69385E46274ACFE0001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/PickcharsView.strings; sourceTree = "<group>"; };
|
||||
69385E47274ACFE0001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/PickfieldView.strings; sourceTree = "<group>"; };
|
||||
69385E48274ACFE0001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/PluginDataView.strings; sourceTree = "<group>"; };
|
||||
69385E49274ACFE0001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/ReferenceBuilderView.strings; sourceTree = "<group>"; };
|
||||
69385E4A274ACFE0001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/WelcomeView.strings; sourceTree = "<group>"; };
|
||||
69385E4B274ACFE0001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/OpenPanelAccessoryView.strings; sourceTree = "<group>"; };
|
||||
69385E4C274ACFE0001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/MainMenu.strings; sourceTree = "<group>"; };
|
||||
69385E4D274ACFE0001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = cs; path = cs.lproj/Localizable.stringsdict; sourceTree = "<group>"; };
|
||||
69385E4E274ACFE0001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||
69385E50274ACFE1001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
69385E51274ACFE1001AB1E9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
6A74B0622076F4B30049BC29 /* sv-SE */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "sv-SE"; path = "sv-SE.lproj/DatabaseSettingsWindow.strings"; sourceTree = "<group>"; };
|
||||
6A74B0632076F4B30049BC29 /* sv-SE */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "sv-SE"; path = "sv-SE.lproj/PasswordEditWindow.strings"; sourceTree = "<group>"; };
|
||||
6A74B0642076F4B40049BC29 /* sv-SE */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "sv-SE"; path = "sv-SE.lproj/DuplicateEntryOptionsWindow.strings"; sourceTree = "<group>"; };
|
||||
@@ -1114,6 +1044,8 @@
|
||||
ABE8662E2316617500201125 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.stringsdict"; sourceTree = "<group>"; };
|
||||
ABE8662F2316617500201125 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/AutotypeDoctorReportViewController.strings"; sourceTree = "<group>"; };
|
||||
ABE86630231662D200201125 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/PluginDataView.strings"; sourceTree = "<group>"; };
|
||||
AF105CF125FE5B2000C4FD3C /* MPTouchIdCompositeKeyStore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPTouchIdCompositeKeyStore.m; sourceTree = "<group>"; };
|
||||
AF105CF225FE5B2000C4FD3C /* MPTouchIdCompositeKeyStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPTouchIdCompositeKeyStore.h; sourceTree = "<group>"; };
|
||||
BB3E050C1FE9D1CA00F0B46F /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/AutotypeCandidateSelectionView.strings; sourceTree = "<group>"; };
|
||||
BB3E050D1FE9D1CB00F0B46F /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = nl; path = nl.lproj/Localizable.stringsdict; sourceTree = "<group>"; };
|
||||
BB3E050E1FE9D1CC00F0B46F /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/ReferenceBuilderView.strings; sourceTree = "<group>"; };
|
||||
@@ -1369,8 +1301,8 @@
|
||||
4C4B7EF717A4B335000234C7 /* MPUniqueCharactersFormatter.m */,
|
||||
4C3C4EAD18D7039300153127 /* MPValueTransformerHelper.h */,
|
||||
4C3C4EAE18D7039300153127 /* MPValueTransformerHelper.m */,
|
||||
4C52197F273D192C00C719D3 /* MPOpenURLHandler.h */,
|
||||
4C521980273D192C00C719D3 /* MPOpenURLHandler.m */,
|
||||
AF105CF225FE5B2000C4FD3C /* MPTouchIdCompositeKeyStore.h */,
|
||||
AF105CF125FE5B2000C4FD3C /* MPTouchIdCompositeKeyStore.m */,
|
||||
);
|
||||
name = Helper;
|
||||
sourceTree = "<group>";
|
||||
@@ -1505,16 +1437,7 @@
|
||||
4C76156F1764C0E20015A1A6 /* InspectorView.xib */,
|
||||
4C2892A5257103F9003C7732 /* MPTOTPViewController.h */,
|
||||
4C2892A6257103F9003C7732 /* MPTOTPViewController.m */,
|
||||
4C9328D2273E6A83000DCBEE /* MPTOTPViewController.xib */,
|
||||
4CC0192B271836CD00459789 /* MPEntryAttributeViewController.h */,
|
||||
4CC0192C271836CD00459789 /* MPEntryAttributeViewController.m */,
|
||||
4CC0192D271836CD00459789 /* MPEntryAttributeViewController.xib */,
|
||||
4CE84900271E10AC00EBAB0C /* MPEntryPasswordAttributeViewController.h */,
|
||||
4CE84901271E10AC00EBAB0C /* MPEntryPasswordAttributeViewController.m */,
|
||||
4CE84902271E10AC00EBAB0C /* MPEntryPasswordAttributeViewController.xib */,
|
||||
4C59AC9A2722C12200F54B20 /* MPNodeExpirationViewController.h */,
|
||||
4C59AC9B2722C12200F54B20 /* MPNodeExpirationViewController.m */,
|
||||
4C59AC9C2722C12200F54B20 /* MPNodeExpirationViewController.xib */,
|
||||
4C2892A7257103F9003C7732 /* MPTOTPViewController.xib */,
|
||||
);
|
||||
name = Inspector;
|
||||
sourceTree = "<group>";
|
||||
@@ -1762,7 +1685,6 @@
|
||||
4CA0B2F115BCAEE600654E32 /* View Controller */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
4CE4FF9E2746943900789F75 /* Database Preferences */,
|
||||
4C5133861FA0C32C00C94C73 /* Accessory */,
|
||||
4C4B7EF517A46815000234C7 /* Inspector */,
|
||||
4C47D77718B37911002755E4 /* Preferences */,
|
||||
@@ -1834,7 +1756,6 @@
|
||||
4C7679BC1D75E690001F33D6 /* MPModelChangeObserving.h */,
|
||||
4CA0B30D15BCB6FD00654E32 /* MPPreferencesTab.h */,
|
||||
4C2B0B7419F66F6400E48913 /* MPTargetNodeResolving.h */,
|
||||
4C47090727184AC8003777EB /* MPInspectorEditor.h */,
|
||||
);
|
||||
name = Protocolls;
|
||||
sourceTree = "<group>";
|
||||
@@ -1853,7 +1774,7 @@
|
||||
children = (
|
||||
4C356642258259AA00CAB95B /* MPTOTPSetupViewController.h */,
|
||||
4C356643258259AA00CAB95B /* MPTOTPSetupViewController.m */,
|
||||
4C9328CA273E6A38000DCBEE /* MPTOTPSetupViewController.xib */,
|
||||
4C356644258259AA00CAB95B /* MPTOTPSetupViewController.xib */,
|
||||
);
|
||||
name = OTP;
|
||||
sourceTree = "<group>";
|
||||
@@ -1878,22 +1799,6 @@
|
||||
name = Controls;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
4CE4FF9E2746943900789F75 /* Database Preferences */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
4CE4FF9F2746953A00789F75 /* MPAdvancedDatabaseSettingsViewController.h */,
|
||||
4CE4FFA02746953A00789F75 /* MPAdvancedDatabaseSettingsViewController.m */,
|
||||
4CE4FFA12746953A00789F75 /* MPAdvancedDatabaseSettingsViewController.xib */,
|
||||
4CE4FFA42746955E00789F75 /* MPSecurityDatabaseSettingsViewController.h */,
|
||||
4CE4FFA52746955E00789F75 /* MPSecurityDatabaseSettingsViewController.m */,
|
||||
4CE4FFA62746955E00789F75 /* MPSecurityDatabaseSettingsViewController.xib */,
|
||||
4CE4FFA92746956F00789F75 /* MPGeneralDatabaseSettingsViewController.h */,
|
||||
4CE4FFAA2746956F00789F75 /* MPGeneralDatabaseSettingsViewController.m */,
|
||||
4CE4FFAB2746956F00789F75 /* MPGeneralDatabaseSettingsViewController.xib */,
|
||||
);
|
||||
name = "Database Preferences";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
4CE8247016E2E96500573141 /* Window Controller */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -2022,7 +1927,7 @@
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
CLASSPREFIX = MP;
|
||||
LastUpgradeCheck = 1250;
|
||||
LastUpgradeCheck = 1240;
|
||||
ORGANIZATIONNAME = "HicknHack Software GmbH";
|
||||
TargetAttributes = {
|
||||
4C77E36115B84A240093A587 = {
|
||||
@@ -2048,7 +1953,6 @@
|
||||
"sv-SE",
|
||||
uk,
|
||||
ja,
|
||||
cs,
|
||||
);
|
||||
mainGroup = 4C77E35715B84A240093A587;
|
||||
productRefGroup = 4C77E36315B84A240093A587 /* Products */;
|
||||
@@ -2087,12 +1991,10 @@
|
||||
4CA182751F963FF600DD4A4A /* TitlebarColorAccessoryViewController.xib in Resources */,
|
||||
4C3826B71AD04D8E007D7D67 /* 42_MemoryTemplate.pdf in Resources */,
|
||||
4C3826B41AD04D8E007D7D67 /* 39_HistoryTemplate.pdf in Resources */,
|
||||
4CE4FFA32746953A00789F75 /* MPAdvancedDatabaseSettingsViewController.xib in Resources */,
|
||||
4C77E37D15B84A240093A587 /* MainMenu.xib in Resources */,
|
||||
4C4BE0C9257E9B91000AEA8C /* MPNotificationPreferencesController.xib in Resources */,
|
||||
4C3826CD1AD04D8E007D7D67 /* 66_MoneyTemplate.pdf in Resources */,
|
||||
78E1F8B022E3A5D600E738AE /* AutotypeDoctorReportViewController.xib in Resources */,
|
||||
4C59AC9E2722C12200F54B20 /* MPNodeExpirationViewController.xib in Resources */,
|
||||
4CA0B2ED15BCADAC00654E32 /* PreferencesWindow.xib in Resources */,
|
||||
4C76155C1764C04C0015A1A6 /* GeneralPreferences.xib in Resources */,
|
||||
4CD884B715BD47080042BBF8 /* DocumentWindow.xib in Resources */,
|
||||
@@ -2104,7 +2006,6 @@
|
||||
4C586F9E16D07ABD00E7DB57 /* 00_PasswordTemplate.pdf in Resources */,
|
||||
FA13910C1F9CD9EB0033D256 /* Localizable.stringsdict in Resources */,
|
||||
4C586FA016D07D7200E7DB57 /* 01_PackageNetworkTemplate.pdf in Resources */,
|
||||
4CE4FFAD2746956F00789F75 /* MPGeneralDatabaseSettingsViewController.xib in Resources */,
|
||||
4C3826CB1AD04D8E007D7D67 /* 64_AppleTemplate.pdf in Resources */,
|
||||
4C3826AA1AD04D8E007D7D67 /* 27_NFSUnmountTemplate.pdf in Resources */,
|
||||
4C3826C31AD04D8E007D7D67 /* 56_AddressBookTemplate.pdf in Resources */,
|
||||
@@ -2142,7 +2043,6 @@
|
||||
4C0F04412147FB49000B8568 /* OpenPanelAccessoryView.xib in Resources */,
|
||||
4C6DCC451FA2457900C8AD3F /* ContextBar.xib in Resources */,
|
||||
4C431BCF16E2BAB000700A81 /* OverlayWindow.xib in Resources */,
|
||||
4CE4FFA82746955E00789F75 /* MPSecurityDatabaseSettingsViewController.xib in Resources */,
|
||||
4C3826B61AD04D8E007D7D67 /* 41_VectorTemplate.pdf in Resources */,
|
||||
4C17F105184E630200E85625 /* 14_BatteryTemplate.pdf in Resources */,
|
||||
4C0B5338205C1516003D277E /* PickcharsView.xib in Resources */,
|
||||
@@ -2163,12 +2063,10 @@
|
||||
4C3826B81AD04D8E007D7D67 /* 44_NotesTemplate.pdf in Resources */,
|
||||
4C3826C41AD04D8E007D7D67 /* 57_TextViewTemplate.pdf in Resources */,
|
||||
6021FE9818E1650F00C3BC51 /* DatabaseSettingsWindow.xib in Resources */,
|
||||
4CC0192F271836CD00459789 /* MPEntryAttributeViewController.xib in Resources */,
|
||||
4C6D1D25178579570014C5A5 /* 48_FolderTemplate.pdf in Resources */,
|
||||
4C701CBC178618A000581B88 /* 12_RemoteTemplate.pdf in Resources */,
|
||||
4CF29BF417879D0000851B60 /* 26_FileSaveTemplate.pdf in Resources */,
|
||||
4C7BD07619FE94C900C7AA5C /* Assets.xcassets in Resources */,
|
||||
4CE84904271E10AC00EBAB0C /* MPEntryPasswordAttributeViewController.xib in Resources */,
|
||||
4CA182781F96523600DD4A4A /* DuplicateEntryOptionsWindow.xib in Resources */,
|
||||
4C52A88E1788628B00868229 /* 06_BlockDeviceTemplate.pdf in Resources */,
|
||||
4C52A88F1788628B00868229 /* 13_KeysTemplate.pdf in Resources */,
|
||||
@@ -2188,7 +2086,7 @@
|
||||
4C17D11E2250EFBC00C650C4 /* SavePanelAccessoryView.xib in Resources */,
|
||||
4CE88B9717BA651C0042E078 /* contextTriangleTemplate.pdf in Resources */,
|
||||
4C7ABA4817BAEC6700FF5799 /* 15_ScannerTemplate.pdf in Resources */,
|
||||
4C9328C8273E6A38000DCBEE /* MPTOTPSetupViewController.xib in Resources */,
|
||||
4C356646258259AA00CAB95B /* MPTOTPSetupViewController.xib in Resources */,
|
||||
4C7ABA4917BAEC6700FF5799 /* 16_BrowserTemplate.pdf in Resources */,
|
||||
4C7ABA4A17BAEC6700FF5799 /* 17_CDRomTemplate.pdf in Resources */,
|
||||
4C7ABA4B17BAEC6700FF5799 /* 19_EmailTemplate.pdf in Resources */,
|
||||
@@ -2203,7 +2101,7 @@
|
||||
4C0DBEF51BF508DE00F9B287 /* PluginPreferences.xib in Resources */,
|
||||
4CF6653820E67A140008A25C /* PluginDataView.xib in Resources */,
|
||||
4C7F8B681A10B68400CCB83D /* WelcomeView.xib in Resources */,
|
||||
4C9328D0273E6A83000DCBEE /* MPTOTPViewController.xib in Resources */,
|
||||
4C2892A9257103F9003C7732 /* MPTOTPViewController.xib in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -2266,7 +2164,6 @@
|
||||
4C4F72D118DF704400E8D378 /* DDHotKeyTextField.m in Sources */,
|
||||
4C8F0C6E1FCEE9B900BE157F /* MPPluginConstants.m in Sources */,
|
||||
4C83814215BF4677001AE468 /* MPDocumentWindowController.m in Sources */,
|
||||
4CE4FFA22746953A00789F75 /* MPAdvancedDatabaseSettingsViewController.m in Sources */,
|
||||
4C82046A1FCDC07800EB24A4 /* MPPickfieldViewController.m in Sources */,
|
||||
4C2E382316D1421B00037A9D /* MPIconHelper.m in Sources */,
|
||||
4C2E382616D1470200037A9D /* MPViewController.m in Sources */,
|
||||
@@ -2284,7 +2181,6 @@
|
||||
4C370EFE215B76CB00703AAE /* MPOutlineTableCellView.m in Sources */,
|
||||
4CE8246F16E2E93400573141 /* MPOverlayWindowController.m in Sources */,
|
||||
4CE8247516E2F2B900573141 /* MPOverlayView.m in Sources */,
|
||||
4C59AC9D2722C12200F54B20 /* MPNodeExpirationViewController.m in Sources */,
|
||||
4C77547516E55FE800970E02 /* MPInspectorViewController.m in Sources */,
|
||||
4C89F524182FB4740069C73C /* MPAutotypeCommand.m in Sources */,
|
||||
4C6DCC611FA24C2100C8AD3F /* MPAutotypeCandidateSelectionViewController.m in Sources */,
|
||||
@@ -2324,6 +2220,7 @@
|
||||
4C978E0D19AE54AB003067DF /* MPFlagsHelper.m in Sources */,
|
||||
4C6F228919A4A7F90012310C /* MPAutotypeClear.m in Sources */,
|
||||
4C0B038C18E36DA400B9F9C9 /* MPFixAutotypeWindowController.m in Sources */,
|
||||
AF105CF325FE5B2000C4FD3C /* MPTouchIdCompositeKeyStore.m in Sources */,
|
||||
4C7679BF1D76D6D8001F33D6 /* MPErrorRecoveryAttempter.m in Sources */,
|
||||
4CAD338F205169D30068587E /* MPPluginRepositoryItem.m in Sources */,
|
||||
4C9BFFFB1FD19B5400264B16 /* MPPrettyPasswordTransformer.m in Sources */,
|
||||
@@ -2347,7 +2244,6 @@
|
||||
4C0C59F118B17F10009C7B76 /* DDHotKeyUtilities.m in Sources */,
|
||||
4CEE46DD181C301D006BF1E5 /* MPAutotypeDaemon.m in Sources */,
|
||||
4C50CC041F6C18830095629D /* MPCollectionViewItem.m in Sources */,
|
||||
4CC0192E271836CD00459789 /* MPEntryAttributeViewController.m in Sources */,
|
||||
4CA78C001FD58C92003C8560 /* MPPluginRepository.m in Sources */,
|
||||
4CAD8AA622CF397B0090B2DD /* MPAutotypeDoctorReportViewController.m in Sources */,
|
||||
4C8990F71EE978EB0043B48D /* MPDuplicateEntryOptionsWindowController.m in Sources */,
|
||||
@@ -2368,11 +2264,9 @@
|
||||
4CCEDE2A179F203B008402BE /* MPOutlineView.m in Sources */,
|
||||
4CB33F861EAF54A000C9341E /* KPKNode+MPIsHistory.m in Sources */,
|
||||
4CCEDE2E179F213B008402BE /* MPNotifications.m in Sources */,
|
||||
4CE84903271E10AC00EBAB0C /* MPEntryPasswordAttributeViewController.m in Sources */,
|
||||
4C17D8E517A1C780006C8C1E /* MPDocumentWindowDelegate.m in Sources */,
|
||||
4C63B8FB17A3154D0091BD72 /* MPContextButton.m in Sources */,
|
||||
4C1E9885185F71A800943563 /* MPContextBarViewController.m in Sources */,
|
||||
4CE4FFA72746955E00789F75 /* MPSecurityDatabaseSettingsViewController.m in Sources */,
|
||||
4C1FA07B18231900003A3F8C /* MPDocument+Autotype.m in Sources */,
|
||||
4C4B7EE917A45EC6000234C7 /* MPDatePickingViewController.m in Sources */,
|
||||
4C4B7EEE17A467E1000234C7 /* MPGroupInspectorViewController.m in Sources */,
|
||||
@@ -2388,14 +2282,12 @@
|
||||
4C0728BD17B5B7F7005A7DD9 /* MPPasswordEditWindowController.m in Sources */,
|
||||
4C0F647B17B6BC9C00D9522A /* MPSavePanelAccessoryViewController.m in Sources */,
|
||||
4C0949591FD6B89B004F2971 /* NSUserNotification+MPAdditions.m in Sources */,
|
||||
4C521981273D192C00C719D3 /* MPOpenURLHandler.m in Sources */,
|
||||
4C2057EE23CDF6F900C731EC /* MPPathCell.m in Sources */,
|
||||
4C3B42871F935316007B04FD /* MPDayCountFormatter.m in Sources */,
|
||||
4C7D9D5424ABE6FD00907034 /* MPTabViewController.m in Sources */,
|
||||
3C0CDECF21CFEDD200B2A10B /* NSTextView+MPTouchBarExtension.m in Sources */,
|
||||
4C57AE1417BA422B00CA4F34 /* MPSegmentedContextCell.m in Sources */,
|
||||
4CE2961518429AA5005F01CE /* MPAutotypeKeyPress.m in Sources */,
|
||||
4CE4FFAC2746956F00789F75 /* MPGeneralDatabaseSettingsViewController.m in Sources */,
|
||||
4C32B0E71A1D4436007E12F1 /* KPKFormat+MPUTIDetection.m in Sources */,
|
||||
4C5807781C64F67000E7171F /* NSString+MPHash.m in Sources */,
|
||||
4CAAA8271D787B8B00CDE977 /* MPAutotypeBuilderViewController.m in Sources */,
|
||||
@@ -2427,7 +2319,6 @@
|
||||
D364AB1423FC104300AB1D8E /* pl */,
|
||||
FA8CCD9123A7A6FA003A3BB1 /* uk */,
|
||||
6FECA76F24D51B0A00BBA9BB /* ja */,
|
||||
69385E46274ACFE0001AB1E9 /* cs */,
|
||||
);
|
||||
name = PickcharsView.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -2446,7 +2337,6 @@
|
||||
71FF7A25230FEF3D002F488F /* it */,
|
||||
FA8CCD9223A7A6FA003A3BB1 /* uk */,
|
||||
6FECA77024D51B0A00BBA9BB /* ja */,
|
||||
69385E47274ACFE0001AB1E9 /* cs */,
|
||||
);
|
||||
name = PickfieldView.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -2466,7 +2356,6 @@
|
||||
6A74B0692076F4B40049BC29 /* sv-SE */,
|
||||
FA8CCD8323A7A6F7003A3BB1 /* uk */,
|
||||
6FECA76324D51B0800BBA9BB /* ja */,
|
||||
69385E39274ACFDF001AB1E9 /* cs */,
|
||||
);
|
||||
name = PluginPreferences.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -2484,7 +2373,6 @@
|
||||
D364AB1523FC104300AB1D8E /* pl */,
|
||||
FA8CCD9523A7A6FB003A3BB1 /* uk */,
|
||||
6FECA77424D51B0B00BBA9BB /* ja */,
|
||||
69385E4B274ACFE0001AB1E9 /* cs */,
|
||||
);
|
||||
name = OpenPanelAccessoryView.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -2503,7 +2391,6 @@
|
||||
D364AB1623FC104300AB1D8E /* pl */,
|
||||
FA8CCD7E23A7A6F6003A3BB1 /* uk */,
|
||||
6FECA75D24D51B0700BBA9BB /* ja */,
|
||||
69385E32274ACFDE001AB1E9 /* cs */,
|
||||
);
|
||||
name = SavePanelAccessoryView.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -2522,7 +2409,6 @@
|
||||
6A74B07D2076F4B60049BC29 /* sv-SE */,
|
||||
FA8CCD9B23A7A6FC003A3BB1 /* uk */,
|
||||
6FECA77924D51B0B00BBA9BB /* ja */,
|
||||
69385E51274ACFE1001AB1E9 /* cs */,
|
||||
);
|
||||
name = InfoPlist.strings;
|
||||
sourceTree = "<group>";
|
||||
@@ -2542,7 +2428,6 @@
|
||||
6A74B0712076F4B50049BC29 /* sv-SE */,
|
||||
FA8CCD8C23A7A6F9003A3BB1 /* uk */,
|
||||
6FECA76A24D51B0900BBA9BB /* ja */,
|
||||
69385E41274ACFE0001AB1E9 /* cs */,
|
||||
);
|
||||
name = ContextBar.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -2562,7 +2447,6 @@
|
||||
6A74B06F2076F4B50049BC29 /* sv-SE */,
|
||||
FA8CCD8A23A7A6F8003A3BB1 /* uk */,
|
||||
6FECA76C24D51B0A00BBA9BB /* ja */,
|
||||
69385E43274ACFE0001AB1E9 /* cs */,
|
||||
);
|
||||
name = IconSelection.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -2582,7 +2466,6 @@
|
||||
6A74B0652076F4B40049BC29 /* sv-SE */,
|
||||
FA8CCD7F23A7A6F6003A3BB1 /* uk */,
|
||||
6FECA76124D51B0800BBA9BB /* ja */,
|
||||
69385E37274ACFDF001AB1E9 /* cs */,
|
||||
);
|
||||
name = GeneralPreferences.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -2602,7 +2485,6 @@
|
||||
6A74B06D2076F4B40049BC29 /* sv-SE */,
|
||||
FA8CCD8823A7A6F8003A3BB1 /* uk */,
|
||||
6FECA76E24D51B0A00BBA9BB /* ja */,
|
||||
69385E45274ACFE0001AB1E9 /* cs */,
|
||||
);
|
||||
name = PasswordInputView.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -2622,7 +2504,6 @@
|
||||
6A74B06A2076F4B40049BC29 /* sv-SE */,
|
||||
FA8CCD8523A7A6F7003A3BB1 /* uk */,
|
||||
6FECA76024D51B0800BBA9BB /* ja */,
|
||||
69385E35274ACFDF001AB1E9 /* cs */,
|
||||
);
|
||||
name = InspectorView.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -2642,7 +2523,6 @@
|
||||
4C9FE47423703DA50096A5EA /* en */,
|
||||
FA8CCD9A23A7A6FB003A3BB1 /* uk */,
|
||||
6FECA77824D51B0B00BBA9BB /* ja */,
|
||||
69385E50274ACFE1001AB1E9 /* cs */,
|
||||
);
|
||||
name = InfoPlist.strings;
|
||||
sourceTree = "<group>";
|
||||
@@ -2662,7 +2542,6 @@
|
||||
6A74B0782076F4B50049BC29 /* sv-SE */,
|
||||
FA8CCD9623A7A6FB003A3BB1 /* uk */,
|
||||
6FECA77524D51B0B00BBA9BB /* ja */,
|
||||
69385E4C274ACFE0001AB1E9 /* cs */,
|
||||
);
|
||||
name = MainMenu.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -2682,7 +2561,6 @@
|
||||
6A74B0772076F4B50049BC29 /* sv-SE */,
|
||||
FA8CCD9323A7A6FA003A3BB1 /* uk */,
|
||||
6FECA77324D51B0B00BBA9BB /* ja */,
|
||||
69385E4A274ACFE0001AB1E9 /* cs */,
|
||||
);
|
||||
name = WelcomeView.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -2702,33 +2580,10 @@
|
||||
4C1888D0230FFEE20054A38F /* it */,
|
||||
FA8CCD9823A7A6FB003A3BB1 /* uk */,
|
||||
6FECA77724D51B0B00BBA9BB /* ja */,
|
||||
69385E4E274ACFE0001AB1E9 /* cs */,
|
||||
);
|
||||
name = Localizable.strings;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
4C9328CA273E6A38000DCBEE /* MPTOTPSetupViewController.xib */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
4C9328C9273E6A38000DCBEE /* Base */,
|
||||
4C9328CD273E6A5F000DCBEE /* zh-Hans */,
|
||||
4C9328CF273E6A63000DCBEE /* de */,
|
||||
69385E3D274ACFDF001AB1E9 /* cs */,
|
||||
);
|
||||
name = MPTOTPSetupViewController.xib;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
4C9328D2273E6A83000DCBEE /* MPTOTPViewController.xib */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
4C9328D1273E6A83000DCBEE /* Base */,
|
||||
4C9328D4273E6A85000DCBEE /* zh-Hans */,
|
||||
4C9328D6273E6A85000DCBEE /* de */,
|
||||
69385E36274ACFDF001AB1E9 /* cs */,
|
||||
);
|
||||
name = MPTOTPViewController.xib;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
4CA1827A1F96523600DD4A4A /* DuplicateEntryOptionsWindow.xib */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
@@ -2744,7 +2599,6 @@
|
||||
6A74B0642076F4B40049BC29 /* sv-SE */,
|
||||
FA8CCD7D23A7A6F5003A3BB1 /* uk */,
|
||||
6FECA75B24D51B0700BBA9BB /* ja */,
|
||||
69385E30274ACFDE001AB1E9 /* cs */,
|
||||
);
|
||||
name = DuplicateEntryOptionsWindow.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -2753,7 +2607,6 @@
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
4CF14962224B623700D1CE1C /* Base */,
|
||||
69385E4F274ACFE0001AB1E9 /* cs */,
|
||||
);
|
||||
name = Credits.rtf;
|
||||
sourceTree = "<group>";
|
||||
@@ -2773,7 +2626,6 @@
|
||||
ABAA99A523151BE70095D78E /* zh-Hans */,
|
||||
FA8CCD8D23A7A6F9003A3BB1 /* uk */,
|
||||
6FECA77224D51B0A00BBA9BB /* ja */,
|
||||
69385E49274ACFE0001AB1E9 /* cs */,
|
||||
);
|
||||
name = ReferenceBuilderView.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -2792,7 +2644,6 @@
|
||||
ABE86630231662D200201125 /* zh-Hans */,
|
||||
FA8CCD8F23A7A6F9003A3BB1 /* uk */,
|
||||
6FECA77124D51B0A00BBA9BB /* ja */,
|
||||
69385E48274ACFE0001AB1E9 /* cs */,
|
||||
);
|
||||
name = PluginDataView.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -2812,7 +2663,6 @@
|
||||
6A74B06C2076F4B40049BC29 /* sv-SE */,
|
||||
FA8CCD8723A7A6F8003A3BB1 /* uk */,
|
||||
6FECA75E24D51B0800BBA9BB /* ja */,
|
||||
69385E33274ACFDE001AB1E9 /* cs */,
|
||||
);
|
||||
name = EntryInspectorView.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -2832,7 +2682,6 @@
|
||||
6A74B06B2076F4B40049BC29 /* sv-SE */,
|
||||
FA8CCD8623A7A6F7003A3BB1 /* uk */,
|
||||
6FECA75F24D51B0800BBA9BB /* ja */,
|
||||
69385E34274ACFDF001AB1E9 /* cs */,
|
||||
);
|
||||
name = GroupInspectorView.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -2852,7 +2701,6 @@
|
||||
78E1F8AF22E3A3DF00E738AE /* ru */,
|
||||
FA8CCD8023A7A6F6003A3BB1 /* uk */,
|
||||
6FECA76224D51B0800BBA9BB /* ja */,
|
||||
69385E38274ACFDF001AB1E9 /* cs */,
|
||||
);
|
||||
name = IntegrationPreferences.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -2872,7 +2720,6 @@
|
||||
6A74B0672076F4B40049BC29 /* sv-SE */,
|
||||
FA8CCD8123A7A6F6003A3BB1 /* uk */,
|
||||
6FECA76624D51B0900BBA9BB /* ja */,
|
||||
69385E3C274ACFDF001AB1E9 /* cs */,
|
||||
);
|
||||
name = WorkflowPreferences.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -2892,7 +2739,6 @@
|
||||
6A74B0682076F4B40049BC29 /* sv-SE */,
|
||||
FA8CCD8223A7A6F6003A3BB1 /* uk */,
|
||||
6FECA76524D51B0900BBA9BB /* ja */,
|
||||
69385E3B274ACFDF001AB1E9 /* cs */,
|
||||
);
|
||||
name = UpdatePreferences.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -2912,7 +2758,6 @@
|
||||
6A74B0702076F4B50049BC29 /* sv-SE */,
|
||||
FA8CCD8B23A7A6F9003A3BB1 /* uk */,
|
||||
6FECA76B24D51B0900BBA9BB /* ja */,
|
||||
69385E42274ACFE0001AB1E9 /* cs */,
|
||||
);
|
||||
name = DatePickingView.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -2932,7 +2777,6 @@
|
||||
6A74B0632076F4B30049BC29 /* sv-SE */,
|
||||
FA8CCD7C23A7A6F5003A3BB1 /* uk */,
|
||||
6FECA75C24D51B0700BBA9BB /* ja */,
|
||||
69385E31274ACFDE001AB1E9 /* cs */,
|
||||
);
|
||||
name = PasswordEditWindow.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -2952,7 +2796,6 @@
|
||||
6A74B06E2076F4B50049BC29 /* sv-SE */,
|
||||
FA8CCD8923A7A6F8003A3BB1 /* uk */,
|
||||
6FECA76D24D51B0A00BBA9BB /* ja */,
|
||||
69385E44274ACFE0001AB1E9 /* cs */,
|
||||
);
|
||||
name = PasswordCreatorView.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -2972,7 +2815,6 @@
|
||||
6A74B0622076F4B30049BC29 /* sv-SE */,
|
||||
FA8CCD7B23A7A6F5003A3BB1 /* uk */,
|
||||
6FECA75A24D51B0700BBA9BB /* ja */,
|
||||
69385E2F274ACFDE001AB1E9 /* cs */,
|
||||
);
|
||||
name = DatabaseSettingsWindow.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -2990,7 +2832,6 @@
|
||||
D364AB1823FC104300AB1D8E /* pl */,
|
||||
FA8CCD8423A7A6F7003A3BB1 /* uk */,
|
||||
6FECA76424D51B0800BBA9BB /* ja */,
|
||||
69385E3A274ACFDF001AB1E9 /* cs */,
|
||||
);
|
||||
name = PluginRepositoryBrowserView.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -3007,7 +2848,6 @@
|
||||
D364AB1723FC104300AB1D8E /* pl */,
|
||||
FA8CCD9423A7A6FA003A3BB1 /* uk */,
|
||||
6FECA76924D51B0900BBA9BB /* ja */,
|
||||
69385E40274ACFDF001AB1E9 /* cs */,
|
||||
);
|
||||
name = AutotypeDoctorReportViewController.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -3026,7 +2866,6 @@
|
||||
ABE8662E2316617500201125 /* zh-Hans */,
|
||||
FA8CCD9723A7A6FB003A3BB1 /* uk */,
|
||||
6FECA77624D51B0B00BBA9BB /* ja */,
|
||||
69385E4D274ACFE0001AB1E9 /* cs */,
|
||||
);
|
||||
name = Localizable.stringsdict;
|
||||
sourceTree = "<group>";
|
||||
@@ -3046,7 +2885,6 @@
|
||||
ABE506D522EFF97400B9F8DA /* zh-Hans */,
|
||||
FA8CCD9023A7A6FA003A3BB1 /* uk */,
|
||||
6FECA76824D51B0900BBA9BB /* ja */,
|
||||
69385E3F274ACFDF001AB1E9 /* cs */,
|
||||
);
|
||||
name = AutotypeCandidateSelectionView.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -3066,7 +2904,6 @@
|
||||
ABE506D622EFF97400B9F8DA /* zh-Hans */,
|
||||
FA8CCD8E23A7A6F9003A3BB1 /* uk */,
|
||||
6FECA76724D51B0900BBA9BB /* ja */,
|
||||
69385E3E274ACFDF001AB1E9 /* cs */,
|
||||
);
|
||||
name = AutotypeBuilderView.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -3142,7 +2979,6 @@
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
@@ -3198,7 +3034,6 @@
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
@@ -3234,6 +3069,7 @@
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = MacPassAppIcon;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = MacPass/MacPass.entitlements;
|
||||
CODE_SIGN_IDENTITY = "-";
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
CURRENT_PROJECT_VERSION = "${CURRENT_PROJECT_VERSION}";
|
||||
@@ -3264,6 +3100,7 @@
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = MacPassAppIcon;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = MacPass/MacPass.entitlements;
|
||||
CODE_SIGN_IDENTITY = "-";
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
CURRENT_PROJECT_VERSION = "${CURRENT_PROJECT_VERSION}";
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "1250"
|
||||
LastUpgradeVersion = "1240"
|
||||
version = "2.0">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17506" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17506"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -15,12 +15,12 @@
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView misplaced="YES" id="Hz6-mo-xeY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="392" height="220"/>
|
||||
<customView id="Hz6-mo-xeY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="392" height="210"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<tokenField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Jzn-UC-Ok8">
|
||||
<rect key="frame" x="20" y="60" width="352" height="66"/>
|
||||
<rect key="frame" x="20" y="50" width="352" height="66"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="66" id="7rr-fC-NeH"/>
|
||||
</constraints>
|
||||
@@ -31,14 +31,14 @@
|
||||
</tokenFieldCell>
|
||||
</tokenField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="lS4-1R-Bhp">
|
||||
<rect key="frame" x="201" y="13" width="178" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Set Autotype Sequence" bezelStyle="rounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="aOD-Ih-Sft">
|
||||
<rect key="frame" x="215" y="19" width="157" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Set Autotype Sequence" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="aOD-Ih-Sft">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="7xF-eN-vs3">
|
||||
<rect key="frame" x="18" y="186" width="207" height="14"/>
|
||||
<rect key="frame" x="18" y="176" width="207" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Available Commands and Placeholders" id="lug-97-H9D">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -46,7 +46,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="9Kw-lW-ASe">
|
||||
<rect key="frame" x="18" y="134" width="107" height="14"/>
|
||||
<rect key="frame" x="18" y="124" width="107" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Autotype Sequence" id="8ny-Qk-Jvo">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -54,7 +54,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<tokenField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="k06-gn-ahB">
|
||||
<rect key="frame" x="20" y="156" width="352" height="22"/>
|
||||
<rect key="frame" x="20" y="146" width="352" height="22"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="lessThanOrEqual" constant="400" id="can-wk-8oX"/>
|
||||
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="22" id="nk8-bB-yOg"/>
|
||||
@@ -74,7 +74,7 @@
|
||||
<constraint firstItem="9Kw-lW-ASe" firstAttribute="leading" secondItem="7xF-eN-vs3" secondAttribute="leading" id="Mjz-o8-Vqx"/>
|
||||
<constraint firstAttribute="bottom" secondItem="lS4-1R-Bhp" secondAttribute="bottom" constant="20" symbolic="YES" id="PZa-cL-9DY"/>
|
||||
<constraint firstAttribute="trailing" secondItem="k06-gn-ahB" secondAttribute="trailing" constant="20" symbolic="YES" id="UwG-TO-3PS"/>
|
||||
<constraint firstItem="lS4-1R-Bhp" firstAttribute="top" secondItem="Jzn-UC-Ok8" secondAttribute="bottom" constant="20" symbolic="YES" id="ZCK-9U-M92"/>
|
||||
<constraint firstItem="lS4-1R-Bhp" firstAttribute="top" secondItem="Jzn-UC-Ok8" secondAttribute="bottom" constant="8" symbolic="YES" id="ZCK-9U-M92"/>
|
||||
<constraint firstItem="k06-gn-ahB" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="hJ8-Oo-CDZ"/>
|
||||
<constraint firstItem="Jzn-UC-Ok8" firstAttribute="trailing" secondItem="k06-gn-ahB" secondAttribute="trailing" id="hWO-Ql-W8s"/>
|
||||
<constraint firstItem="9Kw-lW-ASe" firstAttribute="top" secondItem="k06-gn-ahB" secondAttribute="bottom" constant="8" symbolic="YES" id="qdv-SC-dEw"/>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{\rtf1\ansi\ansicpg1250\cocoartf2636
|
||||
{\rtf1\ansi\ansicpg1252\cocoartf2513
|
||||
\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica-Bold;\f1\fswiss\fcharset0 Helvetica;\f2\fnil\fcharset0 HelveticaNeue;
|
||||
\f3\fnil\fcharset0 AppleColorEmoji;}
|
||||
\f3\fnil\fcharset0 AppleColorEmoji;\f4\fnil\fcharset0 SFProText-Regular;}
|
||||
{\colortbl;\red255\green255\blue255;\red0\green0\blue0;\red9\green79\blue209;\red69\green60\blue204;
|
||||
\red52\green110\blue183;\red38\green38\blue38;}
|
||||
{\*\expandedcolortbl;;\cssrgb\c0\c0\c0\cname textColor;\cssrgb\c0\c40784\c85490\cname linkColor;\cssrgb\c34510\c33725\c83922;
|
||||
@@ -21,7 +21,7 @@
|
||||
License:\
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||
|
||||
\f1\b0 \cf2 MacPass KeePass compatible client for macOS\
|
||||
\f1\b0 \cf2 MacPass KeePass compatible client for OS X\
|
||||
Copyright (c) 2012-2021 Michael Starke, HicknHack Software GmbH\
|
||||
\
|
||||
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by\
|
||||
@@ -62,10 +62,11 @@ Karl Heinz Marbaise}}\kerning1\expnd0\expndtw3
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0
|
||||
|
||||
\f1\b0 \cf2 \
|
||||
Czech translation:\cf0 {\field{\*\fldinst{HYPERLINK "https://github.com/JiriSko"}}{\fldrslt \cf3 Ji\uc0\u345 \'ed \'8akorpil}}\cf2 \
|
||||
\
|
||||
Dutch translation: {\field{\*\fldinst{HYPERLINK "https://github.com/FrankKooij"}}{\fldrslt \cf3 Frank Kooij}},\cf4 \expnd0\expndtw0\kerning0
|
||||
{\field{\*\fldinst{HYPERLINK "https://github.com/clone1612"}}{\fldrslt \cf3 \kerning1\expnd0\expndtw0 Jannick Hemelhof}}\cf0 \kerning1\expnd0\expndtw0 \
|
||||
Dutch translation: {\field{\*\fldinst{HYPERLINK "https://github.com/FrankKooij"}}{\fldrslt \cf3 Frank Kooij}},
|
||||
\f4 \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}}\
|
||||
\
|
||||
|
||||
@@ -1,22 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19455" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19455"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="MPDatabaseSettingsWindowController">
|
||||
<connections>
|
||||
<outlet property="Argon2IterationsTextField" destination="39N-8Q-J8b" id="pnH-Mf-x5c"/>
|
||||
<outlet property="Argon2MemoryTextField" destination="eEW-oa-V7U" id="iDH-eW-4TE"/>
|
||||
<outlet property="Argon2ThreadsTextField" destination="178-0f-guB" id="ATl-km-DSX"/>
|
||||
<outlet property="aesEncryptionRoundsTextField" destination="8aq-34-rcd" id="WoJ-Kc-d8q"/>
|
||||
<outlet property="argon2dIterationsTextField" destination="39N-8Q-J8b" id="af4-Ft-aDX"/>
|
||||
<outlet property="argon2dMemoryStepper" destination="NfL-iP-SRk" id="eAW-kb-cLh"/>
|
||||
<outlet property="argon2dMemoryTextField" destination="eEW-oa-V7U" id="Wig-Rk-lm0"/>
|
||||
<outlet property="argon2dThreadsTextField" destination="178-0f-guB" id="dHa-L6-gOs"/>
|
||||
<outlet property="argon2idIterationsTextField" destination="gqS-YX-aBl" id="R5l-uT-9Xh"/>
|
||||
<outlet property="argon2idMemoryStepper" destination="qKz-Ir-3lf" id="GkI-Lv-Wz5"/>
|
||||
<outlet property="argon2idMemoryTextField" destination="edk-MV-ArQ" id="QIz-wh-QxJ"/>
|
||||
<outlet property="argon2idThreadsTextField" destination="aZY-o8-2Dn" id="Bzq-u5-Cnv"/>
|
||||
<outlet property="argon2IterationsTextField" destination="39N-8Q-J8b" id="af4-Ft-aDX"/>
|
||||
<outlet property="argon2MemoryStepper" destination="NfL-iP-SRk" id="eAW-kb-cLh"/>
|
||||
<outlet property="argon2MemoryTextField" destination="eEW-oa-V7U" id="Wig-Rk-lm0"/>
|
||||
<outlet property="argon2ThreadsTextField" destination="178-0f-guB" id="dHa-L6-gOs"/>
|
||||
<outlet property="cipherPopupButton" destination="3ek-Rg-w82" id="LbB-Fd-rqC"/>
|
||||
<outlet property="createKeyDerivationParametersButton" destination="P98-Cu-Tha" id="UQ0-eg-rdx"/>
|
||||
<outlet property="databaseColorColorWell" destination="1439" id="Fqq-2P-vbf"/>
|
||||
@@ -52,13 +51,13 @@
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
|
||||
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
|
||||
<rect key="contentRect" x="196" y="240" width="500" height="360"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="1920" height="1055"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
|
||||
<view key="contentView" misplaced="YES" id="2">
|
||||
<rect key="frame" x="0.0" y="0.0" width="500" height="360"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="288">
|
||||
<rect key="frame" x="433" y="13" width="54" height="32"/>
|
||||
<rect key="frame" x="385" y="13" width="59" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="OK" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="289">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -71,7 +70,7 @@ DQ
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="956">
|
||||
<rect key="frame" x="359" y="13" width="76" height="32"/>
|
||||
<rect key="frame" x="303" y="13" width="82" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="957">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -84,16 +83,16 @@ Gw
|
||||
</connections>
|
||||
</button>
|
||||
<tabView translatesAutoresizingMaskIntoConstraints="NO" id="357">
|
||||
<rect key="frame" x="13" y="40" width="474" height="310"/>
|
||||
<rect key="frame" x="13" y="41" width="432" height="338"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<tabViewItems>
|
||||
<tabViewItem label="General" identifier="1" id="358">
|
||||
<view key="view" id="361">
|
||||
<rect key="frame" x="10" y="33" width="454" height="264"/>
|
||||
<rect key="frame" x="10" y="33" width="454" height="265"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="231">
|
||||
<rect key="frame" x="154" y="223" width="280" height="21"/>
|
||||
<rect key="frame" x="154" y="224" width="280" height="21"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="280" id="cra-uC-nCv"/>
|
||||
</constraints>
|
||||
@@ -104,7 +103,7 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="256">
|
||||
<rect key="frame" x="70" y="200" width="78" height="16"/>
|
||||
<rect key="frame" x="70" y="201" width="78" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Description:" id="257">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -112,7 +111,7 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="189">
|
||||
<rect key="frame" x="46" y="227" width="102" height="16"/>
|
||||
<rect key="frame" x="46" y="228" width="102" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Database name:" id="190">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -120,7 +119,7 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1394">
|
||||
<rect key="frame" x="151" y="71" width="72" height="25"/>
|
||||
<rect key="frame" x="152" y="72" width="71" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="1395">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
@@ -133,7 +132,7 @@ Gw
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1404">
|
||||
<rect key="frame" x="60" y="77" width="88" height="16"/>
|
||||
<rect key="frame" x="60" y="78" width="88" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Compression:" id="1405">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -157,7 +156,7 @@ Gw
|
||||
<color key="color" red="0.05813049898" green="0.055541899059999997" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</colorWell>
|
||||
<scrollView horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1530">
|
||||
<rect key="frame" x="154" y="115" width="280" height="100"/>
|
||||
<rect key="frame" x="154" y="116" width="280" height="100"/>
|
||||
<clipView key="contentView" drawsBackground="NO" id="WOI-1v-RCe">
|
||||
<rect key="frame" x="1" y="1" width="278" height="98"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
@@ -237,11 +236,11 @@ Gw
|
||||
</tabViewItem>
|
||||
<tabViewItem label="Security" identifier="" id="370">
|
||||
<view key="view" id="371">
|
||||
<rect key="frame" x="10" y="33" width="454" height="288"/>
|
||||
<rect key="frame" x="10" y="33" width="412" height="292"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="3ek-Rg-w82">
|
||||
<rect key="frame" x="149" y="244" width="157" height="25"/>
|
||||
<rect key="frame" x="129" y="248" width="155" height="25"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="150" id="F8Y-Uw-4mL"/>
|
||||
</constraints>
|
||||
@@ -252,7 +251,7 @@ Gw
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="vH7-5a-52C">
|
||||
<rect key="frame" x="73" y="251" width="73" height="16"/>
|
||||
<rect key="frame" x="52" y="255" width="73" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Encryption:" id="gxY-UL-bEG">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -260,32 +259,29 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<box title="Key derivation" translatesAutoresizingMaskIntoConstraints="NO" id="pbl-Mb-r8V">
|
||||
<rect key="frame" x="17" y="16" width="420" height="224"/>
|
||||
<rect key="frame" x="17" y="16" width="378" height="227"/>
|
||||
<view key="contentView" id="hkT-SX-Te1">
|
||||
<rect key="frame" x="3" y="3" width="414" height="206"/>
|
||||
<rect key="frame" x="3" y="3" width="372" height="209"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="P98-Cu-Tha">
|
||||
<rect key="frame" x="249" y="17" width="146" height="23"/>
|
||||
<rect key="frame" x="209" y="18" width="143" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Generate Parameters" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="PoI-Er-Y8P">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="benchmarkParametersForDelay:" target="-2" id="Iyw-Hp-gm2"/>
|
||||
</connections>
|
||||
</button>
|
||||
<tabView drawsBackground="NO" type="noTabsNoBorder" translatesAutoresizingMaskIntoConstraints="NO" id="2MY-PW-kzL">
|
||||
<rect key="frame" x="12" y="47" width="390" height="111"/>
|
||||
<rect key="frame" x="12" y="49" width="348" height="111"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<tabViewItems>
|
||||
<tabViewItem label="Aes" identifier="1" id="ft1-pl-lpO">
|
||||
<view key="view" id="88i-IZ-Yev">
|
||||
<rect key="frame" x="0.0" y="0.0" width="390" height="111"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="390" height="61"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ztz-iY-hWV">
|
||||
<rect key="frame" x="64" y="73" width="50" height="16"/>
|
||||
<rect key="frame" x="64" y="23" width="50" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Rounds" id="uUQ-9s-M5E">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -293,7 +289,7 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8aq-34-rcd">
|
||||
<rect key="frame" x="120" y="70" width="150" height="21"/>
|
||||
<rect key="frame" x="120" y="20" width="150" height="21"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="150" id="cdb-ED-zB3"/>
|
||||
</constraints>
|
||||
@@ -417,103 +413,14 @@ Gw
|
||||
</tabViewItem>
|
||||
<tabViewItem label="Argon2id" identifier="" id="xI9-6m-9ju">
|
||||
<view key="view" id="k6k-0V-j7w">
|
||||
<rect key="frame" x="0.0" y="0.0" width="390" height="111"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="348" height="111"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="qKz-Ir-3lf">
|
||||
<rect key="frame" x="254" y="17" width="19" height="28"/>
|
||||
<stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="vGb-iO-lp5"/>
|
||||
</stepper>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="vRx-5Q-dar">
|
||||
<rect key="frame" x="60" y="23" width="54" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Memory" id="mq2-0M-8jv">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="aZY-o8-2Dn">
|
||||
<rect key="frame" x="120" y="82" width="150" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="FID-Lr-sq8">
|
||||
<numberFormatter key="formatter" formatterBehavior="default10_4" usesGroupingSeparator="NO" groupingSize="0" minimumIntegerDigits="0" maximumIntegerDigits="42" id="y7Q-EY-hcg">
|
||||
<real key="minimum" value="1"/>
|
||||
<real key="maximum" value="4294967295"/>
|
||||
</numberFormatter>
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="oZr-5M-43J">
|
||||
<rect key="frame" x="53" y="54" width="61" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Iterations" id="106-gi-Vnb">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="oXD-uF-jLh">
|
||||
<rect key="frame" x="60" y="85" width="54" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Threads" id="9zh-4T-smL">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="gqS-YX-aBl">
|
||||
<rect key="frame" x="120" y="51" width="150" height="21"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="150" id="ZMa-5V-8j5"/>
|
||||
</constraints>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="dAr-Cz-hg4">
|
||||
<numberFormatter key="formatter" formatterBehavior="default10_4" usesGroupingSeparator="NO" groupingSize="0" minimumIntegerDigits="0" maximumIntegerDigits="42" id="Qas-an-0IT">
|
||||
<real key="minimum" value="1"/>
|
||||
<real key="maximum" value="16777215"/>
|
||||
</numberFormatter>
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="edk-MV-ArQ">
|
||||
<rect key="frame" x="120" y="20" width="129" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="Pqf-ww-JwE">
|
||||
<byteCountFormatter key="formatter" countStyle="binary" allowsNonnumericFormatting="NO" id="WMf-04-Jeb"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="aZY-o8-2Dn" secondAttribute="trailing" constant="8" id="9cI-nd-tyn"/>
|
||||
<constraint firstItem="oZr-5M-43J" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="k6k-0V-j7w" secondAttribute="leading" constant="8" id="9hh-vu-O8k"/>
|
||||
<constraint firstItem="oXD-uF-jLh" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="k6k-0V-j7w" secondAttribute="leading" constant="8" id="AgJ-CV-R5A"/>
|
||||
<constraint firstItem="gqS-YX-aBl" firstAttribute="top" secondItem="aZY-o8-2Dn" secondAttribute="bottom" constant="10" symbolic="YES" id="Ext-M1-ojI"/>
|
||||
<constraint firstItem="gqS-YX-aBl" firstAttribute="width" secondItem="aZY-o8-2Dn" secondAttribute="width" id="IaU-gr-21m"/>
|
||||
<constraint firstItem="gqS-YX-aBl" firstAttribute="leading" secondItem="oZr-5M-43J" secondAttribute="trailing" constant="8" symbolic="YES" id="Mna-7q-x0b"/>
|
||||
<constraint firstItem="aZY-o8-2Dn" firstAttribute="centerX" secondItem="k6k-0V-j7w" secondAttribute="centerX" id="SAt-gT-Bzv"/>
|
||||
<constraint firstItem="oXD-uF-jLh" firstAttribute="firstBaseline" secondItem="aZY-o8-2Dn" secondAttribute="firstBaseline" id="WdW-gk-jZF"/>
|
||||
<constraint firstItem="oZr-5M-43J" firstAttribute="firstBaseline" secondItem="gqS-YX-aBl" secondAttribute="firstBaseline" id="di3-ie-idF"/>
|
||||
<constraint firstItem="edk-MV-ArQ" firstAttribute="top" secondItem="gqS-YX-aBl" secondAttribute="bottom" constant="10" symbolic="YES" id="ee7-xM-yUV"/>
|
||||
<constraint firstItem="gqS-YX-aBl" firstAttribute="leading" secondItem="aZY-o8-2Dn" secondAttribute="leading" id="fX2-vS-LbX"/>
|
||||
<constraint firstItem="vRx-5Q-dar" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="k6k-0V-j7w" secondAttribute="leading" constant="20" symbolic="YES" id="hCE-RO-pFT"/>
|
||||
<constraint firstItem="aZY-o8-2Dn" firstAttribute="leading" secondItem="oXD-uF-jLh" secondAttribute="trailing" constant="8" symbolic="YES" id="iLD-kh-ea0"/>
|
||||
<constraint firstItem="edk-MV-ArQ" firstAttribute="leading" secondItem="vRx-5Q-dar" secondAttribute="trailing" constant="8" symbolic="YES" id="jUP-Qe-l93"/>
|
||||
<constraint firstAttribute="bottom" secondItem="edk-MV-ArQ" secondAttribute="bottom" constant="20" id="knT-Qd-N96"/>
|
||||
<constraint firstItem="qKz-Ir-3lf" firstAttribute="leading" secondItem="edk-MV-ArQ" secondAttribute="trailing" constant="8" symbolic="YES" id="p8X-En-PYk"/>
|
||||
<constraint firstItem="qKz-Ir-3lf" firstAttribute="trailing" secondItem="gqS-YX-aBl" secondAttribute="trailing" id="qe1-0S-kq1"/>
|
||||
<constraint firstItem="vRx-5Q-dar" firstAttribute="firstBaseline" secondItem="edk-MV-ArQ" secondAttribute="firstBaseline" id="qht-hF-KQQ"/>
|
||||
<constraint firstItem="aZY-o8-2Dn" firstAttribute="top" secondItem="k6k-0V-j7w" secondAttribute="top" constant="8" id="t1Z-3T-UXQ"/>
|
||||
<constraint firstItem="qKz-Ir-3lf" firstAttribute="firstBaseline" secondItem="edk-MV-ArQ" secondAttribute="firstBaseline" id="uid-vB-VTE"/>
|
||||
<constraint firstItem="edk-MV-ArQ" firstAttribute="leading" secondItem="gqS-YX-aBl" secondAttribute="leading" id="x0l-y0-NlL"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</tabViewItem>
|
||||
</tabViewItems>
|
||||
</tabView>
|
||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2cq-R3-Ksh">
|
||||
<rect key="frame" x="129" y="162" width="157" height="25"/>
|
||||
<rect key="frame" x="109" y="165" width="155" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="Pb9-YV-rYe">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
@@ -524,7 +431,7 @@ Gw
|
||||
</connections>
|
||||
</popUpButton>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="4el-r1-iRL">
|
||||
<rect key="frame" x="63" y="169" width="63" height="16"/>
|
||||
<rect key="frame" x="42" y="172" width="63" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Algorithm" id="GVd-KH-pHc">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -569,18 +476,18 @@ Gw
|
||||
</tabViewItem>
|
||||
<tabViewItem label="Advanced" identifier="" id="368">
|
||||
<view key="view" id="369">
|
||||
<rect key="frame" x="10" y="33" width="513" height="393"/>
|
||||
<rect key="frame" x="10" y="33" width="507" height="391"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<button verticalHuggingPriority="1000" translatesAutoresizingMaskIntoConstraints="NO" id="531">
|
||||
<rect key="frame" x="184" y="356" width="149" height="18"/>
|
||||
<rect key="frame" x="184" y="355" width="145" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Enable Entry History" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="532">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1273">
|
||||
<rect key="frame" x="186" y="328" width="64" height="21"/>
|
||||
<rect key="frame" x="186" y="327" width="64" height="22"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="64" id="PRg-vx-8QK"/>
|
||||
</constraints>
|
||||
@@ -592,11 +499,11 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1294">
|
||||
<rect key="frame" x="255" y="325" width="19" height="28"/>
|
||||
<rect key="frame" x="255" y="325" width="19" height="27"/>
|
||||
<stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="1295"/>
|
||||
</stepper>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1268">
|
||||
<rect key="frame" x="41" y="331" width="139" height="16"/>
|
||||
<rect key="frame" x="41" y="330" width="139" height="17"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" enabled="NO" sendsActionOnEndEditing="YES" title="Maximum history size:" id="1269">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -604,7 +511,7 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="557">
|
||||
<rect key="frame" x="18" y="304" width="162" height="16"/>
|
||||
<rect key="frame" x="18" y="302" width="162" height="17"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" enabled="NO" sendsActionOnEndEditing="YES" title="Maximum items in history:" id="558">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -612,7 +519,7 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="593">
|
||||
<rect key="frame" x="186" y="301" width="64" height="21"/>
|
||||
<rect key="frame" x="186" y="299" width="64" height="22"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="594">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -620,18 +527,18 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="599">
|
||||
<rect key="frame" x="255" y="298" width="19" height="28"/>
|
||||
<rect key="frame" x="255" y="297" width="19" height="27"/>
|
||||
<stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="600"/>
|
||||
</stepper>
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="535">
|
||||
<rect key="frame" x="184" y="268" width="141" height="18"/>
|
||||
<rect key="frame" x="184" y="266" width="137" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Enable Recycle Bin" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="536">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="678">
|
||||
<rect key="frame" x="183" y="237" width="39" height="25"/>
|
||||
<rect key="frame" x="184" y="236" width="38" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="679">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
@@ -639,10 +546,10 @@ Gw
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
<box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="U7M-MH-EFw">
|
||||
<rect key="frame" x="20" y="291" width="473" height="5"/>
|
||||
<rect key="frame" x="20" y="288" width="467" height="5"/>
|
||||
</box>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1582">
|
||||
<rect key="frame" x="63" y="203" width="117" height="16"/>
|
||||
<rect key="frame" x="63" y="200" width="117" height="17"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Default Username:" id="1591">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -650,7 +557,7 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1730">
|
||||
<rect key="frame" x="186" y="200" width="307" height="21"/>
|
||||
<rect key="frame" x="186" y="197" width="301" height="22"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="1731">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -658,7 +565,7 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1738">
|
||||
<rect key="frame" x="183" y="156" width="39" height="25"/>
|
||||
<rect key="frame" x="184" y="153" width="38" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="1739">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
@@ -666,7 +573,7 @@ Gw
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="19r-LE-7X5">
|
||||
<rect key="frame" x="186" y="98" width="128" height="21"/>
|
||||
<rect key="frame" x="186" y="95" width="128" height="22"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="128" id="COb-0V-OmT"/>
|
||||
</constraints>
|
||||
@@ -678,25 +585,25 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="GUO-6H-UI2">
|
||||
<rect key="frame" x="319" y="94" width="19" height="28"/>
|
||||
<rect key="frame" x="319" y="92" width="19" height="27"/>
|
||||
<stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="qQV-3d-GpK"/>
|
||||
</stepper>
|
||||
<button verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Hqc-B0-xyz">
|
||||
<rect key="frame" x="184" y="126" width="175" height="18"/>
|
||||
<rect key="frame" x="184" y="123" width="171" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Recommend key change" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="CtU-Eq-dgy">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="upv-b3-vCc">
|
||||
<rect key="frame" x="184" y="73" width="133" height="18"/>
|
||||
<rect key="frame" x="184" y="71" width="129" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Force key change" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="z6u-YT-7LE">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="VYh-cm-fix">
|
||||
<rect key="frame" x="186" y="45" width="128" height="21"/>
|
||||
<rect key="frame" x="186" y="43" width="128" height="22"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="M9G-Yy-1s4">
|
||||
<customFormatter key="formatter" id="3Ax-U4-Ofb" customClass="MPDayCountFormatter"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -705,11 +612,11 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="lH4-xp-5QF">
|
||||
<rect key="frame" x="319" y="41" width="19" height="28"/>
|
||||
<rect key="frame" x="319" y="40" width="19" height="27"/>
|
||||
<stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="7Hw-Qf-zWf"/>
|
||||
</stepper>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1584">
|
||||
<rect key="frame" x="75" y="163" width="105" height="16"/>
|
||||
<rect key="frame" x="75" y="159" width="105" height="17"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Template Group:" id="1588">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -717,10 +624,10 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="I0d-r2-ySf">
|
||||
<rect key="frame" x="20" y="149" width="473" height="5"/>
|
||||
<rect key="frame" x="20" y="145" width="467" height="5"/>
|
||||
</box>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="NPm-5h-2Mz">
|
||||
<rect key="frame" x="65" y="244" width="115" height="16"/>
|
||||
<rect key="frame" x="65" y="242" width="115" height="17"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Recyclebin Group:" id="kI5-Kp-byE">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -728,7 +635,7 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="OmP-GD-2nA">
|
||||
<rect key="frame" x="27" y="101" width="153" height="16"/>
|
||||
<rect key="frame" x="27" y="98" width="153" height="17"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Recommend key change" id="Xib-Fn-sqx">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -736,7 +643,7 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="S0c-4E-42z">
|
||||
<rect key="frame" x="57" y="48" width="123" height="16"/>
|
||||
<rect key="frame" x="56" y="46" width="124" height="17"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Enforce key change" id="5QH-N1-FHK">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -744,7 +651,7 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="VMc-Qg-eCr">
|
||||
<rect key="frame" x="184" y="20" width="261" height="18"/>
|
||||
<rect key="frame" x="184" y="19" width="257" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Force key change once after unlocking" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="pA1-aL-KjT">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -848,7 +755,7 @@ Gw
|
||||
<constraint firstItem="956" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="2" secondAttribute="leading" constant="20" symbolic="YES" id="Yla-YR-bgz"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<point key="canvasLocation" x="-2020.5" y="-860.5"/>
|
||||
<point key="canvasLocation" x="-2020" y="-860"/>
|
||||
</window>
|
||||
</objects>
|
||||
</document>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="15702" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="15702"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -16,11 +16,11 @@
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView id="1">
|
||||
<rect key="frame" x="0.0" y="0.0" width="190" height="132"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="180" height="134"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<datePicker horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="3">
|
||||
<rect key="frame" x="20" y="88" width="153" height="28"/>
|
||||
<rect key="frame" x="20" y="91" width="143" height="27"/>
|
||||
<datePickerCell key="cell" borderStyle="bezel" alignment="left" id="4">
|
||||
<font key="font" metaFont="system"/>
|
||||
<date key="date" timeIntervalSinceReferenceDate="-595929600">
|
||||
@@ -32,7 +32,7 @@
|
||||
</datePickerCell>
|
||||
</datePicker>
|
||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="15">
|
||||
<rect key="frame" x="17" y="44" width="157" height="25"/>
|
||||
<rect key="frame" x="18" y="47" width="145" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="16">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
@@ -42,9 +42,9 @@
|
||||
<action selector="setDatePreset:" target="-2" id="RzX-je-KSz"/>
|
||||
</connections>
|
||||
</popUpButton>
|
||||
<button verticalHuggingPriority="750" horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="25">
|
||||
<rect key="frame" x="87" y="13" width="90" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Use Date" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="26">
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="25">
|
||||
<rect key="frame" x="90" y="19" width="70" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Use Date" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="26">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -52,9 +52,9 @@
|
||||
<action selector="useDate:" target="-2" id="34n-E5-FQq"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="29">
|
||||
<rect key="frame" x="13" y="13" width="76" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="30">
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="29">
|
||||
<rect key="frame" x="26" y="19" width="56" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Cancel" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="30">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -73,7 +73,7 @@
|
||||
<constraint firstAttribute="bottom" secondItem="25" secondAttribute="bottom" constant="20" symbolic="YES" id="36"/>
|
||||
<constraint firstAttribute="trailing" secondItem="3" secondAttribute="trailing" constant="20" id="6Qs-OP-VRr"/>
|
||||
<constraint firstItem="25" firstAttribute="centerY" secondItem="29" secondAttribute="centerY" id="M8N-5g-ClS"/>
|
||||
<constraint firstItem="25" firstAttribute="leading" secondItem="29" secondAttribute="trailing" constant="12" symbolic="YES" id="on5-xg-jcC"/>
|
||||
<constraint firstItem="25" firstAttribute="leading" secondItem="29" secondAttribute="trailing" constant="8" symbolic="YES" id="on5-xg-jcC"/>
|
||||
<constraint firstItem="15" firstAttribute="top" secondItem="3" secondAttribute="bottom" constant="20" symbolic="YES" id="qKB-vi-OAw"/>
|
||||
<constraint firstItem="25" firstAttribute="top" secondItem="15" secondAttribute="bottom" constant="8" symbolic="YES" id="sxX-fk-xaJ"/>
|
||||
</constraints>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19529" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19529"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -44,11 +44,11 @@
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<view translatesAutoresizingMaskIntoConstraints="NO" id="3">
|
||||
<rect key="frame" x="0.0" y="0.0" width="273" height="493"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="293" height="493"/>
|
||||
<subviews>
|
||||
<segmentedControl verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="82">
|
||||
<rect key="frame" x="62" y="468" width="150" height="21"/>
|
||||
<segmentedCell key="cell" controlSize="small" borderStyle="border" alignment="left" style="rounded" trackingMode="selectOne" id="238">
|
||||
<rect key="frame" x="76" y="470" width="142" height="19"/>
|
||||
<segmentedCell key="cell" controlSize="small" borderStyle="border" alignment="left" style="capsule" trackingMode="selectOne" id="238">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<segments>
|
||||
<segment label="General" selected="YES"/>
|
||||
@@ -58,26 +58,26 @@
|
||||
</segmentedCell>
|
||||
</segmentedControl>
|
||||
<tabView drawsBackground="NO" type="noTabsNoBorder" initialItem="110" translatesAutoresizingMaskIntoConstraints="NO" id="83">
|
||||
<rect key="frame" x="0.0" y="0.0" width="273" height="467"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="293" height="467"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<tabViewItems>
|
||||
<tabViewItem label="General" identifier="1" id="110">
|
||||
<view key="view" id="111">
|
||||
<rect key="frame" x="0.0" y="0.0" width="273" height="467"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="293" height="467"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
</view>
|
||||
</tabViewItem>
|
||||
<tabViewItem label="Attachments" identifier="" id="109">
|
||||
<view key="view" id="123">
|
||||
<rect key="frame" x="0.0" y="0.0" width="273" height="467"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="293" height="467"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<button focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="124">
|
||||
<rect key="frame" x="214" y="423" width="46" height="32"/>
|
||||
<rect key="frame" x="241" y="428" width="32" height="23"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="32" id="176"/>
|
||||
</constraints>
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSAddTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" focusRingType="none" imageScaling="proportionallyDown" inset="2" id="177">
|
||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSAddTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" focusRingType="none" imageScaling="proportionallyDown" inset="2" id="177">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -94,19 +94,19 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<scrollView autohidesScrollers="YES" horizontalLineScroll="38" horizontalPageScroll="10" verticalLineScroll="38" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="125" customClass="HNHUIScrollView">
|
||||
<rect key="frame" x="20" y="26" width="233" height="396"/>
|
||||
<rect key="frame" x="20" y="26" width="253" height="396"/>
|
||||
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="F3N-QI-Di5">
|
||||
<rect key="frame" x="1" y="1" width="231" height="394"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<rect key="frame" x="1" y="1" width="251" height="394"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" multipleSelection="NO" autosaveColumns="NO" rowHeight="36" rowSizeStyle="automatic" viewBased="YES" id="137">
|
||||
<rect key="frame" x="0.0" y="0.0" width="231" height="394"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="251" height="394"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<size key="intercellSpacing" width="3" height="2"/>
|
||||
<color key="backgroundColor" name="alternateSelectedControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
|
||||
<tableColumns>
|
||||
<tableColumn width="190" minWidth="40" maxWidth="1000" id="140">
|
||||
<tableColumn width="219" minWidth="40" maxWidth="1000" id="140">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left">
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" white="0.33333298560000002" alpha="1" colorSpace="calibratedWhite"/>
|
||||
@@ -119,7 +119,7 @@
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView identifier="NormalCell" id="143">
|
||||
<rect key="frame" x="11" y="1" width="199" height="36"/>
|
||||
<rect key="frame" x="11" y="1" width="228" height="36"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<imageView translatesAutoresizingMaskIntoConstraints="NO" id="144">
|
||||
@@ -131,7 +131,7 @@
|
||||
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="NSActionTemplate" id="152"/>
|
||||
</imageView>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="145">
|
||||
<rect key="frame" x="41" y="10" width="157" height="16"/>
|
||||
<rect key="frame" x="41" y="10" width="186" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="151">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -152,7 +152,7 @@
|
||||
</connections>
|
||||
</tableCellView>
|
||||
<tableCellView identifier="SelectedCell" id="141" customClass="MPSelectedAttachmentTableCellView">
|
||||
<rect key="frame" x="11" y="39" width="199" height="36"/>
|
||||
<rect key="frame" x="11" y="39" width="228" height="36"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<imageView translatesAutoresizingMaskIntoConstraints="NO" id="167">
|
||||
@@ -164,7 +164,7 @@
|
||||
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="NSActionTemplate" id="170"/>
|
||||
</imageView>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="166">
|
||||
<rect key="frame" x="41" y="10" width="106" height="16"/>
|
||||
<rect key="frame" x="41" y="10" width="131" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="171">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -172,7 +172,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="42g-QS-XtW">
|
||||
<rect key="frame" x="150" y="4" width="50" height="25"/>
|
||||
<rect key="frame" x="175" y="4" width="54" height="25"/>
|
||||
<popUpButtonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" borderStyle="border" imageScaling="proportionallyDown" inset="2" pullsDown="YES" altersStateOfSelectedItem="NO" id="nJc-UT-cas">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
@@ -218,7 +218,7 @@
|
||||
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="100" id="KFw-Ma-DSd"/>
|
||||
</constraints>
|
||||
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="138">
|
||||
<rect key="frame" x="1" y="379" width="231" height="16"/>
|
||||
<rect key="frame" x="1" y="147" width="52" height="16"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="139">
|
||||
@@ -242,7 +242,7 @@
|
||||
</tabViewItem>
|
||||
<tabViewItem label="Autotype" identifier="" id="hK7-Dx-yjH">
|
||||
<view key="view" id="2py-ab-4ZU">
|
||||
<rect key="frame" x="0.0" y="0.0" width="273" height="467"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="293" height="467"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
</view>
|
||||
</tabViewItem>
|
||||
@@ -284,8 +284,8 @@
|
||||
</connections>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="QSX-Xo-tcH">
|
||||
<rect key="frame" x="13" y="13" width="265" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Show Plugin Data" bezelStyle="rounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="X9y-K7-lix">
|
||||
<rect key="frame" x="19" y="18" width="253" 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">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -295,8 +295,8 @@
|
||||
</connections>
|
||||
</button>
|
||||
<segmentedControl verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="G9J-nn-2bu" customClass="MPContextButton">
|
||||
<rect key="frame" x="219" y="97" width="55" height="24"/>
|
||||
<segmentedCell key="cell" borderStyle="border" alignment="left" style="separated" trackingMode="selectOne" id="POU-2t-8fl">
|
||||
<rect key="frame" x="219" y="98" width="54" height="24"/>
|
||||
<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"/>
|
||||
@@ -321,7 +321,7 @@
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="53" customClass="HNHUITextField">
|
||||
<rect key="frame" x="0.0" y="286" width="251" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="70">
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="70">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -341,7 +341,7 @@
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="55" customClass="HNHUITextField">
|
||||
<rect key="frame" x="0.0" y="236" width="251" height="20"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="68">
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="68">
|
||||
<font key="font" size="13" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -362,9 +362,9 @@
|
||||
<stackView distribution="fill" orientation="horizontal" alignment="centerY" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" horizontalHuggingPriority="249" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="C4J-K4-QBG">
|
||||
<rect key="frame" x="0.0" y="186" width="251" height="20"/>
|
||||
<subviews>
|
||||
<secureTextField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" contentType="oneTimeCode" translatesAutoresizingMaskIntoConstraints="NO" id="60" customClass="HNHUISecureTextField">
|
||||
<rect key="frame" x="0.0" y="0.0" width="123" height="20"/>
|
||||
<secureTextFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" id="63">
|
||||
<secureTextField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="60" customClass="HNHUISecureTextField">
|
||||
<rect key="frame" x="0.0" y="0.0" width="135" height="20"/>
|
||||
<secureTextFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="63" customClass="HNHUISecureTextFieldCell">
|
||||
<font key="font" size="13" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -378,9 +378,9 @@
|
||||
</connections>
|
||||
</secureTextField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="61">
|
||||
<rect key="frame" x="124" y="-7" width="50" height="32"/>
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSQuickLookTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="62">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
||||
<rect key="frame" x="142" y="-2" width="32" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSQuickLookTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="62">
|
||||
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
@@ -388,8 +388,8 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="59">
|
||||
<rect key="frame" x="168" y="-7" width="90" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Generate" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="64">
|
||||
<rect key="frame" x="180" y="-2" width="72" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Generate" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="64">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -420,7 +420,7 @@
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="56" customClass="HNHUITextField">
|
||||
<rect key="frame" x="0.0" y="135" width="251" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="67">
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="67">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -533,7 +533,7 @@
|
||||
<constraint firstItem="dx3-E2-FFt" firstAttribute="leading" secondItem="4" secondAttribute="leading" constant="20" symbolic="YES" id="sjr-Xo-zxh"/>
|
||||
<constraint firstItem="G9J-nn-2bu" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="4" secondAttribute="leading" constant="20" symbolic="YES" id="z4K-PB-Qfb"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="-310" y="-1413"/>
|
||||
<point key="canvasLocation" x="-304" y="-1442"/>
|
||||
</customView>
|
||||
<view translatesAutoresizingMaskIntoConstraints="NO" id="zv7-wE-Bmg" customClass="HNHUIScrollDocumentViewAdapter">
|
||||
<rect key="frame" x="0.0" y="0.0" width="301" height="424"/>
|
||||
@@ -567,7 +567,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="cDK-DM-F5z" customClass="HNHUITextField">
|
||||
<rect key="frame" x="20" y="329" width="222" height="21"/>
|
||||
<rect key="frame" x="20" y="329" width="228" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="Custom Entry Sequence" drawsBackground="YES" id="R2X-Ex-c6q">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -598,7 +598,7 @@
|
||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
|
||||
<tableColumns>
|
||||
<tableColumn width="218" minWidth="40" maxWidth="1000" id="Wdn-k1-39b">
|
||||
<tableColumn width="247" minWidth="40" maxWidth="1000" id="Wdn-k1-39b">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left">
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" white="0.33333298560000002" alpha="1" colorSpace="calibratedWhite"/>
|
||||
@@ -611,12 +611,12 @@
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView identifier="WindowAssociationCell" id="jI3-t8-8bp">
|
||||
<rect key="frame" x="11" y="1" width="227" height="17"/>
|
||||
<rect key="frame" x="1" y="1" width="256" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="JgP-7K-Ugw">
|
||||
<rect key="frame" x="0.0" y="0.0" width="226" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="256" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="dyA-lo-PGa">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -695,7 +695,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="NjR-ea-Y7k" customClass="HNHUITextField">
|
||||
<rect key="frame" x="20" y="10" width="222" height="21"/>
|
||||
<rect key="frame" x="20" y="10" width="228" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="Custom Window Sequence" drawsBackground="YES" id="fW9-9p-wwR">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -703,8 +703,8 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="m1C-m8-BKR">
|
||||
<rect key="frame" x="243" y="4" width="45" height="32"/>
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSActionTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="HIC-T9-j9G">
|
||||
<rect key="frame" x="255" y="9" width="27" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSActionTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="HIC-T9-j9G">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -713,8 +713,8 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="HDS-Bz-jrr">
|
||||
<rect key="frame" x="243" y="322" width="45" height="32"/>
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSActionTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="V5Z-qf-FVH">
|
||||
<rect key="frame" x="255" y="327" width="27" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSActionTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="V5Z-qf-FVH">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -764,22 +764,22 @@
|
||||
<constraint firstAttribute="trailing" secondItem="45R-v4-ywl" secondAttribute="trailing" constant="20" symbolic="YES" id="uUm-S5-cxM"/>
|
||||
<constraint firstAttribute="trailing" secondItem="z03-zW-GN3" secondAttribute="trailing" constant="20" symbolic="YES" id="wiq-pY-TG8"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="145.5" y="-1275"/>
|
||||
<point key="canvasLocation" x="146" y="-1275"/>
|
||||
</view>
|
||||
<scrollView borderType="line" autohidesScrollers="YES" horizontalLineScroll="56" horizontalPageScroll="10" verticalLineScroll="56" verticalPageScroll="10" usesPredominantAxisScrolling="NO" horizontalScrollElasticity="none" translatesAutoresizingMaskIntoConstraints="NO" id="180" customClass="HNHUIScrollView">
|
||||
<rect key="frame" x="0.0" y="0.0" width="290" height="268"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="261" height="268"/>
|
||||
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="k8G-zp-BXZ">
|
||||
<rect key="frame" x="1" y="1" width="288" height="266"/>
|
||||
<rect key="frame" x="1" y="1" width="259" height="266"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<tableView focusRingType="none" verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" tableStyle="fullWidth" selectionHighlightStyle="none" columnSelection="YES" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" rowHeight="54" viewBased="YES" id="193">
|
||||
<rect key="frame" x="0.0" y="0.0" width="288" height="266"/>
|
||||
<tableView focusRingType="none" verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" selectionHighlightStyle="none" columnSelection="YES" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" rowHeight="54" viewBased="YES" id="193">
|
||||
<rect key="frame" x="0.0" y="0.0" width="259" height="266"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<size key="intercellSpacing" width="3" height="2"/>
|
||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
|
||||
<tableColumns>
|
||||
<tableColumn width="218" minWidth="40" maxWidth="1000000" id="194">
|
||||
<tableColumn width="247" minWidth="40" maxWidth="1000000" id="194">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left">
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" white="0.33333298560000002" alpha="1" colorSpace="calibratedWhite"/>
|
||||
@@ -791,22 +791,23 @@
|
||||
</textFieldCell>
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView identifier="SelectedCell" translatesAutoresizingMaskIntoConstraints="NO" id="196" customClass="MPCustomFieldTableCellView">
|
||||
<rect key="frame" x="1" y="1" width="227" height="53"/>
|
||||
<tableCellView identifier="SelectedCell" id="196" customClass="MPCustomFieldTableCellView">
|
||||
<rect key="frame" x="1" y="1" width="256" height="53"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" contentType="oneTimeCode" translatesAutoresizingMaskIntoConstraints="NO" id="199" customClass="HNHUISecureTextField">
|
||||
<rect key="frame" x="3" y="10" width="114" height="21"/>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="199" customClass="HNHUISecureTextField">
|
||||
<rect key="frame" x="3" y="10" width="153" height="21"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="50" id="213"/>
|
||||
</constraints>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="Value" drawsBackground="YES" id="214" customClass="HNHUISecureTextFieldCell">
|
||||
<textFieldCell key="cell" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="Value" drawsBackground="YES" id="214" customClass="HNHUISecureTextFieldCell">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="200">
|
||||
<rect key="frame" x="1" y="39" width="198" height="14"/>
|
||||
<rect key="frame" x="1" y="39" width="223" height="14"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="14" id="210"/>
|
||||
</constraints>
|
||||
@@ -817,16 +818,16 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="198">
|
||||
<rect key="frame" x="160" y="4" width="44" height="32"/>
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSRemoveTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="216">
|
||||
<rect key="frame" x="197" y="9" width="26" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSRemoveTemplate" imagePosition="overlaps" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="216">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="tDI-EL-JGB">
|
||||
<rect key="frame" x="118" y="4" width="44" height="32"/>
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSLockLockedTemplate" imagePosition="only" alignment="center" lineBreakMode="truncatingTail" borderStyle="border" inset="2" id="fat-C5-dS2">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
||||
<rect key="frame" x="163" y="9" width="28" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="52_EncryptedTemplate" imagePosition="overlaps" alignment="center" lineBreakMode="truncatingTail" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="fat-C5-dS2">
|
||||
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
@@ -838,11 +839,11 @@
|
||||
<constraint firstItem="199" firstAttribute="leading" secondItem="196" secondAttribute="leading" constant="3" id="204"/>
|
||||
<constraint firstItem="199" firstAttribute="top" secondItem="200" secondAttribute="bottom" constant="8" symbolic="YES" id="205"/>
|
||||
<constraint firstAttribute="bottom" secondItem="199" secondAttribute="bottom" constant="10" id="206"/>
|
||||
<constraint firstAttribute="trailing" secondItem="198" secondAttribute="trailing" constant="30" id="209"/>
|
||||
<constraint firstAttribute="trailing" secondItem="198" secondAttribute="trailing" constant="34" id="209"/>
|
||||
<constraint firstItem="tDI-EL-JGB" firstAttribute="leading" secondItem="199" secondAttribute="trailing" constant="8" symbolic="YES" id="Wbg-bF-vD7"/>
|
||||
<constraint firstItem="tDI-EL-JGB" firstAttribute="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="12" symbolic="YES" id="qSi-Hi-kM3"/>
|
||||
<constraint firstItem="198" firstAttribute="leading" secondItem="tDI-EL-JGB" secondAttribute="trailing" constant="8" symbolic="YES" id="qSi-Hi-kM3"/>
|
||||
</constraints>
|
||||
<connections>
|
||||
<outlet property="labelTextField" destination="200" id="242"/>
|
||||
@@ -857,9 +858,7 @@
|
||||
</tableView>
|
||||
</subviews>
|
||||
<nil key="backgroundColor"/>
|
||||
<edgeInsets key="contentInsets" left="0.0" right="0.0" top="0.0" bottom="0.0"/>
|
||||
</clipView>
|
||||
<edgeInsets key="contentInsets" left="0.0" right="0.0" top="0.0" bottom="0.0"/>
|
||||
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="192">
|
||||
<rect key="frame" x="1" y="130" width="259" height="16"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
@@ -871,13 +870,13 @@
|
||||
<connections>
|
||||
<outlet property="nextKeyView" destination="G9J-nn-2bu" id="CZ9-f2-JDQ"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="-1049" y="-1342"/>
|
||||
<point key="canvasLocation" x="-1015" y="-1275"/>
|
||||
</scrollView>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="52_EncryptedTemplate" width="16" height="16"/>
|
||||
<image name="NSActionTemplate" width="15" height="15"/>
|
||||
<image name="NSAddTemplate" width="14" height="13"/>
|
||||
<image name="NSLockLockedTemplate" width="14" height="15"/>
|
||||
<image name="NSQuickLookTemplate" width="21" height="13"/>
|
||||
<image name="NSRemoveTemplate" width="14" height="4"/>
|
||||
</resources>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19455" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14313.18" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19455"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14313.18"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -14,7 +14,6 @@
|
||||
<outlet property="expireDateSelectButton" destination="4" id="W6H-j5-GLf"/>
|
||||
<outlet property="expiresCheckButton" destination="5" id="283"/>
|
||||
<outlet property="searchPopupButton" destination="229" id="284"/>
|
||||
<outlet property="tagsTokenField" destination="5ty-ww-t4q" id="MD7-yb-kgI"/>
|
||||
<outlet property="titleTextField" destination="23" id="35"/>
|
||||
<outlet property="view" destination="37" id="45"/>
|
||||
</connections>
|
||||
@@ -22,218 +21,182 @@
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<scrollView borderType="none" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" hasVerticalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="37" customClass="HNHUIScrollView">
|
||||
<rect key="frame" x="0.0" y="0.0" width="291" height="462"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="257" height="291"/>
|
||||
<clipView key="contentView" id="HjA-kA-fcX">
|
||||
<rect key="frame" x="0.0" y="0.0" width="291" height="462"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="257" height="291"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<view translatesAutoresizingMaskIntoConstraints="NO" id="38" customClass="HNHUIScrollDocumentViewAdapter">
|
||||
<rect key="frame" x="0.0" y="65" width="291" height="397"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="257" height="291"/>
|
||||
<subviews>
|
||||
<stackView distribution="fill" orientation="vertical" alignment="leading" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="GyB-8Z-S3Q">
|
||||
<rect key="frame" x="20" y="20" width="251" height="357"/>
|
||||
<subviews>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="24">
|
||||
<rect key="frame" x="-2" y="343" width="255" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Name" id="25">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="23" customClass="HNHUITextField">
|
||||
<rect key="frame" x="0.0" y="314" width="251" height="21"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="26">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<outlet property="nextKeyView" destination="5" id="KV0-QE-2i4"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<stackView distribution="fill" orientation="horizontal" alignment="top" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="aAt-VU-kLy">
|
||||
<rect key="frame" x="0.0" y="286" width="251" height="20"/>
|
||||
<subviews>
|
||||
<button horizontalHuggingPriority="249" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="5">
|
||||
<rect key="frame" x="-2" y="3" width="213" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Expires" bezelStyle="regularSquare" imagePosition="left" lineBreakMode="truncatingMiddle" state="on" inset="2" id="32">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="toggleExpire:" target="-2" id="t1w-WN-Eud"/>
|
||||
<outlet property="nextKeyView" destination="4" id="Rem-Pk-yFJ"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button focusRingType="exterior" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="4">
|
||||
<rect key="frame" x="218" y="-2" width="34" height="23"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="32" id="l5I-EF-dHs"/>
|
||||
</constraints>
|
||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSActionTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" focusRingType="exterior" imageScaling="proportionallyDown" inset="2" id="33">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="pickExpiryDate:" target="-1" id="KIc-p2-zJQ"/>
|
||||
<outlet property="nextKeyView" destination="229" id="12E-SZ-Mtu"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<visibilityPriorities>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
</visibilityPriorities>
|
||||
<customSpacing>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
</customSpacing>
|
||||
</stackView>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="264">
|
||||
<rect key="frame" x="-2" y="264" width="255" height="14"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Search" id="265">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<popUpButton horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="229">
|
||||
<rect key="frame" x="-3" y="232" width="258" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="230">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" title="OtherViews" id="231"/>
|
||||
</popUpButtonCell>
|
||||
<connections>
|
||||
<outlet property="nextKeyView" destination="240" id="XsX-U5-uZd"/>
|
||||
</connections>
|
||||
</popUpButton>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="276">
|
||||
<rect key="frame" x="-2" y="214" width="255" height="14"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Autotype" id="277">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<popUpButton horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="240">
|
||||
<rect key="frame" x="-3" y="182" width="258" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="242">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" title="OtherViews" id="243"/>
|
||||
</popUpButtonCell>
|
||||
<connections>
|
||||
<outlet property="nextKeyView" destination="Fnw-qz-IZU" id="Q0q-HY-T34"/>
|
||||
</connections>
|
||||
</popUpButton>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6Lw-XW-x20">
|
||||
<rect key="frame" x="-2" y="164" width="255" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Autotype Sequence" id="6FG-UZ-Adh">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Fnw-qz-IZU" customClass="HNHUITextField">
|
||||
<rect key="frame" x="0.0" y="135" width="251" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="VeF-V7-i2I">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<outlet property="nextKeyView" destination="1Uh-eo-H0j" id="zer-UH-73e"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="mpC-tZ-ivx">
|
||||
<rect key="frame" x="-2" y="113" width="255" height="14"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Tags" id="Rbf-K0-kWx">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<tokenField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="5ty-ww-t4q">
|
||||
<rect key="frame" x="0.0" y="28" width="251" height="77"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="77" id="W4K-vz-0pf"/>
|
||||
</constraints>
|
||||
<tokenFieldCell key="cell" selectable="YES" editable="YES" borderStyle="bezel" alignment="left" drawsBackground="YES" allowsEditingTextAttributes="YES" id="FfM-xQ-evx">
|
||||
<font key="font" metaFont="cellTitle"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</tokenFieldCell>
|
||||
</tokenField>
|
||||
<button horizontalHuggingPriority="249" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1Uh-eo-H0j">
|
||||
<rect key="frame" x="-7" y="-7" width="265" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Show Plugin Data" bezelStyle="rounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="qGr-oT-WjP">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="showPluginData:" target="-1" id="yjJ-Xy-m4c"/>
|
||||
<outlet property="nextKeyView" destination="23" id="x9e-ya-hiK"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<visibilityPriorities>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
</visibilityPriorities>
|
||||
<customSpacing>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
</customSpacing>
|
||||
</stackView>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="24">
|
||||
<rect key="frame" x="18" y="272" width="35" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Name" id="25">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="23" customClass="HNHUITextField">
|
||||
<rect key="frame" x="20" y="242" width="217" height="22"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="26">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<outlet property="nextKeyView" destination="5" id="KV0-QE-2i4"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<button horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="5">
|
||||
<rect key="frame" x="18" y="214" width="67" height="18"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="14" id="pWR-o1-KI6"/>
|
||||
</constraints>
|
||||
<buttonCell key="cell" type="check" title="Expires" bezelStyle="regularSquare" imagePosition="left" lineBreakMode="truncatingMiddle" state="on" inset="2" id="32">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="toggleExpire:" target="-2" id="t1w-WN-Eud"/>
|
||||
<outlet property="nextKeyView" destination="4" id="Rem-Pk-yFJ"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button focusRingType="exterior" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="4">
|
||||
<rect key="frame" x="205" y="210" width="32" height="25"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="32" id="l5I-EF-dHs"/>
|
||||
</constraints>
|
||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSActionTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" focusRingType="exterior" imageScaling="proportionallyDown" inset="2" id="33">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="pickExpiryDate:" target="-1" id="KIc-p2-zJQ"/>
|
||||
<outlet property="nextKeyView" destination="229" id="12E-SZ-Mtu"/>
|
||||
</connections>
|
||||
</button>
|
||||
<popUpButton verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="229">
|
||||
<rect key="frame" x="18" y="158" width="222" height="26"/>
|
||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="230">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" title="OtherViews" id="231"/>
|
||||
</popUpButtonCell>
|
||||
<connections>
|
||||
<outlet property="nextKeyView" destination="240" id="XsX-U5-uZd"/>
|
||||
</connections>
|
||||
</popUpButton>
|
||||
<popUpButton verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="240">
|
||||
<rect key="frame" x="18" y="103" width="222" height="26"/>
|
||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="242">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" title="OtherViews" id="243"/>
|
||||
</popUpButtonCell>
|
||||
<connections>
|
||||
<outlet property="nextKeyView" destination="Fnw-qz-IZU" id="Q0q-HY-T34"/>
|
||||
</connections>
|
||||
</popUpButton>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="264">
|
||||
<rect key="frame" x="18" y="190" width="41" height="14"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Search" id="265">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="276">
|
||||
<rect key="frame" x="18" y="135" width="52" height="14"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Autotype" id="277">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Fnw-qz-IZU" customClass="HNHUITextField">
|
||||
<rect key="frame" x="20" y="50" width="217" height="22"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="VeF-V7-i2I">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<outlet property="nextKeyView" destination="1Uh-eo-H0j" id="zer-UH-73e"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6Lw-XW-x20">
|
||||
<rect key="frame" x="18" y="80" width="107" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Autotype Sequence" id="6FG-UZ-Adh">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1Uh-eo-H0j">
|
||||
<rect key="frame" x="20" y="18" width="217" height="25"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Show Plugin Data" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="qGr-oT-WjP">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="showPluginData:" target="-1" id="yjJ-Xy-m4c"/>
|
||||
<outlet property="nextKeyView" destination="23" id="x9e-ya-hiK"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="GyB-8Z-S3Q" firstAttribute="top" secondItem="38" secondAttribute="top" constant="20" id="BWS-cT-xmR"/>
|
||||
<constraint firstAttribute="bottom" secondItem="GyB-8Z-S3Q" secondAttribute="bottom" constant="20" id="WaU-34-yaM"/>
|
||||
<constraint firstAttribute="trailing" secondItem="GyB-8Z-S3Q" secondAttribute="trailing" constant="20" id="q0p-sG-MEY"/>
|
||||
<constraint firstItem="GyB-8Z-S3Q" firstAttribute="leading" secondItem="38" secondAttribute="leading" constant="20" symbolic="YES" id="zeA-bC-Akz"/>
|
||||
<constraint firstAttribute="trailing" secondItem="Fnw-qz-IZU" secondAttribute="trailing" constant="20" symbolic="YES" id="3Gx-EC-k0Q"/>
|
||||
<constraint firstItem="240" firstAttribute="top" secondItem="276" secondAttribute="bottom" constant="8" id="6Pu-PB-xxy"/>
|
||||
<constraint firstItem="23" firstAttribute="leading" secondItem="38" secondAttribute="leading" constant="20" id="ABR-Ef-1ss"/>
|
||||
<constraint firstAttribute="trailing" secondItem="229" secondAttribute="trailing" constant="20" symbolic="YES" id="Anv-gp-aTi"/>
|
||||
<constraint firstAttribute="trailing" secondItem="4" secondAttribute="trailing" constant="20" id="D99-L7-ojR"/>
|
||||
<constraint firstItem="240" firstAttribute="leading" secondItem="38" secondAttribute="leading" constant="20" id="E0a-1e-KR9"/>
|
||||
<constraint firstItem="5" firstAttribute="centerY" secondItem="4" secondAttribute="centerY" id="FdF-Pn-yY2"/>
|
||||
<constraint firstItem="5" firstAttribute="top" secondItem="23" secondAttribute="bottom" constant="12" id="GFF-xs-Nuj"/>
|
||||
<constraint firstItem="Fnw-qz-IZU" firstAttribute="top" secondItem="6Lw-XW-x20" secondAttribute="bottom" constant="8" id="Gfr-Tc-ldH"/>
|
||||
<constraint firstItem="4" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="5" secondAttribute="trailing" constant="8" symbolic="YES" id="HDo-Yu-P02"/>
|
||||
<constraint firstItem="1Uh-eo-H0j" firstAttribute="top" secondItem="Fnw-qz-IZU" secondAttribute="bottom" constant="8" symbolic="YES" id="ON2-U6-flt"/>
|
||||
<constraint firstItem="24" firstAttribute="leading" secondItem="38" secondAttribute="leading" constant="20" id="OhC-BP-oPg"/>
|
||||
<constraint firstItem="6Lw-XW-x20" firstAttribute="leading" secondItem="38" secondAttribute="leading" constant="20" id="SVn-Hh-xc6"/>
|
||||
<constraint firstAttribute="trailing" secondItem="240" secondAttribute="trailing" constant="20" symbolic="YES" id="V4d-R9-46P"/>
|
||||
<constraint firstAttribute="trailing" secondItem="23" secondAttribute="trailing" constant="20" id="Vej-zI-z2w"/>
|
||||
<constraint firstItem="24" firstAttribute="top" secondItem="38" secondAttribute="top" constant="5" id="Wk6-kJ-fTY"/>
|
||||
<constraint firstItem="5" firstAttribute="leading" secondItem="38" secondAttribute="leading" constant="20" id="ZaF-lS-pN8"/>
|
||||
<constraint firstAttribute="trailing" secondItem="1Uh-eo-H0j" secondAttribute="trailing" constant="20" symbolic="YES" id="ZzC-4Z-u4x"/>
|
||||
<constraint firstItem="276" firstAttribute="top" secondItem="229" secondAttribute="bottom" constant="12" id="c0H-cE-rnF"/>
|
||||
<constraint firstItem="6Lw-XW-x20" firstAttribute="top" secondItem="240" secondAttribute="bottom" constant="12" id="hDT-8L-2eV"/>
|
||||
<constraint firstItem="23" firstAttribute="top" secondItem="24" secondAttribute="bottom" constant="8" id="kbc-Eb-FPr"/>
|
||||
<constraint firstItem="Fnw-qz-IZU" firstAttribute="leading" secondItem="38" secondAttribute="leading" constant="20" id="lGO-Wz-eF9"/>
|
||||
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="1Uh-eo-H0j" secondAttribute="bottom" constant="20" symbolic="YES" id="owP-KD-Io0"/>
|
||||
<constraint firstItem="229" firstAttribute="top" secondItem="264" secondAttribute="bottom" constant="8" id="pDa-nw-ByQ"/>
|
||||
<constraint firstItem="264" firstAttribute="leading" secondItem="38" secondAttribute="leading" constant="20" id="qnB-Pd-MqU"/>
|
||||
<constraint firstItem="1Uh-eo-H0j" firstAttribute="leading" secondItem="38" secondAttribute="leading" constant="20" symbolic="YES" id="rJf-uc-7me"/>
|
||||
<constraint firstItem="229" firstAttribute="leading" secondItem="38" secondAttribute="leading" constant="20" id="sCg-Na-ouj"/>
|
||||
<constraint firstItem="276" firstAttribute="leading" secondItem="38" secondAttribute="leading" constant="20" id="xLc-Rz-374"/>
|
||||
<constraint firstItem="264" firstAttribute="top" secondItem="5" secondAttribute="bottom" constant="12" id="xe7-ue-Wip"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="38" firstAttribute="top" secondItem="HjA-kA-fcX" secondAttribute="top" id="Alo-CY-dgK"/>
|
||||
<constraint firstAttribute="bottom" secondItem="38" secondAttribute="bottom" id="FbE-Hu-Y9V"/>
|
||||
<constraint firstAttribute="trailing" secondItem="38" secondAttribute="trailing" id="HP8-rS-ooi"/>
|
||||
<constraint firstItem="38" firstAttribute="leading" secondItem="HjA-kA-fcX" secondAttribute="leading" id="h7m-U5-sA4"/>
|
||||
</constraints>
|
||||
</clipView>
|
||||
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="39">
|
||||
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="39">
|
||||
<rect key="frame" x="-100" y="-100" width="257" height="16"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="40">
|
||||
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="40">
|
||||
<rect key="frame" x="-100" y="-100" width="15" height="201"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<point key="canvasLocation" x="-805.5" y="-499"/>
|
||||
<point key="canvasLocation" x="-2" y="132"/>
|
||||
</scrollView>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSActionTemplate" width="15" height="15"/>
|
||||
<image name="NSActionTemplate" width="14" height="14"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14313.18" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14313.18"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -20,13 +20,13 @@
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<scrollView wantsLayer="YES" focusRingType="none" borderType="none" autohidesScrollers="YES" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="57" customClass="HNHUIScrollView">
|
||||
<rect key="frame" x="10" y="60" width="445" height="320"/>
|
||||
<rect key="frame" x="10" y="50" width="445" height="330"/>
|
||||
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="Gwf-zs-lPT">
|
||||
<rect key="frame" x="0.0" y="0.0" width="445" height="320"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="445" height="330"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<collectionView focusRingType="none" selectable="YES" id="58" customClass="MPCollectionView">
|
||||
<rect key="frame" x="0.0" y="0.0" width="445" height="320"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="445" height="330"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="primaryBackgroundColor" name="windowBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
<connections>
|
||||
@@ -40,13 +40,13 @@
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="60">
|
||||
<rect key="frame" x="429" y="0.0" width="16" height="320"/>
|
||||
<rect key="frame" x="364" y="0.0" width="16" height="268"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
</scrollView>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="101">
|
||||
<rect key="frame" x="316" y="13" width="136" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Use Default Icon" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="102">
|
||||
<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">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -55,8 +55,8 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8kv-BJ-IEk">
|
||||
<rect key="frame" x="194" y="13" width="124" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Download Icon" bezelStyle="rounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="iaf-XW-XUo">
|
||||
<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">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -65,8 +65,8 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="His-4A-hcY">
|
||||
<rect key="frame" x="120" y="13" width="76" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="1kM-cI-P1o">
|
||||
<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">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -82,11 +82,11 @@
|
||||
<constraint firstItem="57" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="10" id="111"/>
|
||||
<constraint firstItem="His-4A-hcY" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="69a-Sb-jSj"/>
|
||||
<constraint firstItem="8kv-BJ-IEk" firstAttribute="baseline" secondItem="101" secondAttribute="baseline" id="Knp-g8-7FQ"/>
|
||||
<constraint firstItem="8kv-BJ-IEk" firstAttribute="leading" secondItem="His-4A-hcY" secondAttribute="trailing" constant="12" symbolic="YES" id="MZ0-p6-6MH"/>
|
||||
<constraint firstItem="8kv-BJ-IEk" firstAttribute="leading" secondItem="His-4A-hcY" secondAttribute="trailing" constant="8" symbolic="YES" id="MZ0-p6-6MH"/>
|
||||
<constraint firstItem="57" firstAttribute="top" secondItem="1" secondAttribute="top" constant="20" symbolic="YES" id="N2b-Nx-SZC"/>
|
||||
<constraint firstItem="101" firstAttribute="top" secondItem="57" secondAttribute="bottom" constant="20" symbolic="YES" id="WT3-Nh-FrW"/>
|
||||
<constraint firstItem="101" firstAttribute="top" secondItem="57" secondAttribute="bottom" constant="8" symbolic="YES" id="WT3-Nh-FrW"/>
|
||||
<constraint firstItem="His-4A-hcY" firstAttribute="baseline" secondItem="101" secondAttribute="baseline" id="fq3-rS-gvQ"/>
|
||||
<constraint firstItem="101" firstAttribute="leading" secondItem="8kv-BJ-IEk" secondAttribute="trailing" constant="12" symbolic="YES" id="nvi-CZ-a6L"/>
|
||||
<constraint firstItem="101" firstAttribute="leading" secondItem="8kv-BJ-IEk" secondAttribute="trailing" constant="8" symbolic="YES" id="nvi-CZ-a6L"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="-1175" y="-7"/>
|
||||
</customView>
|
||||
@@ -101,7 +101,7 @@
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="MEC-x9-zrX">
|
||||
<rect key="frame" x="32" y="29" width="16" height="22"/>
|
||||
<rect key="frame" x="32" y="32" width="16" height="16"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="16" id="cau-QV-8TQ"/>
|
||||
<constraint firstAttribute="height" constant="16" id="yHZ-qj-Rcy"/>
|
||||
@@ -126,7 +126,7 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="114">
|
||||
<rect key="frame" x="8" y="6.5" width="32.5" height="36"/>
|
||||
<rect key="frame" x="8" y="8" width="32" height="32"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="32" id="161"/>
|
||||
<constraint firstAttribute="height" constant="32" id="162"/>
|
||||
@@ -161,7 +161,7 @@
|
||||
</customView>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSAddTemplate" width="14" height="13"/>
|
||||
<image name="NSRefreshFreestandingTemplate" width="15" height="15"/>
|
||||
<image name="NSAddTemplate" width="11" height="11"/>
|
||||
<image name="NSRefreshFreestandingTemplate" width="14" height="14"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19455" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17506" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19455"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17506"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -23,7 +23,7 @@
|
||||
<rect key="frame" x="0.0" y="0.0" width="278" height="662"/>
|
||||
<subviews>
|
||||
<imageView translatesAutoresizingMaskIntoConstraints="NO" id="2998" customClass="MPIconImageView">
|
||||
<rect key="frame" x="20" y="617" width="32" height="38"/>
|
||||
<rect key="frame" x="20" y="620" width="32" height="32"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="32" id="3027"/>
|
||||
<constraint firstAttribute="height" constant="32" id="3028"/>
|
||||
@@ -83,7 +83,7 @@
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2985">
|
||||
<rect key="frame" x="82" y="194" width="116" height="24"/>
|
||||
<rect key="frame" x="82" y="194" width="115" height="23"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="No Selection" id="2986">
|
||||
<font key="font" metaFont="system" size="20"/>
|
||||
<color key="textColor" name="controlShadowColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -126,7 +126,7 @@
|
||||
<rect key="frame" x="1" y="1" width="236" height="192"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textView importsGraphics="NO" richText="NO" verticallyResizable="YES" allowsUndo="YES" allowsNonContiguousLayout="YES" smartInsertDelete="YES" id="g24-gQ-foD" customClass="HNHUITextView">
|
||||
<textView importsGraphics="NO" richText="NO" verticallyResizable="YES" allowsNonContiguousLayout="YES" smartInsertDelete="YES" id="g24-gQ-foD" customClass="HNHUITextView">
|
||||
<rect key="frame" x="0.0" y="0.0" width="236" height="192"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -204,6 +204,6 @@
|
||||
</customView>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSActionTemplate" width="15" height="15"/>
|
||||
<image name="NSActionTemplate" width="14" height="14"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
@@ -27,19 +27,19 @@
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView translatesAutoresizingMaskIntoConstraints="NO" id="1">
|
||||
<rect key="frame" x="0.0" y="0.0" width="411" height="520"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="417" height="664"/>
|
||||
<subviews>
|
||||
<box autoresizesSubviews="NO" verticalHuggingPriority="500" borderType="line" title="Autotype" translatesAutoresizingMaskIntoConstraints="NO" id="P9N-HM-wER">
|
||||
<rect key="frame" x="17" y="115" width="377" height="385"/>
|
||||
<rect key="frame" x="17" y="246" width="383" height="398"/>
|
||||
<view key="contentView" id="faU-Ok-HJ3">
|
||||
<rect key="frame" x="3" y="3" width="371" height="367"/>
|
||||
<rect key="frame" x="3" y="3" width="377" height="380"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<stackView distribution="fill" orientation="vertical" alignment="leading" horizontalStackHuggingPriority="250" verticalStackHuggingPriority="250" horizontalHuggingPriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="j52-9L-k7c">
|
||||
<rect key="frame" x="16" y="17" width="339" height="340"/>
|
||||
<rect key="frame" x="16" y="17" width="345" height="353"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="hMJ-Mo-xOM">
|
||||
<rect key="frame" x="-2" y="298" width="343" height="42"/>
|
||||
<rect key="frame" x="-2" y="311" width="349" height="42"/>
|
||||
<textFieldCell key="cell" controlSize="small" id="H37-ku-aTc">
|
||||
<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>
|
||||
@@ -48,7 +48,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="jai-b6-Qv4">
|
||||
<rect key="frame" x="-6" y="262" width="177" height="32"/>
|
||||
<rect key="frame" x="-7" y="276" width="171" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Run Autotype Doctor…" bezelStyle="rounded" alignment="center" borderStyle="border" inset="2" id="NP0-R3-m6n">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -58,14 +58,14 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button horizontalHuggingPriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="tik-Ar-FJg">
|
||||
<rect key="frame" x="-2" y="245" width="343" height="18"/>
|
||||
<rect key="frame" x="-2" y="258" width="347" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Enable global Autotype" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="1qb-Rd-jYu">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<stackView distribution="fill" orientation="horizontal" alignment="centerY" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" translatesAutoresizingMaskIntoConstraints="NO" id="d6A-Vb-CMt">
|
||||
<rect key="frame" x="0.0" y="218" width="281" height="21"/>
|
||||
<rect key="frame" x="0.0" y="230" width="281" height="21"/>
|
||||
<subviews>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="buI-Wb-o3V">
|
||||
<rect key="frame" x="-2" y="3" width="57" height="16"/>
|
||||
@@ -107,14 +107,14 @@
|
||||
</customSpacing>
|
||||
</stackView>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="uZQ-Gd-hfu">
|
||||
<rect key="frame" x="-2" y="194" width="343" height="18"/>
|
||||
<rect key="frame" x="-2" y="205" width="347" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Always show confirmation before executing Autotype" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="rrU-70-Ara">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="cUt-aB-oib">
|
||||
<rect key="frame" x="-2" y="146" width="343" height="42"/>
|
||||
<rect key="frame" x="-2" y="156" width="349" height="42"/>
|
||||
<textFieldCell key="cell" controlSize="small" selectable="YES" id="VjU-Hz-cu4">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<string key="title">If enabled, a dialog will show up before Autotype is executed even if only a single match was found to prevent accidental input and wrong matches</string>
|
||||
@@ -123,42 +123,42 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button horizontalHuggingPriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="DAX-V8-Say">
|
||||
<rect key="frame" x="-2" y="122" width="343" height="18"/>
|
||||
<rect key="frame" x="-2" y="131" width="347" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Include Entry Title for matches" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="tmL-dT-D0G">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button horizontalHuggingPriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="8Wz-lo-AXG">
|
||||
<rect key="frame" x="-2" y="100" width="343" height="18"/>
|
||||
<rect key="frame" x="-2" y="107" width="347" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Include Entry URL for matches" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="TzR-00-Vp3">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button horizontalHuggingPriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="TiO-ah-BlR">
|
||||
<rect key="frame" x="-2" y="78" width="343" height="18"/>
|
||||
<rect key="frame" x="-2" y="83" width="347" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Include Entry URL Host for matches" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="B1D-j9-L8x">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button horizontalHuggingPriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="9MH-jx-GpG">
|
||||
<rect key="frame" x="-2" y="56" width="343" height="18"/>
|
||||
<rect key="frame" x="-2" y="59" width="347" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Include Entry Tags for matches" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="rbu-G7-MT8">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button horizontalHuggingPriority="249" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="VK8-z4-2ci">
|
||||
<rect key="frame" x="-2" y="34" width="343" height="18"/>
|
||||
<rect key="frame" x="-2" y="35" width="347" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Interpret ⌃ as ⌘" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="QfO-yG-l3F">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="wbP-A9-jpw">
|
||||
<rect key="frame" x="-2" y="0.0" width="343" height="28"/>
|
||||
<rect key="frame" x="-2" y="0.0" width="349" height="28"/>
|
||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="If enabled, every {CONTROL} command will be sent as ⌘. Only disable this if you are sure you need to." id="QRy-CY-ENC">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -205,20 +205,20 @@
|
||||
</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="377" height="95"/>
|
||||
<rect key="frame" x="17" y="145" width="383" height="97"/>
|
||||
<view key="contentView" id="ww4-uR-8gP">
|
||||
<rect key="frame" x="3" y="3" width="371" height="77"/>
|
||||
<rect key="frame" x="3" y="3" width="377" height="79"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="LNw-5t-TS4">
|
||||
<rect key="frame" x="14" y="51" width="178" height="18"/>
|
||||
<rect key="frame" x="14" y="52" width="182" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Enable Quicklook Preview" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="ERs-ct-Eyx">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="V6l-R9-hIj">
|
||||
<rect key="frame" x="14" y="17" width="343" height="28"/>
|
||||
<rect key="frame" x="14" y="17" width="349" height="28"/>
|
||||
<textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" title="If enabled attached files will be copied to a temporary location for preview and deleted after the preview is closed." id="WmI-IB-Aso">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -239,17 +239,57 @@
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="V6l-R9-hIj" secondAttribute="trailing" constant="16" id="ivY-UD-QFJ"/>
|
||||
</constraints>
|
||||
</box>
|
||||
<box title="Keychain" translatesAutoresizingMaskIntoConstraints="NO" id="ChZ-ku-FOP">
|
||||
<rect key="frame" x="17" y="16" width="383" height="125"/>
|
||||
<view key="contentView" id="ocY-lR-P2Z">
|
||||
<rect key="frame" x="3" y="3" width="377" height="107"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="u5z-ST-gTK">
|
||||
<rect key="frame" x="9" y="60" width="154" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Renew TouchID Key" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="b4n-g4-CtW">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="RenewTouchIdKey:" target="-2" id="dl7-WD-Abu"/>
|
||||
</connections>
|
||||
</button>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="9kv-ns-mQx">
|
||||
<rect key="frame" x="14" y="16" width="349" height="42"/>
|
||||
<textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" id="LyC-Hd-ecK">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<string key="title">MacPass will no longer be able to unlock any Database with TouchID until it is successfully unlocked with the password and or keyfile.</string>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="bottom" secondItem="9kv-ns-mQx" secondAttribute="bottom" constant="16" id="INC-l7-zwP"/>
|
||||
<constraint firstItem="u5z-ST-gTK" firstAttribute="leading" secondItem="ocY-lR-P2Z" secondAttribute="leading" constant="16" id="KDt-yM-fh3"/>
|
||||
<constraint firstItem="9kv-ns-mQx" firstAttribute="top" secondItem="u5z-ST-gTK" secondAttribute="bottom" constant="9" id="RjN-pw-qLc"/>
|
||||
<constraint firstItem="9kv-ns-mQx" firstAttribute="leading" secondItem="u5z-ST-gTK" secondAttribute="leading" id="X5L-Rj-Wky"/>
|
||||
<constraint firstItem="u5z-ST-gTK" firstAttribute="top" secondItem="ocY-lR-P2Z" secondAttribute="top" constant="20" symbolic="YES" id="guH-ws-dzX"/>
|
||||
<constraint firstAttribute="trailing" secondItem="9kv-ns-mQx" secondAttribute="trailing" constant="16" id="icu-An-dNK"/>
|
||||
<constraint firstAttribute="trailing" relation="lessThanOrEqual" secondItem="u5z-ST-gTK" secondAttribute="trailing" priority="240" constant="16" id="rni-sA-a7w"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</box>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="ChZ-ku-FOP" firstAttribute="trailing" secondItem="ww4-uR-8gP" secondAttribute="trailing" id="39G-i3-XQa"/>
|
||||
<constraint firstItem="ChZ-ku-FOP" firstAttribute="top" secondItem="VVs-b5-cX9" secondAttribute="bottom" constant="8" symbolic="YES" id="3ub-U2-KCr"/>
|
||||
<constraint firstItem="P9N-HM-wER" firstAttribute="top" secondItem="1" secondAttribute="top" constant="20" symbolic="YES" id="8fy-q5-VJy"/>
|
||||
<constraint firstAttribute="bottom" secondItem="VVs-b5-cX9" secondAttribute="bottom" constant="20" symbolic="YES" id="TZB-qe-7eg"/>
|
||||
<constraint firstItem="ChZ-ku-FOP" firstAttribute="leading" secondItem="ww4-uR-8gP" secondAttribute="leading" id="BQW-Zd-udd"/>
|
||||
<constraint firstAttribute="bottom" secondItem="ChZ-ku-FOP" secondAttribute="bottom" constant="20" symbolic="YES" id="DBk-vZ-yOT"/>
|
||||
<constraint firstItem="VVs-b5-cX9" firstAttribute="top" secondItem="P9N-HM-wER" secondAttribute="bottom" constant="8" symbolic="YES" id="VCX-JW-cBe"/>
|
||||
<constraint firstItem="VVs-b5-cX9" firstAttribute="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="-1204" y="-1287"/>
|
||||
<point key="canvasLocation" x="-1204.5" y="-1287.5"/>
|
||||
</customView>
|
||||
</objects>
|
||||
</document>
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19455" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19455"/>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
|
||||
@@ -250,7 +251,7 @@ CA
|
||||
</menuItem>
|
||||
<menuItem title="Find…" tag="1" keyEquivalent="f" id="209">
|
||||
<connections>
|
||||
<action selector="performCustomSearch:" target="-1" id="RSR-PQ-TH1"/>
|
||||
<action selector="perfromCustomSearch:" target="-1" id="RSR-PQ-TH1"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -29,11 +29,11 @@
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView id="1">
|
||||
<rect key="frame" x="0.0" y="0.0" width="351" height="330"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="351" height="316"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="148">
|
||||
<rect key="frame" x="18" y="292" width="66" height="16"/>
|
||||
<rect key="frame" x="18" y="276" width="66" height="17"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Password:" id="149">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -41,7 +41,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="152">
|
||||
<rect key="frame" x="90" y="290" width="201" height="20"/>
|
||||
<rect key="frame" x="90" y="272" width="201" height="24"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="200" id="621"/>
|
||||
</constraints>
|
||||
@@ -52,11 +52,11 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<slider verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="173">
|
||||
<rect key="frame" x="88" y="256" width="205" height="28"/>
|
||||
<rect key="frame" x="88" y="246" width="205" height="19"/>
|
||||
<sliderCell key="cell" state="on" alignment="left" maxValue="100" doubleValue="50" tickMarkPosition="above" sliderType="linear" id="174"/>
|
||||
</slider>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="178">
|
||||
<rect key="frame" x="18" y="265" width="66" height="16"/>
|
||||
<rect key="frame" x="18" y="248" width="66" height="17"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Length:" id="179">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -64,7 +64,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="182">
|
||||
<rect key="frame" x="299" y="261" width="32" height="21"/>
|
||||
<rect key="frame" x="299" y="244" width="32" height="22"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="32" id="eVc-Kg-bCi"/>
|
||||
</constraints>
|
||||
@@ -76,13 +76,13 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<box autoresizesSubviews="NO" borderType="line" title="Character options" translatesAutoresizingMaskIntoConstraints="NO" id="332">
|
||||
<rect key="frame" x="17" y="102" width="317" height="120"/>
|
||||
<rect key="frame" x="17" y="88" width="317" height="119"/>
|
||||
<view key="contentView" id="f93-Su-hga">
|
||||
<rect key="frame" x="3" y="3" width="311" height="102"/>
|
||||
<rect key="frame" x="3" y="3" width="311" height="101"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="411">
|
||||
<rect key="frame" x="16" y="44" width="279" height="21"/>
|
||||
<rect key="frame" x="16" y="42" width="279" height="22"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="412" customClass="HNHUITextFieldCell">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -90,7 +90,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" tag="1" translatesAutoresizingMaskIntoConstraints="NO" id="452">
|
||||
<rect key="frame" x="16" y="73" width="36" height="19"/>
|
||||
<rect key="frame" x="16" y="72" width="36" height="19"/>
|
||||
<buttonCell key="cell" type="roundRect" title="A-Z" bezelStyle="roundedRect" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="453">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
||||
<font key="font" metaFont="cellTitle"/>
|
||||
@@ -100,7 +100,7 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" tag="2" translatesAutoresizingMaskIntoConstraints="NO" id="456">
|
||||
<rect key="frame" x="60" y="73" width="34" height="19"/>
|
||||
<rect key="frame" x="60" y="72" width="33" height="19"/>
|
||||
<buttonCell key="cell" type="roundRect" title="a-z" bezelStyle="roundedRect" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="457">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
||||
<font key="font" metaFont="cellTitle"/>
|
||||
@@ -110,7 +110,7 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" tag="4" translatesAutoresizingMaskIntoConstraints="NO" id="460">
|
||||
<rect key="frame" x="102" y="73" width="36" height="19"/>
|
||||
<rect key="frame" x="101" y="72" width="35" height="19"/>
|
||||
<buttonCell key="cell" type="roundRect" title="0-9" bezelStyle="roundedRect" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="461">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
||||
<font key="font" metaFont="cellTitle"/>
|
||||
@@ -120,7 +120,7 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" tag="8" translatesAutoresizingMaskIntoConstraints="NO" id="464">
|
||||
<rect key="frame" x="146" y="73" width="32" height="19"/>
|
||||
<rect key="frame" x="144" y="72" width="32" height="19"/>
|
||||
<buttonCell key="cell" type="roundRect" title="#!?" bezelStyle="roundedRect" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="465">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
||||
<font key="font" metaFont="cellTitle"/>
|
||||
@@ -130,7 +130,7 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="468">
|
||||
<rect key="frame" x="186" y="73" width="58" height="19"/>
|
||||
<rect key="frame" x="184" y="72" width="58" height="19"/>
|
||||
<buttonCell key="cell" type="roundRect" title="Custom" bezelStyle="roundedRect" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="469">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
||||
<font key="font" metaFont="cellTitle"/>
|
||||
@@ -140,7 +140,7 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="RDM-JY-oF9">
|
||||
<rect key="frame" x="14" y="19" width="226" height="18"/>
|
||||
<rect key="frame" x="14" y="18" width="222" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Use characters from every group" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="CMc-Uh-Fo5">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -172,8 +172,8 @@
|
||||
</constraints>
|
||||
</box>
|
||||
<button verticalHuggingPriority="750" horizontalCompressionResistancePriority="749" translatesAutoresizingMaskIntoConstraints="NO" id="494">
|
||||
<rect key="frame" x="218" y="13" width="120" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Use Password" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="495">
|
||||
<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">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -182,14 +182,14 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="500">
|
||||
<rect key="frame" x="18" y="81" width="208" height="18"/>
|
||||
<rect key="frame" x="18" y="68" width="204" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Copy password to pasteboard" bezelStyle="regularSquare" imagePosition="left" inset="2" id="501">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="509">
|
||||
<rect key="frame" x="298" y="288" width="34" height="23"/>
|
||||
<rect key="frame" x="299" y="273" width="32" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSRefreshTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="510">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -199,8 +199,8 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="613">
|
||||
<rect key="frame" x="144" y="13" width="76" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="614">
|
||||
<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">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -209,11 +209,11 @@
|
||||
</connections>
|
||||
</button>
|
||||
<levelIndicator verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="635">
|
||||
<rect key="frame" x="90" y="228" width="173" height="18"/>
|
||||
<rect key="frame" x="90" y="213" width="173" height="18"/>
|
||||
<levelIndicatorCell key="cell" alignment="left" doubleValue="10" maxValue="90" warningValue="55" criticalValue="30" levelIndicatorStyle="continuousCapacity" id="636" customClass="HNHUILevelIndicatorCell"/>
|
||||
</levelIndicator>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="646">
|
||||
<rect key="frame" x="18" y="230" width="66" height="16"/>
|
||||
<rect key="frame" x="18" y="215" width="66" height="17"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Entropy:" id="647">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -221,7 +221,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="652">
|
||||
<rect key="frame" x="269" y="230" width="64" height="16"/>
|
||||
<rect key="frame" x="269" y="215" width="64" height="17"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="25000 bit" id="653">
|
||||
<numberFormatter key="formatter" formatterBehavior="custom10_4" positiveFormat="# bit" negativeFormat="# bit" usesGroupingSeparator="NO" paddingCharacter="*" groupingSize="0" minimumIntegerDigits="0" maximumIntegerDigits="309" decimalSeparator="," groupingSeparator="." currencyDecimalSeparator="," plusSign="+" minusSign="-" notANumberSymbol="NaN" perMillSymbol="‰" percentSymbol="%" exponentSymbol="E" positivePrefix="" positiveSuffix=" bit" negativePrefix="-" negativeSuffix=" bit" id="681"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -230,8 +230,8 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="yil-UB-jtO">
|
||||
<rect key="frame" x="13" y="13" width="102" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Set Default" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Wvs-Md-Ob8">
|
||||
<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">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<connections>
|
||||
@@ -240,7 +240,7 @@
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="4yb-SC-vau">
|
||||
<rect key="frame" x="18" y="59" width="235" height="18"/>
|
||||
<rect key="frame" x="18" y="48" width="231" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Use default only for selected entry" bezelStyle="regularSquare" imagePosition="left" inset="2" id="cfZ-5F-Nge">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -265,7 +265,7 @@
|
||||
<constraint firstItem="509" firstAttribute="top" secondItem="1" secondAttribute="top" constant="20" symbolic="YES" id="520"/>
|
||||
<constraint firstItem="152" firstAttribute="leading" secondItem="148" secondAttribute="trailing" constant="8" symbolic="YES" id="606"/>
|
||||
<constraint firstAttribute="bottom" secondItem="613" secondAttribute="bottom" constant="20" symbolic="YES" id="617"/>
|
||||
<constraint firstItem="494" firstAttribute="leading" secondItem="613" secondAttribute="trailing" constant="12" symbolic="YES" id="618"/>
|
||||
<constraint firstItem="494" firstAttribute="leading" secondItem="613" secondAttribute="trailing" constant="8" symbolic="YES" id="618"/>
|
||||
<constraint firstItem="173" firstAttribute="leading" secondItem="635" secondAttribute="leading" id="642"/>
|
||||
<constraint firstItem="173" firstAttribute="leading" secondItem="178" secondAttribute="trailing" constant="8" symbolic="YES" id="643"/>
|
||||
<constraint firstItem="646" firstAttribute="top" secondItem="1" secondAttribute="top" constant="84" id="648"/>
|
||||
@@ -279,14 +279,14 @@
|
||||
<constraint firstItem="652" firstAttribute="leading" secondItem="635" secondAttribute="trailing" constant="8" symbolic="YES" id="672"/>
|
||||
<constraint firstAttribute="trailing" secondItem="652" secondAttribute="trailing" constant="20" symbolic="YES" id="679"/>
|
||||
<constraint firstItem="635" firstAttribute="leading" secondItem="152" secondAttribute="leading" id="680"/>
|
||||
<constraint firstItem="613" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="yil-UB-jtO" secondAttribute="trailing" constant="12" symbolic="YES" id="59d-1n-jSa"/>
|
||||
<constraint firstItem="613" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="yil-UB-jtO" secondAttribute="trailing" constant="8" symbolic="YES" id="59d-1n-jSa"/>
|
||||
<constraint firstItem="646" firstAttribute="trailing" secondItem="178" secondAttribute="trailing" id="6kR-jk-E8r"/>
|
||||
<constraint firstItem="yil-UB-jtO" firstAttribute="leading" secondItem="500" secondAttribute="leading" id="Hic-qB-mt4"/>
|
||||
<constraint firstItem="4yb-SC-vau" firstAttribute="top" secondItem="500" secondAttribute="bottom" constant="6" id="IZo-0q-BdQ"/>
|
||||
<constraint firstItem="148" firstAttribute="trailing" secondItem="178" secondAttribute="trailing" id="KpM-xy-ZTB"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="4yb-SC-vau" secondAttribute="trailing" constant="20" symbolic="YES" id="OnS-dH-uyZ"/>
|
||||
<constraint firstItem="509" firstAttribute="leading" secondItem="182" secondAttribute="leading" id="QZ5-Ge-aq8"/>
|
||||
<constraint firstItem="613" firstAttribute="top" relation="greaterThanOrEqual" secondItem="4yb-SC-vau" secondAttribute="bottom" constant="20" symbolic="YES" id="SoR-gh-uhq"/>
|
||||
<constraint firstItem="613" firstAttribute="top" relation="greaterThanOrEqual" secondItem="4yb-SC-vau" secondAttribute="bottom" constant="8" symbolic="YES" id="SoR-gh-uhq"/>
|
||||
<constraint firstAttribute="bottom" secondItem="yil-UB-jtO" secondAttribute="bottom" constant="20" id="eYK-Hw-fyy"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="500" secondAttribute="trailing" constant="20" symbolic="YES" id="iUl-yt-JbV"/>
|
||||
<constraint firstItem="646" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="jPa-QR-GAy"/>
|
||||
@@ -297,6 +297,6 @@
|
||||
</customView>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSRefreshTemplate" width="14" height="16"/>
|
||||
<image name="NSRefreshTemplate" width="11" height="15"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="18122" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="18122"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -24,13 +24,13 @@
|
||||
<window title="Change Password" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="1">
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES"/>
|
||||
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
|
||||
<rect key="contentRect" x="1090" y="652" width="446" height="307"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="1680" height="1025"/>
|
||||
<rect key="contentRect" x="1090" y="652" width="369" height="164"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
|
||||
<view key="contentView" verticalHuggingPriority="251" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="2">
|
||||
<rect key="frame" x="0.0" y="0.0" width="369" height="217"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="363" height="220"/>
|
||||
<subviews>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="68">
|
||||
<rect key="frame" x="213" y="13" width="143" height="32"/>
|
||||
<rect key="frame" x="200" y="13" width="149" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Change Password" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="69">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -40,7 +40,7 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="72">
|
||||
<rect key="frame" x="139" y="13" width="76" height="32"/>
|
||||
<rect key="frame" x="118" y="13" width="82" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="73">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -53,7 +53,7 @@ Gw
|
||||
</connections>
|
||||
</button>
|
||||
<gridView horizontalHuggingPriority="251" verticalHuggingPriority="750" xPlacement="leading" yPlacement="bottom" rowAlignment="none" translatesAutoresizingMaskIntoConstraints="NO" id="0Iv-td-ACj">
|
||||
<rect key="frame" x="20" y="60" width="329" height="137"/>
|
||||
<rect key="frame" x="20" y="61" width="323" height="139"/>
|
||||
<rows>
|
||||
<gridRow id="Ljm-xA-9NW"/>
|
||||
<gridRow id="Dv9-ND-6rX"/>
|
||||
@@ -71,7 +71,7 @@ Gw
|
||||
<gridCell row="Ljm-xA-9NW" column="uaf-ph-2zN" id="1U3-Im-v9n"/>
|
||||
<gridCell row="Ljm-xA-9NW" column="7oF-Xq-5de" id="2bp-dG-V6t">
|
||||
<textField key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="12">
|
||||
<rect key="frame" x="90" y="123" width="204" height="14"/>
|
||||
<rect key="frame" x="84" y="125" width="204" height="14"/>
|
||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="PASSWORD_ERROR" id="14">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
|
||||
@@ -82,7 +82,7 @@ Gw
|
||||
<gridCell row="Ljm-xA-9NW" column="clB-mU-Eba" id="blk-az-oHS"/>
|
||||
<gridCell row="Dv9-ND-6rX" column="uaf-ph-2zN" id="JUU-XQ-60P">
|
||||
<button key="contentView" horizontalHuggingPriority="252" translatesAutoresizingMaskIntoConstraints="NO" id="yKc-I9-uzv">
|
||||
<rect key="frame" x="-2" y="96" width="88" height="22"/>
|
||||
<rect key="frame" x="-2" y="97" width="84" height="24"/>
|
||||
<buttonCell key="cell" type="check" title="Password:" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="OQz-DA-SoY">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -91,7 +91,7 @@ Gw
|
||||
</gridCell>
|
||||
<gridCell row="Dv9-ND-6rX" column="7oF-Xq-5de" id="cw2-er-epO">
|
||||
<secureTextField key="contentView" horizontalHuggingPriority="253" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="9" customClass="HNHUISecureTextField">
|
||||
<rect key="frame" x="92" y="97" width="200" height="20"/>
|
||||
<rect key="frame" x="86" y="99" width="200" height="20"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="200" id="gTV-5A-Fyo"/>
|
||||
</constraints>
|
||||
@@ -105,21 +105,10 @@ Gw
|
||||
</secureTextFieldCell>
|
||||
</secureTextField>
|
||||
</gridCell>
|
||||
<gridCell row="Dv9-ND-6rX" column="clB-mU-Eba" id="ykQ-xV-MfJ">
|
||||
<button key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="7">
|
||||
<rect key="frame" x="291" y="90" width="45" height="32"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="31" id="59"/>
|
||||
</constraints>
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSQuickLookTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="20">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
</gridCell>
|
||||
<gridCell row="Dv9-ND-6rX" column="clB-mU-Eba" id="ykQ-xV-MfJ"/>
|
||||
<gridCell row="mNb-JP-3YX" column="uaf-ph-2zN" id="DTm-fw-duK">
|
||||
<textField key="contentView" horizontalHuggingPriority="252" verticalHuggingPriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="10">
|
||||
<rect key="frame" x="37" y="71" width="51" height="16"/>
|
||||
<rect key="frame" x="31" y="73" width="51" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Repeat:" id="16">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -128,8 +117,8 @@ Gw
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="mNb-JP-3YX" column="7oF-Xq-5de" id="OBv-b8-DJs">
|
||||
<secureTextField key="contentView" verticalHuggingPriority="750" verticalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="11" customClass="HNHUISecureTextField">
|
||||
<rect key="frame" x="92" y="71" width="200" height="20"/>
|
||||
<secureTextField key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="11" customClass="HNHUISecureTextField">
|
||||
<rect key="frame" x="86" y="73" width="200" height="20"/>
|
||||
<secureTextFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="Repeat Password" drawsBackground="YES" usesSingleLineMode="YES" id="15">
|
||||
<font key="font" size="13" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -140,11 +129,22 @@ Gw
|
||||
</secureTextFieldCell>
|
||||
</secureTextField>
|
||||
</gridCell>
|
||||
<gridCell row="mNb-JP-3YX" column="clB-mU-Eba" id="erv-Ur-nvi"/>
|
||||
<gridCell row="mNb-JP-3YX" column="clB-mU-Eba" id="erv-Ur-nvi">
|
||||
<button key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="7">
|
||||
<rect key="frame" x="292" y="72" width="31" height="21"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="31" id="59"/>
|
||||
</constraints>
|
||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSQuickLookTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="20">
|
||||
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
</gridCell>
|
||||
<gridCell row="vQK-bD-mNH" column="uaf-ph-2zN" id="5U0-j9-rrv"/>
|
||||
<gridCell row="vQK-bD-mNH" column="7oF-Xq-5de" id="8JE-Wh-Sad">
|
||||
<textField key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ibK-Px-Fvt">
|
||||
<rect key="frame" x="90" y="51" width="204" height="14"/>
|
||||
<rect key="frame" x="84" y="53" width="204" height="14"/>
|
||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="KEY_ERROR" id="EOD-dE-TFa">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
|
||||
@@ -155,7 +155,7 @@ Gw
|
||||
<gridCell row="vQK-bD-mNH" column="clB-mU-Eba" id="fyu-1E-DpO"/>
|
||||
<gridCell row="DIe-Hz-bd0" column="uaf-ph-2zN" id="Pjk-hs-Pb5">
|
||||
<textField key="contentView" horizontalHuggingPriority="252" verticalHuggingPriority="749" translatesAutoresizingMaskIntoConstraints="NO" id="5">
|
||||
<rect key="frame" x="39" y="26" width="49" height="19"/>
|
||||
<rect key="frame" x="33" y="28" width="49" height="19"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Keyfile:" id="22">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -165,7 +165,7 @@ Gw
|
||||
</gridCell>
|
||||
<gridCell row="DIe-Hz-bd0" column="7oF-Xq-5de" id="o9J-f7-adq">
|
||||
<pathControl key="contentView" verticalHuggingPriority="750" allowsExpansionToolTips="YES" translatesAutoresizingMaskIntoConstraints="NO" id="4" customClass="MPPathControl">
|
||||
<rect key="frame" x="89" y="22" width="206" height="25"/>
|
||||
<rect key="frame" x="83" y="24" width="206" height="25"/>
|
||||
<pathCell key="cell" selectable="YES" editable="YES" alignment="left" pathStyle="popUp" id="23" customClass="MPPathCell">
|
||||
<font key="font" metaFont="system"/>
|
||||
</pathCell>
|
||||
@@ -173,8 +173,8 @@ Gw
|
||||
</gridCell>
|
||||
<gridCell row="DIe-Hz-bd0" column="clB-mU-Eba" id="miK-hQ-pkN">
|
||||
<button key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8">
|
||||
<rect key="frame" x="291" y="19" width="45" height="31"/>
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSStopProgressTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="19">
|
||||
<rect key="frame" x="292" y="27" width="31" height="20"/>
|
||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSStopProgressTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="19">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -186,8 +186,8 @@ Gw
|
||||
<gridCell row="TQt-iq-lMT" column="uaf-ph-2zN" id="nAI-ge-Vjb"/>
|
||||
<gridCell row="TQt-iq-lMT" column="7oF-Xq-5de" id="dT5-pB-M7d">
|
||||
<button key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="6">
|
||||
<rect key="frame" x="85" y="-7" width="214" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Generate Keyfile" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="21">
|
||||
<rect key="frame" x="86" y="-1" width="200" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Generate Keyfile" bezelStyle="texturedRounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="21">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -213,11 +213,11 @@ Gw
|
||||
<constraint firstItem="68" firstAttribute="top" secondItem="0Iv-td-ACj" secondAttribute="bottom" constant="20" symbolic="YES" id="s84-KY-RXX"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<point key="canvasLocation" x="-272" y="-447.5"/>
|
||||
<point key="canvasLocation" x="-295" y="-412"/>
|
||||
</window>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSQuickLookTemplate" width="21" height="13"/>
|
||||
<image name="NSStopProgressTemplate" width="14" height="13"/>
|
||||
<image name="NSQuickLookTemplate" width="19" height="12"/>
|
||||
<image name="NSStopProgressTemplate" width="11" height="11"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="18122" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="18122"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -16,6 +16,8 @@
|
||||
<outlet property="messageInfoTextField" destination="268" id="ahE-sq-QzR"/>
|
||||
<outlet property="passwordTextField" destination="338" id="495"/>
|
||||
<outlet property="togglePasswordButton" destination="408" id="493"/>
|
||||
<outlet property="touchIdButton" destination="mQA-C0-JyU" id="fM3-PG-1OB"/>
|
||||
<outlet property="touchIdEnabledButton" destination="Hs8-Tc-ezo" id="9Go-LQ-mSw"/>
|
||||
<outlet property="unlockButton" destination="2" id="ZRr-Ui-ExP"/>
|
||||
<outlet property="view" destination="1" id="143"/>
|
||||
</connections>
|
||||
@@ -25,19 +27,6 @@
|
||||
<customView horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="1">
|
||||
<rect key="frame" x="0.0" y="0.0" width="508" height="526"/>
|
||||
<subviews>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2">
|
||||
<rect key="frame" x="323" y="169" width="78" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Unlock" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="3">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<string key="keyEquivalent" base64-UTF8="YES">
|
||||
DQ
|
||||
</string>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="_submit:" target="-2" id="KZN-ap-nDc"/>
|
||||
</connections>
|
||||
</button>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="17">
|
||||
<rect key="frame" x="108" y="226" width="45" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Keyfile" id="18">
|
||||
@@ -53,7 +42,7 @@ DQ
|
||||
</pathCell>
|
||||
</pathControl>
|
||||
<imageView translatesAutoresizingMaskIntoConstraints="NO" id="262">
|
||||
<rect key="frame" x="230" y="305" width="48" height="48"/>
|
||||
<rect key="frame" x="230" y="332" width="48" height="48"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="48" id="273"/>
|
||||
<constraint firstAttribute="width" constant="48" id="456"/>
|
||||
@@ -61,7 +50,7 @@ DQ
|
||||
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyUpOrDown" image="02_MessageBoxWarningTemplate" id="263"/>
|
||||
</imageView>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="268">
|
||||
<rect key="frame" x="199" y="281" width="110" height="16"/>
|
||||
<rect key="frame" x="199" y="308" width="110" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Wrong password!" id="269">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -86,15 +75,15 @@ DQ
|
||||
</connections>
|
||||
</secureTextField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="408">
|
||||
<rect key="frame" x="351" y="246" width="50" height="32"/>
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSQuickLookTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="409">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
||||
<rect key="frame" x="357" y="251" width="32" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSQuickLookTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="409">
|
||||
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="486">
|
||||
<rect key="frame" x="351" y="216" width="50" height="32"/>
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSStopProgressTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="487">
|
||||
<rect key="frame" x="357" y="221" width="32" 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">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -109,34 +98,80 @@ DQ
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2pb-ZG-spA">
|
||||
<rect key="frame" x="249" y="169" width="76" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="erj-mR-UyO">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<string key="keyEquivalent" base64-UTF8="YES">
|
||||
<stackView distribution="fill" orientation="horizontal" alignment="top" spacing="12" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="tck-n8-s0U" userLabel="SubmitButtonContainer">
|
||||
<rect key="frame" x="164" y="176" width="224" height="20"/>
|
||||
<subviews>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2pb-ZG-spA">
|
||||
<rect key="frame" x="-7" y="-7" width="76" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="erj-mR-UyO">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<string key="keyEquivalent" base64-UTF8="YES">
|
||||
Gw
|
||||
</string>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="_submit:" target="-2" id="aVF-1d-1Hq"/>
|
||||
</connections>
|
||||
</button>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="_submit:" target="-2" id="aVF-1d-1Hq"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="mQA-C0-JyU">
|
||||
<rect key="frame" x="67" y="-7" width="88" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Touch ID" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="W9h-1u-9kq">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="unlockWithTouchID:" target="-2" id="1yL-6V-t8q"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2">
|
||||
<rect key="frame" x="153" y="-7" width="78" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Unlock" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="3">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<string key="keyEquivalent" base64-UTF8="YES">
|
||||
DQ
|
||||
</string>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="_submit:" target="-2" id="KZN-ap-nDc"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<visibilityPriorities>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
</visibilityPriorities>
|
||||
<customSpacing>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
</customSpacing>
|
||||
</stackView>
|
||||
<textField hidden="YES" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="txI-yI-5nE">
|
||||
<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"/>
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<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="Hs8-Tc-ezo">
|
||||
<rect key="frame" x="66" y="287" width="76" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="TouchID" bezelStyle="regularSquare" imagePosition="left" allowsMixedState="YES" inset="2" id="h3C-Z4-x7N">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="touchIdEnabledChanged:" target="-2" id="3pR-xA-wbI"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="2" secondAttribute="bottom" constant="20" symbolic="YES" id="122"/>
|
||||
<constraint firstItem="262" firstAttribute="top" relation="greaterThanOrEqual" secondItem="1" secondAttribute="top" constant="20" symbolic="YES" id="276"/>
|
||||
<constraint firstAttribute="centerX" secondItem="262" secondAttribute="centerX" id="286"/>
|
||||
<constraint firstAttribute="centerY" secondItem="338" secondAttribute="centerY" id="386"/>
|
||||
<constraint firstItem="338" firstAttribute="top" secondItem="268" secondAttribute="bottom" constant="8" symbolic="YES" id="400"/>
|
||||
<constraint firstItem="268" firstAttribute="top" secondItem="262" secondAttribute="bottom" constant="8" symbolic="YES" id="402"/>
|
||||
<constraint firstItem="408" firstAttribute="top" secondItem="338" secondAttribute="top" id="411"/>
|
||||
<constraint firstItem="268" firstAttribute="centerX" secondItem="338" secondAttribute="centerX" id="447"/>
|
||||
@@ -150,18 +185,21 @@ Gw
|
||||
<constraint firstItem="486" firstAttribute="leading" secondItem="241" secondAttribute="trailing" constant="8" symbolic="YES" id="489"/>
|
||||
<constraint firstItem="486" firstAttribute="leading" secondItem="408" secondAttribute="leading" id="490"/>
|
||||
<constraint firstItem="408" firstAttribute="trailing" secondItem="486" secondAttribute="trailing" id="492"/>
|
||||
<constraint firstItem="2" firstAttribute="trailing" secondItem="486" secondAttribute="trailing" id="496"/>
|
||||
<constraint firstItem="2pb-ZG-spA" firstAttribute="baseline" secondItem="2" secondAttribute="baseline" id="9nK-MH-Ozs"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="Hs8-Tc-ezo" secondAttribute="trailing" constant="20" symbolic="YES" id="4Zq-48-2fD"/>
|
||||
<constraint firstItem="tck-n8-s0U" firstAttribute="top" secondItem="txI-yI-5nE" secondAttribute="bottom" constant="8" id="6tz-an-3SW"/>
|
||||
<constraint firstItem="408" firstAttribute="leading" secondItem="338" secondAttribute="trailing" constant="8" symbolic="YES" id="7qE-8F-QgB"/>
|
||||
<constraint firstItem="txI-yI-5nE" firstAttribute="trailing" secondItem="241" secondAttribute="trailing" id="AVL-HO-SMq"/>
|
||||
<constraint firstItem="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="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="Hs8-Tc-ezo" firstAttribute="leading" secondItem="d8O-Ha-rrS" secondAttribute="leading" id="MO7-cs-9KQ"/>
|
||||
<constraint firstItem="d8O-Ha-rrS" firstAttribute="top" secondItem="Hs8-Tc-ezo" secondAttribute="bottom" constant="17" id="Rhp-Gn-AaI"/>
|
||||
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="tck-n8-s0U" secondAttribute="bottom" constant="20" symbolic="YES" id="Sny-FR-cY1"/>
|
||||
<constraint firstItem="tck-n8-s0U" firstAttribute="trailing" secondItem="486" secondAttribute="trailing" id="UtJ-18-p5u"/>
|
||||
<constraint firstItem="Hs8-Tc-ezo" firstAttribute="firstBaseline" secondItem="268" secondAttribute="firstBaseline" constant="20" id="e94-Kz-Ohn"/>
|
||||
<constraint firstItem="d8O-Ha-rrS" firstAttribute="centerY" secondItem="338" secondAttribute="centerY" id="kgB-jV-OGy"/>
|
||||
<constraint firstItem="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="2" firstAttribute="leading" secondItem="2pb-ZG-spA" secondAttribute="trailing" constant="12" id="ytJ-5Z-5rT"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="-127" y="-46"/>
|
||||
</customView>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14460.31"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -20,11 +20,11 @@
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView id="Hz6-mo-xeY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="410" height="214"/>
|
||||
<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="72" width="262" height="20"/>
|
||||
<rect key="frame" x="20" y="74" width="278" height="24"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" enabled="NO" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="Wi0-xp-KgI">
|
||||
<font key="font" size="13" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -32,27 +32,28 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="hKI-WP-N93">
|
||||
<rect key="frame" x="347" y="65" width="50" height="32"/>
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSQuickLookTemplate" imagePosition="only" alignment="center" lineBreakMode="truncatingTail" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="95g-dp-50Q">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
||||
<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="100" width="370" height="64"/>
|
||||
<rect key="frame" x="20" y="106" width="370" height="64"/>
|
||||
<clipView key="contentView" drawsBackground="NO" id="8aa-cB-mUF">
|
||||
<rect key="frame" x="1" y="1" width="368" height="62"/>
|
||||
<rect key="frame" x="1" y="0.0" width="368" height="63"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<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="39"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<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="356" minWidth="40" maxWidth="1000" id="Q1b-ir-hyW">
|
||||
<tableColumn width="365" minWidth="40" maxWidth="1000" id="Q1b-ir-hyW">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||
</tableHeaderCell>
|
||||
@@ -103,13 +104,13 @@
|
||||
<rect key="frame" x="-100" y="-100" width="15" height="102"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<tableHeaderView key="headerView" wantsLayer="YES" id="GRO-H1-N4r">
|
||||
<tableHeaderView key="headerView" id="GRO-H1-N4r">
|
||||
<rect key="frame" x="0.0" y="0.0" width="368" height="23"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</tableHeaderView>
|
||||
</scrollView>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="k8l-uy-C3l">
|
||||
<rect key="frame" x="319" y="13" width="78" height="32"/>
|
||||
<rect key="frame" x="313" y="13" width="83" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Submit" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="8vP-Ka-vsA">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -119,8 +120,8 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Y8X-Bm-qLt">
|
||||
<rect key="frame" x="283" y="65" width="70" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Reset" bezelStyle="rounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Emo-pg-Mfe">
|
||||
<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>
|
||||
@@ -129,7 +130,7 @@
|
||||
</connections>
|
||||
</button>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="e2q-qh-Zlv">
|
||||
<rect key="frame" x="167" y="48" width="76" height="16"/>
|
||||
<rect key="frame" x="167" y="49" width="76" height="17"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="StatusLabel" id="M3h-q8-FLO">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -137,7 +138,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="wAr-f2-ZUQ">
|
||||
<rect key="frame" x="18" y="172" width="374" height="22"/>
|
||||
<rect key="frame" x="18" y="178" width="374" height="22"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="MessageLabel" id="sHz-kg-YJQ">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -173,6 +174,6 @@
|
||||
</customView>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSQuickLookTemplate" width="21" height="13"/>
|
||||
<image name="NSQuickLookTemplate" width="19" height="12"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -19,7 +19,7 @@
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="BDL-W9-psF">
|
||||
<rect key="frame" x="18" y="342" width="237" height="16"/>
|
||||
<rect key="frame" x="18" y="341" width="237" height="17"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Please pick a field value to be inserted" id="aJS-22-6Va">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -27,7 +27,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="n1E-iQ-yd7">
|
||||
<rect key="frame" x="387" y="13" width="74" height="32"/>
|
||||
<rect key="frame" x="381" y="13" width="79" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Select" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="6Wi-9i-Tcb">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -40,20 +40,21 @@ DQ
|
||||
</connections>
|
||||
</button>
|
||||
<scrollView autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nlF-dy-Ttg">
|
||||
<rect key="frame" x="20" y="60" width="434" height="274"/>
|
||||
<rect key="frame" x="20" y="61" width="434" height="272"/>
|
||||
<clipView key="contentView" id="am4-w0-FSd">
|
||||
<rect key="frame" x="1" y="1" width="432" height="272"/>
|
||||
<rect key="frame" x="1" y="0.0" width="432" height="271"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<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="445" height="249"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<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>
|
||||
@@ -65,11 +66,11 @@ DQ
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView identifier="DataCell" id="s1C-7e-04S">
|
||||
<rect key="frame" x="1" y="1" width="123" height="17"/>
|
||||
<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="123" height="17"/>
|
||||
<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"/>
|
||||
@@ -83,11 +84,11 @@ DQ
|
||||
</connections>
|
||||
</tableCellView>
|
||||
<tableCellView identifier="HeaderCell" id="wpe-VG-m1j">
|
||||
<rect key="frame" x="1" y="20" width="123" height="17"/>
|
||||
<rect key="frame" x="1" y="20" width="118" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6sH-Uk-P1B">
|
||||
<rect key="frame" x="0.0" y="0.0" width="123" height="17"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="118" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Header View Cell" id="kTy-VO-Xlg">
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -104,6 +105,7 @@ DQ
|
||||
</tableColumn>
|
||||
<tableColumn width="312" minWidth="40" maxWidth="1000" id="rVo-ud-5fs">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" title="Value">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||
</tableHeaderCell>
|
||||
@@ -123,15 +125,15 @@ DQ
|
||||
</subviews>
|
||||
</clipView>
|
||||
<scroller key="horizontalScroller" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="RHy-ph-0lP">
|
||||
<rect key="frame" x="1" y="257" width="432" height="16"/>
|
||||
<rect key="frame" x="1" y="255" width="432" height="16"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</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" wantsLayer="YES" id="jX4-Gp-btT">
|
||||
<rect key="frame" x="0.0" y="0.0" width="445" height="23"/>
|
||||
<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>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14313.18" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14313.18"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -15,24 +15,25 @@
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView id="Hz6-mo-xeY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="287" height="472"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="287" height="474"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<scrollView borderType="line" autohidesScrollers="YES" horizontalLineScroll="56" horizontalPageScroll="10" verticalLineScroll="56" verticalPageScroll="10" usesPredominantAxisScrolling="NO" horizontalScrollElasticity="none" translatesAutoresizingMaskIntoConstraints="NO" id="eUU-kx-L3U" customClass="HNHUIScrollView">
|
||||
<rect key="frame" x="16" y="48" width="255" height="382"/>
|
||||
<rect key="frame" x="16" y="50" width="255" height="382"/>
|
||||
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="cgV-6Q-xC5">
|
||||
<rect key="frame" x="1" y="1" width="253" height="380"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" selectionHighlightStyle="none" columnSelection="YES" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" rowHeight="54" rowSizeStyle="automatic" viewBased="YES" id="p6e-PR-zyQ">
|
||||
<rect key="frame" x="0.0" y="0.0" width="253" height="380"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<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="241" minWidth="40" maxWidth="1000" id="t3Y-fx-P5b">
|
||||
<tableColumn width="250" minWidth="40" maxWidth="1000" id="t3Y-fx-P5b">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" white="0.33333298560000002" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</tableHeaderCell>
|
||||
@@ -71,11 +72,11 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="K3k-BF-ag9">
|
||||
<rect key="frame" x="210" y="4" width="46" height="32"/>
|
||||
<rect key="frame" x="217" y="8" width="32" height="25"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="32" id="UXw-HR-Aqw"/>
|
||||
</constraints>
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSRemoveTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="11n-xu-gUH">
|
||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSRemoveTemplate" imagePosition="overlaps" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="11n-xu-gUH">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -106,22 +107,21 @@
|
||||
</connections>
|
||||
</tableView>
|
||||
</subviews>
|
||||
<nil key="backgroundColor"/>
|
||||
</clipView>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="200" id="PWI-m3-nSC"/>
|
||||
</constraints>
|
||||
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="x6X-UZ-xSg">
|
||||
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="x6X-UZ-xSg">
|
||||
<rect key="frame" x="1" y="317" width="253" height="16"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="YJP-Wl-Ugv">
|
||||
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="NO" id="YJP-Wl-Ugv">
|
||||
<rect key="frame" x="224" y="17" width="15" height="102"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
</scrollView>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ZhC-nS-vfd">
|
||||
<rect key="frame" x="18" y="438" width="63" height="14"/>
|
||||
<rect key="frame" x="18" y="440" width="63" height="14"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Plugin data" id="unO-bO-8v0">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -129,8 +129,8 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="wUR-gA-36a">
|
||||
<rect key="frame" x="172" y="13" width="102" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Remove All" bezelStyle="rounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="6hH-Hc-gf4">
|
||||
<rect key="frame" x="186" y="18" width="81" height="25"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Remove All" bezelStyle="texturedRounded" imagePosition="overlaps" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="6hH-Hc-gf4">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -154,6 +154,6 @@
|
||||
</customView>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSRemoveTemplate" width="14" height="4"/>
|
||||
<image name="NSRemoveTemplate" width="11" height="11"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="15705" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="15705"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -22,19 +22,19 @@
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView translatesAutoresizingMaskIntoConstraints="NO" id="Hz6-mo-xeY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="607" height="542"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="607" height="502"/>
|
||||
<subviews>
|
||||
<box borderType="line" title="Box" titlePosition="noTitle" translatesAutoresizingMaskIntoConstraints="NO" id="vBs-Ga-aq0">
|
||||
<rect key="frame" x="175" y="56" width="415" height="330"/>
|
||||
<rect key="frame" x="175" y="46" width="415" height="306"/>
|
||||
<view key="contentView" id="tD5-Na-7XI">
|
||||
<rect key="frame" x="3" y="3" width="409" height="324"/>
|
||||
<rect key="frame" x="3" y="3" width="409" height="300"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<customView translatesAutoresizingMaskIntoConstraints="NO" id="wIk-iw-Tcz">
|
||||
<rect key="frame" x="20" y="20" width="369" height="284"/>
|
||||
<rect key="frame" x="20" y="20" width="369" height="260"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="qPL-FR-ky7">
|
||||
<rect key="frame" x="18" y="248" width="333" height="16"/>
|
||||
<rect key="frame" x="18" y="224" width="333" height="16"/>
|
||||
<textFieldCell key="cell" controlSize="mini" sendsActionOnEndEditing="YES" title="Plugin Settings Info" id="OOr-SW-jZb">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -59,14 +59,14 @@
|
||||
</view>
|
||||
</box>
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="CqP-oK-S8k">
|
||||
<rect key="frame" x="18" y="459" width="163" height="18"/>
|
||||
<rect key="frame" x="18" y="422" width="159" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Load unsecure Plugins" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="C4B-6z-ZqX">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="aoG-FD-ds8">
|
||||
<rect key="frame" x="18" y="424" width="571" height="28"/>
|
||||
<rect key="frame" x="18" y="388" width="571" height="28"/>
|
||||
<textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" id="2bX-8S-9XM">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<string key="title">If enabled, Plugins without proper signatures will be allowed to load. Keep in mind, that Plugins have full access to your data! Changes take affect on restart.</string>
|
||||
@@ -75,20 +75,21 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<scrollView autohidesScrollers="YES" horizontalLineScroll="37" horizontalPageScroll="10" verticalLineScroll="37" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fCk-fL-jU8">
|
||||
<rect key="frame" x="20" y="60" width="150" height="324"/>
|
||||
<rect key="frame" x="20" y="50" width="150" height="300"/>
|
||||
<clipView key="contentView" id="lTL-Q2-k45">
|
||||
<rect key="frame" x="1" y="1" width="148" height="322"/>
|
||||
<rect key="frame" x="1" y="1" width="148" height="298"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnReordering="NO" columnSelection="YES" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" rowHeight="35" usesAutomaticRowHeights="YES" viewBased="YES" id="Ocu-C0-03d">
|
||||
<rect key="frame" x="0.0" y="0.0" width="148" height="322"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<tableView verticalHuggingPriority="750" ambiguous="YES" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnReordering="NO" columnSelection="YES" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" rowHeight="35" usesAutomaticRowHeights="YES" viewBased="YES" id="Ocu-C0-03d">
|
||||
<rect key="frame" x="0.0" y="0.0" width="148" height="298"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<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="136" minWidth="40" maxWidth="1000" id="kNH-wp-Drp">
|
||||
<tableColumn width="145" minWidth="40" maxWidth="1000" id="kNH-wp-Drp">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||
</tableHeaderCell>
|
||||
@@ -153,13 +154,12 @@
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
</scrollView>
|
||||
<segmentedControl verticalHuggingPriority="750" id="B9Q-hq-K4N">
|
||||
<rect key="frame" x="17" y="18" width="63" height="36"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<segmentedCell key="cell" borderStyle="border" alignment="left" style="rounded" trackingMode="momentary" id="cj3-R6-g1E">
|
||||
<segmentedControl verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="B9Q-hq-K4N">
|
||||
<rect key="frame" x="20" y="19" width="71" height="23"/>
|
||||
<segmentedCell key="cell" borderStyle="border" alignment="left" style="texturedSquare" trackingMode="momentary" id="cj3-R6-g1E">
|
||||
<font key="font" metaFont="system"/>
|
||||
<segments>
|
||||
<segment image="NSAddTemplate" width="24"/>
|
||||
<segment image="NSAddTemplate" width="32"/>
|
||||
<segment image="NSRemoveTemplate" width="32" tag="1"/>
|
||||
</segments>
|
||||
</segmentedCell>
|
||||
@@ -168,8 +168,8 @@
|
||||
</connections>
|
||||
</segmentedControl>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="SNe-cc-CZs">
|
||||
<rect key="frame" x="400" y="13" width="194" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Browse Available Plugins…" bezelStyle="rounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="sqO-8H-n1y">
|
||||
<rect key="frame" x="413" y="19" width="174" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Browse Available Plugins…" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="sqO-8H-n1y">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -178,21 +178,21 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="XIl-03-JZP">
|
||||
<rect key="frame" x="18" y="391" width="254" height="18"/>
|
||||
<rect key="frame" x="18" y="356" width="250" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Force loading of incompatible Plugins" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="yak-fS-jtA">
|
||||
<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="505" width="247" height="18"/>
|
||||
<rect key="frame" x="18" y="466" width="243" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Download current Plugin information" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="uHR-uL-Ddm">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="nrf-Hz-0vB">
|
||||
<rect key="frame" x="18" y="484" width="349" height="14"/>
|
||||
<rect key="frame" x="18" y="446" width="349" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" selectable="YES" title="If enabled, a remote connection is established to macpassapp.org" id="i3S-9b-Bpf">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -223,18 +223,18 @@
|
||||
<constraint firstItem="nrf-Hz-0vB" firstAttribute="top" secondItem="K0z-aD-K2P" secondAttribute="bottom" constant="8" symbolic="YES" id="ohE-9y-xO4"/>
|
||||
<constraint firstItem="XIl-03-JZP" firstAttribute="leading" secondItem="CqP-oK-S8k" secondAttribute="leading" id="oqX-wa-jm0"/>
|
||||
<constraint firstItem="K0z-aD-K2P" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="20" symbolic="YES" id="q4N-Jc-F3L"/>
|
||||
<constraint firstItem="SNe-cc-CZs" firstAttribute="top" secondItem="vBs-Ga-aq0" secondAttribute="bottom" constant="20" symbolic="YES" id="r4X-iM-iYU"/>
|
||||
<constraint firstItem="SNe-cc-CZs" firstAttribute="top" secondItem="vBs-Ga-aq0" secondAttribute="bottom" constant="8" symbolic="YES" id="r4X-iM-iYU"/>
|
||||
<constraint firstItem="CqP-oK-S8k" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" id="rN1-3Z-BBi"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="XIl-03-JZP" secondAttribute="trailing" constant="20" symbolic="YES" id="rkN-ew-RtP"/>
|
||||
<constraint firstItem="fCk-fL-jU8" firstAttribute="top" secondItem="XIl-03-JZP" secondAttribute="bottom" constant="8" symbolic="YES" id="vl9-MY-WW1"/>
|
||||
<constraint firstItem="vBs-Ga-aq0" firstAttribute="leading" secondItem="fCk-fL-jU8" secondAttribute="trailing" constant="8" id="xNu-Sj-xQO"/>
|
||||
<constraint firstItem="aoG-FD-ds8" firstAttribute="top" secondItem="CqP-oK-S8k" secondAttribute="bottom" constant="8" symbolic="YES" id="zSW-h3-BrT"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="169" y="6"/>
|
||||
<point key="canvasLocation" x="179" y="115"/>
|
||||
</customView>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSAddTemplate" width="14" height="13"/>
|
||||
<image name="NSRemoveTemplate" width="14" height="4"/>
|
||||
<image name="NSAddTemplate" width="11" height="11"/>
|
||||
<image name="NSRemoveTemplate" width="11" height="11"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -15,25 +15,26 @@
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView misplaced="YES" id="Hz6-mo-xeY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="628" height="488"/>
|
||||
<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="72" width="573" height="372"/>
|
||||
<rect key="frame" x="20" y="74" width="598" height="419"/>
|
||||
<clipView key="contentView" id="Sqy-VI-iH4">
|
||||
<rect key="frame" x="1" y="1" width="571" height="370"/>
|
||||
<rect key="frame" x="1" y="0.0" width="596" height="418"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<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="608" height="347"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<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>
|
||||
@@ -45,11 +46,11 @@
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView id="Uuc-Kh-oDl">
|
||||
<rect key="frame" x="1" y="1" width="150" height="17"/>
|
||||
<rect key="frame" x="1" y="1" width="145" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6fB-f9-l44">
|
||||
<rect key="frame" x="0.0" y="0.0" width="150" height="17"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="145" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="DRt-Gz-DUm">
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -66,6 +67,7 @@
|
||||
</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>
|
||||
@@ -77,7 +79,7 @@
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView id="AKl-7g-maS">
|
||||
<rect key="frame" x="154" y="1" width="88" height="17"/>
|
||||
<rect key="frame" x="149" y="1" width="88" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="gZz-x5-KVH">
|
||||
@@ -98,6 +100,7 @@
|
||||
</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>
|
||||
@@ -109,11 +112,11 @@
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView id="RMm-PO-UNp" customClass="MPPluginStatusTableCellView">
|
||||
<rect key="frame" x="245" y="1" width="361" height="17"/>
|
||||
<rect key="frame" x="240" y="1" width="357" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="RBa-0B-xVt">
|
||||
<rect key="frame" x="0.0" y="1" width="96" height="16"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="96" height="17"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="ZIf-CU-gh7">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -121,7 +124,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="tVV-rz-Aff">
|
||||
<rect key="frame" x="294" y="-1" width="48" height="19"/>
|
||||
<rect key="frame" x="291" y="-1" width="46" height="19"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Action" bezelStyle="texturedRounded" alignment="center" controlSize="small" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="6jQ-Uk-uqD">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
@@ -157,20 +160,20 @@
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="400" id="gYM-eK-y5v"/>
|
||||
</constraints>
|
||||
<scroller key="horizontalScroller" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="ajb-Vb-WhY">
|
||||
<rect key="frame" x="1" y="355" width="571" height="16"/>
|
||||
<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" wantsLayer="YES" id="uVe-04-Now">
|
||||
<rect key="frame" x="0.0" y="0.0" width="608" height="23"/>
|
||||
<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="13" y="13" width="82" height="32"/>
|
||||
<rect key="frame" x="14" y="13" width="87" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Refresh" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="NZw-nO-lZ3">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -180,7 +183,7 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Pkh-la-7FU">
|
||||
<rect key="frame" x="514" y="13" width="66" height="32"/>
|
||||
<rect key="frame" x="552" y="13" width="72" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Done" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="j9a-fn-Pye">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -190,7 +193,7 @@
|
||||
</connections>
|
||||
</button>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="d2Q-7O-ilP">
|
||||
<rect key="frame" x="110" y="48" width="72" height="16"/>
|
||||
<rect key="frame" x="110" y="49" width="72" height="17"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Updated at" id="DhR-ED-6gV">
|
||||
<dateFormatter key="formatter" dateStyle="short" timeStyle="medium" doesRelativeDateFormatting="YES" id="0Ll-SA-lFN"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -199,7 +202,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="fjQ-ni-Ayx">
|
||||
<rect key="frame" x="18" y="48" width="88" height="16"/>
|
||||
<rect key="frame" x="18" y="49" width="88" height="17"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Last updated:" id="ntD-sJ-NRw">
|
||||
<dateFormatter key="formatter" dateStyle="short" timeStyle="medium" doesRelativeDateFormatting="YES" id="fJu-2Q-skm"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="15702" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="15702"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -18,11 +18,11 @@
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView id="c22-O7-iKe">
|
||||
<rect key="frame" x="0.0" y="0.0" width="219" height="209"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="207" height="213"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="IZP-Gd-jdU">
|
||||
<rect key="frame" x="10" y="146" width="96" height="25"/>
|
||||
<rect key="frame" x="13" y="151" width="83" height="23"/>
|
||||
<popUpButtonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="KPf-xE-gde">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
@@ -37,7 +37,7 @@
|
||||
</connections>
|
||||
</popUpButton>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="IFf-vC-3vk" customClass="HNHUITextField">
|
||||
<rect key="frame" x="13" y="99" width="186" height="21"/>
|
||||
<rect key="frame" x="13" y="101" width="174" height="21"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="100" id="Seu-01-P53"/>
|
||||
</constraints>
|
||||
@@ -48,14 +48,14 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="T2o-aJ-JmD">
|
||||
<rect key="frame" x="148" y="13" width="58" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Use" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Kqx-qm-nMG">
|
||||
<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">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="VR5-Rx-ueN">
|
||||
<rect key="frame" x="108" y="178" width="24" height="14"/>
|
||||
<rect key="frame" x="102" y="182" width="24" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Key" id="K1t-OZ-ACe">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -63,7 +63,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="sZo-ie-Asw">
|
||||
<rect key="frame" x="11" y="178" width="58" height="14"/>
|
||||
<rect key="frame" x="11" y="182" width="58" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Reference" id="r1V-VE-ngy">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -71,10 +71,10 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<popUpButton horizontalHuggingPriority="249" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="b4e-k2-WPS">
|
||||
<rect key="frame" x="107" y="146" width="96" height="25"/>
|
||||
<rect key="frame" x="104" y="151" width="83" height="23"/>
|
||||
<popUpButtonCell key="cell" type="roundTextured" title="Matching" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" selectedItem="yT1-XL-k6a" id="Aob-tW-bUP">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<menu key="menu" id="j2A-qj-k7L">
|
||||
<items>
|
||||
<menuItem title="Matching" state="on" id="yT1-XL-k6a">
|
||||
@@ -88,7 +88,7 @@
|
||||
</connections>
|
||||
</popUpButton>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="WTJ-he-uTu">
|
||||
<rect key="frame" x="11" y="128" width="37" height="14"/>
|
||||
<rect key="frame" x="11" y="130" width="37" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Match" id="9ce-da-syF">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -96,7 +96,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="mcC-bG-cCz">
|
||||
<rect key="frame" x="11" y="77" width="92" height="14"/>
|
||||
<rect key="frame" x="11" y="79" width="92" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Reference String" id="gik-Ha-hRd">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -104,7 +104,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="b36-T7-1tO" customClass="HNHUITextField">
|
||||
<rect key="frame" x="13" y="48" width="186" height="21"/>
|
||||
<rect key="frame" x="13" y="50" width="174" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="Reference" drawsBackground="YES" id="dr9-x8-kKk">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19455" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19455"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -11,7 +11,6 @@
|
||||
<outlet property="browserPopup" destination="ehI-gq-lsb" id="YMy-L1-pQw"/>
|
||||
<outlet property="doubleClickTitlePopup" destination="40" id="aKJ-q9-xjb"/>
|
||||
<outlet property="doubleClickURLPopup" destination="13" id="fGP-5I-0XK"/>
|
||||
<outlet property="focusSearchAfterUnlockCheckButton" destination="VIS-db-Y8n" id="xVr-wf-eJg"/>
|
||||
<outlet property="generatePasswordOnEntriesCheckButton" destination="yxq-YK-61i" id="0SK-CT-Wdn"/>
|
||||
<outlet property="hideAfterCopyToClipboardCheckButton" destination="vT4-wF-ned" id="d7e-vc-cAQ"/>
|
||||
<outlet property="updatePasswordOnTemplateEntriesCheckButton" destination="LPY-sM-hjS" id="wav-op-uck"/>
|
||||
@@ -21,45 +20,24 @@
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView translatesAutoresizingMaskIntoConstraints="NO" id="1">
|
||||
<rect key="frame" x="0.0" y="0.0" width="449" height="478"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="449" height="338"/>
|
||||
<subviews>
|
||||
<box autoresizesSubviews="NO" horizontalHuggingPriority="249" verticalHuggingPriority="500" borderType="line" title="Entry Table" translatesAutoresizingMaskIntoConstraints="NO" id="2">
|
||||
<rect key="frame" x="17" y="272" width="415" height="104"/>
|
||||
<rect key="frame" x="17" y="194" width="415" height="96"/>
|
||||
<view key="contentView" id="cfa-nq-Kzt">
|
||||
<rect key="frame" x="3" y="3" width="409" height="86"/>
|
||||
<rect key="frame" x="3" y="3" width="409" height="78"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="9">
|
||||
<rect key="frame" x="18" y="49" width="134" height="16"/>
|
||||
<rect key="frame" x="18" y="51" width="134" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Double-click on URL:" id="10">
|
||||
<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" translatesAutoresizingMaskIntoConstraints="NO" id="36">
|
||||
<rect key="frame" x="18" y="19" width="134" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" enabled="NO" sendsActionOnEndEditing="YES" title="Double-click on Title:" id="37">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="40">
|
||||
<rect key="frame" x="155" y="16" width="140" height="21"/>
|
||||
<popUpButtonCell key="cell" type="push" title="Opens Inspector" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="44" id="41">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" title="OtherViews" id="42">
|
||||
<items>
|
||||
<menuItem title="Opens Inspector" state="on" id="44"/>
|
||||
<menuItem title="Is Ignored" id="43"/>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
<popUpButton verticalHuggingPriority="750" verticalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="13">
|
||||
<rect key="frame" x="155" y="42" width="110" height="25"/>
|
||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="13">
|
||||
<rect key="frame" x="155" y="44" width="110" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="14">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
@@ -71,28 +49,71 @@
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="36">
|
||||
<rect key="frame" x="18" y="21" width="134" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" enabled="NO" sendsActionOnEndEditing="YES" title="Double-click on Title:" id="37">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="40">
|
||||
<rect key="frame" x="155" y="16" width="140" height="23"/>
|
||||
<popUpButtonCell key="cell" type="push" title="Opens Inspector" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="44" id="41">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" title="OtherViews" id="42">
|
||||
<items>
|
||||
<menuItem title="Opens Inspector" state="on" id="44"/>
|
||||
<menuItem title="Is Ignored" id="43"/>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="13" firstAttribute="top" secondItem="cfa-nq-Kzt" secondAttribute="top" constant="20" symbolic="YES" id="0iU-Bj-QtG"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="40" secondAttribute="trailing" constant="20" symbolic="YES" id="3iK-WD-tbs"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="13" secondAttribute="trailing" constant="20" symbolic="YES" id="EQn-DK-viK"/>
|
||||
<constraint firstItem="9" firstAttribute="leading" secondItem="cfa-nq-Kzt" secondAttribute="leading" constant="20" symbolic="YES" id="FHR-zo-tjR"/>
|
||||
<constraint firstItem="9" firstAttribute="firstBaseline" secondItem="13" secondAttribute="firstBaseline" id="Swb-ay-7G0"/>
|
||||
<constraint firstItem="36" firstAttribute="firstBaseline" secondItem="40" secondAttribute="firstBaseline" id="dWh-SS-Sc4"/>
|
||||
<constraint firstItem="36" firstAttribute="leading" secondItem="cfa-nq-Kzt" secondAttribute="leading" constant="20" symbolic="YES" id="eqy-R2-mpP"/>
|
||||
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="40" secondAttribute="bottom" constant="20" symbolic="YES" id="lle-u8-JWP"/>
|
||||
<constraint firstAttribute="bottom" secondItem="40" secondAttribute="bottom" constant="20" symbolic="YES" id="lle-u8-JWP"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<constraints>
|
||||
<constraint firstItem="13" firstAttribute="leading" secondItem="9" secondAttribute="trailing" constant="8" symbolic="YES" id="1WE-nm-pp2"/>
|
||||
<constraint firstAttribute="height" constant="100" id="AfY-wN-l34"/>
|
||||
<constraint firstItem="40" firstAttribute="centerY" secondItem="36" secondAttribute="centerY" id="1hi-oU-uNn"/>
|
||||
<constraint firstItem="13" firstAttribute="top" secondItem="2" secondAttribute="top" constant="25" id="Nd9-4H-y8b"/>
|
||||
<constraint firstItem="40" firstAttribute="top" secondItem="13" secondAttribute="bottom" constant="10" symbolic="YES" id="YWX-K2-P8C"/>
|
||||
<constraint firstItem="13" firstAttribute="leading" secondItem="40" secondAttribute="leading" id="mih-x6-1K0"/>
|
||||
<constraint firstItem="40" firstAttribute="leading" secondItem="36" secondAttribute="trailing" constant="8" symbolic="YES" id="tsy-wg-saI"/>
|
||||
</constraints>
|
||||
</box>
|
||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ehI-gq-lsb">
|
||||
<rect key="frame" x="112" y="294" width="136" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" title="Default Browser" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="7YX-EA-9KA" id="7Ip-sU-sAK">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" title="OtherViews" id="XgO-Tj-QjO">
|
||||
<items>
|
||||
<menuItem title="Default Browser" state="on" id="7YX-EA-9KA"/>
|
||||
<menuItem title="Item 2" id="gej-kA-GzQ"/>
|
||||
<menuItem title="Item 3" id="zC2-cM-KDv"/>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="lOo-NI-b07">
|
||||
<rect key="frame" x="18" y="301" width="91" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" enabled="NO" sendsActionOnEndEditing="YES" title="Open URLs in:" id="soD-wI-YOH">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<box horizontalHuggingPriority="249" borderType="line" title="New Entries" translatesAutoresizingMaskIntoConstraints="NO" id="Xvt-tP-TbR">
|
||||
<rect key="frame" x="17" y="172" width="415" height="96"/>
|
||||
<rect key="frame" x="17" y="94" width="415" height="96"/>
|
||||
<view key="contentView" id="g0i-00-sng">
|
||||
<rect key="frame" x="3" y="3" width="409" height="78"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
@@ -124,7 +145,7 @@
|
||||
</view>
|
||||
</box>
|
||||
<box horizontalHuggingPriority="249" title="Clipboard" translatesAutoresizingMaskIntoConstraints="NO" id="Kff-Xp-hAT">
|
||||
<rect key="frame" x="17" y="94" width="415" height="74"/>
|
||||
<rect key="frame" x="17" y="16" width="415" height="74"/>
|
||||
<view key="contentView" id="Ntf-zj-VZL">
|
||||
<rect key="frame" x="3" y="3" width="409" height="56"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
@@ -145,87 +166,25 @@
|
||||
</constraints>
|
||||
</view>
|
||||
</box>
|
||||
<box title="Search" translatesAutoresizingMaskIntoConstraints="NO" id="CLc-Vg-aWg">
|
||||
<rect key="frame" x="17" y="16" width="415" height="74"/>
|
||||
<view key="contentView" id="KWW-Ss-mhI">
|
||||
<rect key="frame" x="3" y="3" width="409" height="56"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="VIS-db-Y8n">
|
||||
<rect key="frame" x="18" y="19" width="261" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Focus search after unlocking database" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="I0s-iS-0Sc">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="VIS-db-Y8n" firstAttribute="leading" secondItem="KWW-Ss-mhI" secondAttribute="leading" constant="20" symbolic="YES" id="GkT-nF-RKV"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="VIS-db-Y8n" secondAttribute="trailing" constant="20" symbolic="YES" id="XzO-KB-P5X"/>
|
||||
<constraint firstItem="VIS-db-Y8n" firstAttribute="top" secondItem="KWW-Ss-mhI" secondAttribute="top" constant="20" symbolic="YES" id="ciI-U3-HDa"/>
|
||||
<constraint firstAttribute="bottom" secondItem="VIS-db-Y8n" secondAttribute="bottom" constant="20" id="t7Q-vo-yyz"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</box>
|
||||
<box title="URLs" translatesAutoresizingMaskIntoConstraints="NO" id="8Z8-mS-hfg">
|
||||
<rect key="frame" x="17" y="380" width="415" height="78"/>
|
||||
<view key="contentView" id="LD4-oH-eGw">
|
||||
<rect key="frame" x="3" y="3" width="409" height="60"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="lOo-NI-b07">
|
||||
<rect key="frame" x="18" y="23" width="91" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" enabled="NO" sendsActionOnEndEditing="YES" title="Open URLs in:" id="soD-wI-YOH">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ehI-gq-lsb">
|
||||
<rect key="frame" x="112" y="16" width="136" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" title="Default Browser" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="7YX-EA-9KA" id="7Ip-sU-sAK">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" title="OtherViews" id="XgO-Tj-QjO">
|
||||
<items>
|
||||
<menuItem title="Default Browser" state="on" id="7YX-EA-9KA"/>
|
||||
<menuItem title="Item 2" id="gej-kA-GzQ"/>
|
||||
<menuItem title="Item 3" id="zC2-cM-KDv"/>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="bottom" secondItem="ehI-gq-lsb" secondAttribute="bottom" constant="20" symbolic="YES" id="5Pa-Hu-TKL"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="ehI-gq-lsb" secondAttribute="trailing" constant="20" symbolic="YES" id="8Qh-aY-FnV"/>
|
||||
<constraint firstItem="ehI-gq-lsb" firstAttribute="leading" secondItem="lOo-NI-b07" secondAttribute="trailing" constant="8" symbolic="YES" id="94i-HV-mfW"/>
|
||||
<constraint firstItem="lOo-NI-b07" firstAttribute="leading" secondItem="LD4-oH-eGw" secondAttribute="leading" constant="20" symbolic="YES" id="FSg-Id-v0g"/>
|
||||
<constraint firstItem="lOo-NI-b07" firstAttribute="firstBaseline" secondItem="ehI-gq-lsb" secondAttribute="firstBaseline" id="I4D-aA-QaC"/>
|
||||
<constraint firstItem="ehI-gq-lsb" firstAttribute="top" secondItem="LD4-oH-eGw" secondAttribute="top" constant="20" symbolic="YES" id="ciK-1U-UYJ"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</box>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="2" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="5"/>
|
||||
<constraint firstAttribute="trailing" secondItem="2" secondAttribute="trailing" constant="20" symbolic="YES" id="8"/>
|
||||
<constraint firstAttribute="bottom" secondItem="CLc-Vg-aWg" secondAttribute="bottom" constant="20" symbolic="YES" id="1VG-9p-VC6"/>
|
||||
<constraint firstItem="Kff-Xp-hAT" firstAttribute="top" secondItem="Xvt-tP-TbR" secondAttribute="bottom" constant="8" symbolic="YES" id="3RL-tm-4wu"/>
|
||||
<constraint firstAttribute="trailing" secondItem="8Z8-mS-hfg" secondAttribute="trailing" constant="20" symbolic="YES" id="5Hg-na-QAc"/>
|
||||
<constraint firstAttribute="bottom" secondItem="Kff-Xp-hAT" secondAttribute="bottom" constant="20" symbolic="YES" id="8k6-1d-wPj"/>
|
||||
<constraint firstItem="Xvt-tP-TbR" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="BH4-4y-uma"/>
|
||||
<constraint firstItem="2" firstAttribute="top" secondItem="ehI-gq-lsb" secondAttribute="bottom" constant="8" symbolic="YES" id="CnN-aU-Qa1"/>
|
||||
<constraint firstItem="Xvt-tP-TbR" firstAttribute="top" secondItem="2" secondAttribute="bottom" constant="8" symbolic="YES" id="FVK-Uf-kLv"/>
|
||||
<constraint firstItem="CLc-Vg-aWg" firstAttribute="top" secondItem="Kff-Xp-hAT" secondAttribute="bottom" constant="8" symbolic="YES" id="MZ9-vN-2za"/>
|
||||
<constraint firstItem="8Z8-mS-hfg" firstAttribute="top" secondItem="1" secondAttribute="top" constant="20" symbolic="YES" id="ScX-YY-rgS"/>
|
||||
<constraint firstItem="ehI-gq-lsb" firstAttribute="leading" secondItem="lOo-NI-b07" secondAttribute="trailing" constant="8" symbolic="YES" id="KxB-TG-rH5"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="ehI-gq-lsb" secondAttribute="trailing" constant="20" symbolic="YES" id="Ldw-aO-wuX"/>
|
||||
<constraint firstItem="ehI-gq-lsb" firstAttribute="top" secondItem="1" secondAttribute="top" constant="20" symbolic="YES" id="MAe-l7-8k2"/>
|
||||
<constraint firstAttribute="trailing" secondItem="Kff-Xp-hAT" secondAttribute="trailing" constant="20" symbolic="YES" id="VLC-2A-Vdd"/>
|
||||
<constraint firstItem="Kff-Xp-hAT" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="Vle-Z0-mh8"/>
|
||||
<constraint firstItem="2" firstAttribute="top" secondItem="8Z8-mS-hfg" secondAttribute="bottom" constant="8" symbolic="YES" id="Z6D-RB-aR5"/>
|
||||
<constraint firstAttribute="trailing" secondItem="Xvt-tP-TbR" secondAttribute="trailing" constant="20" id="anU-nC-YAw"/>
|
||||
<constraint firstAttribute="trailing" secondItem="CLc-Vg-aWg" secondAttribute="trailing" constant="20" symbolic="YES" id="fXu-pq-O8Q"/>
|
||||
<constraint firstItem="CLc-Vg-aWg" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="wyw-aC-Vkj"/>
|
||||
<constraint firstItem="8Z8-mS-hfg" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="xdM-IO-cz3"/>
|
||||
<constraint firstItem="lOo-NI-b07" firstAttribute="firstBaseline" secondItem="ehI-gq-lsb" secondAttribute="firstBaseline" id="gFK-Ce-Q3b"/>
|
||||
<constraint firstItem="lOo-NI-b07" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="kaP-lB-tDY"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="-906.5" y="-199.5"/>
|
||||
<point key="canvasLocation" x="-752" y="-257"/>
|
||||
</customView>
|
||||
</objects>
|
||||
</document>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19455" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19455"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -16,16 +16,16 @@
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="336">
|
||||
<rect key="frame" x="0.0" y="0.0" width="691" height="331"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="695" height="523"/>
|
||||
<subviews>
|
||||
<scrollView focusRingType="none" borderType="none" autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="54">
|
||||
<rect key="frame" x="0.0" y="0.0" width="691" height="308"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="695" height="524"/>
|
||||
<clipView key="contentView" id="4tt-2K-SPF">
|
||||
<rect key="frame" x="0.0" y="0.0" width="691" height="308"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="695" height="524"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" alternatingRowBackgroundColors="YES" rowSizeStyle="automatic" headerView="676" viewBased="YES" id="55" customClass="MPTableView">
|
||||
<rect key="frame" x="0.0" y="0.0" width="691" height="285"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="695" height="501"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<size key="intercellSpacing" width="3" height="2"/>
|
||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -44,11 +44,11 @@
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView identifier="StringCell" id="269">
|
||||
<rect key="frame" x="11" y="1" width="110" height="17"/>
|
||||
<rect key="frame" x="1" y="1" width="105" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="270">
|
||||
<rect key="frame" x="1" y="1" width="108" height="16"/>
|
||||
<rect key="frame" x="1" y="1" width="103" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="271">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -80,11 +80,11 @@
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView identifier="ImageCell" id="297">
|
||||
<rect key="frame" x="124" y="1" width="144" height="17"/>
|
||||
<rect key="frame" x="108.5" y="1" width="144" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<imageView translatesAutoresizingMaskIntoConstraints="NO" id="298">
|
||||
<rect key="frame" x="3" y="-3" width="17" height="23"/>
|
||||
<rect key="frame" x="3" y="0.0" width="17" height="17"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="17" id="312"/>
|
||||
<constraint firstAttribute="height" constant="17" id="T73-FC-KyN"/>
|
||||
@@ -128,7 +128,7 @@
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView identifier="PasswordCell" id="428">
|
||||
<rect key="frame" x="271" y="1" width="118" height="17"/>
|
||||
<rect key="frame" x="255.5" y="1" width="118" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="429" customClass="NSSecureTextField">
|
||||
@@ -164,7 +164,7 @@
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView id="421">
|
||||
<rect key="frame" x="393" y="1" width="113" height="17"/>
|
||||
<rect key="frame" x="377" y="1" width="113" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="422">
|
||||
@@ -187,7 +187,7 @@
|
||||
</tableCellView>
|
||||
</prototypeCellViews>
|
||||
</tableColumn>
|
||||
<tableColumn width="165" minWidth="10" maxWidth="3.4028234663852886e+38" id="614">
|
||||
<tableColumn width="200" minWidth="10" maxWidth="3.4028234663852886e+38" id="614">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left">
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -199,14 +199,14 @@
|
||||
</textFieldCell>
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView identifier="MonospacedStringCell" id="616">
|
||||
<rect key="frame" x="509" y="1" width="169" height="17"/>
|
||||
<tableCellView id="616">
|
||||
<rect key="frame" x="493" y="1" width="200" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="617">
|
||||
<rect key="frame" x="1" y="2" width="167" height="14"/>
|
||||
<rect key="frame" x="1" y="1" width="198" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="618">
|
||||
<font key="font" size="12" name="Menlo-Regular"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
@@ -228,15 +228,15 @@
|
||||
</subviews>
|
||||
</clipView>
|
||||
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="56">
|
||||
<rect key="frame" x="0.0" y="484" width="690" height="16"/>
|
||||
<rect key="frame" x="0.0" y="579" width="694" height="16"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="58">
|
||||
<rect key="frame" x="224" y="17" width="15" height="102"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<tableHeaderView key="headerView" wantsLayer="YES" id="676">
|
||||
<rect key="frame" x="0.0" y="0.0" width="691" height="23"/>
|
||||
<tableHeaderView key="headerView" id="676">
|
||||
<rect key="frame" x="0.0" y="0.0" width="695" height="23"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</tableHeaderView>
|
||||
</scrollView>
|
||||
@@ -251,6 +251,6 @@
|
||||
</customView>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSActionTemplate" width="15" height="15"/>
|
||||
<image name="NSActionTemplate" width="14" height="14"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
@end
|
||||
@implementation NSImage (MPTintedImage)
|
||||
- (NSImage *)imageWithTintColor:(NSColor *)tintColor {
|
||||
/* only tint templated images! */
|
||||
/* only tint tempated images! */
|
||||
if(NO == self.template) {
|
||||
return self;
|
||||
}
|
||||
@@ -63,7 +63,7 @@
|
||||
|
||||
if(self.timeInfo.isExpired) {
|
||||
const BOOL isGroup = [self isKindOfClass:[KPKGroup class]];
|
||||
return [[MPIconHelper icon:(isGroup ? MPIconExpiredGroup : MPIconExpiredEntry)] imageWithTintColor:NSColor.systemRedColor];
|
||||
return [MPIconHelper icon:(isGroup ? MPIconExpiredGroup : MPIconExpiredEntry)];
|
||||
}
|
||||
if(self.icon) {
|
||||
return self.icon.image;
|
||||
|
||||
@@ -21,17 +21,41 @@
|
||||
//
|
||||
|
||||
#import "MPAddEntryContextMenuDelegate.h"
|
||||
#import "MPContextMenuHelper.h"
|
||||
#import "MPDocument.h"
|
||||
#import "MPDocumentWindowController.h"
|
||||
#import "MPActionHelper.h"
|
||||
#import "KPKNode+IconImage.h"
|
||||
|
||||
#import "KeePassKit/KeePassKit.h"
|
||||
|
||||
#define EDIT_TEMPLATES_ITEM_TAG 10;
|
||||
|
||||
@implementation MPAddEntryContextMenuDelegate
|
||||
|
||||
- (void)menuNeedsUpdate:(NSMenu *)menu {
|
||||
/*
|
||||
The Method is rather brute force
|
||||
It's possible nicer to cache the entries and just update
|
||||
the menu entries, that actually need updating
|
||||
*/
|
||||
MPDocument *document = NSDocumentController.sharedDocumentController.currentDocument;
|
||||
[menu removeAllItems];
|
||||
NSArray<NSMenuItem *> *items = [MPContextMenuHelper contextMenuItemsWithCreateFromTemplateEntriesItems];
|
||||
for(NSMenuItem *item in items) {
|
||||
[menu addItem:item];
|
||||
[menu addItemWithTitle:NSLocalizedString(@"EDIT_TEMPLATE_GROUP", "Menu item on the add entry context menu to edit template groups") action:[MPActionHelper actionOfType:MPActionEditTemplateGroup] keyEquivalent:@""];
|
||||
|
||||
[menu addItem:[NSMenuItem separatorItem]];
|
||||
for(KPKEntry *entry in document.templates.childEntries) {
|
||||
NSString *templateMask = NSLocalizedString(@"NEW_ENTRY_WITH_TEMPLATE_%@", "Submenu to add an entry via template");
|
||||
NSMenuItem *templateItem = [[NSMenuItem alloc] initWithTitle:[NSString stringWithFormat:templateMask, entry.title]
|
||||
action:@selector(createEntryFromTemplate:)
|
||||
keyEquivalent:@""];
|
||||
templateItem.image = [entry.iconImage copy];
|
||||
templateItem.image.size = NSMakeSize(14, 14);
|
||||
templateItem.representedObject = entry.uuid;
|
||||
[menu addItem:templateItem];
|
||||
}
|
||||
/* If there are no entries, add a note as disabled menu item */
|
||||
if(menu.itemArray.count == 2) {
|
||||
[menu addItemWithTitle:NSLocalizedString(@"NO_TEMPLATES", "Menu item added to show that no templates are defined") action:NULL keyEquivalent:@""];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
//
|
||||
// MPAdvancedDatabaseSettingsViewController.h
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 18.11.21.
|
||||
// Copyright © 2021 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface MPAdvancedDatabaseSettingsViewController : NSViewController
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -1,22 +0,0 @@
|
||||
//
|
||||
// MPAdvancedDatabaseSettingsViewController.m
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 18.11.21.
|
||||
// Copyright © 2021 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import "MPAdvancedDatabaseSettingsViewController.h"
|
||||
|
||||
@interface MPAdvancedDatabaseSettingsViewController ()
|
||||
|
||||
@end
|
||||
|
||||
@implementation MPAdvancedDatabaseSettingsViewController
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
// Do view setup here.
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -1,22 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19455" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19455"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="MPAdvancedDatabaseSettingsViewController">
|
||||
<connections>
|
||||
<outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView id="Hz6-mo-xeY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<point key="canvasLocation" x="140" y="154"/>
|
||||
</customView>
|
||||
</objects>
|
||||
</document>
|
||||
@@ -36,9 +36,8 @@ APPKIT_EXTERN NSString *const MPDidChangeStoredKeyFilesSettings;
|
||||
@property (strong) IBOutlet NSMenu *exportMenu;
|
||||
|
||||
@property (strong, readonly) MPEntryContextMenuDelegate *itemActionMenuDelegate;
|
||||
@property (readonly) BOOL isTerminating;
|
||||
|
||||
@property (nonatomic) BOOL isAllowedToStoreKeyFile;
|
||||
@property (nonatomic, assign) BOOL isAllowedToStoreKeyFile;
|
||||
|
||||
- (IBAction)checkForUpdates:(id)sender;
|
||||
- (IBAction)showPreferences:(id)sender;
|
||||
|
||||
@@ -92,7 +92,6 @@ typedef NS_OPTIONS(NSInteger, MPAppStartupState) {
|
||||
_userNotificationCenterDelegate = [[MPUserNotificationCenterDelegate alloc] init];
|
||||
self.itemActionMenuDelegate = [[MPEntryContextMenuDelegate alloc] init];
|
||||
_shouldOpenFile = NO;
|
||||
_isTerminating = NO;
|
||||
self.startupState = MPAppStartupStateNone;
|
||||
|
||||
[NSNotificationCenter.defaultCenter addObserver:self
|
||||
@@ -186,7 +185,6 @@ typedef NS_OPTIONS(NSInteger, MPAppStartupState) {
|
||||
}
|
||||
|
||||
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender {
|
||||
_isTerminating = YES;
|
||||
[self hideWelcomeWindow];
|
||||
if(MPTemporaryFileStorageCenter.defaultCenter.hasPendingStorages) {
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
|
||||
@@ -40,4 +40,11 @@ FOUNDATION_EXPORT NSString *const MPPluginUTI;
|
||||
FOUNDATION_EXPORT NSString *const MPBundleHelpURLKey;
|
||||
FOUNDATION_EXPORT NSString *const MPBundlePluginRepositoryURLKey;
|
||||
FOUNDATION_EXPORT NSString *const MPPluginCompatibilityURLKey;
|
||||
|
||||
/**
|
||||
Keychain Keys
|
||||
*/
|
||||
extern NSString *const TouchIdUnlockPublicKeyTag;
|
||||
extern NSString *const TouchIdUnlockPrivateKeyTag;
|
||||
|
||||
#endif
|
||||
|
||||
@@ -31,3 +31,6 @@ NSString *const MPBundleHelpURLKey = @"MPHelpURL";
|
||||
NSString *const MPBundlePluginRepositoryURLKey = @"MPPluginRepositoryURL";
|
||||
NSString *const MPPluginCompatibilityURLKey = @"MPPluginCompatibilityURLKey";
|
||||
|
||||
NSString *const TouchIdUnlockPublicKeyTag = @"com.hicknhacksoftware.macpass.publickey";
|
||||
NSString *const TouchIdUnlockPrivateKeyTag = @"com.hicknhacksoftware.macpass.privatekey";
|
||||
|
||||
|
||||
@@ -52,12 +52,7 @@
|
||||
self.cell = cell;
|
||||
|
||||
self.focusRingType = NSFocusRingTypeNone;
|
||||
if (@available(macOS 11.0, *)) {
|
||||
self.segmentStyle = NSSegmentStyleSeparated;
|
||||
}
|
||||
else {
|
||||
self.segmentStyle = NSSegmentStyleTexturedSquare;
|
||||
}
|
||||
self.segmentStyle = NSSegmentStyleTexturedSquare;
|
||||
self.segmentCount = MPContextButtonSegmentCount;
|
||||
cell.trackingMode = NSSegmentSwitchTrackingMomentary;
|
||||
[cell setWidth:31 forSegment:MPContextButtonSegmentButton];
|
||||
|
||||
@@ -37,11 +37,11 @@ typedef NS_OPTIONS(NSUInteger, MPContextMenuItemsFlags) {
|
||||
};
|
||||
|
||||
@interface MPContextMenuHelper : NSTableCellView
|
||||
|
||||
/*
|
||||
Creates an array of menuitems to be used as a menu
|
||||
Automatically sets up actions, so you need to take care of the responder chain
|
||||
*/
|
||||
+ (NSArray <NSMenuItem *> *)contextMenuItemsWithItems:(MPContextMenuItemsFlags)flags;
|
||||
+ (NSArray <NSMenuItem *> *)contextMenuItemsWithCreateFromTemplateEntriesItems;
|
||||
|
||||
@end
|
||||
|
||||
@@ -22,13 +22,9 @@
|
||||
|
||||
#import "MPContextMenuHelper.h"
|
||||
#import "MPActionHelper.h"
|
||||
#import "MPDocument.h"
|
||||
|
||||
#import "MPFlagsHelper.h"
|
||||
|
||||
#import "KPKNode+IconImage.h"
|
||||
|
||||
#import <KeePassKit/KeePassKit.h>
|
||||
|
||||
static void MPContextmenuHelperBeginSection(NSMutableArray *items) {
|
||||
if(items.count > 0) {
|
||||
[items addObject:[NSMenuItem separatorItem]];
|
||||
@@ -37,38 +33,6 @@ static void MPContextmenuHelperBeginSection(NSMutableArray *items) {
|
||||
|
||||
@implementation MPContextMenuHelper
|
||||
|
||||
+ (NSArray<NSMenuItem *> *)contextMenuItemsWithCreateFromTemplateEntriesItems {
|
||||
/*
|
||||
The Method is rather brute force
|
||||
It's possible nicer to cache the entries and just update
|
||||
the menu entries, that actually need updating
|
||||
*/
|
||||
|
||||
NSMutableArray *items = [[NSMutableArray alloc] init];
|
||||
NSMenuItem *editItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"EDIT_TEMPLATE_GROUP", "Menu item on the add entry context menu to edit template groups") action:[MPActionHelper actionOfType:MPActionEditTemplateGroup] keyEquivalent:@""];
|
||||
|
||||
[items addObject:editItem];
|
||||
MPContextmenuHelperBeginSection(items);
|
||||
|
||||
MPDocument *document = NSDocumentController.sharedDocumentController.currentDocument;
|
||||
for(KPKEntry *entry in document.templates.childEntries) {
|
||||
NSString *templateMask = NSLocalizedString(@"NEW_ENTRY_WITH_TEMPLATE_%@", "Submenu to add an entry via template");
|
||||
NSMenuItem *templateItem = [[NSMenuItem alloc] initWithTitle:[NSString stringWithFormat:templateMask, entry.title]
|
||||
action:@selector(createEntryFromTemplate:)
|
||||
keyEquivalent:@""];
|
||||
templateItem.image = [entry.iconImage copy];
|
||||
templateItem.image.size = NSMakeSize(14, 14);
|
||||
templateItem.representedObject = entry.uuid;
|
||||
[items addObject:templateItem];
|
||||
}
|
||||
/* If there are no entries, add a note as disabled menu item */
|
||||
if(items.count == 2) {
|
||||
NSMenuItem *noItemsItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"NO_TEMPLATES", "Menu item added to show that no templates are defined") action:NULL keyEquivalent:@""];
|
||||
[items addObject:noItemsItem];
|
||||
}
|
||||
return [items copy];
|
||||
}
|
||||
|
||||
+ (NSArray<NSMenuItem *> *)contextMenuItemsWithItems:(MPContextMenuItemsFlags)flags {
|
||||
|
||||
BOOL const insertCreate = MPIsFlagSetInOptions(MPContextMenuCreate, flags);
|
||||
@@ -80,7 +44,7 @@ static void MPContextmenuHelperBeginSection(NSMutableArray *items) {
|
||||
BOOL const insertHistory = MPIsFlagSetInOptions(MPContextMenuHistory, flags);
|
||||
BOOL const insertShowGroupInOutline = MPIsFlagSetInOptions(MPContextMenuShowGroupInOutline, flags);
|
||||
|
||||
NSMutableArray *items = [NSMutableArray arrayWithCapacity:15];
|
||||
NSMutableArray *items = [NSMutableArray arrayWithCapacity:10];
|
||||
if(insertCreate) {
|
||||
|
||||
NSMenuItem *newGroup = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"NEW_GROUP", @"Menu item to create a new group")
|
||||
@@ -90,20 +54,7 @@ static void MPContextmenuHelperBeginSection(NSMutableArray *items) {
|
||||
action:[MPActionHelper actionOfType:MPActionAddEntry]
|
||||
keyEquivalent:@"n"];
|
||||
|
||||
|
||||
[items addObjectsFromArray:@[ newGroup, newEntry ]];
|
||||
/*
|
||||
NSMenuItem *newEntryFromTemplate = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"NEW_ENTRY_FROM_TEMPLATE", @"Submen to create entries from tempaltes")
|
||||
action:NULL
|
||||
keyEquivalent:@""];
|
||||
newEntryFromTemplate.submenu = [[NSMenu alloc] init];
|
||||
NSArray *templateItems = [self contextMenuItemsWithCreateFromTemplateEntriesItems];
|
||||
for(NSMenuItem *item in templateItems) {
|
||||
[newEntryFromTemplate.submenu addItem:item];
|
||||
}
|
||||
[items addObjectsFromArray:@[ newGroup, newEntry, newEntryFromTemplate ]];
|
||||
*/
|
||||
|
||||
}
|
||||
if(insertDuplicate) {
|
||||
MPContextmenuHelperBeginSection(items);
|
||||
|
||||
@@ -51,16 +51,11 @@ typedef NS_ENUM(NSUInteger, MPDatabaseSettingsTab) {
|
||||
|
||||
/* AES */
|
||||
@property (weak) IBOutlet NSTextField *aesEncryptionRoundsTextField;
|
||||
/* Argon2d */
|
||||
@property (weak) IBOutlet NSTextField *argon2dThreadsTextField;
|
||||
@property (weak) IBOutlet NSTextField *argon2dIterationsTextField;
|
||||
@property (weak) IBOutlet NSTextField *argon2dMemoryTextField;
|
||||
@property (weak) IBOutlet NSStepper *argon2dMemoryStepper;
|
||||
/* Argon2id */
|
||||
@property (weak) IBOutlet NSTextField *argon2idThreadsTextField;
|
||||
@property (weak) IBOutlet NSTextField *argon2idIterationsTextField;
|
||||
@property (weak) IBOutlet NSTextField *argon2idMemoryTextField;
|
||||
@property (weak) IBOutlet NSStepper *argon2idMemoryStepper;
|
||||
/* Argon2 */
|
||||
@property (weak) IBOutlet NSTextField *argon2ThreadsTextField;
|
||||
@property (weak) IBOutlet NSTextField *argon2IterationsTextField;
|
||||
@property (weak) IBOutlet NSTextField *argon2MemoryTextField;
|
||||
@property (weak) IBOutlet NSStepper *argon2MemoryStepper;
|
||||
|
||||
/* Advanced Tab*/
|
||||
@property (weak) IBOutlet NSButton *enableHistoryCheckButton;
|
||||
|
||||
@@ -39,8 +39,7 @@
|
||||
NSString *_missingFeature;
|
||||
}
|
||||
|
||||
@property (assign) NSInteger argon2dMemory;
|
||||
@property (assign) NSInteger argon2idMemory;
|
||||
@property (assign) NSInteger argon2Memory;
|
||||
|
||||
@property (assign) BOOL enableHistory;
|
||||
@property (assign) NSInteger maxiumHistoryItems;
|
||||
@@ -108,6 +107,7 @@
|
||||
/* General */
|
||||
KPKMetaData *metaData = ((MPDocument *)self.document).tree.metaData;
|
||||
/* TODO move settingsChanged updates to KeePassKit as it's the models responsibility */
|
||||
metaData.settingsChanged = NSDate.date;
|
||||
metaData.databaseDescription = self.databaseDescriptionTextView.string;
|
||||
metaData.databaseName = self.databaseNameTextField.stringValue;
|
||||
|
||||
@@ -164,28 +164,21 @@
|
||||
/* Security */
|
||||
metaData.cipherUUID = self.cipherPopupButton.selectedItem.representedObject;
|
||||
|
||||
NSUUID *selectedKdfUUID = self.keyDerivationSettingsTabView.selectedTabViewItem.identifier;
|
||||
KPKAESKeyDerivation *aesKdf = [[KPKAESKeyDerivation alloc] initWithParameters:[KPKAESKeyDerivation defaultParameters]];
|
||||
KPKArgon2DKeyDerivation *argon2dKdf = [[KPKArgon2DKeyDerivation alloc] initWithParameters:[KPKArgon2DKeyDerivation defaultParameters]];
|
||||
KPKArgon2IDKeyDerivation *argon2idKdf = [[KPKArgon2IDKeyDerivation alloc] initWithParameters:[KPKArgon2IDKeyDerivation defaultParameters]];
|
||||
KPKArgon2DKeyDerivation *argon2Kdf = [[KPKArgon2DKeyDerivation alloc] initWithParameters:[KPKArgon2DKeyDerivation defaultParameters]];
|
||||
// FIXME: add Argon2id support!
|
||||
|
||||
NSUUID *selectedKdfUUID = self.keyDerivationSettingsTabView.selectedTabViewItem.identifier;
|
||||
|
||||
if([selectedKdfUUID isEqual:aesKdf.uuid]) {
|
||||
|
||||
aesKdf.rounds = self.aesEncryptionRoundsTextField.integerValue;
|
||||
metaData.keyDerivationParameters = aesKdf.parameters;
|
||||
}
|
||||
else if([selectedKdfUUID isEqual:argon2dKdf.uuid]) {
|
||||
|
||||
argon2dKdf.iterations = self.argon2dIterationsTextField.integerValue;
|
||||
argon2dKdf.memory = self.argon2dMemory;
|
||||
argon2dKdf.threads = self.argon2dThreadsTextField.intValue;
|
||||
metaData.keyDerivationParameters = argon2dKdf.parameters;
|
||||
}
|
||||
else if([selectedKdfUUID isEqual:argon2idKdf.uuid]) {
|
||||
argon2idKdf.iterations = self.argon2idIterationsTextField.integerValue;
|
||||
argon2idKdf.memory = self.argon2idMemory;
|
||||
argon2idKdf.threads = self.argon2idThreadsTextField.intValue;
|
||||
metaData.keyDerivationParameters = argon2idKdf.parameters;
|
||||
else if([selectedKdfUUID isEqual:argon2Kdf.uuid]) {
|
||||
argon2Kdf.iterations = self.argon2IterationsTextField.integerValue;
|
||||
argon2Kdf.memory = self.argon2Memory;
|
||||
argon2Kdf.threads = self.argon2ThreadsTextField.intValue;
|
||||
metaData.keyDerivationParameters = argon2Kdf.parameters;
|
||||
}
|
||||
|
||||
/* Changes to metadata aren't backed by undomanager, thus we need to manually set the document dirty */
|
||||
@@ -197,21 +190,12 @@
|
||||
[self dismissSheet:0];
|
||||
}
|
||||
|
||||
- (IBAction)benchmarkParametersForDelay:(id)sender {
|
||||
NSUUID *selectedKdfUUID = self.keyDerivationSettingsTabView.selectedTabViewItem.identifier;
|
||||
if([selectedKdfUUID isEqual:[KPKAESKeyDerivation uuid]]) {
|
||||
self.createKeyDerivationParametersButton.enabled = NO;
|
||||
[KPKAESKeyDerivation parametersForDelay:1 completionHandler:^(NSDictionary * _Nonnull options) {
|
||||
self.aesEncryptionRoundsTextField.integerValue = [options[KPKAESRoundsOption] unsignedInteger64Value];
|
||||
self.createKeyDerivationParametersButton.enabled = YES;
|
||||
}];
|
||||
}
|
||||
else if([selectedKdfUUID isEqual:[KPKArgon2DKeyDerivation uuid]]) {
|
||||
// TODO: add benchmark
|
||||
}
|
||||
else if([selectedKdfUUID isEqual:[KPKArgon2IDKeyDerivation uuid]]) {
|
||||
// TODO: add benchmark
|
||||
}
|
||||
- (IBAction)benchmarkRounds:(id)sender {
|
||||
self.createKeyDerivationParametersButton.enabled = NO;
|
||||
[KPKAESKeyDerivation parametersForDelay:1 completionHandler:^(NSDictionary * _Nonnull options) {
|
||||
self.aesEncryptionRoundsTextField.integerValue = [options[KPKAESRoundsOption] unsignedInteger64Value];
|
||||
self.createKeyDerivationParametersButton.enabled = YES;
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)updateView {
|
||||
@@ -291,57 +275,42 @@
|
||||
[self.keyDerivationPopupButton selectItemAtIndex:kdfIndex];
|
||||
[self.keyDerivationSettingsTabView selectTabViewItemWithIdentifier:keyDerivation.uuid];
|
||||
|
||||
/* fill defaults for AES */
|
||||
KPKAESKeyDerivation *aesKdf = [[KPKAESKeyDerivation alloc] initWithParameters:[KPKAESKeyDerivation defaultParameters]];
|
||||
self.aesEncryptionRoundsTextField.integerValue = aesKdf.rounds;
|
||||
|
||||
/* fill defaults for Argon2d */
|
||||
KPKArgon2DKeyDerivation *argon2dKdf = [[KPKArgon2DKeyDerivation alloc] initWithParameters:[KPKArgon2DKeyDerivation defaultParameters]];
|
||||
self.argon2dIterationsTextField.integerValue = argon2dKdf.iterations;
|
||||
self.argon2dMemory = argon2dKdf.memory;
|
||||
self.argon2dThreadsTextField.integerValue = argon2dKdf.threads;
|
||||
|
||||
/* fill defaults for Argon2id */
|
||||
KPKArgon2IDKeyDerivation *argon2idKdf = [[KPKArgon2IDKeyDerivation alloc] initWithParameters:[KPKArgon2IDKeyDerivation defaultParameters]];
|
||||
self.argon2idIterationsTextField.integerValue = argon2idKdf.iterations;
|
||||
self.argon2idMemory = argon2idKdf.memory;
|
||||
self.argon2idThreadsTextField.integerValue = argon2idKdf.threads;
|
||||
|
||||
if([keyDerivation isMemberOfClass:KPKAESKeyDerivation.class]) {
|
||||
/* set to database values */
|
||||
KPKAESKeyDerivation *aesKdf = (KPKAESKeyDerivation *)keyDerivation;
|
||||
self.aesEncryptionRoundsTextField.integerValue = aesKdf.rounds;
|
||||
self.createKeyDerivationParametersButton.enabled = YES;
|
||||
|
||||
/* fill defaults for Argon2 */
|
||||
KPKArgon2DKeyDerivation *argon2Kdf = [[KPKArgon2DKeyDerivation alloc] initWithParameters:[KPKArgon2DKeyDerivation defaultParameters]];
|
||||
self.argon2IterationsTextField.integerValue = argon2Kdf.iterations;
|
||||
self.argon2Memory = argon2Kdf.memory;
|
||||
self.argon2ThreadsTextField.integerValue = argon2Kdf.threads;
|
||||
}
|
||||
else if([keyDerivation isMemberOfClass:KPKArgon2DKeyDerivation.class]) {
|
||||
/* set to database value */
|
||||
KPKArgon2DKeyDerivation *argon2dKdf = (KPKArgon2DKeyDerivation *)keyDerivation;
|
||||
self.argon2dMemory = argon2dKdf.memory;
|
||||
self.argon2dThreadsTextField.integerValue = argon2dKdf.threads;
|
||||
self.argon2dIterationsTextField.integerValue = argon2dKdf.iterations;
|
||||
KPKArgon2DKeyDerivation *argon2Kdf = (KPKArgon2DKeyDerivation *)keyDerivation;
|
||||
self.argon2Memory = argon2Kdf.memory;
|
||||
self.argon2ThreadsTextField.integerValue = argon2Kdf.threads;
|
||||
self.argon2IterationsTextField.integerValue = argon2Kdf.iterations;
|
||||
|
||||
/* fill defaults for AES */
|
||||
KPKAESKeyDerivation *aesKdf = [[KPKAESKeyDerivation alloc] initWithParameters:[KPKAESKeyDerivation defaultParameters]];
|
||||
self.aesEncryptionRoundsTextField.integerValue = aesKdf.rounds;
|
||||
}
|
||||
else if([keyDerivation isMemberOfClass:KPKArgon2IDKeyDerivation.class]) {
|
||||
/* set to database value */
|
||||
KPKArgon2IDKeyDerivation *argon2idKdf = (KPKArgon2IDKeyDerivation *)keyDerivation;
|
||||
self.argon2idMemory = argon2idKdf.memory;
|
||||
self.argon2idThreadsTextField.integerValue = argon2idKdf.threads;
|
||||
self.argon2idIterationsTextField.integerValue = argon2idKdf.iterations;
|
||||
// TODO: implement setup!
|
||||
}
|
||||
else {
|
||||
NSAssert(NO, @"Unkown key derivation");
|
||||
}
|
||||
|
||||
self.argon2dMemoryStepper.minValue = 8*1024; // 8KB minimum
|
||||
self.argon2dMemoryStepper.maxValue = NSIntegerMax;
|
||||
self.argon2dMemoryStepper.increment = 1024*1024; // 1 megabytes steps
|
||||
[self.argon2dMemoryTextField bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(argon2dMemory)) options:nil];
|
||||
[self.argon2dMemoryStepper bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(argon2dMemory)) options:nil];
|
||||
|
||||
self.argon2idMemoryStepper.minValue = 8*1024; // 8KB minimum
|
||||
self.argon2idMemoryStepper.maxValue = NSIntegerMax;
|
||||
self.argon2idMemoryStepper.increment = 1024*1024; // 1 megabytes steps
|
||||
[self.argon2idMemoryTextField bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(argon2idMemory)) options:nil];
|
||||
[self.argon2idMemoryStepper bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(argon2idMemory)) options:nil];
|
||||
self.argon2MemoryStepper.minValue = 8*1024; // 8KB minimum
|
||||
self.argon2MemoryStepper.maxValue = NSIntegerMax;
|
||||
self.argon2MemoryStepper.increment = 1024*1024; // 1 megabytes steps
|
||||
[self.argon2MemoryTextField bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(argon2Memory)) options:nil];
|
||||
[self.argon2MemoryStepper bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(argon2Memory)) options:nil];
|
||||
|
||||
|
||||
NSUInteger cipherIndex = [self.cipherPopupButton.menu indexOfItemWithRepresentedObject:metaData.cipherUUID];
|
||||
[self.cipherPopupButton selectItemAtIndex:cipherIndex];
|
||||
|
||||
@@ -42,20 +42,17 @@ NSString *const kMPDocumentSearchResultsKey = @"kMPDocumentSearchResul
|
||||
- (void)enterSearchWithContext:(MPEntrySearchContext *)context {
|
||||
/* the search context is loaded via defaults */
|
||||
self.searchContext = context;
|
||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(updateSearch:) name:KPKTreeDidAddEntryNotification object:self.tree];
|
||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(updateSearch:) name:KPKTreeDidAddGroupNotification object:self.tree];
|
||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(updateSearch:) name:KPKTreeDidRemoveEntryNotification object:self.tree];
|
||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(updateSearch:) name:KPKTreeDidRemoveGroupNotification object:self.tree];
|
||||
|
||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(updateSearch:) name:NSUndoManagerDidRedoChangeNotification object:self.undoManager];
|
||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(updateSearch:) name:NSUndoManagerDidUndoChangeNotification object:self.undoManager];
|
||||
/* Do not do this since it seems to break the undo/redo grouping completly!
|
||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(updateSearch:) name:NSUndoManagerDidCloseUndoGroupNotification object:self.undoManager];
|
||||
*/
|
||||
[NSNotificationCenter.defaultCenter postNotificationName:MPDocumentDidEnterSearchNotification object:self];
|
||||
[self updateSearch:self];
|
||||
/* clear selection */
|
||||
self.selectedGroups = nil;
|
||||
self.selectedEntries = nil;
|
||||
}
|
||||
|
||||
#pragma mark Actions
|
||||
- (IBAction)performCustomSearch:(id)sender {
|
||||
- (IBAction)perfromCustomSearch:(id)sender {
|
||||
[self enterSearchWithContext:[MPEntrySearchContext userContext]];
|
||||
}
|
||||
|
||||
@@ -77,12 +74,11 @@ NSString *const kMPDocumentSearchResultsKey = @"kMPDocumentSearchResul
|
||||
}
|
||||
|
||||
- (void)exitSearch:(id)sender {
|
||||
|
||||
[NSNotificationCenter.defaultCenter removeObserver:self name:KPKTreeDidAddEntryNotification object:self.tree];
|
||||
[NSNotificationCenter.defaultCenter removeObserver:self name:KPKTreeDidAddGroupNotification object:self.tree];
|
||||
[NSNotificationCenter.defaultCenter removeObserver:self name:KPKTreeDidRemoveEntryNotification object:self.tree];
|
||||
[NSNotificationCenter.defaultCenter removeObserver:self name:KPKTreeDidRemoveGroupNotification object:self.tree];
|
||||
|
||||
[NSNotificationCenter.defaultCenter removeObserver:self name:NSUndoManagerDidUndoChangeNotification object:self.undoManager];
|
||||
[NSNotificationCenter.defaultCenter removeObserver:self name:NSUndoManagerDidRedoChangeNotification object:self.undoManager];
|
||||
/* No need to do this since we did not register in the first place see [MPDocument enterSearchWithContext:]
|
||||
[NSNotificationCenter.defaultCenter removeObserver:self name:NSUndoManagerDidCloseUndoGroupNotification object:self.undoManager];
|
||||
*/
|
||||
self.searchContext = nil;
|
||||
[NSNotificationCenter.defaultCenter postNotificationName:MPDocumentDidExitSearchNotification object:self];
|
||||
}
|
||||
|
||||
@@ -108,13 +108,13 @@ FOUNDATION_EXPORT NSString *const MPDocumentGroupKey;
|
||||
/**
|
||||
* Decrypts the database with the given password and keyfile
|
||||
*
|
||||
* @param password The password to unlock the db with, can be nil. This is not the same as an empty string @""
|
||||
* @param keyFileURL URL for the keyfile to use, can be nil
|
||||
* @param compositeKey The CompositeKey to unlock the db.
|
||||
* @param keyFileURL URL for the keyfile that was used to create the compositeKey. Can be nil.
|
||||
* @param error Pointer to an NSError pointer of error reporting.
|
||||
*
|
||||
* @return YES if the document was unlocked sucessfully, NO otherwise. Consult the error object for details
|
||||
*/
|
||||
- (BOOL)unlockWithPassword:(NSString *)password keyFileURL:(NSURL *)keyFileURL error:(NSError *__autoreleasing*)error;
|
||||
- (BOOL)unlockWithPassword:(KPKCompositeKey *)compositeKey keyFileURL:(NSURL *)keyFileURL error:(NSError *__autoreleasing*)error;
|
||||
/**
|
||||
* Changes the password of the database. Some sanity checks are applied and the change is aborted if the new values aren't valid
|
||||
*
|
||||
@@ -259,7 +259,7 @@ FOUNDATION_EXTERN NSString *const MPDocumentDidChangeSearchResults;
|
||||
FOUNDATION_EXTERN NSString *const kMPDocumentSearchResultsKey;
|
||||
|
||||
@interface MPDocument (Search)
|
||||
- (IBAction)performCustomSearch:(id)sender;
|
||||
- (IBAction)perfromCustomSearch:(id)sender;
|
||||
- (void)enterSearchWithContext:(MPEntrySearchContext *)context;
|
||||
|
||||
/* Should be called by the NSSearchTextField to update the search string */
|
||||
|
||||
@@ -240,6 +240,13 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
||||
|
||||
- (void)close {
|
||||
[self _cleanupLock];
|
||||
/*
|
||||
We store the last url. Restored windows are automatically handled.
|
||||
If closeAllDocuments is set, all docs get this message
|
||||
*/
|
||||
if(self.fileURL.isFileURL) {
|
||||
[[NSUserDefaults standardUserDefaults] setObject:self.fileURL.absoluteString forKey:kMPSettingsKeyLastDatabasePath];
|
||||
}
|
||||
self.tree = nil;
|
||||
[super close];
|
||||
}
|
||||
@@ -422,13 +429,9 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
||||
MPPasswordInputController *passwordInputController = [[MPPasswordInputController alloc] init];
|
||||
[passwordInputController requestPasswordWithMessage:NSLocalizedString(@"EXTERN_CHANGE_OF_MASTERKEY", @"The master key was changed by an external program!")
|
||||
cancelLabel:NSLocalizedString(@"ABORT_MERGE_KEEP_MINE", @"Button label to abort a merge on a file with changed master key!")
|
||||
completionHandler:^BOOL(NSString *password, NSURL *keyURL, BOOL didCancel, NSError *__autoreleasing *error) {
|
||||
completionHandler:^BOOL(KPKCompositeKey *compositeKey, NSURL* keyURL, BOOL didCancel, NSError *__autoreleasing *error) {
|
||||
[self.windowForSheet endSheet:sheet returnCode:(didCancel ? NSModalResponseCancel : NSModalResponseOK)];
|
||||
if(!didCancel) {
|
||||
NSData *keyFileData = keyURL ? [NSData dataWithContentsOfURL:keyURL] : nil;
|
||||
KPKCompositeKey *compositeKey = [[KPKCompositeKey alloc] init];
|
||||
[compositeKey addKey:[KPKKey keyWithPassword:password]];
|
||||
[compositeKey addKey:[KPKKey keyWithKeyFileData:keyFileData]];
|
||||
[self _mergeWithContentsFromURL:url key:compositeKey options:options];
|
||||
}
|
||||
// just return yes regardless since we will display the sheet again if needed!
|
||||
@@ -494,13 +497,9 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
||||
}
|
||||
|
||||
|
||||
- (BOOL)unlockWithPassword:(NSString *)password keyFileURL:(NSURL *)keyFileURL error:(NSError *__autoreleasing*)error {
|
||||
- (BOOL)unlockWithPassword:(KPKCompositeKey *)compositeKey keyFileURL:(NSURL *)keyFileURL error:(NSError *__autoreleasing*)error{
|
||||
// TODO: Make this API asynchronous
|
||||
NSData *keyFileData = keyFileURL ? [NSData dataWithContentsOfURL:keyFileURL] : nil;
|
||||
|
||||
self.compositeKey = [[KPKCompositeKey alloc] init];
|
||||
[self.compositeKey addKey:[KPKKey keyWithPassword:password]];
|
||||
[self.compositeKey addKey:[KPKKey keyWithKeyFileData:keyFileData]];
|
||||
self.compositeKey = compositeKey;
|
||||
self.tree = [[KPKTree alloc] initWithData:self.encryptedData key:self.compositeKey error:error];
|
||||
|
||||
BOOL isUnlocked = (nil != self.tree);
|
||||
@@ -674,9 +673,8 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
||||
|
||||
KPKEntry *newEntry = [self.tree createEntry:parent];
|
||||
/* setting properties on entries is undoable, but we do not want to record this so disable on creation */
|
||||
|
||||
KPK_SCOPED_DISABLE_UNDO_BEGIN(self.undoManager)
|
||||
|
||||
BOOL wasUndoEnabeld = self.undoManager.isUndoRegistrationEnabled;
|
||||
[self.undoManager disableUndoRegistration];
|
||||
newEntry.title = NSLocalizedString(@"DEFAULT_ENTRY_TITLE", @"Title for a newly created entry");
|
||||
if([self.tree.metaData.defaultUserName length] > 0) {
|
||||
newEntry.username = self.tree.metaData.defaultUserName;
|
||||
@@ -690,9 +688,10 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
||||
newEntry.password = defaultPassword;
|
||||
}
|
||||
}
|
||||
|
||||
KPK_SCOPED_DISABLE_UNDO_END
|
||||
|
||||
/* re-enable undo/redo if we did turn it off */
|
||||
if(wasUndoEnabeld) {
|
||||
[self.undoManager enableUndoRegistration];
|
||||
}
|
||||
[newEntry addToGroup:parent];
|
||||
[newEntry.undoManager setActionName:NSLocalizedString(@"NEW_ENTRY", "Action name for a newly created entry")];
|
||||
[NSNotificationCenter.defaultCenter postNotificationName:MPDocumentDidAddEntryNotification
|
||||
@@ -710,13 +709,14 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
||||
}
|
||||
KPKGroup *newGroup = [self.tree createGroup:parent];
|
||||
/* setting properties on entries is undoable, but we do not want to record this so disable on creation */
|
||||
KPK_SCOPED_DISABLE_UNDO_BEGIN(self.undoManager);
|
||||
|
||||
BOOL wasUndoEnabeld = self.undoManager.isUndoRegistrationEnabled;
|
||||
[self.undoManager disableUndoRegistration];
|
||||
newGroup.title = NSLocalizedString(@"DEFAULT_GROUP_NAME", @"Title for a newly created group");
|
||||
newGroup.iconId = MPIconFolder;
|
||||
|
||||
KPK_SCOPED_DISABLE_UNDO_END;
|
||||
|
||||
/* re-enable undo/redo if we did turn it off */
|
||||
if(wasUndoEnabeld) {
|
||||
[self.undoManager enableUndoRegistration];
|
||||
}
|
||||
[newGroup addToGroup:parent];
|
||||
[newGroup.undoManager setActionName:NSLocalizedString(@"NEW_GROUP", "Action name for a newly created group")];
|
||||
[NSNotificationCenter.defaultCenter postNotificationName:MPDocumentDidAddGroupNotification
|
||||
@@ -844,16 +844,16 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
||||
}
|
||||
|
||||
- (void)duplicateEntryWithOptions:(KPKCopyOptions)options {
|
||||
KPKEntry *lastDuplicate;
|
||||
KPKEntry *duplicate;
|
||||
for(KPKEntry *entry in self.selectedEntries) {
|
||||
lastDuplicate = [entry copyWithTitle:nil options:options];
|
||||
[lastDuplicate addToGroup:entry.parent];
|
||||
duplicate = [entry copyWithTitle:nil options:options];
|
||||
[duplicate addToGroup:entry.parent];
|
||||
}
|
||||
[self.undoManager setActionName:[NSString stringWithFormat:NSLocalizedString(@"DUPLICATE_ENTRIES_ACTION_NAME", @"Action name for duplicating entries"), self.selectedEntries.count]];
|
||||
if(lastDuplicate) {
|
||||
if(duplicate) {
|
||||
[NSNotificationCenter.defaultCenter postNotificationName:MPDocumentDidAddEntryNotification
|
||||
object:self
|
||||
userInfo:@{ MPDocumentEntryKey: lastDuplicate }];
|
||||
userInfo:@{ MPDocumentEntryKey: duplicate }];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -31,8 +31,6 @@
|
||||
#import "KeePassKit/KeePassKit.h"
|
||||
#import "KPKFormat+MPUTIDetection.h"
|
||||
|
||||
#import "NSApplication+MPAdditions.h"
|
||||
|
||||
@interface MPDocumentController ()
|
||||
|
||||
@property (strong) IBOutlet NSView *accessoryView;
|
||||
@@ -45,14 +43,6 @@
|
||||
|
||||
@implementation MPDocumentController
|
||||
|
||||
- (BOOL)hasEditedDocuments {
|
||||
MPAppDelegate *delegate = NSApp.mp_delegate;
|
||||
if(delegate.isTerminating) {
|
||||
// store all open documents once?!
|
||||
}
|
||||
return [super hasEditedDocuments];
|
||||
}
|
||||
|
||||
- (void)beginOpenPanel:(NSOpenPanel *)openPanel forTypes:(NSArray *)inTypes completionHandler:(void (^)(NSInteger))completionHandler {
|
||||
self.openPanel = openPanel;
|
||||
if(!self.accessoryView) {
|
||||
@@ -93,16 +83,6 @@
|
||||
[super addDocument:document];
|
||||
}
|
||||
|
||||
- (void)removeDocument:(NSDocument *)document {
|
||||
MPAppDelegate *appDelegate = (MPAppDelegate *)NSApp.delegate;
|
||||
if(appDelegate.isTerminating) {
|
||||
if(document.fileURL.isFileURL) {
|
||||
[[NSUserDefaults standardUserDefaults] setObject:document.fileURL.absoluteString forKey:kMPSettingsKeyLastDatabasePath];
|
||||
}
|
||||
}
|
||||
[super removeDocument:document];
|
||||
}
|
||||
|
||||
- (BOOL)reopenLastDocument {
|
||||
if(self.documents.count > 0) {
|
||||
return YES; // The document is already open
|
||||
@@ -113,12 +93,7 @@
|
||||
}
|
||||
else {
|
||||
NSString *lastPath = [NSUserDefaults.standardUserDefaults stringForKey:kMPSettingsKeyLastDatabasePath];
|
||||
documentUrl = [NSURL URLWithString:lastPath];
|
||||
NSError *error;
|
||||
if(![documentUrl checkResourceIsReachableAndReturnError:&error]) {
|
||||
[NSUserDefaults.standardUserDefaults removeObjectForKey:kMPSettingsKeyLastDatabasePath];
|
||||
documentUrl = nil;
|
||||
}
|
||||
documentUrl =[NSURL URLWithString:lastPath];
|
||||
}
|
||||
BOOL isFileURL = documentUrl.fileURL;
|
||||
if(isFileURL) {
|
||||
|
||||
@@ -100,17 +100,9 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
||||
[super windowDidLoad];
|
||||
|
||||
self.window.delegate = self.documentWindowDelegate;
|
||||
//self.window.styleMask |= NSWindowStyleMaskFullSizeContentView;
|
||||
if (@available(macOS 11.0, *)) {
|
||||
/* let the user decide how to dipsplay the toolbar */
|
||||
BOOL useUnifiedToolbar = [NSUserDefaults.standardUserDefaults boolForKey:kMPSettingsKeyUseUnifiedToolbar];
|
||||
if(useUnifiedToolbar) {
|
||||
self.window.toolbarStyle = NSWindowToolbarStyleAutomatic;
|
||||
// Do not use full size since the sidebar takes too much room!
|
||||
// self.window.styleMask |= NSWindowStyleMaskFullSizeContentView;
|
||||
}
|
||||
else {
|
||||
self.window.toolbarStyle = NSWindowToolbarStyleExpanded;
|
||||
}
|
||||
self.window.toolbarStyle = NSWindowToolbarStyleExpanded;
|
||||
}
|
||||
[self.window registerForDraggedTypes:@[NSURLPboardType]];
|
||||
|
||||
@@ -164,8 +156,8 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
||||
/* enqueue async into main to catch some cases, where the UI would not set the responder correctly */
|
||||
MPDocumentWindowController * __weak welf = self;
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
NSResponder *responder = ((MPViewController *)contentViewController).reconmendedFirstResponder;
|
||||
[welf.window makeFirstResponder:responder];
|
||||
NSResponder *responder = ((MPViewController *)contentViewController).reconmendedFirstResponder;
|
||||
[welf.window makeFirstResponder:responder];
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -189,10 +181,6 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
||||
|
||||
- (void)_didUnlockDatabase:(NSNotification *)notification {
|
||||
[self showEntries];
|
||||
BOOL focusSearchAfterUnlock = [NSUserDefaults.standardUserDefaults boolForKey:kMPSettingsKeyFocusSearchAfterUnlock];
|
||||
if(focusSearchAfterUnlock) {
|
||||
[self.document performCustomSearch:self];
|
||||
}
|
||||
/* Show password reminders */
|
||||
[self _presentPasswordIntervalAlerts];
|
||||
}
|
||||
@@ -337,12 +325,11 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
||||
self.passwordInputController = [[MPPasswordInputController alloc] init];
|
||||
}
|
||||
self.contentViewController = self.passwordInputController;
|
||||
[self.passwordInputController requestPasswordWithMessage:message cancelLabel:nil completionHandler:^BOOL(NSString *password, NSURL *keyURL, BOOL didCancel, NSError *__autoreleasing *error) {
|
||||
[self.passwordInputController requestPasswordWithMessage:message cancelLabel:nil completionHandler:^BOOL(KPKCompositeKey* compositeKey, NSURL* keyURL, BOOL didCancel, NSError *__autoreleasing *error) {
|
||||
if(didCancel) {
|
||||
return NO;
|
||||
}
|
||||
return [((MPDocument *)self.document) unlockWithPassword:password keyFileURL:keyURL error:error];
|
||||
|
||||
return [((MPDocument *)self.document) unlockWithPassword:compositeKey keyFileURL:keyURL error:error ];
|
||||
}];
|
||||
}
|
||||
|
||||
@@ -443,7 +430,7 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
||||
|
||||
- (void)pickExpiryDate:(id)sender {
|
||||
// FIXME: use propert responder chain
|
||||
[self.splitViewController.inspectorViewController pickExpiryDate:sender];
|
||||
[self.splitViewController.inspectorViewController pickExpiryDate:sender];
|
||||
}
|
||||
|
||||
- (void)showPluginData:(id)sender {
|
||||
@@ -487,6 +474,7 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
||||
- (void)showEntries {
|
||||
self.contentViewController = self.splitViewController;
|
||||
[self.splitViewController showOutline];
|
||||
|
||||
}
|
||||
|
||||
- (void)showGroupInOutline:(id)sender {
|
||||
|
||||
@@ -28,12 +28,13 @@
|
||||
@implementation MPDocumentWindowDelegate
|
||||
|
||||
- (NSDragOperation)draggingEntered:(id<NSDraggingInfo>)sender {
|
||||
MPDocument *document = sender.draggingDestinationWindow.windowController.document;
|
||||
|
||||
MPDocument *document = [[[sender draggingDestinationWindow] windowController] document];
|
||||
if(document.encrypted) {
|
||||
return NSDragOperationNone;
|
||||
}
|
||||
|
||||
NSPasteboard *draggingPasteBoard = sender.draggingPasteboard;
|
||||
NSPasteboard *draggingPasteBoard = [sender draggingPasteboard];
|
||||
|
||||
NSArray *arrayOfURLs = [draggingPasteBoard readObjectsForClasses:@[NSURL.class] options:nil];
|
||||
BOOL ok = YES;
|
||||
@@ -51,7 +52,7 @@
|
||||
}
|
||||
|
||||
- (BOOL)performDragOperation:(id<NSDraggingInfo>)sender {
|
||||
NSPasteboard *draggingPasteBoard = sender.draggingPasteboard;
|
||||
NSPasteboard *draggingPasteBoard = [sender draggingPasteboard];
|
||||
NSArray *arrayOfURLs = [draggingPasteBoard readObjectsForClasses:@[NSURL.class] options:nil];
|
||||
|
||||
NSURL *url = arrayOfURLs.lastObject;
|
||||
@@ -59,7 +60,7 @@
|
||||
return NO;
|
||||
}
|
||||
/* Currently not working, as the underlying operations do not get the undomanager */
|
||||
MPDocument *document = sender.draggingDestinationWindow.windowController.document;
|
||||
MPDocument *document = [sender draggingDestinationWindow].windowController.document;
|
||||
KPKGroup *parentGroup = document.selectedGroups.count == 1 ? document.selectedGroups.firstObject : document.root;
|
||||
[document.undoManager beginUndoGrouping];
|
||||
KPKEntry *entry = [document createEntry:parentGroup];
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
//
|
||||
// MPEntryAttributeViewController.h
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 14.10.21.
|
||||
// Copyright © 2021 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import <HNHUi/HNHUi.h>
|
||||
#import "MPInspectorEditor.h"
|
||||
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
|
||||
/// View controller to show and edit KPKAttributes of KPKEntries.
|
||||
/// Set the represented object to the KPKAttribute the editor shoudl show/edit
|
||||
/// The editor can be set to edit or view
|
||||
@interface MPEntryAttributeViewController : NSViewController <MPInspectorEditor, HNHUITextFieldDelegate>
|
||||
|
||||
@property (strong) IBOutlet NSTextField *keyTextField;
|
||||
@property (strong) IBOutlet HNHUISecureTextField *valueTextField;
|
||||
@property (strong) IBOutlet NSButton *toggleProtectedButton;
|
||||
@property (strong) IBOutlet NSButton *removeButton;
|
||||
|
||||
- (void)updateValues;
|
||||
- (void)updateEditing;
|
||||
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -1,156 +0,0 @@
|
||||
//
|
||||
// MPEntryAttributeViewController.m
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 14.10.21.
|
||||
// Copyright © 2021 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import "MPEntryAttributeViewController.h"
|
||||
#import <HNHUi/HNHUi.h>
|
||||
#import <KeePassKit/KeePassKit.h>
|
||||
#import "MPPasteBoardController.h"
|
||||
|
||||
@interface MPEntryAttributeViewController () {
|
||||
BOOL _isDefaultAttribute;
|
||||
}
|
||||
@property (readonly, nullable, strong) KPKAttribute *representedAttribute;
|
||||
|
||||
@end
|
||||
|
||||
@implementation MPEntryAttributeViewController
|
||||
|
||||
@synthesize isEditor = _isEditor;
|
||||
|
||||
- (instancetype)initWithNibName:(NSNibName)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
|
||||
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
|
||||
if(self) {
|
||||
_isEditor = NO;
|
||||
_isDefaultAttribute = NO;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (instancetype)initWithCoder:(NSCoder *)coder {
|
||||
self = [super initWithCoder:coder];
|
||||
// set editor to false?
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
NSString *placeHolder = NSLocalizedString(@"NONE", "Placeholder text for input fields if no entry or group is selected");
|
||||
self.keyTextField.placeholderString = placeHolder;
|
||||
self.valueTextField.placeholderString = placeHolder;
|
||||
|
||||
self.toggleProtectedButton.action = @selector(toggleDisplay:);
|
||||
self.toggleProtectedButton.target = self.valueTextField;
|
||||
|
||||
[self updateValues];
|
||||
[self updateEditing];
|
||||
|
||||
__weak MPEntryAttributeViewController *welf = self;
|
||||
self.valueTextField.buttonTitle = NSLocalizedString(@"COPY", "Button to copy the value of an Attribute");
|
||||
self.valueTextField.buttonActionBlock = ^void(NSTextField *tf) {
|
||||
NSText *text = [welf.view.window fieldEditor:NO forObject:welf.valueTextField];
|
||||
if([text isKindOfClass:NSTextView.class]) {
|
||||
[welf textField:welf.valueTextField textView:(NSTextView *)text performAction:@selector(copy:)];
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
- (KPKAttribute *)representedAttribute {
|
||||
if([self.representedObject isKindOfClass:KPKAttribute.class]) {
|
||||
return (KPKAttribute *)self.representedObject;
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (void)setIsEditor:(BOOL)isEditor {
|
||||
_isEditor = isEditor;
|
||||
[self updateEditing];
|
||||
}
|
||||
|
||||
- (void)setRepresentedObject:(id)representedObject {
|
||||
if(self.representedAttribute) {
|
||||
[NSNotificationCenter.defaultCenter removeObserver:self name:KPKWillChangeAttributeNotification object:self.representedObject];
|
||||
[NSNotificationCenter.defaultCenter removeObserver:self name:KPKDidChangeAttributeNotification object:self.representedObject];
|
||||
}
|
||||
super.representedObject = representedObject;
|
||||
if(self.representedAttribute) {
|
||||
[NSNotificationCenter.defaultCenter addObserver:self
|
||||
selector:(@selector(_willChangeAttribute:))
|
||||
name:KPKWillChangeAttributeNotification
|
||||
object:self.representedAttribute];
|
||||
[NSNotificationCenter.defaultCenter addObserver:self
|
||||
selector:(@selector(_didChangeAttribute:))
|
||||
name:KPKDidChangeAttributeNotification
|
||||
object:self.representedAttribute];
|
||||
|
||||
}
|
||||
_isDefaultAttribute = self.representedAttribute.isDefault;
|
||||
[self updateValues];
|
||||
}
|
||||
|
||||
- (BOOL)textField:(NSTextField *)textField textView:(NSTextView *)textView performAction:(SEL)action {
|
||||
if(action != @selector(copy:)) {
|
||||
return YES;
|
||||
}
|
||||
|
||||
// Only copy action
|
||||
MPPasteboardOverlayInfoType info = MPPasteboardOverlayInfoCustom;
|
||||
NSMutableString *selectedValue = [[NSMutableString alloc] init];
|
||||
for(NSValue *rangeValue in textView.selectedRanges) {
|
||||
[selectedValue appendString:[textView.string substringWithRange:rangeValue.rangeValue]];
|
||||
}
|
||||
if(selectedValue.length == 0) {
|
||||
[selectedValue setString:textField.stringValue];
|
||||
}
|
||||
NSString *name = @"";
|
||||
if([self.representedAttribute.key isEqual:kKPKUsernameKey]) {
|
||||
info = MPPasteboardOverlayInfoUsername;
|
||||
}
|
||||
/*else if([self.representedAttribute.key isEqual:kKPKPasswordKey]) {
|
||||
info = MPPasteboardOverlayInfoPassword;
|
||||
}
|
||||
*/
|
||||
else if([self.representedAttribute.key isEqual:kKPKURLKey]) {
|
||||
info = MPPasteboardOverlayInfoURL;
|
||||
}
|
||||
else if([self.representedAttribute.key isEqual:kKPKTitleKey]) {
|
||||
name = NSLocalizedString(@"TITLE", "Displayed name when title field was copied");
|
||||
}
|
||||
else {
|
||||
name = self.representedAttribute.key;
|
||||
}
|
||||
[MPPasteBoardController.defaultController copyObject:selectedValue overlayInfo:info name:name atView:self.view];
|
||||
return NO;
|
||||
}
|
||||
|
||||
|
||||
- (void)_willChangeAttribute:(NSNotification *)notification {
|
||||
// nothing to d
|
||||
}
|
||||
|
||||
- (void)_didChangeAttribute:(NSNotification *)notification {
|
||||
[self updateValues];
|
||||
}
|
||||
|
||||
- (void)updateValues {
|
||||
self.view.hidden = (!self.isEditor && self.representedAttribute.value.length == 0);
|
||||
self.keyTextField.stringValue = self.representedAttribute.key ? self.representedAttribute.key : @"";
|
||||
self.valueTextField.stringValue = self.representedAttribute.value ? self.representedAttribute.value : @"";
|
||||
self.valueTextField.showPassword = !self.representedAttribute.protect;
|
||||
}
|
||||
|
||||
- (void)updateEditing {
|
||||
self.keyTextField.editable = !_isDefaultAttribute && self.isEditor;
|
||||
self.valueTextField.editable = self.isEditor;
|
||||
self.keyTextField.selectable = YES;
|
||||
self.valueTextField.selectable = YES;
|
||||
self.toggleProtectedButton.hidden = _isDefaultAttribute;
|
||||
self.removeButton.hidden = !self.isEditor || (self.isEditor && !_isDefaultAttribute);
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -1,100 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="18122" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="18122"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="MPEntryAttributeViewController">
|
||||
<connections>
|
||||
<outlet property="keyTextField" destination="m8q-FN-S8D" id="HzJ-cd-ifA"/>
|
||||
<outlet property="removeButton" destination="Nmx-gC-8rG" id="eRy-l0-u0E"/>
|
||||
<outlet property="toggleProtectedButton" destination="hAk-oD-dCj" id="js9-Hx-ycS"/>
|
||||
<outlet property="valueTextField" destination="HZM-H4-dB4" id="56C-eA-J7G"/>
|
||||
<outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView id="Hz6-mo-xeY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="251" height="43"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<stackView distribution="fill" orientation="vertical" alignment="leading" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="No7-P9-4cl">
|
||||
<rect key="frame" x="0.0" y="0.0" width="251" height="43"/>
|
||||
<subviews>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="m8q-FN-S8D">
|
||||
<rect key="frame" x="-2" y="29" width="255" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="AttributeName" id="MQc-TE-UjE">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<stackView distribution="fill" orientation="horizontal" alignment="top" spacing="5" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="LBt-0e-cUK">
|
||||
<rect key="frame" x="0.0" y="0.0" width="251" height="21"/>
|
||||
<subviews>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="HZM-H4-dB4" customClass="HNHUISecureTextField">
|
||||
<rect key="frame" x="0.0" y="0.0" width="181" height="21"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="sO3-xr-VwO">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="-2" id="Dm6-8t-HmN"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="hAk-oD-dCj">
|
||||
<rect key="frame" x="179" y="-6" width="44" height="32"/>
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSLockLockedTemplate" imagePosition="only" alignment="center" alternateImage="NSLockUnlockedTemplate" lineBreakMode="truncatingTail" borderStyle="border" inset="2" id="f80-K9-DO7">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Nmx-gC-8rG">
|
||||
<rect key="frame" x="214" y="-6" width="44" height="32"/>
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSRemoveTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="179-uk-89S">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
</subviews>
|
||||
<visibilityPriorities>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
</visibilityPriorities>
|
||||
<customSpacing>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
</customSpacing>
|
||||
</stackView>
|
||||
</subviews>
|
||||
<visibilityPriorities>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
</visibilityPriorities>
|
||||
<customSpacing>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
</customSpacing>
|
||||
</stackView>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="No7-P9-4cl" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="0cj-uh-lAy"/>
|
||||
<constraint firstAttribute="trailing" secondItem="No7-P9-4cl" secondAttribute="trailing" id="Awb-Of-fpP"/>
|
||||
<constraint firstAttribute="bottom" secondItem="No7-P9-4cl" secondAttribute="bottom" id="MX2-as-4EI"/>
|
||||
<constraint firstItem="No7-P9-4cl" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" id="mbE-gq-jDF"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="-434.5" y="134"/>
|
||||
</customView>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSLockLockedTemplate" width="14" height="15"/>
|
||||
<image name="NSLockUnlockedTemplate" width="17" height="15"/>
|
||||
<image name="NSRemoveTemplate" width="14" height="4"/>
|
||||
</resources>
|
||||
</document>
|
||||
@@ -33,8 +33,6 @@
|
||||
#import "MPReferenceBuilderViewController.h"
|
||||
#import "MPTOTPViewController.h"
|
||||
#import "MPTOTPSetupViewController.h"
|
||||
#import "MPEntryAttributeViewController.h"
|
||||
#import "MPNodeExpirationViewController.h"
|
||||
|
||||
#import "MPPrettyPasswordTransformer.h"
|
||||
#import "NSString+MPPasswordCreation.h"
|
||||
@@ -61,18 +59,6 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
||||
MPEntryTabAutotype
|
||||
};
|
||||
|
||||
typedef NS_ENUM(NSUInteger, MPInpspectorEditorIndex) {
|
||||
MPInpspectorEditorIndexImageEditor,
|
||||
MPInpspectorEditorIndexTitle,
|
||||
MPInpspectorEditorIndexUsername,
|
||||
MPInpspectorEditorIndexPassword,
|
||||
MPInpspectorEditorIndexURL,
|
||||
MPInpspectorEditorIndexExpires,
|
||||
MPInpspectorEditorIndexTags,
|
||||
MPInpspectorEditorIndexDefaultCount
|
||||
};
|
||||
|
||||
|
||||
@interface NSObject (MPAppKitPrivateAPI)
|
||||
- (void)_searchWithGoogleFromMenu:(id)obj;
|
||||
@end
|
||||
@@ -89,7 +75,6 @@ typedef NS_ENUM(NSUInteger, MPInpspectorEditorIndex) {
|
||||
MPWindowTitleComboBoxDelegate *_windowTitleMenuDelegate;
|
||||
MPTagsTokenFieldDelegate *_tagTokenFieldDelegate;
|
||||
MPAddCustomFieldContextMenuDelegate *_addCustomFieldContextMenuDelegate;
|
||||
NSMutableArray<NSViewController<MPInspectorEditor> *> *_attributeEditorViewControllers;
|
||||
}
|
||||
|
||||
@property (nonatomic, assign) BOOL showPassword;
|
||||
@@ -126,7 +111,6 @@ typedef NS_ENUM(NSUInteger, MPInpspectorEditorIndex) {
|
||||
_customFieldTableDelegate.viewController = self;
|
||||
_addCustomFieldContextMenuDelegate.viewController = self;
|
||||
|
||||
_attributeEditorViewControllers = [[NSMutableArray alloc] init];
|
||||
_activeTab = MPEntryTabGeneral;
|
||||
}
|
||||
return self;
|
||||
@@ -140,19 +124,8 @@ typedef NS_ENUM(NSUInteger, MPInpspectorEditorIndex) {
|
||||
}
|
||||
|
||||
- (void)setRepresentedObject:(id)representedObject {
|
||||
if(self.representedObject) {
|
||||
[NSNotificationCenter.defaultCenter removeObserver:self name:KPKWillChangeEntryNotification object:self.representedEntry];
|
||||
[NSNotificationCenter.defaultCenter removeObserver:self name:KPKDidChangeEntryNotification object:self.representedEntry];
|
||||
}
|
||||
super.representedObject = representedObject;
|
||||
|
||||
[self _updateEditors];
|
||||
|
||||
/* only register for a single entry! */
|
||||
if(self.representedEntry) {
|
||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_willChangeEntry:) name:KPKWillChangeEntryNotification object:self.representedEntry];
|
||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didChangeEntry:) name:KPKDidChangeEntryNotification object:self.representedEntry];
|
||||
}
|
||||
self.totpViewController.representedObject = self.representedObject;
|
||||
}
|
||||
|
||||
- (void)viewDidLoad {
|
||||
@@ -211,12 +184,11 @@ typedef NS_ENUM(NSUInteger, MPInpspectorEditorIndex) {
|
||||
[self.togglePassword bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(showPassword)) options:nil];
|
||||
|
||||
self.tagsTokenField.delegate = _tagTokenFieldDelegate;
|
||||
|
||||
[self _setupAttributeEditors];
|
||||
[self _updateEditors];
|
||||
|
||||
[self _setupTOPTView];
|
||||
[self _setupCustomFieldsButton];
|
||||
[self _setupViewBindings];
|
||||
[self _updateFieldVisibilty];
|
||||
}
|
||||
|
||||
- (void)registerNotificationsForDocument:(MPDocument *)document {
|
||||
@@ -492,10 +464,6 @@ typedef NS_ENUM(NSUInteger, MPInpspectorEditorIndex) {
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark Entry Selection
|
||||
- (void)_updateEntryValues {
|
||||
// TODO implement binding less model update
|
||||
}
|
||||
|
||||
- (void)_setupViewBindings {
|
||||
/* Disable for history view */
|
||||
NSArray *inputs = @[self.titleTextField,
|
||||
@@ -626,39 +594,17 @@ typedef NS_ENUM(NSUInteger, MPInpspectorEditorIndex) {
|
||||
//[self.addCustomFieldButton setEnabled:NO forSegment:MPContextButtonSegmentContextButton];
|
||||
}
|
||||
|
||||
- (void)_setupAttributeEditors {
|
||||
- (void)_updateFieldVisibilty {
|
||||
|
||||
}
|
||||
|
||||
- (void)_setupTOPTView {
|
||||
self.totpViewController = [[MPTOTPViewController alloc] init];
|
||||
|
||||
NSInteger urlindex = [self.fieldsStackView.arrangedSubviews indexOfObject:self.URLTextField];
|
||||
NSAssert(urlindex != NSNotFound, @"Missing reference view. This should not happen!");
|
||||
[self addChildViewController:self.totpViewController];
|
||||
[self.fieldsStackView insertArrangedSubview:self.totpViewController.view atIndex:urlindex - 1];
|
||||
|
||||
/*
|
||||
MPNodeExpirationViewController *vc = [[MPNodeExpirationViewController alloc] init];
|
||||
vc.isEditor = NO;
|
||||
[_attributeEditorViewControllers addObject:vc];
|
||||
[self.fieldsStackView addArrangedSubview:vc.view];
|
||||
|
||||
MPEntryAttributeViewController *vc = [[MPEntryAttributeViewController alloc] init];
|
||||
vc.isEditor = NO;
|
||||
[_attributeEditorViewControllers addObject:vc];
|
||||
[self.fieldsStackView addArrangedSubview:vc.view];
|
||||
|
||||
for(NSUInteger index = 0; index < kKPKDefaultEntryKeysCount; index++) {
|
||||
MPEntryAttributeViewController *vc = [[MPEntryAttributeViewController alloc] init];
|
||||
vc.isEditor = NO;
|
||||
[_attributeEditorViewControllers addObject:vc];
|
||||
[self.fieldsStackView addArrangedSubview:vc.view];
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
- (void)_updateEditors {
|
||||
self.totpViewController.representedObject = self.representedObject;
|
||||
/* Update all the Attribute editors
|
||||
_attributeEditorViewControllers[MPInpspectorEditorIndexUsername].representedObject = [self.representedEntry attributeWithKey:kKPKUsernameKey];
|
||||
*/
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
@@ -752,19 +698,6 @@ typedef NS_ENUM(NSUInteger, MPInpspectorEditorIndex) {
|
||||
#pragma mark -
|
||||
#pragma mark KPKEntry Notifications
|
||||
|
||||
- (void)_willChangeEntry:(NSNotification *)notification {
|
||||
NSLog(@"willChangeEntry");
|
||||
}
|
||||
|
||||
- (void)_didChangeEntry:(NSNotification *)notification {
|
||||
if(notification.object != self.representedObject) {
|
||||
NSLog(@"Skipping: didChangeEntry:%@, we do not need this change!", notification.object);
|
||||
return;
|
||||
}
|
||||
NSLog(@"didChangeEntry:%@", notification.object);
|
||||
[self _updateEntryValues];
|
||||
}
|
||||
|
||||
- (void)_didChangeAttribute:(NSNotification *)notification {
|
||||
}
|
||||
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
//
|
||||
// MPEntryPasswordAttributeViewController.h
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 18.10.21.
|
||||
// Copyright © 2021 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import "MPEntryAttributeViewController.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface MPEntryPasswordAttributeViewController : MPEntryAttributeViewController
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -1,37 +0,0 @@
|
||||
//
|
||||
// MPEntryPasswordAttributeViewController.m
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 18.10.21.
|
||||
// Copyright © 2021 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import "MPEntryPasswordAttributeViewController.h"
|
||||
#import <HNHUi/HNHUi.h>
|
||||
#import <KeePassKit/KeePassKit.h>
|
||||
|
||||
@interface MPEntryPasswordAttributeViewController ()
|
||||
|
||||
@property (strong) IBOutlet HNHUISecureTextField *passwordTextField;
|
||||
@property (strong) IBOutlet NSButton *togglePasswordButton;
|
||||
@property (strong) IBOutlet NSButton *generatePasswordButton;
|
||||
|
||||
@property (strong, nullable, readonly) KPKAttribute *representedAttribute;
|
||||
|
||||
@end
|
||||
|
||||
@implementation MPEntryPasswordAttributeViewController
|
||||
|
||||
- (void)updateValues {
|
||||
self.view.hidden = (!self.isEditor && self.representedAttribute.value.length == 0);
|
||||
self.passwordTextField.stringValue = self.representedAttribute.value ? self.representedAttribute.value : @"";
|
||||
}
|
||||
|
||||
- (void)updateEditing {
|
||||
self.generatePasswordButton.hidden = !self.isEditor;
|
||||
self.passwordTextField.editable = self.isEditor;
|
||||
self.passwordTextField.selectable = YES;
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
@@ -1,104 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="18122" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="18122"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="MPEntryPasswordAttributeViewController">
|
||||
<connections>
|
||||
<outlet property="generatePasswordButton" destination="UlI-yI-Sqn" id="sKR-Rd-2LC"/>
|
||||
<outlet property="keyTextField" destination="2aN-Ps-z4K" id="ua7-Km-K5o"/>
|
||||
<outlet property="passwordTextField" destination="tpF-hp-29r" id="2pM-fr-9l0"/>
|
||||
<outlet property="togglePasswordButton" destination="AY0-XE-8S7" id="IwM-pB-tQn"/>
|
||||
<outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView id="Hz6-mo-xeY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="480" height="42"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<stackView distribution="fill" orientation="vertical" alignment="leading" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="jTp-ga-xuT">
|
||||
<rect key="frame" x="0.0" y="0.0" width="480" height="42"/>
|
||||
<subviews>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="2aN-Ps-z4K">
|
||||
<rect key="frame" x="-2" y="28" width="484" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Password" id="Piv-zL-dtc">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<stackView distribution="fill" orientation="horizontal" alignment="centerY" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" horizontalHuggingPriority="249" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="XRh-Fs-reW">
|
||||
<rect key="frame" x="0.0" y="0.0" width="480" height="20"/>
|
||||
<subviews>
|
||||
<secureTextField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" contentType="oneTimeCode" translatesAutoresizingMaskIntoConstraints="NO" id="tpF-hp-29r" customClass="HNHUISecureTextField">
|
||||
<rect key="frame" x="0.0" y="0.0" width="352" height="20"/>
|
||||
<secureTextFieldCell key="cell" lineBreakMode="truncatingTail" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="CeT-F7-Vb3">
|
||||
<font key="font" size="13" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
<allowedInputSourceLocales>
|
||||
<string>NSAllRomanInputSourcesLocaleIdentifier</string>
|
||||
</allowedInputSourceLocales>
|
||||
</secureTextFieldCell>
|
||||
<connections>
|
||||
<outlet property="nextKeyView" destination="AY0-XE-8S7" id="uPk-2E-Bwh"/>
|
||||
</connections>
|
||||
</secureTextField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="AY0-XE-8S7">
|
||||
<rect key="frame" x="353" y="-7" width="50" height="32"/>
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSQuickLookTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="NUE-lS-hzr">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<outlet property="nextKeyView" destination="UlI-yI-Sqn" id="6uu-J3-TEc"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="UlI-yI-Sqn">
|
||||
<rect key="frame" x="397" y="-7" width="90" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Generate" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Rx9-ck-eKo">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
</subviews>
|
||||
<visibilityPriorities>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
</visibilityPriorities>
|
||||
<customSpacing>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
</customSpacing>
|
||||
</stackView>
|
||||
</subviews>
|
||||
<visibilityPriorities>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
</visibilityPriorities>
|
||||
<customSpacing>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
</customSpacing>
|
||||
</stackView>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" secondItem="jTp-ga-xuT" secondAttribute="trailing" id="8qT-FW-gVh"/>
|
||||
<constraint firstItem="jTp-ga-xuT" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="Hla-na-Bw8"/>
|
||||
<constraint firstAttribute="bottom" secondItem="jTp-ga-xuT" secondAttribute="bottom" id="pcp-4W-Bvc"/>
|
||||
<constraint firstItem="jTp-ga-xuT" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" id="wEy-tv-xz0"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="173" y="112"/>
|
||||
</customView>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSQuickLookTemplate" width="21" height="13"/>
|
||||
</resources>
|
||||
</document>
|
||||
@@ -49,8 +49,6 @@
|
||||
|
||||
#import "HNHUi/HNHUi.h"
|
||||
|
||||
#import "MPOpenURLHandler.h"
|
||||
|
||||
#import "MPNotifications.h"
|
||||
|
||||
#define STATUS_BAR_ANIMATION_TIME 0.15
|
||||
@@ -71,7 +69,6 @@ NSString *const MPEntryTableHistoryColumnIdentifier = @"MPEntryTableHistoryColum
|
||||
NSString *const _MPTableImageCellView = @"ImageCell";
|
||||
NSString *const _MPTableStringCellView = @"StringCell";
|
||||
NSString *const _MPTableSecurCellView = @"PasswordCell";
|
||||
NSString *const _MPTableMonoSpacedStringCellView = @"MonospacedStringCell";
|
||||
|
||||
@interface MPEntryViewController () {
|
||||
BOOL _isDisplayingContextBar;
|
||||
@@ -79,6 +76,7 @@ NSString *const _MPTableMonoSpacedStringCellView = @"MonospacedStringCell";
|
||||
}
|
||||
|
||||
@property (strong) MPContextBarViewController *contextBarViewController;
|
||||
@property (strong) NSArray *filteredEntries;
|
||||
|
||||
@property (weak) IBOutlet NSTableView *entryTable;
|
||||
@property (assign) MPDisplayMode displayMode;
|
||||
@@ -89,7 +87,6 @@ NSString *const _MPTableMonoSpacedStringCellView = @"MonospacedStringCell";
|
||||
@property (strong) NSLayoutConstraint *contextBarTopConstraint;
|
||||
|
||||
@property (nonatomic, strong) MPEntryTableDataSource *dataSource;
|
||||
@property (nonatomic) BOOL displayClearTextPasswords;
|
||||
|
||||
@end
|
||||
|
||||
@@ -108,13 +105,6 @@ NSString *const _MPTableMonoSpacedStringCellView = @"MonospacedStringCell";
|
||||
_dataSource = [[MPEntryTableDataSource alloc] init];
|
||||
_dataSource.viewController = self;
|
||||
_contextBarViewController = [[MPContextBarViewController alloc] init];
|
||||
_displayClearTextPasswords = [NSUserDefaults.standardUserDefaults boolForKey:kMPSettingsKeyDisplayClearTextPasswordsInEntryList];
|
||||
|
||||
[self bind:NSStringFromSelector(@selector(displayClearTextPasswords))
|
||||
toObject:NSUserDefaultsController.sharedUserDefaultsController
|
||||
withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyDisplayClearTextPasswordsInEntryList]
|
||||
options:nil];
|
||||
|
||||
[self _setupEntryBindings];
|
||||
}
|
||||
return self;
|
||||
@@ -217,7 +207,7 @@ NSString *const _MPTableMonoSpacedStringCellView = @"MonospacedStringCell";
|
||||
// bind NSArrayController sorting so that sort order gets auto-saved
|
||||
// see: http://simx.me/technonova/software_development/sort_descriptors_nstableview_bindings_a.html
|
||||
[self.entryArrayController bind:NSSortDescriptorsBinding
|
||||
toObject:NSUserDefaultsController.sharedUserDefaultsController
|
||||
toObject:[NSUserDefaultsController sharedUserDefaultsController]
|
||||
withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyEntryTableSortDescriptors]
|
||||
options:@{ NSValueTransformerNameBindingOption: NSUnarchiveFromDataTransformerName }];
|
||||
|
||||
@@ -234,17 +224,6 @@ NSString *const _MPTableMonoSpacedStringCellView = @"MonospacedStringCell";
|
||||
}
|
||||
}
|
||||
|
||||
- (void)setDisplayClearTextPasswords:(BOOL)displayClearTextPasswords {
|
||||
if(_displayClearTextPasswords == displayClearTextPasswords) {
|
||||
return;
|
||||
}
|
||||
_displayClearTextPasswords = displayClearTextPasswords;
|
||||
NSTableColumn *passwordColumn = [self.entryTable tableColumnWithIdentifier:MPEntryTablePasswordColumnIdentifier];
|
||||
if(!passwordColumn.isHidden) {
|
||||
[self.entryTable reloadData];
|
||||
}
|
||||
}
|
||||
|
||||
- (NSResponder *)reconmendedFirstResponder {
|
||||
return self.entryTable;
|
||||
}
|
||||
@@ -294,7 +273,6 @@ NSString *const _MPTableMonoSpacedStringCellView = @"MonospacedStringCell";
|
||||
BOOL isHistoryColumn = [tableColumn.identifier isEqualToString:MPEntryTableHistoryColumnIdentifier];
|
||||
|
||||
NSTableCellView *view = nil;
|
||||
BOOL displayClearTextPasswords = [NSUserDefaults.standardUserDefaults boolForKey:kMPSettingsKeyDisplayClearTextPasswordsInEntryList];
|
||||
if(isTitleColumn || isGroupColumn) {
|
||||
view = [tableView makeViewWithIdentifier:_MPTableImageCellView owner:self];
|
||||
[view.textField unbind:NSValueBinding];
|
||||
@@ -325,7 +303,7 @@ NSString *const _MPTableMonoSpacedStringCellView = @"MonospacedStringCell";
|
||||
[view.imageView bind:NSValueBinding toObject:view withKeyPath:parentIconImageKeyPath options:nil];
|
||||
}
|
||||
}
|
||||
else if(isPasswordColum && !displayClearTextPasswords) {
|
||||
else if(isPasswordColum) {
|
||||
view = [tableView makeViewWithIdentifier:_MPTableSecurCellView owner:self];
|
||||
NSString *passwordKeyPath = [NSString stringWithFormat:@"%@.%@",
|
||||
NSStringFromSelector(@selector(objectValue)),
|
||||
@@ -333,19 +311,15 @@ NSString *const _MPTableMonoSpacedStringCellView = @"MonospacedStringCell";
|
||||
NSDictionary *options = @{ NSValueTransformerBindingOption : [NSValueTransformer valueTransformerForName:MPStringLengthValueTransformerName] };
|
||||
[view.textField bind:NSValueBinding toObject:view withKeyPath:passwordKeyPath options:options];
|
||||
}
|
||||
else {
|
||||
if(isPasswordColum) {
|
||||
view = [tableView makeViewWithIdentifier:_MPTableMonoSpacedStringCellView owner:self];
|
||||
}
|
||||
else {
|
||||
view = [tableView makeViewWithIdentifier:_MPTableStringCellView owner:self];
|
||||
}
|
||||
else {
|
||||
view = [tableView makeViewWithIdentifier:_MPTableStringCellView owner:self];
|
||||
[view.textField unbind:NSValueBinding];
|
||||
view.textField.stringValue = @"";
|
||||
if(!isModifedColumn && !isCreatedColumn) {
|
||||
/* clean up old formatter that might be left */
|
||||
view.textField.formatter = nil;
|
||||
}
|
||||
|
||||
if(isModifedColumn || isCreatedColumn) {
|
||||
if(!view.textField.formatter) {
|
||||
/* Just use one formatter instance since it's expensive to create */
|
||||
@@ -409,12 +383,6 @@ NSString *const _MPTableMonoSpacedStringCellView = @"MonospacedStringCell";
|
||||
NSStringFromSelector(@selector(history))];
|
||||
[view.textField bind:NSValueBinding toObject:view withKeyPath:historyCountKeyPath options:nil];
|
||||
}
|
||||
else if(isPasswordColum) {
|
||||
NSString *passwordKeyPath = [NSString stringWithFormat:@"%@.%@",
|
||||
NSStringFromSelector(@selector(objectValue)),
|
||||
NSStringFromSelector(@selector(password))];
|
||||
[view.textField bind:NSValueBinding toObject:view withKeyPath:passwordKeyPath options:nil];
|
||||
}
|
||||
}
|
||||
return view;
|
||||
}
|
||||
@@ -433,7 +401,7 @@ NSString *const _MPTableMonoSpacedStringCellView = @"MonospacedStringCell";
|
||||
return; // Not the right table view
|
||||
}
|
||||
/* do not update the current item if we are not in focus! */
|
||||
if(self.displayMode == MPDisplayModeSearchResults || tableView.window.firstResponder == self.entryTable) {
|
||||
if(tableView.window.firstResponder == self.entryTable) {
|
||||
MPDocument *document = self.windowController.document;
|
||||
document.selectedEntries = self.entryArrayController.selectedObjects;
|
||||
}
|
||||
@@ -533,8 +501,9 @@ NSString *const _MPTableMonoSpacedStringCellView = @"MonospacedStringCell";
|
||||
|
||||
- (void)_didUpdateSearchResults:(NSNotification *)notification {
|
||||
NSArray *result = notification.userInfo[kMPDocumentSearchResultsKey];
|
||||
NSAssert(result != nil, @"Results should never be nil");
|
||||
self.entryArrayController.content = result;
|
||||
NSAssert(result != nil, @"Resutls should never be nil");
|
||||
self.filteredEntries = result;
|
||||
self.entryArrayController.content = self.filteredEntries;
|
||||
[self.entryTable tableColumnWithIdentifier:MPEntryTableParentColumnIdentifier].hidden = NO;
|
||||
[self _updateContextBar];
|
||||
}
|
||||
@@ -543,6 +512,7 @@ NSString *const _MPTableMonoSpacedStringCellView = @"MonospacedStringCell";
|
||||
- (void)_didExitSearch:(NSNotification *)notification {
|
||||
[self.entryTable tableColumnWithIdentifier:MPEntryTableParentColumnIdentifier].hidden = YES;
|
||||
self.entryArrayController.content = nil;
|
||||
self.filteredEntries = nil;
|
||||
self.displayMode = MPDisplayModeEntries;
|
||||
[self _updateContextBar];
|
||||
MPDocument *document = notification.object;
|
||||
@@ -551,7 +521,6 @@ NSString *const _MPTableMonoSpacedStringCellView = @"MonospacedStringCell";
|
||||
|
||||
- (void)_didEnterSearch:(NSNotification *)notification {
|
||||
self.displayMode = MPDisplayModeSearchResults;
|
||||
// FIXME: update selection?
|
||||
[self _updateContextBar];
|
||||
}
|
||||
|
||||
@@ -679,6 +648,7 @@ NSString *const _MPTableMonoSpacedStringCellView = @"MonospacedStringCell";
|
||||
[headerMenu addItemWithTitle:NSLocalizedString(@"CREATED", "Menu item to toggle display of created date column in entry table") action:NULL keyEquivalent:@""];
|
||||
[headerMenu addItemWithTitle:NSLocalizedString(@"HISTORY", "Menu item to toggle display of history count column in entry table") action:NULL keyEquivalent:@""];
|
||||
|
||||
|
||||
NSArray *identifier = @[ MPEntryTableTitleColumnIdentifier,
|
||||
MPEntryTableUserNameColumnIdentifier,
|
||||
MPEntryTablePasswordColumnIdentifier,
|
||||
@@ -696,14 +666,6 @@ NSString *const _MPTableMonoSpacedStringCellView = @"MonospacedStringCell";
|
||||
[item bind:NSValueBinding toObject:column withKeyPath:NSHiddenBinding options:options];
|
||||
}
|
||||
|
||||
|
||||
[headerMenu addItem:[NSMenuItem separatorItem]];
|
||||
NSMenuItem *showPasswordsItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"SHOW_CLEAR_TEXT_PASSWORDS", "Menu item to toggle display type of passwords") action:NULL keyEquivalent:@""];
|
||||
[showPasswordsItem bind:NSValueBinding
|
||||
toObject:NSUserDefaultsController.sharedUserDefaultsController
|
||||
withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyDisplayClearTextPasswordsInEntryList]
|
||||
options:nil];
|
||||
[headerMenu addItem:showPasswordsItem];
|
||||
self.entryTable.headerView.menu = headerMenu;
|
||||
}
|
||||
|
||||
@@ -754,7 +716,27 @@ NSString *const _MPTableMonoSpacedStringCellView = @"MonospacedStringCell";
|
||||
KPKEntry *selectedEntry = nodes.count == 1 ? [nodes.firstObject asEntry] : nil;
|
||||
NSString *expandedURL = [selectedEntry.url kpk_finalValueForEntry:selectedEntry];
|
||||
if(expandedURL.length > 0) {
|
||||
[MPOpenURLHandler.sharedHandler openURL:expandedURL];
|
||||
NSURL *webURL = [NSURL URLWithString:expandedURL];
|
||||
NSString *scheme = webURL.scheme;
|
||||
if(!scheme) {
|
||||
webURL = [NSURL URLWithString:[NSString stringWithFormat:@"http://%@", expandedURL]];
|
||||
}
|
||||
|
||||
NSString *browserBundleID = [NSUserDefaults.standardUserDefaults stringForKey:kMPSettingsKeyBrowserBundleId];
|
||||
NSURL *browserApplicationURL = browserBundleID ? [NSWorkspace.sharedWorkspace URLForApplicationWithBundleIdentifier:browserBundleID] : nil;
|
||||
BOOL openedURL = NO;
|
||||
|
||||
if(browserApplicationURL) {
|
||||
NSRunningApplication *urlOpeningApplication = [NSWorkspace.sharedWorkspace openURLs:@[webURL] withApplicationAtURL:browserApplicationURL options:NSWorkspaceLaunchDefault configuration:@{} error:nil];
|
||||
openedURL = nil != urlOpeningApplication;
|
||||
}
|
||||
|
||||
if(!openedURL) {
|
||||
openedURL = [NSWorkspace.sharedWorkspace openURL:webURL];
|
||||
}
|
||||
if(!openedURL) {
|
||||
NSLog(@"Unable to open URL %@", webURL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
//
|
||||
// MPGeneralDatabaseSettingsViewController.h
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 18.11.21.
|
||||
// Copyright © 2021 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface MPGeneralDatabaseSettingsViewController : NSViewController
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -1,66 +0,0 @@
|
||||
//
|
||||
// MPGeneralDatabaseSettingsViewController.m
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 18.11.21.
|
||||
// Copyright © 2021 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import "MPGeneralDatabaseSettingsViewController.h"
|
||||
|
||||
#import "MPDocument.h"
|
||||
|
||||
#import <KeePassKit/KeePassKit.h>
|
||||
|
||||
@interface MPGeneralDatabaseSettingsViewController ()
|
||||
|
||||
@property (weak) IBOutlet NSTextField *databaseNameTextField;
|
||||
@property (weak) IBOutlet NSPopUpButton *databaseCompressionPopupButton;
|
||||
@property (weak) IBOutlet NSTextView *databaseDescriptionTextView;
|
||||
@property (weak) IBOutlet NSColorWell *databaseColorColorWell;
|
||||
@property (weak) IBOutlet NSTextField *fileVersionTextField;
|
||||
|
||||
@end
|
||||
|
||||
@implementation MPGeneralDatabaseSettingsViewController
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
}
|
||||
|
||||
#pragma mark Private Helper
|
||||
- (void)_setupView {
|
||||
MPDocument *document = (MPDocument *)self.view.window.windowController.document;
|
||||
|
||||
KPKTree *tree = document.tree;
|
||||
|
||||
if(!tree) {
|
||||
return; // nothing to read from
|
||||
}
|
||||
|
||||
self.databaseNameTextField.stringValue = tree.metaData.databaseName;
|
||||
self.databaseDescriptionTextView.string = tree.metaData.databaseDescription;
|
||||
[self.databaseCompressionPopupButton selectItemAtIndex:tree.metaData.compressionAlgorithm];
|
||||
self.databaseColorColorWell.color = tree.metaData.color ? tree.metaData.color : NSColor.clearColor;
|
||||
|
||||
|
||||
NSData *fileData = [NSData dataWithContentsOfURL:document.fileURL];
|
||||
if(!fileData) {
|
||||
self.fileVersionTextField.stringValue = NSLocalizedString(@"UNKNOWN_FORMAT_FILE_NOT_SAVED_YET", "Database format is unknown since the file is not saved yet");
|
||||
}
|
||||
else {
|
||||
KPKFileVersion version = [[KPKFormat sharedFormat] fileVersionForData:fileData];
|
||||
NSDictionary *nameMappings = @{
|
||||
@(KPKDatabaseFormatKdb): @"Kdb",
|
||||
@(KPKDatabaseFormatKdbx): @"Kdbx",
|
||||
@(KPKDatabaseFormatUnknown): NSLocalizedString(@"UNKNOWN_FORMAT", "Unknown database format.")
|
||||
};
|
||||
|
||||
NSUInteger mayor = (version.version >> 16);
|
||||
NSUInteger minor = (version.version & 0xFFFF);
|
||||
|
||||
self.fileVersionTextField.stringValue = [NSString stringWithFormat:@"%@ (Version %ld.%ld)", nameMappings[@(version.format)], mayor, minor];
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -1,177 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19455" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19455"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="MPGeneralDatabaseSettingsViewController">
|
||||
<connections>
|
||||
<outlet property="databaseColorColorWell" destination="mT4-DP-GXO" id="LfS-qU-wBC"/>
|
||||
<outlet property="databaseCompressionPopupButton" destination="Dq5-lP-zsS" id="11H-3z-4YL"/>
|
||||
<outlet property="databaseDescriptionTextView" destination="YXY-Zl-7nu" id="s8Q-Fa-oaw"/>
|
||||
<outlet property="databaseNameTextField" destination="ufI-vz-Iga" id="LYk-xb-BYQ"/>
|
||||
<outlet property="fileVersionTextField" destination="7hG-5O-ghC" id="SoE-e8-vh3"/>
|
||||
<outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView id="Hz6-mo-xeY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="434" height="244"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<gridView xPlacement="trailing" yPlacement="fill" rowAlignment="none" rowSpacing="8" columnSpacing="8" translatesAutoresizingMaskIntoConstraints="NO" id="RYv-Ng-2bJ">
|
||||
<rect key="frame" x="20" y="20" width="394" height="204"/>
|
||||
<rows>
|
||||
<gridRow id="xmM-rD-5oB"/>
|
||||
<gridRow yPlacement="top" id="EPS-PJ-wZn"/>
|
||||
<gridRow id="6vV-rV-ITV"/>
|
||||
<gridRow id="zYk-Ml-HAt"/>
|
||||
<gridRow id="kzN-Ch-gfi"/>
|
||||
</rows>
|
||||
<columns>
|
||||
<gridColumn id="7Ct-m6-g6y"/>
|
||||
<gridColumn xPlacement="leading" id="eQs-KV-hxL"/>
|
||||
</columns>
|
||||
<gridCells>
|
||||
<gridCell row="xmM-rD-5oB" column="7Ct-m6-g6y" id="am5-3Y-3j8">
|
||||
<textField key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="JAh-R7-pLA">
|
||||
<rect key="frame" x="-2" y="188" width="102" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Database name:" id="03Y-Lj-rRN">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="xmM-rD-5oB" column="eQs-KV-hxL" id="IfW-cA-EoE">
|
||||
<textField key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ufI-vz-Iga">
|
||||
<rect key="frame" x="106" y="188" width="280" height="16"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="280" id="FXj-7O-RqC"/>
|
||||
</constraints>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="jl4-gm-Hbo">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="EPS-PJ-wZn" column="7Ct-m6-g6y" id="uqN-Dk-NnR">
|
||||
<textField key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="WIS-Jx-S9I">
|
||||
<rect key="frame" x="22" y="164" width="78" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Description:" id="p9U-Kw-bI5">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="EPS-PJ-wZn" column="eQs-KV-hxL" id="Gb7-AY-QQA">
|
||||
<scrollView key="contentView" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nST-Dm-Qr7">
|
||||
<rect key="frame" x="106" y="80" width="280" height="100"/>
|
||||
<clipView key="contentView" drawsBackground="NO" id="Is2-5k-gGr">
|
||||
<rect key="frame" x="1" y="1" width="278" height="98"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textView importsGraphics="NO" verticallyResizable="YES" usesFontPanel="YES" findStyle="panel" continuousSpellChecking="YES" allowsUndo="YES" usesRuler="YES" allowsNonContiguousLayout="YES" smartInsertDelete="YES" id="YXY-Zl-7nu">
|
||||
<rect key="frame" x="0.0" y="0.0" width="278" height="98"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
<size key="minSize" width="278" height="98"/>
|
||||
<size key="maxSize" width="463" height="10000000"/>
|
||||
<color key="insertionPointColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
</textView>
|
||||
</subviews>
|
||||
</clipView>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="280" id="UdJ-ki-epM"/>
|
||||
<constraint firstAttribute="height" constant="100" id="XMz-jM-eIA"/>
|
||||
</constraints>
|
||||
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="YES" id="I22-YZ-tXl">
|
||||
<rect key="frame" x="-100" y="-100" width="87" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="MI6-Kw-OxH">
|
||||
<rect key="frame" x="263" y="1" width="16" height="98"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
</scrollView>
|
||||
</gridCell>
|
||||
<gridCell row="6vV-rV-ITV" column="7Ct-m6-g6y" id="EZb-Cx-iTX">
|
||||
<textField key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8Dj-om-Zoe">
|
||||
<rect key="frame" x="12" y="56" width="88" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Compression:" id="5Bm-Nl-53q">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="6vV-rV-ITV" column="eQs-KV-hxL" id="T5V-Av-aBB">
|
||||
<popUpButton key="contentView" verticalHuggingPriority="750" verticalCompressionResistancePriority="749" translatesAutoresizingMaskIntoConstraints="NO" id="Dq5-lP-zsS">
|
||||
<rect key="frame" x="103" y="52" width="72" height="21"/>
|
||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="GdG-Qp-e8U">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" title="OtherViews" id="8oG-i9-WDa">
|
||||
<items>
|
||||
<menuItem title="None" id="uX3-5x-6i6"/>
|
||||
<menuItem title="GZip" tag="1" id="rIh-xx-34B"/>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
</gridCell>
|
||||
<gridCell row="zYk-Ml-HAt" column="7Ct-m6-g6y" id="DAB-yY-fno">
|
||||
<textField key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="jgn-WC-9Qs">
|
||||
<rect key="frame" x="59" y="24" width="41" height="24"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Color:" id="shK-cG-3dL">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="zYk-Ml-HAt" column="eQs-KV-hxL" id="3lH-bt-QOB">
|
||||
<colorWell key="contentView" translatesAutoresizingMaskIntoConstraints="NO" id="mT4-DP-GXO" customClass="HNHUIColorWell">
|
||||
<rect key="frame" x="106" y="24" width="100" height="24"/>
|
||||
<color key="color" red="0.05813049898" green="0.055541899059999997" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</colorWell>
|
||||
</gridCell>
|
||||
<gridCell row="kzN-Ch-gfi" column="7Ct-m6-g6y" id="SII-3r-mjn">
|
||||
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="IX3-zX-Jvu">
|
||||
<rect key="frame" x="27" y="0.0" width="73" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="File format:" id="FgL-0B-JE9">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="kzN-Ch-gfi" column="eQs-KV-hxL" id="3Hz-QZ-yB0">
|
||||
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="7hG-5O-ghC">
|
||||
<rect key="frame" x="104" y="0.0" width="72" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="VersionInfo" id="C2T-fi-WiV">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
</gridCells>
|
||||
</gridView>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" secondItem="RYv-Ng-2bJ" secondAttribute="trailing" constant="20" id="atn-XX-tEa"/>
|
||||
<constraint firstItem="RYv-Ng-2bJ" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="dcr-ZE-P1X"/>
|
||||
<constraint firstAttribute="bottom" secondItem="RYv-Ng-2bJ" secondAttribute="bottom" constant="20" id="e2v-cE-ajw"/>
|
||||
<constraint firstItem="RYv-Ng-2bJ" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="20" symbolic="YES" id="qLx-ot-9dT"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="-368" y="-227"/>
|
||||
</customView>
|
||||
</objects>
|
||||
</document>
|
||||
@@ -27,15 +27,14 @@
|
||||
@interface MPGroupInspectorViewController : MPViewController
|
||||
|
||||
@property (strong) IBOutlet NSView *contentView;
|
||||
@property (strong) IBOutlet HNHUITextField *titleTextField;
|
||||
@property (weak) IBOutlet HNHUITextField *titleTextField;
|
||||
|
||||
@property (strong) IBOutlet NSButton *expiresCheckButton;
|
||||
@property (strong) IBOutlet NSButton *expireDateSelectButton;
|
||||
@property (weak) IBOutlet NSButton *expiresCheckButton;
|
||||
@property (weak) IBOutlet NSButton *expireDateSelectButton;
|
||||
|
||||
@property (strong) IBOutlet NSPopUpButton *searchPopupButton;
|
||||
@property (strong) IBOutlet NSPopUpButton *autotypePopupButton;
|
||||
@property (strong) IBOutlet HNHUITextField *autotypeSequenceTextField;
|
||||
@property (strong) IBOutlet NSTokenField *tagsTokenField;
|
||||
@property (weak) IBOutlet NSPopUpButton *searchPopupButton;
|
||||
@property (weak) IBOutlet NSPopUpButton *autotypePopupButton;
|
||||
@property (weak) IBOutlet HNHUITextField *autotypeSequenceTextField;
|
||||
|
||||
- (void)registerNotificationsForDocument:(MPDocument *)document;
|
||||
@end
|
||||
|
||||
@@ -62,17 +62,17 @@
|
||||
scrollView.showBottomShadow = NO;
|
||||
scrollView.hasVerticalRuler = YES;
|
||||
scrollView.drawsBackground = NO;
|
||||
/*scrollView.translatesAutoresizingMaskIntoConstraints = NO;
|
||||
scrollView.translatesAutoresizingMaskIntoConstraints = NO;
|
||||
NSView *clipView = scrollView.contentView;
|
||||
|
||||
//scrollView.documentView = self.contentView;
|
||||
scrollView.documentView = self.contentView;
|
||||
|
||||
NSDictionary *views = NSDictionaryOfVariableBindings(_contentView);
|
||||
[clipView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[_contentView]|"
|
||||
options:0
|
||||
metrics:nil
|
||||
views:views]];
|
||||
[self.view layoutSubtreeIfNeeded];*/
|
||||
[self.view layoutSubtreeIfNeeded];
|
||||
|
||||
NSMenu *autotypeMenu = self.autotypePopupButton.menu;
|
||||
NSMenuItem *inheritAutotype = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"AUTOTYPE_INHERIT", "Inherit autotype settings menu item") action:NULL keyEquivalent:@""];
|
||||
@@ -127,10 +127,6 @@
|
||||
toObject:self
|
||||
withKeyPath:[NSString stringWithFormat:@"%@.%@", NSStringFromSelector(@selector(representedObject)), NSStringFromSelector(@selector(isSearchEnabled))]
|
||||
options:nil];
|
||||
[self.tagsTokenField bind:NSValueBinding
|
||||
toObject:self
|
||||
withKeyPath:[NSString stringWithFormat:@"%@.%@", NSStringFromSelector(@selector(representedObject)), NSStringFromSelector(@selector(tags))]
|
||||
options:nullPlaceholderOptionsDict];
|
||||
}
|
||||
- (IBAction)toggleExpire:(NSButton*)sender {
|
||||
KPKGroup *group = self.representedObject;
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
//
|
||||
// MPInspectorEditor.h
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 14.10.21.
|
||||
// Copyright © 2021 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/// The InpsectorEditor protocoll that should be implemented by editors used in the inspector
|
||||
/// Individual editors shoudl adopt different APIs to accomodate their needs
|
||||
/// The preferred way to set model data is to use the representedObject
|
||||
@protocol MPInspectorEditor <NSObject>
|
||||
|
||||
@required
|
||||
@property (nonatomic) BOOL isEditor;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -24,6 +24,7 @@
|
||||
#import "MPSettingsHelper.h"
|
||||
#import "MPIconHelper.h"
|
||||
#import "MPAutotypeDoctor.h"
|
||||
#import "MPConstants.h"
|
||||
|
||||
#import "DDHotKeyCenter.h"
|
||||
#import "DDHotKey+MacPassAdditions.h"
|
||||
@@ -82,13 +83,9 @@
|
||||
}
|
||||
|
||||
- (void)willShowTab {
|
||||
if(!_hotKey) {
|
||||
_hotKey = [DDHotKey hotKeyWithKeyData:[NSUserDefaults.standardUserDefaults dataForKey:kMPSettingsKeyGlobalAutotypeKeyDataKey]];
|
||||
}
|
||||
/* Only call the setter if the hotkeys are different, otherwise the dealloc call will unregister them*/
|
||||
if(![self.hotKeyTextField.hotKey isEqual:self.hotKey]) {
|
||||
self.hotKeyTextField.hotKey = self.hotKey;
|
||||
}
|
||||
_hotKey = [DDHotKey hotKeyWithKeyData:[NSUserDefaults.standardUserDefaults dataForKey:kMPSettingsKeyGlobalAutotypeKeyDataKey]];
|
||||
/* Change any invalid hotkeys to valid ones? */
|
||||
self.hotKeyTextField.hotKey = self.hotKey;
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
@@ -133,4 +130,32 @@
|
||||
- (void)runAutotypeDoctor:(id)sender {
|
||||
[MPAutotypeDoctor.defaultDoctor runChecksAndPresentResults];
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark Keychain Actions
|
||||
- (IBAction)RenewTouchIdKey:(id)sender {
|
||||
NSData* publicKeyTag = [TouchIdUnlockPublicKeyTag dataUsingEncoding:NSUTF8StringEncoding];
|
||||
NSDictionary *publicKeyQuery = @{
|
||||
(id)kSecClass: (id)kSecClassKey,
|
||||
(id)kSecAttrApplicationTag: publicKeyTag,
|
||||
(id)kSecReturnRef: @YES,
|
||||
};
|
||||
OSStatus status = SecItemDelete((__bridge CFDictionaryRef)publicKeyQuery);
|
||||
if (status != errSecSuccess) {
|
||||
NSString* description = (__bridge NSString*)SecCopyErrorMessageString(status, NULL);
|
||||
NSLog(@"Error while trying to delete public key from Keychain: %@", description);
|
||||
}
|
||||
|
||||
NSData* privateKeyTag = [TouchIdUnlockPrivateKeyTag dataUsingEncoding:NSUTF8StringEncoding];
|
||||
NSDictionary *privateKeyQuery = @{
|
||||
(id)kSecClass: (id)kSecClassKey,
|
||||
(id)kSecAttrApplicationTag: privateKeyTag,
|
||||
(id)kSecReturnRef: @YES,
|
||||
};
|
||||
status = SecItemDelete((__bridge CFDictionaryRef)privateKeyQuery);
|
||||
if (status != errSecSuccess) {
|
||||
NSString* description = (__bridge NSString*)SecCopyErrorMessageString(status, NULL);
|
||||
NSLog(@"Error while trying to delete private key from Keychain: %@", description);
|
||||
}
|
||||
}
|
||||
@end
|
||||
|
||||
@@ -28,7 +28,12 @@ uint16_t const kMPUnknownKeyCode = UINT16_MAX;
|
||||
|
||||
- (MPModifiedKey)modifiedKeyValue {
|
||||
MPModifiedKey key;
|
||||
[self getValue:&key size:sizeof(MPModifiedKey)];
|
||||
if(@available(macOS 10.13, *)) {
|
||||
[self getValue:&key size:sizeof(MPModifiedKey)];
|
||||
}
|
||||
else {
|
||||
[self getValue:&key];
|
||||
}
|
||||
return key;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
//
|
||||
// MPNodeExpirationViewController.h
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 22.10.21.
|
||||
// Copyright © 2021 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import "MPInspectorEditor.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface MPNodeExpirationViewController : NSViewController <MPInspectorEditor>
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -1,79 +0,0 @@
|
||||
//
|
||||
// MPNodeExpirationViewController.m
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 22.10.21.
|
||||
// Copyright © 2021 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import "MPNodeExpirationViewController.h"
|
||||
#import "MPInspectorViewController.h"
|
||||
#import "MPValueTransformerHelper.h"
|
||||
#import <KeePassKit/KeePassKit.h>
|
||||
|
||||
@interface MPNodeExpirationViewController ()
|
||||
|
||||
@property (nonatomic, readonly, strong) KPKTimeInfo *representedTimeInfo;
|
||||
@property (strong) IBOutlet NSButton *expiredCheckButton;
|
||||
@property (strong) IBOutlet NSButton *pickExpireDateButton;
|
||||
|
||||
@end
|
||||
|
||||
@implementation MPNodeExpirationViewController
|
||||
|
||||
@synthesize isEditor = _isEditor;
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
self.pickExpireDateButton.action = @selector(pickExpiryDate:);
|
||||
[self _updateValues];
|
||||
}
|
||||
|
||||
- (KPKTimeInfo *)representedTimeInfo {
|
||||
if([self.representedObject isKindOfClass:KPKTimeInfo.class]) {
|
||||
return self.representedObject;
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (void)setRepresentedObject:(id)representedObject {
|
||||
if(self.representedTimeInfo) {
|
||||
[NSNotificationCenter.defaultCenter removeObserver:self name:KPKWillChangeTimeInfoNotification object:self.representedTimeInfo];
|
||||
[NSNotificationCenter.defaultCenter removeObserver:self name:KPKDidChangeTimeInfoNotification object:self.representedTimeInfo];
|
||||
}
|
||||
super.representedObject = representedObject;
|
||||
if(self.representedTimeInfo) {
|
||||
[NSNotificationCenter.defaultCenter addObserver:self
|
||||
selector:(@selector(_willChangeTimeInfo:))
|
||||
name:KPKWillChangeTimeInfoNotification
|
||||
object:self.representedTimeInfo];
|
||||
[NSNotificationCenter.defaultCenter addObserver:self
|
||||
selector:(@selector(_didChangeTimeInfo:))
|
||||
name:KPKDidChangeTimeInfoNotification
|
||||
object:self.representedTimeInfo];
|
||||
|
||||
}
|
||||
[self _updateValues];
|
||||
}
|
||||
|
||||
- (void)setIsEditor:(BOOL)isEditor {
|
||||
[self _updateValues];
|
||||
}
|
||||
|
||||
- (void)_updateValues {
|
||||
self.view.hidden = self.representedTimeInfo.expires;
|
||||
self.expiredCheckButton.state = HNHUIStateForBool(self.representedTimeInfo.expires);
|
||||
NSValueTransformer *dateTransformer = [NSValueTransformer valueTransformerForName:MPExpiryDateValueTransformerName];
|
||||
self.expiredCheckButton.title = [dateTransformer transformedValue:self.representedTimeInfo.expirationDate];
|
||||
|
||||
self.expiredCheckButton.enabled = self.isEditor;
|
||||
self.pickExpireDateButton.enabled = self.isEditor;
|
||||
}
|
||||
|
||||
- (void)_willChangeTimeInfo:(NSNotification *)notification {}
|
||||
|
||||
- (void)_didChangeTimeInfo:(NSNotification *)notification {
|
||||
[self _updateValues];
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -1,65 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="18122" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="18122"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="MPNodeExpirationViewController">
|
||||
<connections>
|
||||
<outlet property="expiredCheckButton" destination="HAQ-Wk-M7P" id="C1J-nJ-Cdz"/>
|
||||
<outlet property="pickExpireDateButton" destination="G7C-WZ-ad7" id="zvU-TW-Mar"/>
|
||||
<outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView id="Hz6-mo-xeY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="187" height="20"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<stackView distribution="fill" orientation="horizontal" alignment="centerY" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" horizontalHuggingPriority="248" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="l8k-GC-FnL">
|
||||
<rect key="frame" x="0.0" y="0.0" width="187" height="20"/>
|
||||
<subviews>
|
||||
<button horizontalHuggingPriority="249" horizontalCompressionResistancePriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="HAQ-Wk-M7P">
|
||||
<rect key="frame" x="-2" y="1" width="150" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Expires" bezelStyle="regularSquare" imagePosition="left" lineBreakMode="truncatingMiddle" state="on" inset="2" id="7kV-WE-lr3">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="G7C-WZ-ad7">
|
||||
<rect key="frame" x="149" y="-7" width="45" height="32"/>
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSActionTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="hgC-Qj-aTs">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="pickExpiryDate:" target="-1" id="EGg-Lx-7s5"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<visibilityPriorities>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
</visibilityPriorities>
|
||||
<customSpacing>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
</customSpacing>
|
||||
</stackView>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="bottom" secondItem="l8k-GC-FnL" secondAttribute="bottom" id="6uR-g8-FVH"/>
|
||||
<constraint firstItem="l8k-GC-FnL" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" id="AuC-c3-JPv"/>
|
||||
<constraint firstItem="l8k-GC-FnL" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="Qvv-5F-nde"/>
|
||||
<constraint firstAttribute="trailing" secondItem="l8k-GC-FnL" secondAttribute="trailing" id="ckb-kh-R60"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="-91" y="-25"/>
|
||||
</customView>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSActionTemplate" width="15" height="15"/>
|
||||
</resources>
|
||||
</document>
|
||||
@@ -34,7 +34,7 @@
|
||||
}
|
||||
|
||||
- (BOOL)getObjectValue:(out id __nullable * __nullable)obj forString:(NSString *)string errorDescription:(out NSString * __nullable * __nullable)error {
|
||||
/* If super can parse without an error, all is fine */
|
||||
/* If super can pase without an error, all is fine */
|
||||
if([super getObjectValue:obj forString:string errorDescription:error]) {
|
||||
return YES;
|
||||
}
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
//
|
||||
// MPOpenURLHandler.h
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 11.11.21.
|
||||
// Copyright © 2021 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface MPOpenURLHandler : NSObject
|
||||
|
||||
@property (class, strong, readonly) MPOpenURLHandler *sharedHandler;
|
||||
- (instancetype)init NS_UNAVAILABLE;
|
||||
|
||||
- (void)openURL:(NSString *)url;
|
||||
- (BOOL)supportsPrivateBrowsingForBundleId:(NSString *)bundleId;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -1,86 +0,0 @@
|
||||
//
|
||||
// MPOpenURLHandler.m
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 11.11.21.
|
||||
// Copyright © 2021 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import "MPOpenURLHandler.h"
|
||||
|
||||
#import "MPSettingsHelper.h"
|
||||
|
||||
@implementation MPOpenURLHandler
|
||||
|
||||
static MPOpenURLHandler *_defaultInstance;
|
||||
|
||||
+ (MPOpenURLHandler *)sharedHandler {
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
_defaultInstance = [[MPOpenURLHandler alloc] _init];
|
||||
});
|
||||
return _defaultInstance;
|
||||
}
|
||||
|
||||
- (instancetype)init {
|
||||
return _defaultInstance;
|
||||
}
|
||||
|
||||
- (NSArray<NSString *>*)privateBrowsingArgsForBundleId:(NSString *)bundleId {
|
||||
|
||||
static NSDictionary *privateBrowsingArgs;
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
privateBrowsingArgs = @{ @"com.google.Chrome" : @[@"--incognito"] };
|
||||
});
|
||||
return privateBrowsingArgs[bundleId];
|
||||
}
|
||||
|
||||
|
||||
- (instancetype)_init {
|
||||
NSAssert(_defaultInstance == nil, @"Multiple instances of MPLockDaemon not allowed!");
|
||||
self = [super init];
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)openURL:(NSString *)url {
|
||||
NSURL *webURL = [NSURL URLWithString:url];
|
||||
NSString *scheme = webURL.scheme;
|
||||
if(!scheme) {
|
||||
webURL = [NSURL URLWithString:[NSString stringWithFormat:@"http://%@", url]];
|
||||
}
|
||||
|
||||
NSString *browserBundleID = [NSUserDefaults.standardUserDefaults stringForKey:kMPSettingsKeyBrowserBundleId];
|
||||
NSURL *browserApplicationURL = browserBundleID ? [NSWorkspace.sharedWorkspace URLForApplicationWithBundleIdentifier:browserBundleID] : nil;
|
||||
BOOL openedURL = NO;
|
||||
|
||||
if(browserApplicationURL) {
|
||||
NSRunningApplication *urlOpeningApplication = [NSWorkspace.sharedWorkspace openURLs:@[webURL] withApplicationAtURL:browserApplicationURL options:NSWorkspaceLaunchDefault configuration:@{} error:nil];
|
||||
openedURL = nil != urlOpeningApplication;
|
||||
}
|
||||
|
||||
if(!openedURL) {
|
||||
openedURL = [NSWorkspace.sharedWorkspace openURL:webURL];
|
||||
}
|
||||
if(!openedURL) {
|
||||
NSLog(@"Unable to open URL %@", webURL);
|
||||
}
|
||||
}
|
||||
|
||||
- (BOOL)supportsPrivateBrowsingForBundleId:(NSString *)bundleId {
|
||||
return (nil != [self privateBrowsingArgsForBundleId:bundleId]);
|
||||
}
|
||||
|
||||
- (NSArray<NSString *>*)_launchArgumentsForBrowserBundleID:(NSString *)bundleId {
|
||||
BOOL usePrivateBrowsing = [NSUserDefaults.standardUserDefaults boolForKey:kMPSettingsKeyUsePrivateBrowsingWhenOpeningURLs];
|
||||
NSMutableArray<NSString *> *args = [[NSMutableArray alloc] init];
|
||||
if(usePrivateBrowsing) {
|
||||
NSArray<NSString *>* privateArgs = [self privateBrowsingArgsForBundleId:bundleId];
|
||||
if(privateArgs) {
|
||||
[args addObjectsFromArray:privateArgs];
|
||||
}
|
||||
}
|
||||
return [args copy];
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -136,7 +136,7 @@ NSString *const _MPOutlinveViewHeaderViewIdentifier = @"HeaderCell";
|
||||
NSInteger visibleRow = [self _rowForUUID:visibleUUID node:node];
|
||||
selectRow = selectRow > -1 ? selectRow : 1;
|
||||
[self.outlineView selectRowIndexes:[NSIndexSet indexSetWithIndex:selectRow] byExtendingSelection:NO];
|
||||
|
||||
|
||||
if(visibleRow > -1) {
|
||||
NSRect rowRect = [self.outlineView rectOfRow:visibleRow];
|
||||
[self.outlineView scrollPoint:rowRect.origin];
|
||||
@@ -225,7 +225,7 @@ NSString *const _MPOutlinveViewHeaderViewIdentifier = @"HeaderCell";
|
||||
#pragma mark Notifications
|
||||
- (void)registerNotificationsForDocument:(MPDocument *)document {
|
||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didAddGroup:) name:MPDocumentDidAddGroupNotification object:document];
|
||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didRevertDocument:) name:MPDocumentDidRevertNotification object:document];
|
||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(_didRevertDocument:) name:MPDocumentDidRevertNotification object:document];
|
||||
}
|
||||
|
||||
- (void)clearSelection {
|
||||
|
||||
@@ -150,39 +150,10 @@ typedef NS_ENUM(NSUInteger, MPPasswordEditKeyError) {
|
||||
|
||||
- (IBAction)generateKey:(id)sender {
|
||||
MPDocument *document = self.document;
|
||||
KPKFileVersion fileVersion = document.tree.minimumVersion;
|
||||
NSArray *fileTypes = @[];
|
||||
KPKKeyFileType keyFileType;
|
||||
|
||||
if(fileVersion.format == KPKDatabaseFormatUnknown) {
|
||||
return;
|
||||
}
|
||||
else if(fileVersion.format == KPKDatabaseFormatKdb) {
|
||||
fileTypes = @[@"key"];
|
||||
keyFileType = KPKKeyFileTypeBinary;
|
||||
}
|
||||
else {
|
||||
if(fileVersion.version <= kKPKKdbxFileVersion3) {
|
||||
keyFileType = KPKKeyFileTypeXMLVersion1;
|
||||
fileTypes = @[@"key"];
|
||||
}
|
||||
// else if(fileVersion.version <=kKPKKdbxFileVersion4) {
|
||||
// keyFileType = KPKKeyFileTypeXMLVersion1;
|
||||
// fileTypes = @[@"key"];
|
||||
// }
|
||||
else if(fileVersion.version <= kKPKKdbxFileVersion4_1) {
|
||||
keyFileType = KPKKeyFileTypeXMLVersion2;
|
||||
fileTypes = @[@"keyx"];
|
||||
}
|
||||
else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
NSData *data = [NSData kpk_generateKeyfileDataOfType:keyFileType];
|
||||
NSData *data = [NSData kpk_generateKeyfileDataForFormat:document.tree.minimumVersion.format];
|
||||
if(data) {
|
||||
NSSavePanel *savePanel = [NSSavePanel savePanel];
|
||||
savePanel.allowedFileTypes = fileTypes;
|
||||
savePanel.allowedFileTypes = @[@"key", @"xml"];
|
||||
savePanel.canCreateDirectories = YES;
|
||||
savePanel.title = NSLocalizedString(@"SAVE_KEYFILE", "Button title to save the generated key file");
|
||||
[savePanel beginWithCompletionHandler:^(NSInteger result) {
|
||||
|
||||
@@ -21,14 +21,14 @@
|
||||
//
|
||||
|
||||
#import "MPViewController.h"
|
||||
#import "KeePassKit/KeePassKit.h"
|
||||
|
||||
@class KPKCompositeKey;
|
||||
|
||||
@interface MPPasswordInputController : MPViewController <NSTouchBarDelegate>
|
||||
|
||||
typedef BOOL (^passwordInputCompletionBlock)(NSString *password, NSURL *keyURL, BOOL didCancel, NSError *__autoreleasing*error);
|
||||
typedef BOOL (^passwordInputCompletionBlock)(KPKCompositeKey *key, NSURL* keyFileURL, BOOL didCancel, NSError *__autoreleasing*error);
|
||||
|
||||
- (void)requestPasswordWithCompletionHandler:(passwordInputCompletionBlock)completionHandler;
|
||||
- (void)requestPasswordWithMessage:(NSString *)message cancelLabel:(NSString *)cancelLabel completionHandler:(passwordInputCompletionBlock)completionHandler;
|
||||
|
||||
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
#import "MPSettingsHelper.h"
|
||||
#import "MPPathControl.h"
|
||||
#import "MPTouchBarButtonCreator.h"
|
||||
#import "MPSettingsHelper.h"
|
||||
#import "MPConstants.h"
|
||||
#import "MPTouchIdCompositeKeyStore.h"
|
||||
|
||||
#import "HNHUi/HNHUi.h"
|
||||
|
||||
@@ -44,6 +47,8 @@
|
||||
@property (weak) IBOutlet NSButton *enablePasswordCheckBox;
|
||||
@property (weak) IBOutlet NSButton *unlockButton;
|
||||
@property (weak) IBOutlet NSButton *cancelButton;
|
||||
@property (weak) IBOutlet NSButton *touchIdButton;
|
||||
@property (weak) IBOutlet NSButton *touchIdEnabledButton;
|
||||
|
||||
@property (copy) NSString *message;
|
||||
@property (copy) NSString *cancelLabel;
|
||||
@@ -81,6 +86,13 @@
|
||||
[self.enablePasswordCheckBox bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(enablePassword)) options:nil];
|
||||
[self.togglePasswordButton bind:NSEnabledBinding toObject:self withKeyPath:NSStringFromSelector(@selector(enablePassword)) options:nil];
|
||||
[self.passwordTextField bind:NSEnabledBinding toObject:self withKeyPath:NSStringFromSelector(@selector(enablePassword)) options:nil];
|
||||
NSUserDefaultsController *defaultsController = [NSUserDefaultsController sharedUserDefaultsController];
|
||||
[self.touchIdEnabledButton bind:NSValueBinding toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyEntryTouchIdEnabled] options:nil];
|
||||
self.touchIdEnabledButton.hidden = true;
|
||||
if (@available(macOS 10.13.4, *)) {
|
||||
self.touchIdEnabledButton.hidden = false;
|
||||
[self _touchIdUpdateToolTip];
|
||||
}
|
||||
[self _reset];
|
||||
}
|
||||
|
||||
@@ -95,10 +107,6 @@
|
||||
[self _reset];
|
||||
}
|
||||
|
||||
- (void)requestPasswordWithCompletionHandler:(passwordInputCompletionBlock)completionHandler {
|
||||
[self requestPasswordWithMessage:nil cancelLabel:nil completionHandler:completionHandler];
|
||||
}
|
||||
|
||||
#pragma mark Properties
|
||||
- (void)setEnablePassword:(BOOL)enablePassword {
|
||||
if(_enablePassword != enablePassword) {
|
||||
@@ -127,8 +135,24 @@
|
||||
NSString *password = self.enablePassword ? self.passwordTextField.stringValue : nil;
|
||||
|
||||
BOOL cancel = (sender == self.cancelButton);
|
||||
BOOL result = self.completionHandler(password, self.keyPathControl.URL, cancel, &error);
|
||||
if(cancel || result) {
|
||||
NSURL* keyURL = self.keyPathControl.URL;
|
||||
NSData *keyFileData = keyURL ? [NSData dataWithContentsOfURL:keyURL] : nil;
|
||||
KPKKey* passwordKey = [KPKKey keyWithPassword:password];
|
||||
KPKKey* fileKey = [KPKKey keyWithKeyFileData:keyFileData];
|
||||
KPKCompositeKey* compositeKey = [[KPKCompositeKey alloc] init];
|
||||
[compositeKey addKey:passwordKey];
|
||||
[compositeKey addKey:fileKey];
|
||||
/* After the completion handler finished we no longer have a windowController set */
|
||||
NSString* documentKey = NULL;
|
||||
bool documentKeyValid = [self _touchIdGetKeyForCurrentDocument:&documentKey];
|
||||
BOOL result = self.completionHandler(compositeKey, keyURL, cancel, &error);
|
||||
if(result) {
|
||||
if(documentKeyValid) {
|
||||
[self _touchIdUpdateKeyForCurrentDocument:compositeKey forDocumentKey:documentKey];
|
||||
}
|
||||
return;
|
||||
}
|
||||
if(cancel) {
|
||||
return;
|
||||
}
|
||||
[self _showError:error];
|
||||
@@ -138,6 +162,203 @@
|
||||
}
|
||||
}
|
||||
|
||||
- (void) _touchIdUpdateKeyForCurrentDocument: (KPKCompositeKey*)compositeKey forDocumentKey: (NSString*) documentKey{
|
||||
NSData* encryptedKey = [self _touchIdEncryptCompositeKey:compositeKey];
|
||||
[MPTouchIdCompositeKeyStore.defaultStore save:encryptedKey forDocumentKey:documentKey];
|
||||
}
|
||||
|
||||
- (void) _touchIdCreateAndAddRSAKeyPair {
|
||||
CFErrorRef error = NULL;
|
||||
NSString* publicKeyLabel = @"MacPass TouchID Feature Public Key";
|
||||
NSString* privateKeyLabel = @"MacPass TouchID Feature Private Key";
|
||||
NSData* publicKeyTag = [TouchIdUnlockPublicKeyTag dataUsingEncoding:NSUTF8StringEncoding];
|
||||
NSData* privateKeyTag = [TouchIdUnlockPrivateKeyTag dataUsingEncoding:NSUTF8StringEncoding];
|
||||
SecAccessControlRef access = NULL;
|
||||
if (@available(macOS 10.13.4, *)) {
|
||||
SecAccessControlCreateFlags flags = kSecAccessControlBiometryCurrentSet;
|
||||
if (@available(macOS 10.15, *)) {
|
||||
flags |= kSecAccessControlWatch | kSecAccessControlOr;
|
||||
}
|
||||
access = SecAccessControlCreateWithFlags(kCFAllocatorDefault,
|
||||
kSecAttrAccessibleWhenUnlockedThisDeviceOnly,
|
||||
flags,
|
||||
&error);
|
||||
if(access == NULL) {
|
||||
NSError *err = CFBridgingRelease(error);
|
||||
NSLog(@"Error while trying to create AccessControl for TouchID unlock feature: %@", [err description]);
|
||||
return;
|
||||
}
|
||||
NSDictionary* attributes = @{
|
||||
(id)kSecAttrKeyType: (id)kSecAttrKeyTypeRSA,
|
||||
(id)kSecAttrKeySizeInBits: @2048,
|
||||
(id)kSecAttrSynchronizable: @NO,
|
||||
(id)kSecPrivateKeyAttrs:
|
||||
@{ (id)kSecAttrIsPermanent: @YES,
|
||||
(id)kSecAttrApplicationTag: privateKeyTag,
|
||||
(id)kSecAttrLabel: privateKeyLabel,
|
||||
(id)kSecAttrAccessControl: (__bridge id)access
|
||||
},
|
||||
(id)kSecPublicKeyAttrs:
|
||||
@{ (id)kSecAttrIsPermanent: @YES,
|
||||
(id)kSecAttrApplicationTag: publicKeyTag,
|
||||
(id)kSecAttrLabel: publicKeyLabel,
|
||||
},
|
||||
};
|
||||
SecKeyRef result = SecKeyCreateRandomKey((__bridge CFDictionaryRef)attributes, &error);
|
||||
if(result == NULL) {
|
||||
NSError *err = CFBridgingRelease(error);
|
||||
NSLog(@"Error while trying to create a RSA keypair for TouchID unlock feature: %@", [err description]);
|
||||
}
|
||||
else {
|
||||
CFRelease(result);
|
||||
}
|
||||
}
|
||||
else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
- (NSData*) _touchIdEncryptCompositeKey: (KPKCompositeKey*) compositeKey {
|
||||
NSData* encryptedKey = nil;
|
||||
NSData* keyData = [NSKeyedArchiver archivedDataWithRootObject:compositeKey];
|
||||
NSData* tag = [TouchIdUnlockPublicKeyTag dataUsingEncoding:NSUTF8StringEncoding];
|
||||
NSDictionary *getquery = @{
|
||||
(id)kSecClass: (id)kSecClassKey,
|
||||
(id)kSecAttrApplicationTag: tag,
|
||||
(id)kSecReturnRef: @YES,
|
||||
};
|
||||
SecKeyRef publicKey = NULL;
|
||||
OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)getquery, (CFTypeRef *)&publicKey);
|
||||
if (status != errSecSuccess) {
|
||||
[self _touchIdCreateAndAddRSAKeyPair];
|
||||
OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)getquery, (CFTypeRef *)&publicKey);
|
||||
if (status != errSecSuccess) {
|
||||
NSString* description = (__bridge NSString*)SecCopyErrorMessageString(status, NULL);
|
||||
NSLog(@"Error while trying to query public key from Keychain: %@", description);
|
||||
return nil;
|
||||
}
|
||||
}
|
||||
SecKeyAlgorithm algorithm = kSecKeyAlgorithmRSAEncryptionOAEPSHA256AESGCM;
|
||||
BOOL canEncrypt = SecKeyIsAlgorithmSupported(publicKey, kSecKeyOperationTypeEncrypt, algorithm);
|
||||
if(canEncrypt) {
|
||||
CFErrorRef error = NULL;
|
||||
encryptedKey = (NSData*)CFBridgingRelease(SecKeyCreateEncryptedData(publicKey, algorithm, (__bridge CFDataRef)keyData, &error));
|
||||
if (!encryptedKey) {
|
||||
NSError *err = CFBridgingRelease(error);
|
||||
NSLog(@"Error while trying to decrypt the CompositeKey for TouchID unlock: %@", [err description]);
|
||||
}
|
||||
}
|
||||
else {
|
||||
NSLog(@"The key retreived from the Keychain is unable to encrypt data");
|
||||
}
|
||||
if (publicKey) {
|
||||
CFRelease(publicKey);
|
||||
}
|
||||
return encryptedKey;
|
||||
}
|
||||
|
||||
- (KPKCompositeKey*) _touchIdDecryptCompositeKey: (NSData*) encryptedKey {
|
||||
KPKCompositeKey* result = nil;
|
||||
if(encryptedKey != nil) {
|
||||
NSData* tag = [TouchIdUnlockPrivateKeyTag dataUsingEncoding:NSUTF8StringEncoding];
|
||||
NSDictionary *queryPrivateKey = @{
|
||||
(id)kSecClass: (id)kSecClassKey,
|
||||
(id)kSecAttrApplicationTag: tag,
|
||||
(id)kSecAttrKeyType: (id)kSecAttrKeyTypeRSA,
|
||||
(id)kSecReturnRef: @YES,
|
||||
};
|
||||
SecKeyRef privateKey = NULL;
|
||||
OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)queryPrivateKey, (CFTypeRef *)&privateKey);
|
||||
if (status == errSecSuccess) {
|
||||
SecKeyAlgorithm algorithm = kSecKeyAlgorithmRSAEncryptionOAEPSHA256AESGCM;
|
||||
BOOL canDecrypt = SecKeyIsAlgorithmSupported(privateKey, kSecKeyOperationTypeDecrypt, algorithm);
|
||||
if(canDecrypt) {
|
||||
CFErrorRef error = NULL;
|
||||
NSData* clearText = (NSData*)CFBridgingRelease(SecKeyCreateDecryptedData(privateKey, algorithm, (__bridge CFDataRef)encryptedKey, &error));
|
||||
if (clearText) {
|
||||
result = [NSKeyedUnarchiver unarchiveObjectWithData:clearText];
|
||||
}
|
||||
else {
|
||||
NSError *err = CFBridgingRelease(error);
|
||||
NSLog(@"Error while trying to decrypt password for TouchID unlock: %@", [err description]);
|
||||
}
|
||||
}
|
||||
else {
|
||||
NSLog(@"Key does not support decryption");
|
||||
}
|
||||
}
|
||||
else {
|
||||
NSString* description = (__bridge NSString*)SecCopyErrorMessageString(status, NULL);
|
||||
NSLog(@"Error while trying to retrive private key for decryption: %@", description);
|
||||
}
|
||||
if (privateKey) {
|
||||
CFRelease(privateKey);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
- (bool) _touchIdGetKeyForCurrentDocument: (NSString**) result {
|
||||
*result = NULL;
|
||||
NSDocument* currentDocument = self.windowController.document;
|
||||
if(currentDocument != NULL && currentDocument.fileURL != NULL && currentDocument.fileURL.lastPathComponent != NULL) {
|
||||
*result = [NSString stringWithFormat:kMPSettingsKeyEntryTouchIdDatabaseEncryptedKeyFormat, currentDocument.fileURL.lastPathComponent];
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
- (bool) _touchIdIsUnlockAvailable {
|
||||
NSData* unused = NULL;
|
||||
bool encryptedKeyAvailableForDocument = [self _touchIdGetEncrypedKeyMaterial:&unused];
|
||||
return encryptedKeyAvailableForDocument;
|
||||
}
|
||||
|
||||
- (bool) _touchIdGetEncrypedKeyMaterial: (NSData**) result {
|
||||
NSString* documentKey = NULL;
|
||||
*result = NULL;
|
||||
if(![self _touchIdGetKeyForCurrentDocument:&documentKey]) {
|
||||
return false;
|
||||
}
|
||||
return [MPTouchIdCompositeKeyStore.defaultStore load:result forDocumentKey:documentKey];
|
||||
}
|
||||
|
||||
- (IBAction)unlockWithTouchID:(id)sender {
|
||||
NSData* encryptedKey = NULL;
|
||||
if(![self _touchIdGetEncrypedKeyMaterial:&encryptedKey]) {
|
||||
[self.touchIdButton setEnabled:false];
|
||||
return;
|
||||
}
|
||||
KPKCompositeKey* compositeKey = [self _touchIdDecryptCompositeKey:encryptedKey];
|
||||
if(compositeKey == NULL) {
|
||||
[self.touchIdButton setEnabled:false];
|
||||
return;
|
||||
}
|
||||
NSError* error;
|
||||
bool success = self.completionHandler(compositeKey, NULL, false, &error);
|
||||
if(success) {
|
||||
return;
|
||||
}
|
||||
[self.touchIdButton setEnabled:false];
|
||||
[self _showError:error];
|
||||
}
|
||||
|
||||
- (IBAction)touchIdEnabledChanged:(id)sender {
|
||||
[self _touchIdUpdateToolTip];
|
||||
}
|
||||
|
||||
- (void) _touchIdUpdateToolTip {
|
||||
switch(self.touchIdEnabledButton.state) {
|
||||
case NSControlStateValueOn:
|
||||
self.touchIdEnabledButton.toolTip = NSLocalizedString(@"TOOLTIP_TOUCHID_ENABELD", @"Tooltip displayed when TouchID is is fully enabeld");
|
||||
case NSControlStateValueOff:
|
||||
self.touchIdEnabledButton.toolTip = NSLocalizedString(@"TOOLTIP_TOUCHID_DISABLED", @"Tooltip displayed when TouchID is disabled");
|
||||
case NSControlStateValueMixed:
|
||||
default:
|
||||
self.touchIdEnabledButton.toolTip = NSLocalizedString(@"TOOLTIP_TOUCHID_TRANSIENT", @"Tooltip displayed when TouchID is in transient (inmemory) mode");
|
||||
}
|
||||
}
|
||||
|
||||
- (IBAction)resetKeyFile:(id)sender {
|
||||
/* If the reset was triggered by ourselves we want to preselect the keyfile */
|
||||
if(sender == self) {
|
||||
@@ -153,6 +374,9 @@
|
||||
self.enablePassword = YES;
|
||||
self.passwordTextField.stringValue = @"";
|
||||
self.messageInfoTextField.hidden = (nil == self.message);
|
||||
self.touchIdButton.hidden = ![self _touchIdIsUnlockAvailable];
|
||||
[self.touchIdButton setEnabled:true];
|
||||
|
||||
if(self.message) {
|
||||
self.messageInfoTextField.stringValue = self.message;
|
||||
self.messageImageView.image = [NSImage imageNamed:NSImageNameInfo];
|
||||
@@ -236,5 +460,4 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
|
||||
@@ -22,8 +22,6 @@
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
typedef NS_ENUM(NSUInteger, MPPasteboardOverlayInfoType) {
|
||||
MPPasteboardOverlayInfoPassword,
|
||||
MPPasteboardOverlayInfoUsername,
|
||||
@@ -32,22 +30,6 @@ typedef NS_ENUM(NSUInteger, MPPasteboardOverlayInfoType) {
|
||||
MPPasteboardOverlayInfoReference // overlay info that a reference that was copied
|
||||
};
|
||||
|
||||
typedef MPPasteboardOverlayInfoType MPPasteboardContentInfoType;
|
||||
|
||||
@interface MPPasteBoardContentInfo : NSObject
|
||||
|
||||
@property (readonly, strong) NSImage *image;
|
||||
@property (readonly, strong) NSString *label;
|
||||
|
||||
+ (instancetype)contentInforForCustomField:(NSString *)name;
|
||||
+ (instancetype)passwordContentInfo; // creates a content info approporate for passwords
|
||||
+ (instancetype)urlContentInfo; // creates a content info apprpriate for urls
|
||||
|
||||
- (instancetype)initWithImage:(NSImage * _Nullable)image label:(NSString * _Nullable)label NS_DESIGNATED_INITIALIZER;
|
||||
- (instancetype)initWithType:(MPPasteboardContentInfoType)type;
|
||||
|
||||
@end
|
||||
|
||||
@interface MPPasteBoardController : NSObject
|
||||
|
||||
/**
|
||||
@@ -88,9 +70,6 @@ FOUNDATION_EXPORT NSString *const MPPasteBoardControllerDidClearClipboard;
|
||||
@param name a custom name
|
||||
@param view the view that initiated the copy action
|
||||
*/
|
||||
- (void)copyObject:(id<NSPasteboardWriting>)object overlayInfo:(MPPasteboardOverlayInfoType)overlayInfoType name:(NSString * _Nullable)name atView:(NSView *)view;
|
||||
- (void)copyObject:(id<NSPasteboardWriting>)object contentInfo:(MPPasteBoardContentInfo *)info atView:(NSView *)view;
|
||||
- (void)copyObject:(id<NSPasteboardWriting>)object overlayInfo:(MPPasteboardOverlayInfoType)overlayInfoType name:(NSString *)name atView:(NSView *)view;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
|
||||
#import "MPPasteBoardController.h"
|
||||
#import "MPSettingsHelper.h"
|
||||
#import "MPIconHelper.h"
|
||||
#import "MPOverlayWindowController.h"
|
||||
|
||||
/* Notifications */
|
||||
@@ -127,10 +126,6 @@ NSString *const MPPasteBoardTypeSource = @"org.nspasteboard.source";
|
||||
self.isEmpty = NO;
|
||||
}
|
||||
|
||||
- (void)copyObject:(id<NSPasteboardWriting>)object contentInfo:(MPPasteBoardContentInfo *)info atView:(nonnull NSView *)view{
|
||||
[self copyObject:object overlayInfo:MPPasteboardOverlayInfoCustom name:info.label atView:view];
|
||||
}
|
||||
|
||||
- (void)copyObject:(id<NSPasteboardWriting>)object overlayInfo:(MPPasteboardOverlayInfoType)overlayInfoType name:(NSString *)name atView:(NSView *)view{
|
||||
if(!object) {
|
||||
return;
|
||||
@@ -140,27 +135,27 @@ NSString *const MPPasteBoardTypeSource = @"org.nspasteboard.source";
|
||||
NSString *infoText = nil;
|
||||
switch(overlayInfoType) {
|
||||
case MPPasteboardOverlayInfoPassword:
|
||||
infoImage = [MPIconHelper icon:MPIconPassword];
|
||||
infoImage = [NSBundle.mainBundle imageForResource:@"00_PasswordTemplate"];
|
||||
infoText = NSLocalizedString(@"COPIED_PASSWORD", @"Password was copied to the pasteboard");
|
||||
break;
|
||||
|
||||
case MPPasteboardOverlayInfoURL:
|
||||
infoImage = [MPIconHelper icon:MPIconPackageNetwork];
|
||||
infoImage = [NSBundle.mainBundle imageForResource:@"01_PackageNetworkTemplate"];
|
||||
infoText = NSLocalizedString(@"COPIED_URL", @"URL was copied to the pasteboard");
|
||||
break;
|
||||
|
||||
case MPPasteboardOverlayInfoUsername:
|
||||
infoImage = [MPIconHelper icon:MPIconIdentity];
|
||||
infoImage = [NSBundle.mainBundle imageForResource:@"09_IdentityTemplate"];
|
||||
infoText = NSLocalizedString(@"COPIED_USERNAME", @"Username was copied to the pasteboard");
|
||||
break;
|
||||
|
||||
case MPPasteboardOverlayInfoCustom:
|
||||
infoImage = [MPIconHelper icon:MPIconPassword];
|
||||
infoImage = [NSBundle.mainBundle imageForResource:@"00_PasswordTemplate"];
|
||||
infoText = [NSString stringWithFormat:NSLocalizedString(@"COPIED_FIELD_%@", "Field name that was copied to the pasteboard"), name];
|
||||
break;
|
||||
|
||||
case MPPasteboardOverlayInfoReference:
|
||||
infoImage = [MPIconHelper icon:MPIconKlipper];
|
||||
infoImage = [NSBundle.mainBundle imageForResource:@"04_KlipperTemplate"];
|
||||
infoText = name;
|
||||
break;
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ FOUNDATION_EXPORT NSString *const MPPluginDescriptionInfoDictionaryKey;
|
||||
@param host plugin host hosting the pluing - MacPass
|
||||
@return the plugin instance ready for use
|
||||
*/
|
||||
- (instancetype)initWithPluginHost:(MPPluginHost *)host NS_DESIGNATED_INITIALIZER NS_REQUIRES_SUPER;
|
||||
- (instancetype)initWithPluginHost:(MPPluginHost *)host NS_DESIGNATED_INITIALIZER;
|
||||
- (instancetype)init NS_UNAVAILABLE;
|
||||
|
||||
- (void)didLoadPlugin;
|
||||
@@ -81,6 +81,7 @@ FOUNDATION_EXPORT NSString *const MPPluginDescriptionInfoDictionaryKey;
|
||||
- (NSString *)windowTitleForRunningApplication:(NSRunningApplication *)runningApplication;
|
||||
@end
|
||||
|
||||
|
||||
#pragma mark Proposed Plugin Protocolls
|
||||
|
||||
/*
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
//
|
||||
// MPSecurityDatabaseSettingsViewController.h
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 18.11.21.
|
||||
// Copyright © 2021 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface MPSecurityDatabaseSettingsViewController : NSViewController
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -1,22 +0,0 @@
|
||||
//
|
||||
// MPSecurityDatabaseSettingsViewController.m
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 18.11.21.
|
||||
// Copyright © 2021 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import "MPSecurityDatabaseSettingsViewController.h"
|
||||
|
||||
@interface MPSecurityDatabaseSettingsViewController ()
|
||||
|
||||
@end
|
||||
|
||||
@implementation MPSecurityDatabaseSettingsViewController
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
// Do view setup here.
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -1,19 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11134" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11134"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="MPSecurityDatabaseSettingsViewController">
|
||||
<connections>
|
||||
<outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView id="Hz6-mo-xeY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
</customView>
|
||||
</objects>
|
||||
</document>
|
||||
@@ -22,6 +22,10 @@
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
/* TouchID */
|
||||
APPKIT_EXTERN NSString *const kMPSettingsKeyEntryTouchIdEnabled;
|
||||
APPKIT_EXTERN NSString *const kMPSettingsKeyEntryTouchIdDatabaseEncryptedKeyFormat;
|
||||
|
||||
/* Clipboard */
|
||||
APPKIT_EXTERN NSString *const kMPSettingsKeyPasteboardClearTimeout;
|
||||
APPKIT_EXTERN NSString *const kMPSettingsKeyClearPasteboardOnQuit;
|
||||
@@ -34,14 +38,9 @@ APPKIT_EXTERN NSString *const kMPSettingsKeyReopenLastDatabaseOnLaunch;
|
||||
APPKIT_EXTERN NSString *const kMPSettingsKeyQuitOnLastWindowClose; // Quit MacPass when the user closes the last window
|
||||
APPKIT_EXTERN NSString *const kMPSettingsKeyFileChangeStrategy;
|
||||
APPKIT_EXTERN NSString *const kMPSettingsKeyEnableAutosave; // if set to YES MacPass support Autosaving for documents
|
||||
APPKIT_EXTERN NSString *const kMPSettingsKeyFocusSearchAfterUnlock; // Enter search after unlocking the database
|
||||
|
||||
/* Entry Table Display */
|
||||
APPKIT_EXTERN NSString *const kMPSettingsKeyDisplayClearTextPasswordsInEntryList;
|
||||
|
||||
/* URL handling */
|
||||
APPKIT_EXTERN NSString *const kMPSettingsKeyBrowserBundleId;
|
||||
APPKIT_EXTERN NSString *const kMPSettingsKeyUsePrivateBrowsingWhenOpeningURLs;
|
||||
|
||||
/* Autolock */
|
||||
APPKIT_EXTERN NSString *const kMPSettingsKeyLockOnSleep;
|
||||
@@ -99,9 +98,6 @@ APPKIT_EXTERN NSString *const kMPSettingsKeyAllowRemoteFetchOfPluginRepository;
|
||||
/* Network */
|
||||
APPKIT_EXTERN NSString *const kMPSettingsKeyFaviconDownloadMethod;
|
||||
|
||||
/* UI */
|
||||
APPKIT_EXTERN NSString *const kMPSettingsKeyUseUnifiedToolbar;
|
||||
|
||||
typedef NS_ENUM(NSUInteger, MPFileChangeStrategy) {
|
||||
MPFileChangeStrategyAsk,
|
||||
MPFileChangeStrategyKeepMine,
|
||||
|
||||
@@ -30,23 +30,18 @@ NSString *const kMPSettingsKeyPasteboardClearTimeout = @"Cl
|
||||
NSString *const kMPSettingsKeyClearPasteboardOnQuit = @"ClearClipboardOnQuit";
|
||||
NSString *const kMPSettingsKeyPreventUniversalClipboard = @"PreventUniversalClipboard";
|
||||
NSString *const kMPSettingsKeyBrowserBundleId = @"BrowserBundleId";
|
||||
NSString *const kMPSettingsKeyUsePrivateBrowsingWhenOpeningURLs = @"UsePrivateBrowsingWhenOpeningURLs";
|
||||
NSString *const kMPSettingsKeyOpenEmptyDatabaseOnLaunch = @"OpenEmptyDatabaseOnLaunch";
|
||||
NSString *const kMPSettingsKeyReopenLastDatabaseOnLaunch = @"ReopenLastDatabaseOnLaunch";
|
||||
NSString *const kMPSettingsKeyQuitOnLastWindowClose = @"QuitOnLastWindowClose";
|
||||
NSString *const kMPSettingsKeyFileChangeStrategy = @"FileChangeStrategy";
|
||||
NSString *const kMPSettingsKeyEnableAutosave = @"EnableAutosave";
|
||||
NSString *const kMPSettingsKeyFocusSearchAfterUnlock = @"FocusSearchAfterUnlock";
|
||||
|
||||
NSString *const kMPSettingsKeyDisplayClearTextPasswordsInEntryList = @"DisplayClearTextPasswordsInEntryList";
|
||||
|
||||
NSString *const kMPSettingsKeyLockOnSleep = @"LockOnSleep";
|
||||
NSString *const kMPSettingskeyLockOnLogout = @"LockOnLogout";
|
||||
NSString *const kMPSettingskeyLockOnScreenSleep = @"LockOnScreenSleep";
|
||||
NSString *const kMPSettingsKeyIdleLockTimeOut = @"IdleLockTimeOut";
|
||||
NSString *const kMPSettingsKeyShowInspector = @"ShowInspector";
|
||||
NSString *const kMPSettingsKeyEntryTableSortDescriptors = @"EntryTableSortDescriptors";
|
||||
|
||||
|
||||
NSString *const kMPSettingsKeyLegacyHideTitle = @"LegacyHideTitle";
|
||||
NSString *const kMPSettingsKeyLegacyHideUsername = @"LegacyHideUsername ";
|
||||
NSString *const kMPSettingsKeyLegacyHidePassword = @"LegacyHidePassword";
|
||||
@@ -67,6 +62,9 @@ NSString *const kMPSettingsKeyAutotypeMatchHost = @"Au
|
||||
NSString *const kMPSettingsKeyAutotypeMatchTags = @"AutotypeMatchTags";
|
||||
NSString *const kMPSettingsKeyGloablAutotypeAlwaysShowCandidateSelection = @"GloablAutotypeAlwaysShowCandidateSelection";
|
||||
|
||||
NSString *const kMPSettingsKeyEntryTouchIdEnabled = @"EnableSubsequentUnlocksWithTouchID";
|
||||
NSString *const kMPSettingsKeyEntryTouchIdDatabaseEncryptedKeyFormat = @"EncryptedDatabaseKeyForTouchID-%@";
|
||||
|
||||
NSString *const kMPSettingsKeyEntrySearchFilterContext = @"EntrySearchFilterContext";
|
||||
|
||||
NSString *const kMPSettingsKeyEnableQuicklookPreview = @"EnableQuicklookPreview";
|
||||
@@ -95,8 +93,6 @@ NSString *const kMPSettingsKeyAllowRemoteFetchOfPluginRepository = @"Al
|
||||
|
||||
NSString *const kMPSettingsKeyFaviconDownloadMethod = @"FaviconDownloadMethod";
|
||||
|
||||
NSString *const kMPSettingsKeyUseUnifiedToolbar =@"UseUnifiedToolbar";
|
||||
|
||||
/* Deprecated */
|
||||
NSString *const kMPDeprecatedSettingsKeyRememberKeyFilesForDatabases = @"kMPSettingsKeyRememberKeyFilesForDatabases";
|
||||
NSString *const kMPDeprecatedSettingsKeyLastDatabasePath = @"MPLastDatabasePath";
|
||||
@@ -134,54 +130,51 @@ NSString *const kMPDepricatedSettingsKeyAutotypeHideAccessibiltyWarning = @"Au
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
standardDefaults = @{
|
||||
kMPSettingsKeyShowInspector: @YES, // Show the Inspector by default
|
||||
kMPSettingsKeyPasteboardClearTimeout: @30, // 30 seconds
|
||||
kMPSettingsKeyClearPasteboardOnQuit: @YES, // Clear Clipboard on quit
|
||||
kMPSettingsKeyPreventUniversalClipboard: @YES, // Disable Universal Clipboard by default
|
||||
kMPSettingsKeyOpenEmptyDatabaseOnLaunch: @NO,
|
||||
kMPSettingsKeyReopenLastDatabaseOnLaunch: @YES,
|
||||
kMPSettingsKeyFileChangeStrategy: @(MPFileChangeStrategyAsk), // Ask what to do on a file change!
|
||||
kMPSettingsKeyLockOnSleep: @YES,
|
||||
kMPSettingskeyLockOnLogout: @NO,
|
||||
kMPSettingskeyLockOnScreenSleep: @NO,
|
||||
kMPSettingsKeyIdleLockTimeOut: @0, // Do not lock while idle by default
|
||||
kMPSettingsKeyLegacyHideNotes: @NO,
|
||||
kMPSettingsKeyLegacyHidePassword: @YES,
|
||||
kMPSettingsKeyLegacyHideTitle: @NO,
|
||||
kMPSettingsKeyLegacyHideURL: @NO,
|
||||
kMPSettingsKeyLegacyHideUsername: @NO,
|
||||
kMPSettingsKeyRememberKeyFilesForDatabases: @NO,
|
||||
kMPSettingsKeySendCommandForControlKey: @YES, // translate Ctrl to Cmd by default
|
||||
kMPSettingsKeyEnableGlobalAutotype: @NO, // Keep global autotype disabled by default
|
||||
kMPSettingsKeyGlobalAutotypeKeyDataKey: DDHotKey.defaultHotKeyData, // Cmd + Alt + M
|
||||
kMPSettingsKeyDefaultGlobalAutotypeSequence: @"{USERNAME}{TAB}{PASSWORD}{ENTER}",
|
||||
kMPSettingsKeyAutotypeMatchTitle: @YES,
|
||||
kMPSettingsKeyAutotypeMatchURL: @NO,
|
||||
kMPSettingsKeyAutotypeMatchHost: @NO,
|
||||
kMPSettingsKeyAutotypeMatchTags: @NO,
|
||||
kMPSettingsKeyEnableQuicklookPreview: @NO,
|
||||
kMPSettingsKeyCopyGeneratedPasswordToClipboard: @NO,
|
||||
kMPSettingsKeyDefaultPasswordLength: @12,
|
||||
kMPSettingsKeyPasswordCharacterFlags: @(MPPasswordCharactersAll),
|
||||
kMPSettingsKeyPasswordUseCustomString: @NO,
|
||||
kMPSettingsKeyPasswordCustomString: @"",
|
||||
kMPSettingsKeyPasswordEnsureOccurance: @NO,
|
||||
kMPSettingsKeyDoubleClickURLAction: @(MPDoubleClickURLActionCopy),
|
||||
kMPSettingsKeyDoubleClickTitleAction: @(MPDoubleClickTitleActionInspect),
|
||||
kMPSettingsKeyLoadUnsecurePlugins: @NO,
|
||||
kMPSettingsKeyUpdatePasswordOnTemplateEntries: @YES,
|
||||
kMPSettingsKeyGeneratePasswordForNewEntires: @YES,
|
||||
kMPSettingsKeyDisabledPlugins: @[],
|
||||
kMPSettingsKeyLoadIncompatiblePlugins: @NO,
|
||||
kMPSettingsKeyQuitOnLastWindowClose: @NO,
|
||||
kMPSettingsKeyEnableAutosave: @YES,
|
||||
kMPSettingsKeyHideAfterCopyToClipboard: @NO,
|
||||
kMPSettingsKeyFaviconDownloadMethod: @(MPFaviconDownloadMethodDirect), // Download directly from host
|
||||
kMPSettingsKeyGloablAutotypeAlwaysShowCandidateSelection: @NO,
|
||||
kMPSettingsKeyUseUnifiedToolbar: @YES, // Do not use unified toolbar under Big Sur and above
|
||||
kMPSettingsKeyFocusSearchAfterUnlock: @NO, // Do not enter search directly after unlocking the database
|
||||
kMPSettingsKeyUsePrivateBrowsingWhenOpeningURLs: @NO // No private mode when option URLs by default
|
||||
};
|
||||
kMPSettingsKeyShowInspector: @YES, // Show the Inspector by default
|
||||
kMPSettingsKeyPasteboardClearTimeout: @30, // 30 seconds
|
||||
kMPSettingsKeyClearPasteboardOnQuit: @YES, // Clear Clipboard on quit
|
||||
kMPSettingsKeyPreventUniversalClipboard: @YES, // Disable Universal Clipboard by default
|
||||
kMPSettingsKeyOpenEmptyDatabaseOnLaunch: @NO,
|
||||
kMPSettingsKeyReopenLastDatabaseOnLaunch: @YES,
|
||||
kMPSettingsKeyFileChangeStrategy: @(MPFileChangeStrategyAsk), // Ask what to do on a file change!
|
||||
kMPSettingsKeyLockOnSleep: @YES,
|
||||
kMPSettingskeyLockOnLogout: @NO,
|
||||
kMPSettingskeyLockOnScreenSleep: @NO,
|
||||
kMPSettingsKeyIdleLockTimeOut: @0, // Do not lock while idle by default
|
||||
kMPSettingsKeyLegacyHideNotes: @NO,
|
||||
kMPSettingsKeyLegacyHidePassword: @YES,
|
||||
kMPSettingsKeyLegacyHideTitle: @NO,
|
||||
kMPSettingsKeyLegacyHideURL: @NO,
|
||||
kMPSettingsKeyLegacyHideUsername: @NO,
|
||||
kMPSettingsKeyRememberKeyFilesForDatabases: @NO,
|
||||
kMPSettingsKeySendCommandForControlKey: @YES, // translate Ctrl to Cmd by default
|
||||
kMPSettingsKeyEnableGlobalAutotype: @NO, // Keep global autotype disabled by default
|
||||
kMPSettingsKeyGlobalAutotypeKeyDataKey: DDHotKey.defaultHotKeyData, // Cmd + Alt + M
|
||||
kMPSettingsKeyDefaultGlobalAutotypeSequence: @"{USERNAME}{TAB}{PASSWORD}{ENTER}",
|
||||
kMPSettingsKeyAutotypeMatchTitle: @YES,
|
||||
kMPSettingsKeyAutotypeMatchURL: @NO,
|
||||
kMPSettingsKeyAutotypeMatchHost: @NO,
|
||||
kMPSettingsKeyAutotypeMatchTags: @NO,
|
||||
kMPSettingsKeyEnableQuicklookPreview: @NO,
|
||||
kMPSettingsKeyCopyGeneratedPasswordToClipboard: @NO,
|
||||
kMPSettingsKeyDefaultPasswordLength: @12,
|
||||
kMPSettingsKeyPasswordCharacterFlags: @(MPPasswordCharactersAll),
|
||||
kMPSettingsKeyPasswordUseCustomString: @NO,
|
||||
kMPSettingsKeyPasswordCustomString: @"",
|
||||
kMPSettingsKeyPasswordEnsureOccurance: @NO,
|
||||
kMPSettingsKeyDoubleClickURLAction: @(MPDoubleClickURLActionCopy),
|
||||
kMPSettingsKeyDoubleClickTitleAction: @(MPDoubleClickTitleActionInspect),
|
||||
kMPSettingsKeyLoadUnsecurePlugins: @NO,
|
||||
kMPSettingsKeyUpdatePasswordOnTemplateEntries: @YES,
|
||||
kMPSettingsKeyGeneratePasswordForNewEntires: @YES,
|
||||
kMPSettingsKeyDisabledPlugins: @[],
|
||||
kMPSettingsKeyLoadIncompatiblePlugins: @NO,
|
||||
kMPSettingsKeyQuitOnLastWindowClose: @NO,
|
||||
kMPSettingsKeyEnableAutosave: @YES,
|
||||
kMPSettingsKeyHideAfterCopyToClipboard: @NO,
|
||||
kMPSettingsKeyFaviconDownloadMethod: @(MPFaviconDownloadMethodDirect), // Download directly from host
|
||||
kMPSettingsKeyGloablAutotypeAlwaysShowCandidateSelection: @NO
|
||||
};
|
||||
});
|
||||
return standardDefaults;
|
||||
}
|
||||
@@ -202,9 +195,9 @@ NSString *const kMPDepricatedSettingsKeyAutotypeHideAccessibiltyWarning = @"Au
|
||||
kMPDeprecatedSettingsKeyShowMenuItem,
|
||||
kMPDepricatedSettingsKeyLoadUnsecurePlugins,
|
||||
kMPDepricatedSettingsKeyAutotypeHideAccessibiltyWarning
|
||||
];
|
||||
});
|
||||
return deprecatedSettings;
|
||||
];
|
||||
});
|
||||
return deprecatedSettings;
|
||||
}
|
||||
|
||||
|
||||
@@ -219,17 +212,17 @@ return deprecatedSettings;
|
||||
/*
|
||||
MacPass < 0.4 did use compare: for the entry table view,
|
||||
this was changed in 0.4 to localizedCaseInsensitiveCompare:
|
||||
|
||||
|
||||
MacPass < 0.5.2 did use parent.name for group names,
|
||||
this was changed in 0.6. to parent.title
|
||||
|
||||
|
||||
*/
|
||||
NSData *descriptorData = [NSUserDefaults.standardUserDefaults dataForKey:kMPSettingsKeyEntryTableSortDescriptors];
|
||||
if(!descriptorData) {
|
||||
return; // No user defaults
|
||||
}
|
||||
NSArray *sortDescriptors = [NSKeyedUnarchiver unarchiveObjectWithData:descriptorData];
|
||||
|
||||
|
||||
for(NSSortDescriptor *descriptor in sortDescriptors) {
|
||||
/* Brute force, just kill the settings if they might cause trouble */
|
||||
if(descriptor.selector == @selector(compare:)
|
||||
@@ -307,7 +300,7 @@ return deprecatedSettings;
|
||||
if(oldValue != [[self _standardDefaults][kMPDepricatedSettingsKeyLoadUnsecurePlugins] boolValue]) {
|
||||
[NSUserDefaults.standardUserDefaults setBool:oldValue forKey:kMPSettingsKeyLoadUnsecurePlugins];
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface MPTOTPSetupViewController : NSViewController <NSTextFieldDelegate>
|
||||
@interface MPTOTPSetupViewController : NSViewController
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
@property (strong) IBOutlet NSGridView *gridView;
|
||||
@property (strong) IBOutlet NSPopUpButton *typePopUpButton;
|
||||
|
||||
@property (nonatomic, readonly) KPKEntry *representedEntry;
|
||||
@property (copy) KPKTimeOTPGenerator *generator;
|
||||
@property (strong) KPKTimeOTPGenerator *generator;
|
||||
@property NSInteger timeSlice;
|
||||
|
||||
@end
|
||||
|
||||
@@ -32,8 +32,6 @@ typedef NS_ENUM(NSUInteger, MPOTPUpdateSource) {
|
||||
MPOTPUpdateSourceSecret,
|
||||
MPOTPUpdateSourceAlgorithm,
|
||||
MPOTPUpdateSourceTimeSlice,
|
||||
MPOTPUpdateSourceType,
|
||||
MPOTPUpdateSourceDigits,
|
||||
MPOTPUpdateSourceEntry
|
||||
};
|
||||
|
||||
@@ -45,70 +43,10 @@ typedef NS_ENUM(NSUInteger, MPOTPType) {
|
||||
|
||||
@implementation MPTOTPSetupViewController
|
||||
|
||||
- (KPKEntry *)representedEntry {
|
||||
if([self.representedObject isKindOfClass:KPKEntry.class]) {
|
||||
return (KPKEntry *)self.representedObject;
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
[self _setupView];
|
||||
[self _updateView:MPOTPUpdateSourceEntry];
|
||||
}
|
||||
NSAssert([self.representedObject isKindOfClass:KPKEntry.class], @"represented object needs to be a KPKEntry");
|
||||
|
||||
- (IBAction)changeType:(id)sender {
|
||||
if(sender != self.typePopUpButton) {
|
||||
return; // wrong sender
|
||||
}
|
||||
[self _updateView:MPOTPUpdateSourceType];
|
||||
}
|
||||
|
||||
- (IBAction)changeHashAlgorithm:(id)sender {
|
||||
[self _updateView:MPOTPUpdateSourceAlgorithm];
|
||||
}
|
||||
|
||||
- (IBAction)changeDigits:(id)sender {
|
||||
[self _updateView:MPOTPUpdateSourceDigits];
|
||||
}
|
||||
|
||||
- (IBAction)changeTimeSlice:(id)sender {
|
||||
[self _updateView:MPOTPUpdateSourceTimeSlice];
|
||||
}
|
||||
|
||||
- (IBAction)parseQRCode:(id)sender {
|
||||
if(sender != self.qrCodeImageView) {
|
||||
return; // wrong sender
|
||||
}
|
||||
[self _updateView:MPOTPUpdateSourceQRImage];
|
||||
}
|
||||
|
||||
- (IBAction)cancel:(id)sender {
|
||||
[self.presentingViewController dismissViewController:self];
|
||||
}
|
||||
|
||||
- (IBAction)save:(id)sender {
|
||||
// Update entry settings!
|
||||
// FIXME: add model observing to ensure correct history recording
|
||||
[self.generator saveToEntry:self.representedEntry];
|
||||
[self.presentingViewController dismissViewController:self];
|
||||
}
|
||||
|
||||
- (void)controlTextDidEndEditing:(NSNotification *)notification {
|
||||
NSControl *control = notification.object;
|
||||
if(control == self.secretTextField) {
|
||||
[self _updateView:MPOTPUpdateSourceSecret];
|
||||
}
|
||||
else if(control == self.urlTextField) {
|
||||
[self _updateView:MPOTPUpdateSourceURL];
|
||||
}
|
||||
else if(control == self.timeStepTextField) {
|
||||
[self _updateView:MPOTPUpdateSourceTimeSlice];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)_setupView {
|
||||
/* algorithm */
|
||||
NSMenuItem *sha1Item = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"HASH_SHA1", "SHA 1 hash algoritm menu item") action:NULL keyEquivalent:@""];
|
||||
sha1Item.tag = KPKOTPHashAlgorithmSha1;
|
||||
@@ -122,9 +60,6 @@ typedef NS_ENUM(NSUInteger, MPOTPType) {
|
||||
[self.algorithmPopUpButton.menu addItem:sha256Item];
|
||||
[self.algorithmPopUpButton.menu addItem:sha512Item];
|
||||
|
||||
self.algorithmPopUpButton.action = @selector(changeHashAlgorithm:);
|
||||
self.algorithmPopUpButton.target = self;
|
||||
|
||||
/* digits */
|
||||
NSAssert(self.digitCountPopUpButton.menu.numberOfItems == 0, @"Digit menu needs to be empty");
|
||||
for(NSUInteger digit = 6; digit <= 8; digit++) {
|
||||
@@ -132,11 +67,7 @@ typedef NS_ENUM(NSUInteger, MPOTPType) {
|
||||
item.tag = digit;
|
||||
[self.digitCountPopUpButton.menu addItem:item];
|
||||
}
|
||||
|
||||
self.digitCountPopUpButton.action = @selector(changeDigits:);
|
||||
self.digitCountPopUpButton.target = self;
|
||||
|
||||
|
||||
|
||||
NSAssert(self.typePopUpButton.menu.numberOfItems == 0, @"Type menu needs to be empty!");
|
||||
NSMenuItem *rfcItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"OTP_RFC", @"OTP type RFC ") action:NULL keyEquivalent:@""];
|
||||
rfcItem.tag = MPOTPTypeRFC;
|
||||
@@ -149,166 +80,65 @@ typedef NS_ENUM(NSUInteger, MPOTPType) {
|
||||
[self.typePopUpButton.menu addItem:steamItem];
|
||||
[self.typePopUpButton.menu addItem:customItem];
|
||||
|
||||
self.typePopUpButton.action = @selector(changeType:);
|
||||
self.typePopUpButton.target = self;
|
||||
|
||||
self.timeStepTextField.stringValue = @"";
|
||||
self.timeStepStepper.integerValue = 0;
|
||||
|
||||
self.timeStepStepper.action = @selector(changeTimeSlice:);
|
||||
/*[self.timeStepTextField bind:NSValueBinding
|
||||
toObject:self
|
||||
withKeyPath:NSStringFromSelector(@selector(timeSlice))
|
||||
options:nil];
|
||||
[self.timeStepStepper bind:NSValueBinding
|
||||
toObject:self
|
||||
withKeyPath:NSStringFromSelector(@selector(timeSlice))
|
||||
options:@{ NSConditionallySetsEnabledBindingOption:@(NO), NSConditionallySetsEditableBindingOption:@(NO)}];*/
|
||||
|
||||
self.secretTextField.delegate = self;
|
||||
self.urlTextField.delegate = self;
|
||||
[self.timeStepTextField bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(timeSlice)) options:nil];
|
||||
[self.timeStepStepper bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(timeSlice)) options:nil];
|
||||
|
||||
[self _updateView:MPOTPUpdateSourceEntry];
|
||||
}
|
||||
|
||||
- (IBAction)toggleDisclosure:(id)sender {
|
||||
for(NSInteger row = 1; row < self.gridView.numberOfRows; row++) {
|
||||
NSGridRow *gridRow = [self.gridView rowAtIndex:row];
|
||||
gridRow.hidden = !gridRow.hidden;
|
||||
}
|
||||
}
|
||||
|
||||
- (IBAction)parseQRCode:(id)sender {
|
||||
if(sender != self.qrCodeImageView) {
|
||||
return; // wrong sender
|
||||
}
|
||||
[self _updateView:MPOTPUpdateSourceQRImage];
|
||||
}
|
||||
|
||||
- (void)_updateView:(MPOTPUpdateSource)source {
|
||||
/*
|
||||
MPOTPUpdateSourceQRImage,
|
||||
MPOTPUpdateSourceURL,
|
||||
MPOTPUpdateSourceSecret,
|
||||
MPOTPUpdateSourceAlgorithm,
|
||||
MPOTPUpdateSourceTimeSlice,
|
||||
MPOTPUpdateSourceType,
|
||||
MPOTPUpdateSourceEntry
|
||||
*/
|
||||
if(source != MPOTPUpdateSourceEntry) {
|
||||
NSAssert(self.generator, @"OTP Generator needs to be set when change source is not entry");
|
||||
}
|
||||
self.generator = [[KPKTimeOTPGenerator alloc] initWithAttributes:((KPKEntry *)self.representedObject).attributes];
|
||||
|
||||
BOOL enableCustomSettings = NO;
|
||||
switch(source) {
|
||||
case MPOTPUpdateSourceType: {
|
||||
MPOTPType otpType = self.typePopUpButton.selectedTag;
|
||||
NSData *oldKey = self.generator.key;
|
||||
switch(otpType) {
|
||||
case MPOTPTypeCustom:
|
||||
enableCustomSettings = YES;
|
||||
case MPOTPTypeRFC:
|
||||
self.generator = [[KPKTimeOTPGenerator alloc] init]; // initialize a RFC otp generator for custom and rfc types
|
||||
self.generator.key = oldKey;
|
||||
break;
|
||||
case MPOTPTypeSteam:
|
||||
self.generator = [[KPKSteamOTPGenerator alloc] init]; // initialize a default Steam OTP generator
|
||||
self.generator.key = oldKey;
|
||||
}
|
||||
if(source == MPOTPUpdateSourceQRImage) {
|
||||
NSString *qrCodeString = self.qrCodeImageView.image.QRCodeString;
|
||||
NSURL *otpURL = [NSURL URLWithString:qrCodeString];
|
||||
if(!otpURL.isTimeOTPURL) {
|
||||
return; // no valid URL
|
||||
}
|
||||
break;
|
||||
case MPOTPUpdateSourceQRImage: {
|
||||
NSString *qrCodeString = self.qrCodeImageView.image.QRCodeString;
|
||||
NSURL *otpURL = [NSURL URLWithString:qrCodeString];
|
||||
self.generator = otpURL.isSteamOTPURL ? [[KPKSteamOTPGenerator alloc] initWithURL:self.urlTextField.stringValue] : [[KPKTimeOTPGenerator alloc] initWithURL:self.urlTextField.stringValue];
|
||||
break;
|
||||
self.urlTextField.stringValue = otpURL.absoluteString;
|
||||
}
|
||||
|
||||
|
||||
/* FIXME: update correct values based on changes */
|
||||
|
||||
/* URL and QR code */
|
||||
KPKEntry *entry = self.representedObject;
|
||||
NSString *url = [entry attributeWithKey:kKPKAttributeKeyOTPOAuthURL].value;
|
||||
|
||||
self.urlTextField.stringValue = @"";
|
||||
|
||||
if(url) {
|
||||
NSURL *authURL = [NSURL URLWithString:url];
|
||||
if(authURL.isTimeOTPURL) {
|
||||
self.urlTextField.stringValue = authURL.absoluteString;
|
||||
self.qrCodeImageView.image = [NSImage QRCodeImageWithString:authURL.absoluteString];
|
||||
}
|
||||
case MPOTPUpdateSourceURL:{
|
||||
NSURL *otpURL = [NSURL URLWithString:self.urlTextField.stringValue];
|
||||
if(otpURL.isSteamOTPURL) {
|
||||
self.generator = [[KPKSteamOTPGenerator alloc] initWithURL:self.urlTextField.stringValue];
|
||||
}
|
||||
else if(otpURL.isTimeOTPURL) {
|
||||
self.generator = [[KPKTimeOTPGenerator alloc] initWithURL:self.urlTextField.stringValue];
|
||||
}
|
||||
else {
|
||||
// invalid URL
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case MPOTPUpdateSourceEntry:
|
||||
if(self.representedEntry.hasTimeOTP) {
|
||||
if(self.representedEntry.hasSteamOTP) {
|
||||
self.generator = [[KPKSteamOTPGenerator alloc] initWithAttributes:self.representedEntry.attributes];
|
||||
}
|
||||
else {
|
||||
self.generator = [[KPKTimeOTPGenerator alloc] initWithAttributes:self.representedEntry.attributes];
|
||||
}
|
||||
}
|
||||
else {
|
||||
self.generator = [[KPKTimeOTPGenerator alloc] init];
|
||||
}
|
||||
break;
|
||||
case MPOTPUpdateSourceSecret:
|
||||
self.generator.key = [NSData dataWithBase32EncodedString:self.secretTextField.stringValue];
|
||||
break;
|
||||
case MPOTPUpdateSourceAlgorithm:
|
||||
self.generator.hashAlgorithm = (KPKOTPHashAlgorithm)self.algorithmPopUpButton.selectedTag;
|
||||
break;
|
||||
case MPOTPUpdateSourceTimeSlice:
|
||||
self.generator.timeSlice = self.timeStepStepper.integerValue;
|
||||
break;
|
||||
case MPOTPUpdateSourceDigits:
|
||||
self.generator.numberOfDigits = self.digitCountPopUpButton.selectedTag;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
The KPKOTPGenerator is the sole data source. We do not need to query anything else
|
||||
*/
|
||||
|
||||
if(!self.generator) {
|
||||
// display issues!
|
||||
return;
|
||||
}
|
||||
|
||||
/* update display data with current generator */
|
||||
BOOL isSteam = [self.generator isKindOfClass:KPKSteamOTPGenerator.class];
|
||||
|
||||
if((self.generator.isRFC6238 && !enableCustomSettings) || isSteam) {
|
||||
if(isSteam) {
|
||||
[self.typePopUpButton selectItemWithTag:MPOTPTypeSteam];
|
||||
}
|
||||
else {
|
||||
[self.typePopUpButton selectItemWithTag:MPOTPTypeRFC];
|
||||
}
|
||||
self.digitCountPopUpButton.enabled = NO;
|
||||
self.algorithmPopUpButton.enabled = NO;
|
||||
self.timeStepStepper.enabled = NO;
|
||||
self.timeStepTextField.enabled = NO;
|
||||
}
|
||||
else {
|
||||
[self.typePopUpButton selectItemWithTag:MPOTPTypeCustom];
|
||||
self.digitCountPopUpButton.enabled = YES;
|
||||
self.algorithmPopUpButton.enabled = YES;
|
||||
self.timeStepStepper.enabled = YES;
|
||||
self.timeStepTextField.enabled = YES;
|
||||
}
|
||||
|
||||
NSURL *authURL;
|
||||
if(isSteam) {
|
||||
authURL = [NSURL URLWIthSteamOTPKey:self.generator.key issuer:self.representedEntry.title];
|
||||
}
|
||||
else {
|
||||
authURL = [NSURL URLWithTimeOTPKey:self.generator.key
|
||||
algorithm:self.generator.hashAlgorithm
|
||||
issuer:self.representedEntry.title
|
||||
period:self.generator.timeSlice
|
||||
digits:self.generator.numberOfDigits];
|
||||
}
|
||||
|
||||
if(!(authURL && authURL.isTimeOTPURL)) {
|
||||
// display issue!
|
||||
return;
|
||||
}
|
||||
|
||||
self.urlTextField.stringValue = authURL.absoluteString;
|
||||
self.qrCodeImageView.image = [NSImage QRCodeImageWithString:authURL.absoluteString];
|
||||
|
||||
NSString *secret = [self.generator.key base32EncodedStringWithOptions:0];
|
||||
/* secret */
|
||||
NSString *secret = [self.generator.key base32EncodedString];
|
||||
self.secretTextField.stringValue = secret ? secret : @"";
|
||||
|
||||
[self.algorithmPopUpButton selectItemWithTag:self.generator.hashAlgorithm];
|
||||
|
||||
[self.digitCountPopUpButton selectItemWithTag:self.generator.numberOfDigits];
|
||||
self.timeStepStepper.integerValue = self.generator.timeSlice;
|
||||
self.timeStepTextField.stringValue = self.timeStepStepper.stringValue;
|
||||
|
||||
self.timeSlice = self.generator.timeSlice;
|
||||
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19455" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment version="101304" identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19455"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -22,23 +22,21 @@
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView translatesAutoresizingMaskIntoConstraints="NO" id="Hz6-mo-xeY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="324" height="362"/>
|
||||
<customView id="Hz6-mo-xeY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="354" height="301"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<gridView horizontalHuggingPriority="251" xPlacement="leading" yPlacement="center" rowAlignment="firstBaseline" rowSpacing="8" translatesAutoresizingMaskIntoConstraints="NO" id="4gl-4p-0WY">
|
||||
<rect key="frame" x="20" y="60" width="284" height="282"/>
|
||||
<gridView xPlacement="leading" yPlacement="center" rowAlignment="firstBaseline" rowSpacing="8" translatesAutoresizingMaskIntoConstraints="NO" id="4gl-4p-0WY">
|
||||
<rect key="frame" x="20" y="28" width="314" height="253"/>
|
||||
<constraints>
|
||||
<constraint firstItem="GJN-85-eYH" firstAttribute="trailing" secondItem="Bt8-9X-91R" secondAttribute="trailing" id="9fv-9s-YwU"/>
|
||||
<constraint firstItem="AdN-zI-C65" firstAttribute="top" secondItem="caF-Au-ey8" secondAttribute="bottom" constant="8" symbolic="YES" id="GFv-3D-Ejx"/>
|
||||
<constraint firstItem="GJN-85-eYH" firstAttribute="top" secondItem="ku7-YD-kkV" secondAttribute="bottom" constant="8" symbolic="YES" id="kxe-2P-DnD"/>
|
||||
<constraint firstItem="aa3-XV-Chc" firstAttribute="top" secondItem="AdN-zI-C65" secondAttribute="bottom" constant="8" id="lWy-AW-0tB"/>
|
||||
<constraint firstItem="AdN-zI-C65" firstAttribute="trailing" secondItem="Bt8-9X-91R" secondAttribute="trailing" id="xXQ-D9-G21"/>
|
||||
</constraints>
|
||||
<rows>
|
||||
<gridRow topPadding="4" bottomPadding="4" id="T2o-We-WjN"/>
|
||||
<gridRow yPlacement="center" topPadding="4" bottomPadding="4" id="T2o-We-WjN"/>
|
||||
<gridRow yPlacement="fill" id="leK-j9-Cah"/>
|
||||
<gridRow id="J7I-Uw-OQv"/>
|
||||
<gridRow id="GmF-7D-t30"/>
|
||||
<gridRow yPlacement="none" id="J7I-Uw-OQv"/>
|
||||
<gridRow yPlacement="none" id="GmF-7D-t30"/>
|
||||
<gridRow id="hS6-e9-JPg"/>
|
||||
<gridRow id="QY3-TF-Rbs"/>
|
||||
<gridRow id="0Jy-aF-Wst"/>
|
||||
@@ -50,8 +48,8 @@
|
||||
</columns>
|
||||
<gridCells>
|
||||
<gridCell row="T2o-We-WjN" column="Ar1-qh-iHT" rowAlignment="lastBaseline" id="19c-m3-M2s">
|
||||
<textField key="contentView" horizontalHuggingPriority="252" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="hh3-nA-yHV">
|
||||
<rect key="frame" x="46" y="222" width="59" height="16"/>
|
||||
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="hh3-nA-yHV">
|
||||
<rect key="frame" x="46" y="209" width="59" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="QR Code" id="PuA-kW-t29">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -61,7 +59,7 @@
|
||||
</gridCell>
|
||||
<gridCell row="T2o-We-WjN" column="Ecc-pj-MX9" rowAlignment="none" id="jgf-mM-CW2">
|
||||
<imageView key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="yS5-M0-RSB">
|
||||
<rect key="frame" x="106" y="195" width="70" height="70"/>
|
||||
<rect key="frame" x="106" y="182" width="70" height="70"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="64" id="MhV-Ye-bQt"/>
|
||||
<constraint firstAttribute="height" constant="64" id="RRz-CV-k1H"/>
|
||||
@@ -73,9 +71,9 @@
|
||||
</imageView>
|
||||
</gridCell>
|
||||
<gridCell row="T2o-We-WjN" column="aZO-dP-SsW" xPlacement="leading" id="0bn-HV-7V1"/>
|
||||
<gridCell row="leK-j9-Cah" column="Ar1-qh-iHT" rowAlignment="none" id="fgi-y3-z17">
|
||||
<textField key="contentView" horizontalHuggingPriority="252" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="e3u-QK-K24">
|
||||
<rect key="frame" x="61" y="148" width="44" height="21"/>
|
||||
<gridCell row="leK-j9-Cah" column="Ar1-qh-iHT" id="fgi-y3-z17">
|
||||
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="e3u-QK-K24">
|
||||
<rect key="frame" x="61" y="154" width="44" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Secret" id="ufY-IN-5UY">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -83,9 +81,9 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="leK-j9-Cah" column="Ecc-pj-MX9" yPlacement="center" id="q9e-Zx-LIY">
|
||||
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Bt8-9X-91R">
|
||||
<rect key="frame" x="109" y="148" width="150" height="21"/>
|
||||
<gridCell row="leK-j9-Cah" column="Ecc-pj-MX9" headOfMergedCell="q9e-Zx-LIY" yPlacement="center" id="q9e-Zx-LIY">
|
||||
<textField key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Bt8-9X-91R">
|
||||
<rect key="frame" x="109" y="152" width="150" height="21"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="150" id="aN6-yG-12x"/>
|
||||
</constraints>
|
||||
@@ -96,10 +94,10 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="leK-j9-Cah" column="aZO-dP-SsW" id="gOO-ed-C7I"/>
|
||||
<gridCell row="leK-j9-Cah" column="aZO-dP-SsW" headOfMergedCell="q9e-Zx-LIY" id="gOO-ed-C7I"/>
|
||||
<gridCell row="J7I-Uw-OQv" column="Ar1-qh-iHT" id="LYj-ea-Ou9">
|
||||
<textField key="contentView" hidden="YES" horizontalHuggingPriority="252" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="W8L-ah-Kdc">
|
||||
<rect key="frame" x="71" y="121" width="34" height="16"/>
|
||||
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="W8L-ah-Kdc">
|
||||
<rect key="frame" x="71" y="127" width="34" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Type" id="fNC-fH-sYi">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -107,9 +105,9 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="J7I-Uw-OQv" column="Ecc-pj-MX9" id="fOz-RA-6LG">
|
||||
<popUpButton key="contentView" hidden="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ku7-YD-kkV">
|
||||
<rect key="frame" x="106" y="114" width="157" height="25"/>
|
||||
<gridCell row="J7I-Uw-OQv" column="Ecc-pj-MX9" headOfMergedCell="fOz-RA-6LG" id="fOz-RA-6LG">
|
||||
<popUpButton key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ku7-YD-kkV">
|
||||
<rect key="frame" x="107" y="120" width="38" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="WbA-Ie-Txj">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
@@ -117,10 +115,10 @@
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
</gridCell>
|
||||
<gridCell row="J7I-Uw-OQv" column="aZO-dP-SsW" id="mka-sc-dDD"/>
|
||||
<gridCell row="GmF-7D-t30" column="Ar1-qh-iHT" yPlacement="center" id="Isd-CW-srQ">
|
||||
<textField key="contentView" horizontalHuggingPriority="252" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="4Ic-Nt-YlL">
|
||||
<rect key="frame" x="75" y="91" width="30" height="16"/>
|
||||
<gridCell row="J7I-Uw-OQv" column="aZO-dP-SsW" headOfMergedCell="fOz-RA-6LG" id="mka-sc-dDD"/>
|
||||
<gridCell row="GmF-7D-t30" column="Ar1-qh-iHT" id="Isd-CW-srQ">
|
||||
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="4Ic-Nt-YlL">
|
||||
<rect key="frame" x="75" y="96" width="30" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="URL" id="Kci-xp-mLu">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -129,8 +127,8 @@
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="GmF-7D-t30" column="Ecc-pj-MX9" headOfMergedCell="Fpx-eQ-WAY" id="Fpx-eQ-WAY">
|
||||
<textField key="contentView" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="GJN-85-eYH">
|
||||
<rect key="frame" x="109" y="89" width="150" height="21"/>
|
||||
<textField key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="GJN-85-eYH">
|
||||
<rect key="frame" x="109" y="94" width="150" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" id="ZpH-Ks-BBi">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -140,8 +138,8 @@
|
||||
</gridCell>
|
||||
<gridCell row="GmF-7D-t30" column="aZO-dP-SsW" headOfMergedCell="Fpx-eQ-WAY" id="ZXy-HZ-O3a"/>
|
||||
<gridCell row="hS6-e9-JPg" column="Ar1-qh-iHT" id="5hJ-4K-a2d">
|
||||
<textField key="contentView" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="yiW-Wk-6YB">
|
||||
<rect key="frame" x="7" y="61" width="98" height="16"/>
|
||||
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="yiW-Wk-6YB">
|
||||
<rect key="frame" x="7" y="66" width="98" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Hash Algorithm" id="g3s-fk-k9Q">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -151,7 +149,7 @@
|
||||
</gridCell>
|
||||
<gridCell row="hS6-e9-JPg" column="Ecc-pj-MX9" id="6MO-n5-2Cu">
|
||||
<popUpButton key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="caF-Au-ey8">
|
||||
<rect key="frame" x="106" y="54" width="157" height="25"/>
|
||||
<rect key="frame" x="107" y="59" width="38" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="Rxs-11-LRy">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
@@ -161,8 +159,8 @@
|
||||
</gridCell>
|
||||
<gridCell row="hS6-e9-JPg" column="aZO-dP-SsW" id="56r-vv-PhT"/>
|
||||
<gridCell row="QY3-TF-Rbs" column="Ar1-qh-iHT" id="jL5-XH-KYZ">
|
||||
<textField key="contentView" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="JOR-bN-ZYC">
|
||||
<rect key="frame" x="41" y="31" width="64" height="16"/>
|
||||
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="JOR-bN-ZYC">
|
||||
<rect key="frame" x="41" y="35" width="64" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Time step" id="hbT-mm-dIn">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -172,7 +170,7 @@
|
||||
</gridCell>
|
||||
<gridCell row="QY3-TF-Rbs" column="Ecc-pj-MX9" xPlacement="fill" id="bvB-9m-g1U">
|
||||
<textField key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="AdN-zI-C65">
|
||||
<rect key="frame" x="109" y="28" width="150" height="22"/>
|
||||
<rect key="frame" x="109" y="33" width="150" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" id="bHO-kq-GUf">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -182,13 +180,13 @@
|
||||
</gridCell>
|
||||
<gridCell row="QY3-TF-Rbs" column="aZO-dP-SsW" rowAlignment="none" id="oRW-3a-WxP">
|
||||
<stepper key="contentView" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="CgJ-Qt-NPu">
|
||||
<rect key="frame" x="262" y="25" width="19" height="28"/>
|
||||
<rect key="frame" x="262" y="29" width="19" height="28"/>
|
||||
<stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="RPy-q9-wKy"/>
|
||||
</stepper>
|
||||
</gridCell>
|
||||
<gridCell row="0Jy-aF-Wst" column="Ar1-qh-iHT" id="hWa-nU-LpX">
|
||||
<textField key="contentView" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="z5V-Af-Kpa">
|
||||
<rect key="frame" x="-2" y="1" width="107" height="18"/>
|
||||
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="z5V-Af-Kpa">
|
||||
<rect key="frame" x="-2" y="4" width="107" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Number of Digits" id="iYF-F5-nMb">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -198,7 +196,7 @@
|
||||
</gridCell>
|
||||
<gridCell row="0Jy-aF-Wst" column="Ecc-pj-MX9" id="gil-83-ris">
|
||||
<popUpButton key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="aa3-XV-Chc">
|
||||
<rect key="frame" x="106" y="-4" width="157" height="25"/>
|
||||
<rect key="frame" x="107" y="-3" width="38" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="rzY-5S-dIJ">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
@@ -209,42 +207,14 @@
|
||||
<gridCell row="0Jy-aF-Wst" column="aZO-dP-SsW" id="V48-br-lpl"/>
|
||||
</gridCells>
|
||||
</gridView>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Ppm-aD-yti">
|
||||
<rect key="frame" x="193" y="13" width="118" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Save Settings" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="YGn-qt-RrI">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="save:" target="-2" id="k3D-gK-Tch"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="5a5-df-HAb">
|
||||
<rect key="frame" x="119" y="13" width="76" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Ynh-bE-30s">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<string key="keyEquivalent" base64-UTF8="YES">
|
||||
Gw
|
||||
</string>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="cancel:" target="-2" id="Z99-2L-Le6"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="5a5-df-HAb" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="3Dj-2P-0OT"/>
|
||||
<constraint firstAttribute="trailing" secondItem="4gl-4p-0WY" secondAttribute="trailing" constant="20" symbolic="YES" id="4eg-dj-7eq"/>
|
||||
<constraint firstItem="5a5-df-HAb" firstAttribute="bottom" secondItem="Ppm-aD-yti" secondAttribute="bottom" id="CZ9-Ia-TWV"/>
|
||||
<constraint firstItem="Ppm-aD-yti" firstAttribute="leading" secondItem="5a5-df-HAb" secondAttribute="trailing" constant="12" symbolic="YES" id="EXf-y0-UFR"/>
|
||||
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="4gl-4p-0WY" secondAttribute="bottom" constant="20" symbolic="YES" id="6lC-F3-SvT"/>
|
||||
<constraint firstItem="4gl-4p-0WY" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="20" symbolic="YES" id="QNT-yn-O32"/>
|
||||
<constraint firstItem="Ppm-aD-yti" firstAttribute="top" secondItem="4gl-4p-0WY" secondAttribute="bottom" constant="20" symbolic="YES" id="RMh-eo-ItW"/>
|
||||
<constraint firstAttribute="bottom" secondItem="Ppm-aD-yti" secondAttribute="bottom" constant="20" symbolic="YES" id="eBG-Ns-4ur"/>
|
||||
<constraint firstItem="4gl-4p-0WY" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="g3C-GL-weQ"/>
|
||||
<constraint firstAttribute="trailing" secondItem="Ppm-aD-yti" secondAttribute="trailing" constant="20" symbolic="YES" id="gxW-QO-gFu"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="-1402" y="-1030"/>
|
||||
<point key="canvasLocation" x="-989" y="-832"/>
|
||||
</customView>
|
||||
</objects>
|
||||
</document>
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface MPTOTPViewController : NSViewController <HNHUITextFieldDelegate>
|
||||
@interface MPTOTPViewController : NSViewController
|
||||
@property (strong) IBOutlet HNHUITextField *toptValueTextField;
|
||||
@property (strong) IBOutlet NSButton *remainingTimeButton;
|
||||
@property (strong) IBOutlet NSButton *showSetupButton;
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
|
||||
#import <KeePassKit/KeePassKit.h>
|
||||
#import "MPEntryInspectorViewController.h"
|
||||
#import "MPPasteBoardController.h"
|
||||
|
||||
@interface MPTOTPViewController ()
|
||||
|
||||
@@ -22,14 +21,6 @@
|
||||
|
||||
- (void)viewDidLoad {
|
||||
self.remainingTimeButton.title = @"";
|
||||
self.toptValueTextField.buttonTitle = NSLocalizedString(@"COPY", @"Copy the TOTP value to the clipboard");
|
||||
__weak MPTOTPViewController *welf = self;
|
||||
self.toptValueTextField.buttonActionBlock = (^void(NSTextField *tf) {
|
||||
NSText *text = [welf.view.window fieldEditor:NO forObject:welf.toptValueTextField];
|
||||
if([text isKindOfClass:NSTextView.class]) {
|
||||
[welf textField:welf.toptValueTextField textView:(NSTextView *)text performAction:@selector(copy:)];
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
- (IBAction)showOTPSetup:(id)sender {
|
||||
@@ -54,24 +45,6 @@
|
||||
[self _didChangeAttribute:nil];
|
||||
}
|
||||
|
||||
- (BOOL)textField:(NSTextField *)textField textView:(NSTextView *)textView performAction:(SEL)action {
|
||||
if(action == @selector(copy:)) {
|
||||
MPPasteboardOverlayInfoType info = MPPasteboardOverlayInfoCustom;
|
||||
NSMutableString *selectedValue = [[NSMutableString alloc] init];
|
||||
for(NSValue *rangeValue in textView.selectedRanges) {
|
||||
[selectedValue appendString:[textView.string substringWithRange:rangeValue.rangeValue]];
|
||||
}
|
||||
if(selectedValue.length == 0) {
|
||||
[selectedValue setString:textField.stringValue];
|
||||
}
|
||||
NSString *name = NSLocalizedString(@"TOTP", "Field TOTP was copied to the pasteboard");
|
||||
[MPPasteBoardController.defaultController copyObject:selectedValue overlayInfo:info name:name atView:self.view];
|
||||
return NO;
|
||||
}
|
||||
return YES;
|
||||
}
|
||||
|
||||
|
||||
- (void)_didChangeAttribute:(NSNotification *)notification {
|
||||
[self _updateDisplay];
|
||||
}
|
||||
@@ -81,8 +54,7 @@
|
||||
BOOL showTOTP = entry.hasTimeOTP;
|
||||
self.view.hidden = !showTOTP;
|
||||
if(showTOTP) {
|
||||
|
||||
self.generator = entry.hasSteamOTP ? [[KPKSteamOTPGenerator alloc] initWithAttributes:entry.attributes] : [[KPKTimeOTPGenerator alloc] initWithAttributes:entry.attributes];
|
||||
self.generator = [[KPKTimeOTPGenerator alloc] initWithAttributes:entry.attributes];
|
||||
self.generator.time = NSDate.date.timeIntervalSince1970;
|
||||
NSString *stringValue = self.generator.string;
|
||||
self.toptValueTextField.stringValue = stringValue ? stringValue : @"";
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19455" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19455"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -31,29 +31,26 @@
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<stackView distribution="fill" orientation="horizontal" alignment="centerY" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="avD-My-tnu">
|
||||
<rect key="frame" x="0.0" y="0.0" width="479" height="21"/>
|
||||
<stackView distribution="fill" orientation="horizontal" alignment="firstBaseline" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="avD-My-tnu">
|
||||
<rect key="frame" x="0.0" y="0.0" width="480" height="21"/>
|
||||
<subviews>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="xBL-Jz-VQO" customClass="HNHUITextField">
|
||||
<rect key="frame" x="0.0" y="0.0" width="406" height="21"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="399" height="21"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" truncatesLastVisibleLine="YES" selectable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="Vuy-HC-UhI">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="-2" id="pfM-gT-aXU"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Hxg-bd-l1O">
|
||||
<rect key="frame" x="414" y="2" width="26" height="18"/>
|
||||
<rect key="frame" x="407" y="1" width="27" height="17"/>
|
||||
<buttonCell key="cell" type="inline" title="30" bezelStyle="inline" alignment="center" enabled="NO" borderStyle="border" inset="2" id="roW-Uk-ff9">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="smallSystemBold"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="xge-Jc-QnB">
|
||||
<rect key="frame" x="441" y="-6" width="45" height="32"/>
|
||||
<rect key="frame" x="436" y="-7" width="50" height="32"/>
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSActionTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="64a-Tn-vdd">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -75,9 +72,6 @@
|
||||
</customSpacing>
|
||||
</stackView>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" secondItem="avD-My-tnu" secondAttribute="trailing" constant="1" id="nhf-Ld-Bh4"/>
|
||||
</constraints>
|
||||
<visibilityPriorities>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
@@ -94,10 +88,10 @@
|
||||
<constraint firstItem="Lz5-aM-o4b" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" id="y4i-uB-HlK"/>
|
||||
<constraint firstItem="Lz5-aM-o4b" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="zFP-JZ-Qtu"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="-629" y="-23"/>
|
||||
<point key="canvasLocation" x="-180" y="74"/>
|
||||
</customView>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSActionTemplate" width="15" height="15"/>
|
||||
<image name="NSActionTemplate" width="14" height="14"/>
|
||||
</resources>
|
||||
</document>
|
||||
@@ -36,7 +36,7 @@ APPKIT_EXTERN NSString *const MPToolbarItemIdentifierAutotype;
|
||||
|
||||
@class MPDocument;
|
||||
|
||||
@interface MPToolbarDelegate : NSObject <NSToolbarDelegate, NSSearchFieldDelegate>
|
||||
@interface MPToolbarDelegate : NSObject <NSToolbarDelegate, NSTextFieldDelegate>
|
||||
|
||||
@property (weak, readonly) NSSearchField *searchField;
|
||||
@property (weak) NSToolbar *toolbar;
|
||||
|
||||
@@ -143,7 +143,6 @@ NSString *const MPToolbarItemIdentifierAutotype = @"TOOLBAR_AUTOTYPE";
|
||||
menu.delegate = NSApp.mp_delegate.itemActionMenuDelegate;
|
||||
item.menuFormRepresentation = menuRepresentation;
|
||||
item.view = popupButton;
|
||||
item.visibilityPriority = NSToolbarItemVisibilityPriorityHigh - 1;
|
||||
}
|
||||
else if( [itemIdentifier isEqualToString:MPToolbarItemIdentifierAddEntry]) {
|
||||
MPContextButton *button = [[MPContextButton alloc] initWithFrame:NSMakeRect(0, 0, 32, 32)];
|
||||
@@ -158,6 +157,7 @@ NSString *const MPToolbarItemIdentifierAutotype = @"TOOLBAR_AUTOTYPE";
|
||||
menu.delegate = _addEntryMenuDelegate;
|
||||
button.contextMenu = menu;
|
||||
|
||||
|
||||
NSRect fittingRect = button.frame;
|
||||
fittingRect.size.width = MAX( (CGFloat)32.0,fittingRect.size.width);
|
||||
button.frame = fittingRect;
|
||||
@@ -167,6 +167,7 @@ NSString *const MPToolbarItemIdentifierAutotype = @"TOOLBAR_AUTOTYPE";
|
||||
action:[self _actionForToolbarItemIdentifier:itemIdentifier]
|
||||
keyEquivalent:@""];
|
||||
item.menuFormRepresentation = menuRepresentation;
|
||||
|
||||
}
|
||||
else if( [itemIdentifier isEqualToString:MPToolbarItemIdentifierSearch]){
|
||||
NSSearchField *searchField = [[NSSearchField alloc] init];
|
||||
@@ -176,21 +177,14 @@ NSString *const MPToolbarItemIdentifierAutotype = @"TOOLBAR_AUTOTYPE";
|
||||
cell.cancelButtonCell.target = nil;
|
||||
searchField.recentsAutosaveName = @"RecentEntrySearches";
|
||||
item.view = searchField;
|
||||
item.visibilityPriority = NSToolbarItemVisibilityPriorityHigh;
|
||||
|
||||
if(@available(macOS 11, *)) {
|
||||
// do not call any sizing API
|
||||
}
|
||||
else {
|
||||
/* Use default size base on documentation */
|
||||
item.minSize = NSMakeSize(140, 32);
|
||||
item.maxSize = NSMakeSize(400, 32);
|
||||
}
|
||||
|
||||
/* Use default size base on documentation */
|
||||
item.minSize = NSMakeSize(140, 32);
|
||||
item.maxSize = NSMakeSize(400, 32);
|
||||
NSMenu *templateMenu = [self _allocateSearchMenuTemplate];
|
||||
searchField.searchMenuTemplate = templateMenu;
|
||||
searchField.placeholderString = NSLocalizedString(@"SEARCH_EVERYWHERE", @"Placeholder string displayed in the search field in the toolbar");
|
||||
searchField.delegate = self;
|
||||
/* 10.10 does not support NSSearchFieldDelegate */
|
||||
((NSTextField *)searchField).delegate = self;
|
||||
self.searchField = searchField;
|
||||
}
|
||||
else {
|
||||
@@ -234,7 +228,7 @@ NSString *const MPToolbarItemIdentifierAutotype = @"TOOLBAR_AUTOTYPE";
|
||||
MPToolbarItemIdentifierInspector: [MPIconHelper icon:MPIconSidebar],
|
||||
MPToolbarItemIdentifierHistory: [MPIconHelper icon:MPIconHistory],
|
||||
MPToolbarItemIdentifierAutotype : [MPIconHelper icon:MPIconKeyboard]
|
||||
};
|
||||
};
|
||||
return imageDict;
|
||||
}
|
||||
|
||||
@@ -279,7 +273,7 @@ NSString *const MPToolbarItemIdentifierAutotype = @"TOOLBAR_AUTOTYPE";
|
||||
MPToolbarItemIdentifierSearch: NSLocalizedString(@"SEARCH", @"Search input in Toolbar "),
|
||||
MPToolbarItemIdentifierHistory: NSLocalizedString(@"SHOW_HISTORY", @"Toolbar item to toggle history display"),
|
||||
MPToolbarItemIdentifierAutotype: NSLocalizedString(@"TOOLBAR_PERFORM_AUTOTYPE_FOR_ENTRY", @"Toolbar item to perform autotype")
|
||||
};
|
||||
};
|
||||
});
|
||||
return labelDict[identifier];
|
||||
}
|
||||
@@ -297,7 +291,7 @@ NSString *const MPToolbarItemIdentifierAutotype = @"TOOLBAR_AUTOTYPE";
|
||||
MPToolbarItemIdentifierInspector: @(MPActionToggleInspector),
|
||||
MPToolbarItemIdentifierHistory: @(MPActionShowEntryHistory),
|
||||
MPToolbarItemIdentifierAutotype: @(MPActionPerformAutotypeForSelectedEntry)
|
||||
};
|
||||
};
|
||||
});
|
||||
MPActionType actionType = (MPActionType)[actionDict[identifier] integerValue];
|
||||
return [MPActionHelper actionOfType:actionType];
|
||||
@@ -345,11 +339,6 @@ NSString *const MPToolbarItemIdentifierAutotype = @"TOOLBAR_AUTOTYPE";
|
||||
}
|
||||
/* only make the searchfield first responder if it's not already in an active search */
|
||||
if(![self.searchField currentEditor]) {
|
||||
|
||||
// force search to be enabled since we might end up being called when it's not (yet) enabled
|
||||
if(!searchItem.enabled) {
|
||||
searchItem.enabled = YES;
|
||||
}
|
||||
[self.searchField.window makeFirstResponder:self.searchField];
|
||||
[self.searchField selectText:self];
|
||||
}
|
||||
|
||||
@@ -21,12 +21,13 @@
|
||||
//
|
||||
|
||||
#import "MPToolbarItem.h"
|
||||
#import "MPActionHelper.h"
|
||||
|
||||
@implementation MPToolbarItem
|
||||
|
||||
- (void)validate {
|
||||
if(![self.view menu]) {
|
||||
id target = [NSApp targetForAction:self.action to:nil from:self];
|
||||
id target = [NSApp targetForAction:[self action] to:nil from:self];
|
||||
BOOL isValid = (nil != target);
|
||||
id validateTarget = [NSApp targetForAction:@selector(validateToolbarItem:) to:nil from:self];
|
||||
if(validateTarget) {
|
||||
|
||||
21
MacPass/MPTouchIdCompositeKeyStore.h
Normal file
21
MacPass/MPTouchIdCompositeKeyStore.h
Normal file
@@ -0,0 +1,21 @@
|
||||
//
|
||||
// MPTouchIdCompositeKeyStore.h
|
||||
// MacPass
|
||||
//
|
||||
// Created by Julius Zint on 14.03.21.
|
||||
// Copyright © 2021 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#ifndef MPTouchIdCompositeKeyStore_h
|
||||
#define MPTouchIdCompositeKeyStore_h
|
||||
|
||||
static NSMutableDictionary* touchIDSecuredPasswords;
|
||||
|
||||
@interface MPTouchIdCompositeKeyStore : NSObject
|
||||
@property (class, strong, readonly) MPTouchIdCompositeKeyStore *defaultStore;
|
||||
|
||||
- (void) save:(NSData*) encryptedCompositeKey forDocumentKey:(NSString*) documentKey;
|
||||
- (bool) load:(NSData**) encryptedCompositeKey forDocumentKey:(NSString*) documentKey;
|
||||
@end
|
||||
|
||||
#endif /* MPTouchIdCompositeKeyStore_h */
|
||||
64
MacPass/MPTouchIdCompositeKeyStore.m
Normal file
64
MacPass/MPTouchIdCompositeKeyStore.m
Normal file
@@ -0,0 +1,64 @@
|
||||
//
|
||||
// MPTouchIdCompositeKeyStore.m
|
||||
// MacPass
|
||||
//
|
||||
// Created by Julius Zint on 14.03.21.
|
||||
// Copyright © 2021 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
#import "MPSettingsHelper.h"
|
||||
#import "MPTouchIdCompositeKeyStore.h"
|
||||
|
||||
@implementation MPTouchIdCompositeKeyStore
|
||||
|
||||
+ (instancetype)defaultStore {
|
||||
static MPTouchIdCompositeKeyStore *instance;
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
instance = [[MPTouchIdCompositeKeyStore alloc] init];
|
||||
if(touchIDSecuredPasswords == NULL) {
|
||||
touchIDSecuredPasswords = [[NSMutableDictionary alloc]init];
|
||||
}
|
||||
});
|
||||
return instance;
|
||||
}
|
||||
|
||||
- (void) save: (NSData*) encryptedCompositeKey forDocumentKey:(NSString*) documentKey {
|
||||
long touchIdMode = [NSUserDefaults.standardUserDefaults integerForKey:kMPSettingsKeyEntryTouchIdEnabled];
|
||||
if (touchIdMode == NSControlStateValueMixed) {
|
||||
[NSUserDefaults.standardUserDefaults removeObjectForKey:documentKey];
|
||||
if(encryptedCompositeKey != NULL) {
|
||||
[touchIDSecuredPasswords setObject:encryptedCompositeKey forKey:documentKey];
|
||||
}
|
||||
}
|
||||
else if(touchIdMode == NSControlStateValueOn) {
|
||||
[touchIDSecuredPasswords removeObjectForKey:documentKey];
|
||||
if(encryptedCompositeKey != NULL) {
|
||||
[NSUserDefaults.standardUserDefaults setObject:encryptedCompositeKey forKey:documentKey];
|
||||
}
|
||||
}
|
||||
else {
|
||||
[NSUserDefaults.standardUserDefaults removeObjectForKey:documentKey];
|
||||
[touchIDSecuredPasswords removeObjectForKey:documentKey];
|
||||
}
|
||||
}
|
||||
|
||||
- (bool) load: (NSData**) encryptedCompositeKey forDocumentKey: (NSString*) documentKey {
|
||||
long touchIdMode = [NSUserDefaults.standardUserDefaults integerForKey:kMPSettingsKeyEntryTouchIdEnabled];
|
||||
NSData* transientKey = [touchIDSecuredPasswords valueForKey:documentKey];
|
||||
NSData* persistentKey =[NSUserDefaults.standardUserDefaults dataForKey:documentKey];
|
||||
if(transientKey == NULL && persistentKey == NULL) {
|
||||
return false;
|
||||
}
|
||||
if(transientKey == NULL || persistentKey == NULL) {
|
||||
*encryptedCompositeKey = transientKey == NULL ? persistentKey : transientKey;
|
||||
return true;
|
||||
}
|
||||
if(touchIdMode == NSControlStateValueOn) {
|
||||
*encryptedCompositeKey = persistentKey;
|
||||
return true;
|
||||
}
|
||||
*encryptedCompositeKey = transientKey;
|
||||
return true;
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -39,19 +39,6 @@ NSString *const MPUserNotificationTypeRunAutotypeDoctor = @"MPUserNotificationTy
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)userNotificationCenter:(NSUserNotificationCenter *)center didDeliverNotification:(NSUserNotification *)notification {
|
||||
/* we only clean autotype feedback. the rest piles up */
|
||||
if(![notification.identifier isEqualToString:MPUserNotificationTypeAutotypeFeedback]) {
|
||||
return;
|
||||
}
|
||||
for(NSUserNotification *deliveredNotification in center.deliveredNotifications) {
|
||||
if(deliveredNotification == notification) {
|
||||
continue;
|
||||
}
|
||||
[center removeDeliveredNotification:deliveredNotification];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)userNotificationCenter:(NSUserNotificationCenter *)center didActivateNotification:(NSUserNotification *)notification {
|
||||
NSDictionary *userInfo = notification.userInfo;
|
||||
NSString *notificationType = userInfo[MPUserNotificationTypeKey];
|
||||
|
||||
@@ -49,7 +49,7 @@ NSString *const MPExpiryDateValueTransformerName = @"com.hicknhack.macpass.MPExp
|
||||
static NSDateFormatter *formatter;
|
||||
if(!formatter) {
|
||||
formatter = [[NSDateFormatter alloc] init];
|
||||
formatter.dateStyle = NSDateFormatterLongStyle;
|
||||
formatter.dateStyle = kCFDateFormatterLongStyle;
|
||||
formatter.timeStyle = NSDateFormatterNoStyle;
|
||||
}
|
||||
|
||||
|
||||
@@ -25,6 +25,11 @@
|
||||
|
||||
@interface MPWorkflowPreferencesController : MPViewController <MPPreferencesTab>
|
||||
|
||||
|
||||
@property (strong) IBOutlet NSPopUpButton *browserPopup;
|
||||
@property (strong) IBOutlet NSPopUpButton *doubleClickURLPopup;
|
||||
@property (strong) IBOutlet NSPopUpButton *doubleClickTitlePopup;
|
||||
@property (strong) IBOutlet NSButton *updatePasswordOnTemplateEntriesCheckButton;
|
||||
@property (strong) IBOutlet NSButton *generatePasswordOnEntriesCheckButton;
|
||||
@property (strong) IBOutlet NSButton *hideAfterCopyToClipboardCheckButton;
|
||||
|
||||
@end
|
||||
|
||||
@@ -26,15 +26,6 @@
|
||||
|
||||
@interface MPWorkflowPreferencesController ()
|
||||
|
||||
@property (strong) IBOutlet NSPopUpButton *browserPopup;
|
||||
@property (strong) IBOutlet NSPopUpButton *doubleClickURLPopup;
|
||||
@property (strong) IBOutlet NSPopUpButton *doubleClickTitlePopup;
|
||||
@property (strong) IBOutlet NSButton *updatePasswordOnTemplateEntriesCheckButton;
|
||||
@property (strong) IBOutlet NSButton *generatePasswordOnEntriesCheckButton;
|
||||
@property (strong) IBOutlet NSButton *hideAfterCopyToClipboardCheckButton;
|
||||
@property (strong) IBOutlet NSButton *focusSearchAfterUnlockCheckButton;
|
||||
//@property (strong) IBOutlet NSButton *privateBrowsingCheckButton;
|
||||
|
||||
- (IBAction)_showCustomBrowserSelection:(id)sender;
|
||||
|
||||
@end
|
||||
@@ -48,34 +39,11 @@
|
||||
- (void)viewDidLoad {
|
||||
NSUserDefaultsController *defaultsController = NSUserDefaultsController.sharedUserDefaultsController;
|
||||
|
||||
[self.doubleClickURLPopup bind:NSSelectedIndexBinding
|
||||
toObject:defaultsController
|
||||
withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyDoubleClickURLAction]
|
||||
options:nil];
|
||||
[self.doubleClickTitlePopup bind:NSSelectedIndexBinding
|
||||
toObject:defaultsController
|
||||
withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyDoubleClickTitleAction]
|
||||
options:nil];
|
||||
[self.updatePasswordOnTemplateEntriesCheckButton bind:NSValueBinding
|
||||
toObject:defaultsController
|
||||
withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyUpdatePasswordOnTemplateEntries]
|
||||
options:nil];
|
||||
[self.generatePasswordOnEntriesCheckButton bind:NSValueBinding
|
||||
toObject:defaultsController
|
||||
withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyGeneratePasswordForNewEntires]
|
||||
options:nil];
|
||||
[self.hideAfterCopyToClipboardCheckButton bind:NSValueBinding
|
||||
toObject:defaultsController
|
||||
withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyHideAfterCopyToClipboard]
|
||||
options:nil];
|
||||
[self.focusSearchAfterUnlockCheckButton bind:NSValueBinding
|
||||
toObject:defaultsController
|
||||
withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyFocusSearchAfterUnlock]
|
||||
options:nil];
|
||||
// [self.privateBrowsingCheckButton bind:NSValueBinding
|
||||
// toObject:defaultsController
|
||||
// withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyUsePrivateBrowsingWhenOpeningURLs]
|
||||
// options:nil];
|
||||
[self.doubleClickURLPopup bind:NSSelectedIndexBinding toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyDoubleClickURLAction] options:nil];
|
||||
[self.doubleClickTitlePopup bind:NSSelectedIndexBinding toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyDoubleClickTitleAction] options:nil];
|
||||
[self.updatePasswordOnTemplateEntriesCheckButton bind:NSValueBinding toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyUpdatePasswordOnTemplateEntries] options:nil];
|
||||
[self.generatePasswordOnEntriesCheckButton bind:NSValueBinding toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyGeneratePasswordForNewEntires] options:nil];
|
||||
[self.hideAfterCopyToClipboardCheckButton bind:NSValueBinding toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyHideAfterCopyToClipboard] options:nil];
|
||||
[self _updateBrowserSelection];
|
||||
}
|
||||
|
||||
|
||||
@@ -84,11 +84,11 @@
|
||||
<key>NSMainNibFile</key>
|
||||
<string>MainMenu</string>
|
||||
<key>NSNetworkVolumesUsageDescription</key>
|
||||
<string>MacPass needs access to Network Volumes to load and save your databases and/or key files there</string>
|
||||
<string>MacPass need access to Network Volumes to load and save your databases and/or key files there</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string>NSApplication</string>
|
||||
<key>NSRemovableVolumesUsageDescription</key>
|
||||
<string>MacPass needs access to Removable Volumes to load and save your databases and/or key files there</string>
|
||||
<string>MacPass need access to Removable Volumes to load and save your databases and/or key files there</string>
|
||||
<key>NSSupportsAutomaticGraphicsSwitching</key>
|
||||
<true/>
|
||||
<key>NSUserNotificationAlertStyle</key>
|
||||
|
||||
@@ -6,5 +6,9 @@
|
||||
<true/>
|
||||
<key>com.apple.security.cs.disable-library-validation</key>
|
||||
<true/>
|
||||
<key>keychain-access-groups</key>
|
||||
<array>
|
||||
<string>$(AppIdentifierPrefix)$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14313.18" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14313.18"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -14,24 +14,25 @@
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="196">
|
||||
<rect key="frame" x="0.0" y="0.0" width="292" height="450"/>
|
||||
<customView translatesAutoresizingMaskIntoConstraints="NO" id="196">
|
||||
<rect key="frame" x="0.0" y="0.0" width="272" height="449"/>
|
||||
<subviews>
|
||||
<scrollView borderType="none" autohidesScrollers="YES" horizontalLineScroll="24" horizontalPageScroll="10" verticalLineScroll="24" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="227">
|
||||
<rect key="frame" x="0.0" y="0.0" width="292" height="449"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="272" height="449"/>
|
||||
<clipView key="contentView" drawsBackground="NO" id="WAU-Bu-ack">
|
||||
<rect key="frame" x="0.0" y="0.0" width="292" height="449"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="272" height="449"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<outlineView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" selectionHighlightStyle="sourceList" multipleSelection="NO" autosaveColumns="NO" rowHeight="24" rowSizeStyle="automatic" viewBased="YES" indentationPerLevel="8" outlineTableColumn="231" id="228" customClass="MPOutlineView">
|
||||
<rect key="frame" x="0.0" y="0.0" width="292" height="449"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="272" height="449"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<size key="intercellSpacing" width="3" height="0.0"/>
|
||||
<color key="backgroundColor" name="_sourceListBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
|
||||
<tableColumns>
|
||||
<tableColumn identifier="AutomaticTableColumnIdentifier.0" width="260" minWidth="16" maxWidth="1000" id="231">
|
||||
<tableColumn identifier="AutomaticTableColumnIdentifier.0" width="269" minWidth="16" maxWidth="1000" id="231">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" white="0.33333298560000002" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</tableHeaderCell>
|
||||
@@ -43,11 +44,11 @@
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView identifier="HeaderCell" id="237">
|
||||
<rect key="frame" x="11" y="0.0" width="269" height="17"/>
|
||||
<rect key="frame" x="1" y="0.0" width="269" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="238">
|
||||
<rect key="frame" x="1" y="2" width="267" height="14"/>
|
||||
<rect key="frame" x="1" y="1" width="267" height="14"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="HEADER CELL" id="239">
|
||||
<font key="font" metaFont="smallSystemBold"/>
|
||||
<color key="textColor" red="0.43921568630000002" green="0.4941176471" blue="0.54901960780000003" alpha="1" colorSpace="calibratedRGB"/>
|
||||
@@ -65,11 +66,11 @@
|
||||
</connections>
|
||||
</tableCellView>
|
||||
<tableCellView identifier="DataCell" id="240" customClass="MPOutlineTableCellView">
|
||||
<rect key="frame" x="11" y="17" width="269" height="24"/>
|
||||
<rect key="frame" x="1" y="17" width="269" height="24"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<imageView wantsLayer="YES" translatesAutoresizingMaskIntoConstraints="NO" id="241">
|
||||
<rect key="frame" x="3" y="1" width="17" height="23"/>
|
||||
<imageView translatesAutoresizingMaskIntoConstraints="NO" id="241">
|
||||
<rect key="frame" x="3" y="4" width="17" height="17"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="17" id="385"/>
|
||||
<constraint firstAttribute="height" constant="17" id="bah-Ng-60T"/>
|
||||
@@ -77,7 +78,7 @@
|
||||
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="NSActionTemplate" id="242"/>
|
||||
</imageView>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="749" translatesAutoresizingMaskIntoConstraints="NO" id="243">
|
||||
<rect key="frame" x="26" y="4" width="216" height="17"/>
|
||||
<rect key="frame" x="26" y="4" width="214" height="17"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="244">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -85,7 +86,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="mX2-wv-qML">
|
||||
<rect key="frame" x="248" y="3" width="18" height="18"/>
|
||||
<rect key="frame" x="246" y="3" width="20" height="17"/>
|
||||
<buttonCell key="cell" type="inline" title="0" bezelStyle="inline" alignment="center" refusesFirstResponder="YES" borderStyle="border" inset="2" id="gnA-JK-kZz">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="smallSystemBold"/>
|
||||
@@ -115,11 +116,11 @@
|
||||
</subviews>
|
||||
<nil key="backgroundColor"/>
|
||||
</clipView>
|
||||
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="229">
|
||||
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="229">
|
||||
<rect key="frame" x="1" y="119" width="238" height="15"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="230">
|
||||
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="NO" id="230">
|
||||
<rect key="frame" x="224" y="17" width="15" height="102"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
@@ -135,6 +136,6 @@
|
||||
</customView>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSActionTemplate" width="15" height="15"/>
|
||||
<image name="NSActionTemplate" width="14" height="14"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Autotype Sequence"; ObjectID = "8ny-Qk-Jvo"; */
|
||||
"8ny-Qk-Jvo.title" = "Sekvence samodoplňování";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Set Autotype Sequence"; ObjectID = "aOD-Ih-Sft"; */
|
||||
"aOD-Ih-Sft.title" = "Nastavit sekvenci samodoplňování";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Available Commands and Placeholders"; ObjectID = "lug-97-H9D"; */
|
||||
"lug-97-H9D.title" = "Dostupné příkazy a zástupné symboly";
|
||||
@@ -1,18 +0,0 @@
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "60p-7v-Nje"; */
|
||||
"60p-7v-Nje.title" = "Zrušit";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "PKW-gr-yqN"; */
|
||||
"PKW-gr-yqN.title" = "Text Cell";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Title"; ObjectID = "TN3-3a-LaA"; */
|
||||
"TN3-3a-LaA.title" = "Title";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Sequence"; ObjectID = "bvJ-2i-eMc"; */
|
||||
"bvJ-2i-eMc.title" = "Sequence";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "There are multiple matches for the current window. Please select which match should be used."; ObjectID = "gcf-gb-ZsF"; */
|
||||
"gcf-gb-ZsF.title" = "Pro aktuální okno existuje několik shod. Zvolte, prosím, která se má použít.";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Perform Autotype"; ObjectID = "w7H-hx-CUF"; */
|
||||
"w7H-hx-CUF.title" = "Provést samodoplnění";
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user