mirror of
https://github.com/MacPass/MacPass.git
synced 2025-12-18 18:19:28 +00:00
Merge branch 'master' into feature/use_local_plugins_json
# Conflicts: # MacPass/de.lproj/Localizable.strings # MacPass/en.lproj/Localizable.strings
This commit is contained in:
@@ -7,6 +7,8 @@
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
3C0CDECF21CFEDD200B2A10B /* NSTextView+MPTouchBarExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C0CDECE21CFEDD200B2A10B /* NSTextView+MPTouchBarExtension.m */; };
|
||||
3C0CDED821D28BF700B2A10B /* MPTouchBarButtonCreator.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C0CDED721D28BF700B2A10B /* MPTouchBarButtonCreator.m */; };
|
||||
4C00E33817D8FA3500F37192 /* DDHotKeyCenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C00E33717D8FA3500F37192 /* DDHotKeyCenter.m */; };
|
||||
4C00E33B17D8FAC100F37192 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C00E33A17D8FAC100F37192 /* Carbon.framework */; };
|
||||
4C01C2421764D8980016D5D0 /* MPContextMenuHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C01C2411764D8980016D5D0 /* MPContextMenuHelper.m */; };
|
||||
@@ -35,6 +37,7 @@
|
||||
4C17F109184E6B6C00E85625 /* 30_TerminalTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C17F107184E6B6C00E85625 /* 30_TerminalTemplate.pdf */; };
|
||||
4C1BDF2B1E4392640012A3F0 /* MPPluginDataViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C1BDF291E4392640012A3F0 /* MPPluginDataViewController.m */; };
|
||||
4C1E9885185F71A800943563 /* MPContextBarViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C1E9884185F71A800943563 /* MPContextBarViewController.m */; };
|
||||
4C1ECAE322CCD30F00F46069 /* MPAutotypeDoctor.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C1ECAE222CCD30F00F46069 /* MPAutotypeDoctor.m */; };
|
||||
4C1F7FA21E3A12E600D6A40E /* MPModifiedKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C1F7FA11E3A12E600D6A40E /* MPModifiedKey.m */; };
|
||||
4C1FA07B18231900003A3F8C /* MPDocument+Autotype.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C1FA07A18231900003A3F8C /* MPDocument+Autotype.m */; };
|
||||
4C224B4217DFCB2400FF6AEE /* MPNumericalInputFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C224B4117DFCB2400FF6AEE /* MPNumericalInputFormatter.m */; };
|
||||
@@ -226,6 +229,8 @@
|
||||
4CAD338F205169D30068587E /* MPPluginRepositoryItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CAD338E205169D30068587E /* MPPluginRepositoryItem.m */; };
|
||||
4CAD748C15B889B700104512 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4CAD748B15B889B700104512 /* Security.framework */; };
|
||||
4CAD748E15B88AC100104512 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 4CAD748D15B88AC100104512 /* libz.dylib */; };
|
||||
4CAD8AA622CF397B0090B2DD /* MPAutotypeDoctorReportViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CAD8AA422CF397B0090B2DD /* MPAutotypeDoctorReportViewController.m */; };
|
||||
4CAD8AA722CF397B0090B2DD /* AutotypeDoctorReportViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4CAD8AA522CF397B0090B2DD /* AutotypeDoctorReportViewController.xib */; };
|
||||
4CB33F861EAF54A000C9341E /* KPKNode+MPIsHistory.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CB33F851EAF54A000C9341E /* KPKNode+MPIsHistory.m */; };
|
||||
4CB9339916D3A0DD00A13B5D /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 4CB9339716D3A0DD00A13B5D /* Credits.rtf */; };
|
||||
4CBA2ABA17074C07006D8139 /* MPSettingsHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CBA2AB917074C07006D8139 /* MPSettingsHelper.m */; };
|
||||
@@ -311,6 +316,10 @@
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
3C0CDECD21CFED9000B2A10B /* NSTextView+MPTouchBarExtension.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSTextView+MPTouchBarExtension.h"; sourceTree = "<group>"; };
|
||||
3C0CDECE21CFEDD200B2A10B /* NSTextView+MPTouchBarExtension.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSTextView+MPTouchBarExtension.m"; sourceTree = "<group>"; };
|
||||
3C0CDED721D28BF700B2A10B /* MPTouchBarButtonCreator.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPTouchBarButtonCreator.m; sourceTree = "<group>"; };
|
||||
3C0CDED921D28C0E00B2A10B /* MPTouchBarButtonCreator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPTouchBarButtonCreator.h; sourceTree = "<group>"; };
|
||||
4825CC811C414D57003E37E9 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/DatabaseSettingsWindow.strings; sourceTree = "<group>"; };
|
||||
4825CC821C414D57003E37E9 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/PasswordEditWindow.strings; sourceTree = "<group>"; };
|
||||
4825CC831C414D57003E37E9 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/WelcomeView.strings; sourceTree = "<group>"; };
|
||||
@@ -371,7 +380,6 @@
|
||||
4C10412A178CDD44001B5239 /* NSDate+Humanized.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDate+Humanized.h"; sourceTree = "<group>"; };
|
||||
4C10412B178CDD44001B5239 /* NSDate+Humanized.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDate+Humanized.m"; sourceTree = "<group>"; };
|
||||
4C15B74518BCA3B1003F8008 /* MPDocument+Search.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MPDocument+Search.m"; sourceTree = "<group>"; };
|
||||
4C168CB02216CEC300BB1EB0 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/GeneralPreferences.strings; sourceTree = "<group>"; };
|
||||
4C17D11F2250EFBC00C650C4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/SavePanelAccessoryView.xib; sourceTree = "<group>"; };
|
||||
4C17D1222250EFBF00C650C4 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/SavePanelAccessoryView.strings; sourceTree = "<group>"; };
|
||||
4C17D1242250EFC500C650C4 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/SavePanelAccessoryView.strings; sourceTree = "<group>"; };
|
||||
@@ -395,6 +403,8 @@
|
||||
4C1D56382271F4BC00C3E594 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/PluginRepositoryBrowserView.strings; sourceTree = "<group>"; };
|
||||
4C1E9883185F71A800943563 /* MPContextBarViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPContextBarViewController.h; sourceTree = "<group>"; };
|
||||
4C1E9884185F71A800943563 /* MPContextBarViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPContextBarViewController.m; sourceTree = "<group>"; };
|
||||
4C1ECAE122CCD30F00F46069 /* MPAutotypeDoctor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPAutotypeDoctor.h; sourceTree = "<group>"; };
|
||||
4C1ECAE222CCD30F00F46069 /* MPAutotypeDoctor.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPAutotypeDoctor.m; sourceTree = "<group>"; };
|
||||
4C1F7FA01E3A12E600D6A40E /* MPModifiedKey.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPModifiedKey.h; sourceTree = "<group>"; };
|
||||
4C1F7FA11E3A12E600D6A40E /* MPModifiedKey.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPModifiedKey.m; sourceTree = "<group>"; };
|
||||
4C1FA07A18231900003A3F8C /* MPDocument+Autotype.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MPDocument+Autotype.m"; sourceTree = "<group>"; };
|
||||
@@ -517,6 +527,11 @@
|
||||
4C473A8518AFD7250073FD2E /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
|
||||
4C4A100D176286FD00BBF2CA /* MPTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPTableView.h; sourceTree = "<group>"; };
|
||||
4C4A100E176286FD00BBF2CA /* MPTableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPTableView.m; sourceTree = "<group>"; };
|
||||
4C4B2ED022D8C9B400EB6BFD /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/GeneralPreferences.strings; sourceTree = "<group>"; };
|
||||
4C4B2ED122D8CA6100EB6BFD /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/PluginRepositoryBrowserView.strings; sourceTree = "<group>"; };
|
||||
4C4B2ED322D8D31F00EB6BFD /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/DatabaseSettingsWindow.strings; sourceTree = "<group>"; };
|
||||
4C4B2ED522D8D3B100EB6BFD /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/IntegrationPreferences.strings; sourceTree = "<group>"; };
|
||||
4C4B2ED822D8D40200EB6BFD /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/WorkflowPreferences.strings; sourceTree = "<group>"; };
|
||||
4C4B728318E4B9B400A1A5D5 /* MPDockTileHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPDockTileHelper.h; sourceTree = "<group>"; };
|
||||
4C4B728418E4B9B400A1A5D5 /* MPDockTileHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPDockTileHelper.m; sourceTree = "<group>"; };
|
||||
4C4B7EE617A45EC5000234C7 /* MPDatePickingViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPDatePickingViewController.h; sourceTree = "<group>"; };
|
||||
@@ -614,7 +629,6 @@
|
||||
4C735FBF2035FCBF00708D53 /* MPPluginEntryActionContext.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPPluginEntryActionContext.m; sourceTree = "<group>"; };
|
||||
4C73B6EE215E64A7009787F7 /* MPWelcomeViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPWelcomeViewController.h; sourceTree = "<group>"; };
|
||||
4C73B6EF215E64A7009787F7 /* MPWelcomeViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPWelcomeViewController.m; sourceTree = "<group>"; };
|
||||
4C73EB941FBB58730033000F /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/DatabaseSettingsWindow.strings; sourceTree = "<group>"; };
|
||||
4C73EB951FBB5A8F0033000F /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/AutotypeCandidateSelectionView.strings; sourceTree = "<group>"; };
|
||||
4C73EB961FBB5A910033000F /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/AutotypeBuilderView.strings; sourceTree = "<group>"; };
|
||||
4C76155F1764C0590015A1A6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/GeneralPreferences.xib; sourceTree = "<group>"; };
|
||||
@@ -775,6 +789,9 @@
|
||||
4CAD338E205169D30068587E /* MPPluginRepositoryItem.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPPluginRepositoryItem.m; sourceTree = "<group>"; };
|
||||
4CAD748B15B889B700104512 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
|
||||
4CAD748D15B88AC100104512 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; };
|
||||
4CAD8AA322CF397B0090B2DD /* MPAutotypeDoctorReportViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPAutotypeDoctorReportViewController.h; sourceTree = "<group>"; };
|
||||
4CAD8AA422CF397B0090B2DD /* MPAutotypeDoctorReportViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPAutotypeDoctorReportViewController.m; sourceTree = "<group>"; };
|
||||
4CAD8AA522CF397B0090B2DD /* AutotypeDoctorReportViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AutotypeDoctorReportViewController.xib; sourceTree = "<group>"; };
|
||||
4CB33F841EAF54A000C9341E /* KPKNode+MPIsHistory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "KPKNode+MPIsHistory.h"; sourceTree = "<group>"; };
|
||||
4CB33F851EAF54A000C9341E /* KPKNode+MPIsHistory.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "KPKNode+MPIsHistory.m"; sourceTree = "<group>"; };
|
||||
4CB63A6018986530002DEC4C /* MPFlagsHelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPFlagsHelper.h; sourceTree = "<group>"; };
|
||||
@@ -891,11 +908,9 @@
|
||||
6021FE5318E13F2900C3BC51 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/GroupInspectorView.strings; sourceTree = "<group>"; };
|
||||
6021FE5518E13F2A00C3BC51 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/GroupInspectorView.strings"; sourceTree = "<group>"; };
|
||||
6021FE5718E1429500C3BC51 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/IntegrationPreferences.xib; sourceTree = "<group>"; };
|
||||
6021FE5A18E142A000C3BC51 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/IntegrationPreferences.strings; sourceTree = "<group>"; };
|
||||
6021FE5C18E142A200C3BC51 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/IntegrationPreferences.strings; sourceTree = "<group>"; };
|
||||
6021FE5E18E142A300C3BC51 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/IntegrationPreferences.strings; sourceTree = "<group>"; };
|
||||
6021FE6218E15D9100C3BC51 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/WorkflowPreferences.xib; sourceTree = "<group>"; };
|
||||
6021FE6518E15D9800C3BC51 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/WorkflowPreferences.strings; sourceTree = "<group>"; };
|
||||
6021FE6718E15D9A00C3BC51 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/WorkflowPreferences.strings; sourceTree = "<group>"; };
|
||||
6021FE6918E15D9B00C3BC51 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/WorkflowPreferences.strings; sourceTree = "<group>"; };
|
||||
6021FE6D18E15E6D00C3BC51 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/UpdatePreferences.xib; sourceTree = "<group>"; };
|
||||
@@ -1116,6 +1131,8 @@
|
||||
4C769CA8213D59BF00A3F60A /* KPKEntry+MPCustomAttributeProperties.m */,
|
||||
4C58A4A12192EC1600B13370 /* NSIndexPath+MPAdditions.h */,
|
||||
4C58A4A22192EC1600B13370 /* NSIndexPath+MPAdditions.m */,
|
||||
3C0CDECD21CFED9000B2A10B /* NSTextView+MPTouchBarExtension.h */,
|
||||
3C0CDECE21CFEDD200B2A10B /* NSTextView+MPTouchBarExtension.m */,
|
||||
);
|
||||
name = Categories;
|
||||
sourceTree = "<group>";
|
||||
@@ -1168,6 +1185,8 @@
|
||||
4C4B728418E4B9B400A1A5D5 /* MPDockTileHelper.m */,
|
||||
4CB63A6018986530002DEC4C /* MPFlagsHelper.h */,
|
||||
4C978E0C19AE54AB003067DF /* MPFlagsHelper.m */,
|
||||
3C0CDED921D28C0E00B2A10B /* MPTouchBarButtonCreator.h */,
|
||||
3C0CDED721D28BF700B2A10B /* MPTouchBarButtonCreator.m */,
|
||||
);
|
||||
name = Helper;
|
||||
sourceTree = "<group>";
|
||||
@@ -1537,6 +1556,8 @@
|
||||
4C3499FF218852160055AF45 /* MPKeyTyper.m */,
|
||||
4C1F7FA01E3A12E600D6A40E /* MPModifiedKey.h */,
|
||||
4C1F7FA11E3A12E600D6A40E /* MPModifiedKey.m */,
|
||||
4C1ECAE122CCD30F00F46069 /* MPAutotypeDoctor.h */,
|
||||
4C1ECAE222CCD30F00F46069 /* MPAutotypeDoctor.m */,
|
||||
);
|
||||
name = Autotype;
|
||||
sourceTree = "<group>";
|
||||
@@ -1613,6 +1634,9 @@
|
||||
4C73B6EE215E64A7009787F7 /* MPWelcomeViewController.h */,
|
||||
4C73B6EF215E64A7009787F7 /* MPWelcomeViewController.m */,
|
||||
4C7F8B6A1A10B68400CCB83D /* WelcomeView.xib */,
|
||||
4CAD8AA322CF397B0090B2DD /* MPAutotypeDoctorReportViewController.h */,
|
||||
4CAD8AA422CF397B0090B2DD /* MPAutotypeDoctorReportViewController.m */,
|
||||
4CAD8AA522CF397B0090B2DD /* AutotypeDoctorReportViewController.xib */,
|
||||
);
|
||||
name = "View Controller";
|
||||
sourceTree = "<group>";
|
||||
@@ -1845,6 +1869,7 @@
|
||||
4C3826B41AD04D8E007D7D67 /* 39_HistoryTemplate.pdf in Resources */,
|
||||
4C77E37D15B84A240093A587 /* MainMenu.xib in Resources */,
|
||||
4C3826CD1AD04D8E007D7D67 /* 66_MoneyTemplate.pdf in Resources */,
|
||||
4CAD8AA722CF397B0090B2DD /* AutotypeDoctorReportViewController.xib in Resources */,
|
||||
4CA0B2ED15BCADAC00654E32 /* PreferencesWindow.xib in Resources */,
|
||||
4C76155C1764C04C0015A1A6 /* GeneralPreferences.xib in Resources */,
|
||||
4CD884B715BD47080042BBF8 /* DocumentWindow.xib in Resources */,
|
||||
@@ -1994,11 +2019,13 @@
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
4C1ECAE322CCD30F00F46069 /* MPAutotypeDoctor.m in Sources */,
|
||||
4CD034AC1BFE113B003C002C /* MPPluginHost.m in Sources */,
|
||||
4C77E37315B84A240093A587 /* main.m in Sources */,
|
||||
4C0F04402147A6FA000B8568 /* MPCustomFieldTableView.m in Sources */,
|
||||
4CBA2ABA17074C07006D8139 /* MPSettingsHelper.m in Sources */,
|
||||
4C77E37A15B84A240093A587 /* MPAppDelegate.m in Sources */,
|
||||
3C0CDED821D28BF700B2A10B /* MPTouchBarButtonCreator.m in Sources */,
|
||||
4C37A84015B8B474005EF8EE /* MPOutlineDataSource.m in Sources */,
|
||||
4CA0B2F915BCAF6700654E32 /* MPGeneralPreferencesController.m in Sources */,
|
||||
4C8F0C791FD05A6A00BE157F /* NSString+MPPrettyPasswordDisplay.m in Sources */,
|
||||
@@ -2088,6 +2115,7 @@
|
||||
4CEE46DD181C301D006BF1E5 /* MPAutotypeDaemon.m in Sources */,
|
||||
4C50CC041F6C18830095629D /* MPCollectionViewItem.m in Sources */,
|
||||
4CA78C001FD58C92003C8560 /* MPPluginRepository.m in Sources */,
|
||||
4CAD8AA622CF397B0090B2DD /* MPAutotypeDoctorReportViewController.m in Sources */,
|
||||
4C8990F71EE978EB0043B48D /* MPDuplicateEntryOptionsWindowController.m in Sources */,
|
||||
4CA3530B18A53CB800839B0F /* MPKeyMapper.m in Sources */,
|
||||
4CE298EB1795FC2A00DF7BDB /* MPEntryContextMenuDelegate.m in Sources */,
|
||||
@@ -2123,6 +2151,7 @@
|
||||
4C0F647B17B6BC9C00D9522A /* MPSavePanelAccessoryViewController.m in Sources */,
|
||||
4C0949591FD6B89B004F2971 /* NSUserNotification+MPAdditions.m in Sources */,
|
||||
4C3B42871F935316007B04FD /* MPDayCountFormatter.m in Sources */,
|
||||
3C0CDECF21CFEDD200B2A10B /* NSTextView+MPTouchBarExtension.m in Sources */,
|
||||
4C57AE1417BA422B00CA4F34 /* MPSegmentedContextCell.m in Sources */,
|
||||
4CE2961518429AA5005F01CE /* MPAutotypeKeyPress.m in Sources */,
|
||||
4C32B0E71A1D4436007E12F1 /* KPKFormat+MPUTIDetection.m in Sources */,
|
||||
@@ -2277,7 +2306,7 @@
|
||||
4C840C471D773E5D0081F605 /* pl */,
|
||||
4C4161041F50333B003BC0AF /* es */,
|
||||
6A74B0652076F4B40049BC29 /* sv-SE */,
|
||||
4C168CB02216CEC300BB1EB0 /* en */,
|
||||
4C4B2ED022D8C9B400EB6BFD /* en */,
|
||||
);
|
||||
name = GeneralPreferences.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -2484,7 +2513,6 @@
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
6021FE5718E1429500C3BC51 /* Base */,
|
||||
6021FE5A18E142A000C3BC51 /* en */,
|
||||
6021FE5C18E142A200C3BC51 /* de */,
|
||||
6021FE5E18E142A300C3BC51 /* fr */,
|
||||
BD6C365919484CF40089EB37 /* nl */,
|
||||
@@ -2494,6 +2522,7 @@
|
||||
60ECAD271F12262400EA9DB3 /* zh-Hans */,
|
||||
4C4161051F50333B003BC0AF /* es */,
|
||||
6A74B0662076F4B40049BC29 /* sv-SE */,
|
||||
4C4B2ED522D8D3B100EB6BFD /* en */,
|
||||
);
|
||||
name = IntegrationPreferences.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -2502,7 +2531,6 @@
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
6021FE6218E15D9100C3BC51 /* Base */,
|
||||
6021FE6518E15D9800C3BC51 /* en */,
|
||||
6021FE6718E15D9A00C3BC51 /* de */,
|
||||
6021FE6918E15D9B00C3BC51 /* fr */,
|
||||
BD6C365A19484CF40089EB37 /* nl */,
|
||||
@@ -2512,6 +2540,7 @@
|
||||
60ECAD251F12253C00EA9DB3 /* zh-Hans */,
|
||||
4C4161061F50333B003BC0AF /* es */,
|
||||
6A74B0672076F4B40049BC29 /* sv-SE */,
|
||||
4C4B2ED822D8D40200EB6BFD /* en */,
|
||||
);
|
||||
name = WorkflowPreferences.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -2600,8 +2629,8 @@
|
||||
4825CC811C414D57003E37E9 /* it */,
|
||||
4C840C441D773E5D0081F605 /* pl */,
|
||||
4C4161021F50333B003BC0AF /* es */,
|
||||
4C73EB941FBB58730033000F /* en */,
|
||||
6A74B0622076F4B30049BC29 /* sv-SE */,
|
||||
4C4B2ED322D8D31F00EB6BFD /* en */,
|
||||
);
|
||||
name = DatabaseSettingsWindow.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -2613,6 +2642,7 @@
|
||||
78371130225540D8009BD28D /* ru */,
|
||||
78371132225540DE009BD28D /* en */,
|
||||
4C1D56382271F4BC00C3E594 /* fr */,
|
||||
4C4B2ED122D8CA6100EB6BFD /* de */,
|
||||
);
|
||||
name = PluginRepositoryBrowserView.xib;
|
||||
sourceTree = "<group>";
|
||||
|
||||
138
MacPass/AutotypeDoctorReportViewController.xib
Normal file
138
MacPass/AutotypeDoctorReportViewController.xib
Normal file
@@ -0,0 +1,138 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="MPAutotypeDoctorReportViewController">
|
||||
<connections>
|
||||
<outlet property="accessibiltyStatusImageView" destination="Xzw-kJ-WoH" id="jEb-0z-dNB"/>
|
||||
<outlet property="accessibiltyStatusTextField" destination="Pqa-Ff-7cc" id="h5M-ZN-GhR"/>
|
||||
<outlet property="screenRecordingStatusImageView" destination="vvZ-Lj-v22" id="7h0-cF-Mxt"/>
|
||||
<outlet property="screenRecordingStatusTextField" destination="IP0-CP-tlA" id="AfL-XZ-KRk"/>
|
||||
<outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView id="Hz6-mo-xeY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="400" height="375"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<stackView orientation="horizontal" alignment="top" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" translatesAutoresizingMaskIntoConstraints="NO" id="T2c-ZD-ioV">
|
||||
<rect key="frame" x="20" y="20" width="360" height="0.0"/>
|
||||
<beginningViews>
|
||||
<stackView orientation="vertical" alignment="leading" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ErP-eL-yKu"/>
|
||||
</beginningViews>
|
||||
<visibilityPriorities>
|
||||
<integer value="1000"/>
|
||||
</visibilityPriorities>
|
||||
<customSpacing>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
</customSpacing>
|
||||
</stackView>
|
||||
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Xzw-kJ-WoH">
|
||||
<rect key="frame" x="20" y="339" width="16" height="16"/>
|
||||
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="NSStatusAvailable" id="DWu-HI-z3k"/>
|
||||
</imageView>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Pqa-Ff-7cc">
|
||||
<rect key="frame" x="42" y="338" width="80" height="17"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Accessibility" id="aIL-8W-63g">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" verticalCompressionResistancePriority="751" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hY9-T0-hke">
|
||||
<rect key="frame" x="42" y="274" width="340" height="56"/>
|
||||
<textFieldCell key="cell" controlSize="small" selectable="YES" id="6GI-KJ-Xue">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<string key="title">MacPass will send key press events to the system when Autotype or Global Autotype is executed. Since macOS 10.14 Mojave this is only possible, if Accessibility permissions are granted to the application.</string>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="x9d-0h-hyJ">
|
||||
<rect key="frame" x="38" y="226" width="236" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Open Accessibilty Preferences…" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="8m1-vs-pd5">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="openAccessibiltyPreferences:" target="-2" id="aZf-xi-w73"/>
|
||||
</connections>
|
||||
</button>
|
||||
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="vvZ-Lj-v22">
|
||||
<rect key="frame" x="20" y="188" width="16" height="16"/>
|
||||
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="NSStatusAvailable" id="kCX-CB-5vQ"/>
|
||||
</imageView>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" verticalCompressionResistancePriority="751" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6vq-iM-inn">
|
||||
<rect key="frame" x="42" y="81" width="340" height="98"/>
|
||||
<textFieldCell key="cell" controlSize="small" selectable="YES" id="7of-1z-Nfk">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<string key="title">MacPass will read every window title when Global Autotype is executed to find a match. Since macOS 10.15 Catalina it is not possible to read any window title, if the user has not granted permissions to record the screen. If you are running macOS 10.15 or higher, MacPass will try to capture the left top most pixel on your screen to initate a request to record the screen. This pixel will not be stored and processed in any way.</string>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="dek-ho-dPm">
|
||||
<rect key="frame" x="38" y="33" width="256" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Open Screen Sharing Preferences…" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="lgB-Ys-L9R">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="openScreenRecordingPreferences:" target="-2" id="rvE-ff-sR2"/>
|
||||
</connections>
|
||||
</button>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="IP0-CP-tlA">
|
||||
<rect key="frame" x="42" y="187" width="112" height="17"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Screen Recording" id="9gr-mz-2I4">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="BHb-cd-Q0r">
|
||||
<rect key="frame" x="20" y="210" width="360" height="5"/>
|
||||
</box>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="IP0-CP-tlA" firstAttribute="top" secondItem="BHb-cd-Q0r" secondAttribute="bottom" constant="8" symbolic="YES" id="0sS-li-mx4"/>
|
||||
<constraint firstAttribute="trailing" secondItem="hY9-T0-hke" secondAttribute="trailing" constant="20" symbolic="YES" id="1lC-Hg-bzq"/>
|
||||
<constraint firstItem="vvZ-Lj-v22" firstAttribute="leading" secondItem="Xzw-kJ-WoH" secondAttribute="leading" id="2ZC-Uf-Pe3"/>
|
||||
<constraint firstItem="vvZ-Lj-v22" firstAttribute="centerY" secondItem="IP0-CP-tlA" secondAttribute="centerY" id="2t3-9h-RIf"/>
|
||||
<constraint firstItem="Pqa-Ff-7cc" firstAttribute="leading" secondItem="Xzw-kJ-WoH" secondAttribute="trailing" constant="8" symbolic="YES" id="57a-U7-goz"/>
|
||||
<constraint firstItem="6vq-iM-inn" firstAttribute="top" secondItem="IP0-CP-tlA" secondAttribute="bottom" constant="8" symbolic="YES" id="5ag-ah-YEW"/>
|
||||
<constraint firstItem="x9d-0h-hyJ" firstAttribute="top" secondItem="hY9-T0-hke" secondAttribute="bottom" constant="20" symbolic="YES" id="Avt-sj-8GL"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="Pqa-Ff-7cc" secondAttribute="trailing" constant="20" symbolic="YES" id="Bmg-tH-M7Q"/>
|
||||
<constraint firstAttribute="trailing" secondItem="6vq-iM-inn" secondAttribute="trailing" constant="20" symbolic="YES" id="Cga-EU-fSf"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="x9d-0h-hyJ" secondAttribute="trailing" constant="20" symbolic="YES" id="D8o-Gu-s2Y"/>
|
||||
<constraint firstItem="T2c-ZD-ioV" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="G27-G3-ORS"/>
|
||||
<constraint firstItem="T2c-ZD-ioV" firstAttribute="top" relation="greaterThanOrEqual" secondItem="dek-ho-dPm" secondAttribute="bottom" constant="20" symbolic="YES" id="GL8-gK-2fL"/>
|
||||
<constraint firstItem="x9d-0h-hyJ" firstAttribute="leading" secondItem="Pqa-Ff-7cc" secondAttribute="leading" id="J4Y-VM-MZt"/>
|
||||
<constraint firstAttribute="trailing" secondItem="T2c-ZD-ioV" secondAttribute="trailing" constant="20" symbolic="YES" id="M4d-KM-mLN"/>
|
||||
<constraint firstItem="dek-ho-dPm" firstAttribute="leading" secondItem="6vq-iM-inn" secondAttribute="leading" id="TaR-vo-kBx"/>
|
||||
<constraint firstItem="BHb-cd-Q0r" firstAttribute="top" secondItem="x9d-0h-hyJ" secondAttribute="bottom" constant="20" symbolic="YES" id="TlD-dn-LEm"/>
|
||||
<constraint firstItem="BHb-cd-Q0r" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="YdV-6E-JaO"/>
|
||||
<constraint firstItem="IP0-CP-tlA" firstAttribute="leading" secondItem="Pqa-Ff-7cc" secondAttribute="leading" id="c76-Ak-WXw"/>
|
||||
<constraint firstItem="Xzw-kJ-WoH" firstAttribute="centerY" secondItem="Pqa-Ff-7cc" secondAttribute="centerY" id="dF3-uj-K2q"/>
|
||||
<constraint firstItem="Pqa-Ff-7cc" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="20" symbolic="YES" id="eyJ-B0-kI3"/>
|
||||
<constraint firstItem="dek-ho-dPm" firstAttribute="top" secondItem="6vq-iM-inn" secondAttribute="bottom" constant="20" symbolic="YES" id="i0R-gb-coZ"/>
|
||||
<constraint firstItem="hY9-T0-hke" firstAttribute="leading" secondItem="Pqa-Ff-7cc" secondAttribute="leading" id="kLD-8A-d1Y"/>
|
||||
<constraint firstItem="6vq-iM-inn" firstAttribute="leading" secondItem="IP0-CP-tlA" secondAttribute="leading" id="nby-S7-orD"/>
|
||||
<constraint firstItem="Xzw-kJ-WoH" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="oAi-Zl-LCI"/>
|
||||
<constraint firstItem="hY9-T0-hke" firstAttribute="top" secondItem="Pqa-Ff-7cc" secondAttribute="bottom" constant="8" symbolic="YES" id="oK3-FK-r0S"/>
|
||||
<constraint firstAttribute="bottom" secondItem="T2c-ZD-ioV" secondAttribute="bottom" constant="20" symbolic="YES" id="pm7-eL-q1F"/>
|
||||
<constraint firstAttribute="trailing" secondItem="BHb-cd-Q0r" secondAttribute="trailing" constant="20" symbolic="YES" id="ryW-3O-g6b"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="dek-ho-dPm" secondAttribute="trailing" constant="20" symbolic="YES" id="xcq-hp-Ay9"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="-409" y="-124"/>
|
||||
</customView>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSStatusAvailable" width="16" height="16"/>
|
||||
</resources>
|
||||
</document>
|
||||
@@ -1,14 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14460.31"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="MPAutotypeCandidateSelectionViewController">
|
||||
<connections>
|
||||
<outlet property="contextTableView" destination="Ih2-lo-t2W" id="8uy-Mz-1vc"/>
|
||||
<outlet property="messageTextField" destination="kDw-2l-7gQ" id="7bW-as-yGU"/>
|
||||
<outlet property="selectAutotypeContextButton" destination="V5B-Qq-GN8" id="mqv-H3-N01"/>
|
||||
<outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
|
||||
</connections>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14460.31"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -51,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="1680" height="1027"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
|
||||
<view key="contentView" id="2">
|
||||
<rect key="frame" x="0.0" y="0.0" width="500" height="360"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="553" height="484"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="288">
|
||||
<rect key="frame" x="427" y="13" width="59" height="32"/>
|
||||
<rect key="frame" x="480" y="13" width="59" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="OK" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="289">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -70,7 +70,7 @@ DQ
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="956">
|
||||
<rect key="frame" x="345" y="13" width="82" height="32"/>
|
||||
<rect key="frame" x="398" y="13" width="82" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="957">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -83,7 +83,7 @@ Gw
|
||||
</connections>
|
||||
</button>
|
||||
<tabView translatesAutoresizingMaskIntoConstraints="NO" id="357">
|
||||
<rect key="frame" x="13" y="41" width="474" height="313"/>
|
||||
<rect key="frame" x="13" y="41" width="527" height="437"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<tabViewItems>
|
||||
<tabViewItem label="General" identifier="1" id="358">
|
||||
@@ -265,7 +265,7 @@ Gw
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="P98-Cu-Tha">
|
||||
<rect key="frame" x="251.5" y="18" width="143" height="23"/>
|
||||
<rect key="frame" x="251" y="18" width="143" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Generate Parameters" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="PoI-Er-Y8P">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
|
||||
@@ -26,34 +26,34 @@
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView translatesAutoresizingMaskIntoConstraints="NO" id="1">
|
||||
<rect key="frame" x="0.0" y="0.0" width="400" height="463"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="400" height="449"/>
|
||||
<subviews>
|
||||
<box autoresizesSubviews="NO" verticalHuggingPriority="500" borderType="line" title="Autotype" translatesAutoresizingMaskIntoConstraints="NO" id="P9N-HM-wER">
|
||||
<rect key="frame" x="17" y="115" width="366" height="328"/>
|
||||
<rect key="frame" x="17" y="115" width="366" height="314"/>
|
||||
<view key="contentView" id="faU-Ok-HJ3">
|
||||
<rect key="frame" x="3" y="3" width="360" height="310"/>
|
||||
<rect key="frame" x="3" y="3" width="360" height="296"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<stackView orientation="vertical" alignment="leading" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" translatesAutoresizingMaskIntoConstraints="NO" id="j52-9L-k7c">
|
||||
<rect key="frame" x="16" y="17" width="328" height="283"/>
|
||||
<rect key="frame" x="16" y="17" width="328" height="269"/>
|
||||
<beginningViews>
|
||||
<textField verticalHuggingPriority="750" fixedFrame="YES" preferredMaxLayoutWidth="328" translatesAutoresizingMaskIntoConstraints="NO" id="hMJ-Mo-xOM">
|
||||
<rect key="frame" x="-2" y="227" width="332" height="56"/>
|
||||
<rect key="frame" x="-2" y="227" width="332" height="42"/>
|
||||
<textFieldCell key="cell" controlSize="small" id="H37-ku-aTc">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<string key="title">Autotype is not available, because MacPass is not allowed to control your computer. To enable Autotype, go to the Security and Privacy Preferences and add MacPass to the Accessibilty group. Changes require a restart of MacPass.</string>
|
||||
<string key="title">Autotype might not work properly. Some issues where found that prevent Autotype or Global Autotype to work. Please run the Autotype Doctor to fix those issues.</string>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="jai-b6-Qv4">
|
||||
<rect key="frame" x="-6" y="191" width="160" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Open Preferences…" bezelStyle="rounded" alignment="center" borderStyle="border" inset="2" id="NP0-R3-m6n">
|
||||
<rect key="frame" x="-6" y="191" width="177" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Run Autotype Doctor…" bezelStyle="rounded" alignment="center" borderStyle="border" inset="2" id="NP0-R3-m6n">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="openAccessibiltyPreferences:" target="-2" id="GTg-6Z-6nd"/>
|
||||
<action selector="runAutotypeDoctor:" target="-2" id="u2q-ab-rQY"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="tik-Ar-FJg">
|
||||
@@ -229,7 +229,7 @@
|
||||
<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="-357" y="-1007.5"/>
|
||||
<point key="canvasLocation" x="-558" y="-1123"/>
|
||||
</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="14313.18" 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="14313.18"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
|
||||
@@ -317,12 +317,18 @@ CA
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="1176"/>
|
||||
<menuItem title="Show Password Generator" keyEquivalent="p" id="1200">
|
||||
<menuItem title="Password Generator" keyEquivalent="p" id="1200">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="showPasswordCreator:" target="494" id="1202"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Autotype Doctor" id="zWx-Re-iuJ">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="showAutotypeDoctor:" target="494" id="fsq-lt-9gZ"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="92">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14460.31"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14460.31"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -189,7 +189,7 @@ Gw
|
||||
<constraint firstItem="6" firstAttribute="leading" secondItem="9" secondAttribute="leading" id="zeJ-6i-fY3"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<point key="canvasLocation" x="-312" y="-21"/>
|
||||
<point key="canvasLocation" x="-8" y="-14"/>
|
||||
</window>
|
||||
</objects>
|
||||
<resources>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14460.31"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -152,7 +152,7 @@ Gw
|
||||
<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="-217" y="-96"/>
|
||||
<point key="canvasLocation" x="147" y="-80"/>
|
||||
</customView>
|
||||
</objects>
|
||||
<resources>
|
||||
|
||||
@@ -105,7 +105,7 @@
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="q1P-PD-0LW">
|
||||
<rect key="frame" x="0.0" y="18" width="127" height="17"/>
|
||||
<rect key="frame" x="0.0" y="18" width="145" height="17"/>
|
||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Table View Cell" id="fug-79-n9g">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -126,7 +126,7 @@
|
||||
<constraint firstAttribute="trailing" secondItem="fQy-Sz-4VA" secondAttribute="trailing" constant="2" id="Iy0-iV-Mbx"/>
|
||||
<constraint firstItem="fQy-Sz-4VA" firstAttribute="top" secondItem="q1P-PD-0LW" secondAttribute="bottom" constant="2" id="RZb-58-Zwr"/>
|
||||
<constraint firstItem="q1P-PD-0LW" firstAttribute="leading" secondItem="vVt-P3-yLp" secondAttribute="leading" constant="2" id="bTc-2c-BYB"/>
|
||||
<constraint firstAttribute="trailing" secondItem="q1P-PD-0LW" secondAttribute="trailing" constant="20" symbolic="YES" id="gSi-vN-xzX"/>
|
||||
<constraint firstAttribute="trailing" secondItem="q1P-PD-0LW" secondAttribute="trailing" constant="2" id="gSi-vN-xzX"/>
|
||||
<constraint firstItem="q1P-PD-0LW" firstAttribute="top" secondItem="vVt-P3-yLp" secondAttribute="top" id="tTs-2E-33f"/>
|
||||
<constraint firstItem="fQy-Sz-4VA" firstAttribute="leading" secondItem="vVt-P3-yLp" secondAttribute="leading" constant="2" id="zLP-Ci-nUM"/>
|
||||
</constraints>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14460.31"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -228,7 +228,7 @@
|
||||
<constraint firstItem="bGv-Zc-Vrk" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" id="tk3-kF-k22"/>
|
||||
<constraint firstItem="d2Q-7O-ilP" firstAttribute="leading" secondItem="fjQ-ni-Ayx" secondAttribute="trailing" constant="8" symbolic="YES" id="wHQ-Lk-2fv"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="-130" y="-66"/>
|
||||
<point key="canvasLocation" x="193" y="-18"/>
|
||||
</customView>
|
||||
</objects>
|
||||
</document>
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
<customView translatesAutoresizingMaskIntoConstraints="NO" id="1">
|
||||
<rect key="frame" x="0.0" y="0.0" width="400" height="95"/>
|
||||
<subviews>
|
||||
<button verticalHuggingPriority="500" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Z6x-oU-NC5">
|
||||
<rect key="frame" x="21" y="59" width="228" height="18"/>
|
||||
<button verticalHuggingPriority="500" translatesAutoresizingMaskIntoConstraints="NO" id="Z6x-oU-NC5">
|
||||
<rect key="frame" x="22" y="59" width="221" height="18"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="14" id="ppB-Ka-SVN"/>
|
||||
</constraints>
|
||||
@@ -28,8 +28,8 @@
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<popUpButton verticalHuggingPriority="750" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="pWJ-eJ-MBf">
|
||||
<rect key="frame" x="145" y="17" width="112" height="26"/>
|
||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="pWJ-eJ-MBf">
|
||||
<rect key="frame" x="144" y="17" width="114" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="Hl5-gO-B1c">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
@@ -45,8 +45,8 @@
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ckg-9t-MDS">
|
||||
<rect key="frame" x="21" y="23" width="120" height="17"/>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ckg-9t-MDS">
|
||||
<rect key="frame" x="22" y="22" width="118" height="17"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Check for Updates" id="9tL-CA-Vdg">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -62,10 +62,11 @@
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="pWJ-eJ-MBf" secondAttribute="trailing" constant="20" symbolic="YES" id="QsU-uT-lfo"/>
|
||||
<constraint firstItem="ckg-9t-MDS" firstAttribute="leading" secondItem="Z6x-oU-NC5" secondAttribute="leading" id="W0y-Rp-Ucq"/>
|
||||
<constraint firstItem="pWJ-eJ-MBf" firstAttribute="top" secondItem="Z6x-oU-NC5" secondAttribute="bottom" constant="20" symbolic="YES" id="fhM-Ri-Op9"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="Z6x-oU-NC5" secondAttribute="trailing" constant="20" symbolic="YES" id="mpe-6b-p3W"/>
|
||||
<constraint firstItem="ckg-9t-MDS" firstAttribute="baseline" secondItem="pWJ-eJ-MBf" secondAttribute="baseline" id="ozZ-bW-f7y"/>
|
||||
<constraint firstAttribute="bottom" secondItem="pWJ-eJ-MBf" secondAttribute="bottom" constant="20" symbolic="YES" id="pHW-e8-EU6"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="504" y="511.5"/>
|
||||
<point key="canvasLocation" x="21" y="2"/>
|
||||
</customView>
|
||||
</objects>
|
||||
</document>
|
||||
|
||||
@@ -42,6 +42,7 @@ APPKIT_EXTERN NSString *const MPDidChangeStoredKeyFilesSettings;
|
||||
- (IBAction)showPreferences:(id)sender;
|
||||
- (IBAction)showPluginPrefences:(id)sender;
|
||||
- (IBAction)showPasswordCreator:(id)sender;
|
||||
- (IBAction)showAutotypeDoctor:(id)sender;
|
||||
- (IBAction)createNewDatabase:(id)sender;
|
||||
- (IBAction)openDatabase:(id)sender;
|
||||
- (IBAction)showHelp:(id)sender;
|
||||
|
||||
@@ -42,8 +42,10 @@
|
||||
#import "MPWelcomeViewController.h"
|
||||
#import "MPPlugin.h"
|
||||
#import "MPEntryContextMenuDelegate.h"
|
||||
#import "MPAutotypeDoctor.h"
|
||||
|
||||
#import "NSApplication+MPAdditions.h"
|
||||
#import "NSTextView+MPTouchBarExtension.h"
|
||||
|
||||
#import "KeePassKit/KeePassKit.h"
|
||||
|
||||
@@ -221,6 +223,12 @@ typedef NS_OPTIONS(NSInteger, MPAppStartupState) {
|
||||
[SUUpdater sharedUpdater];
|
||||
#endif
|
||||
self.startupState |= MPAppStartupStateFinishedLaunch;
|
||||
// Here we just opt-in for allowing our bar to be customized throughout the app.
|
||||
if([NSApplication.sharedApplication respondsToSelector:@selector(isAutomaticCustomizeTouchBarMenuItemEnabled)]) {
|
||||
if(@available(macOS 10.12.2, *)) {
|
||||
NSApplication.sharedApplication.automaticCustomizeTouchBarMenuItemEnabled = YES;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
@@ -334,6 +342,10 @@ typedef NS_OPTIONS(NSInteger, MPAppStartupState) {
|
||||
[NSWorkspace.sharedWorkspace openURL:[NSURL URLWithString:urlString]];
|
||||
}
|
||||
|
||||
- (void)showAutotypeDoctor:(id)sender {
|
||||
[MPAutotypeDoctor.defaultDoctor runChecksAndPresentResults];
|
||||
}
|
||||
|
||||
- (void)checkForUpdates:(id)sender {
|
||||
#if defined(DEBUG) || defined(NO_SPARKLE)
|
||||
NSAlert *alert = [[NSAlert alloc] init];
|
||||
@@ -370,10 +382,6 @@ typedef NS_OPTIONS(NSInteger, MPAppStartupState) {
|
||||
if(showWelcomeScreen) {
|
||||
[self showWelcomeWindow];
|
||||
}
|
||||
/* run check for accessibilty after the windowserver should have presented the UI */
|
||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.25 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
||||
[MPAutotypeDaemon.defaultDaemon checkForAccessibiltyPermissions];
|
||||
});
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
@interface MPAutotypeCandidateSelectionViewController : NSViewController
|
||||
|
||||
@property (copy) NSArray *candidates;
|
||||
@property (copy) NSString *windowTitle;
|
||||
|
||||
- (IBAction)selectAutotypeContext:(id)sender;
|
||||
- (IBAction)cancelSelection:(id)sender;
|
||||
|
||||
@@ -28,8 +28,9 @@
|
||||
#import <KeePassKit/KeePassKit.h>
|
||||
|
||||
@interface MPAutotypeCandidateSelectionViewController () <NSTableViewDataSource, NSTableViewDelegate>
|
||||
@property (weak) IBOutlet NSButton *selectAutotypeContextButton;
|
||||
@property (weak) IBOutlet NSTableView *contextTableView;
|
||||
@property (strong) IBOutlet NSButton *selectAutotypeContextButton;
|
||||
@property (strong) IBOutlet NSTableView *contextTableView;
|
||||
@property (strong) IBOutlet NSTextField *messageTextField;
|
||||
|
||||
@end
|
||||
|
||||
@@ -41,6 +42,8 @@
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
NSString *template = NSLocalizedString(@"AUTOTYPE_CANDIDATE_SELECTION_WINDOW_MESSAGE_%@", "Message text in the autotype selection window. Placeholder is %1 - windowTitle");
|
||||
self.messageTextField.stringValue = [NSString stringWithFormat:template, self.windowTitle];
|
||||
self.selectAutotypeContextButton.enabled = NO;
|
||||
NSNotification *notification = [NSNotification notificationWithName:NSTableViewSelectionDidChangeNotification object:self.contextTableView];
|
||||
[self tableViewSelectionDidChange:notification];
|
||||
|
||||
@@ -35,13 +35,9 @@
|
||||
@property (weak) IBOutlet NSPopUpButton *matchSelectionButton;
|
||||
@property (readonly, strong) DDHotKey *registredHotKey;
|
||||
@property (readonly, strong, class) MPAutotypeDaemon *defaultDaemon;
|
||||
@property (nonatomic, readonly) BOOL autotypeSupported; // YES if the system allows for Autotype. NO if the user has denied this.
|
||||
|
||||
- (instancetype)init NS_UNAVAILABLE;
|
||||
|
||||
- (void)checkForAccessibiltyPermissions;
|
||||
- (void)openAccessibiltyPreferences;
|
||||
|
||||
- (void)performAutotypeForEntry:(KPKEntry *)entry;
|
||||
- (void)performAutotypeForEntry:(KPKEntry *)entry overrideSequence:(NSString *)sequence;
|
||||
- (void)selectAutotypeCandiate:(MPAutotypeContext *)context;
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
#import "MPSettingsHelper.h"
|
||||
#import "MPAutotypeCandidateSelectionViewController.h"
|
||||
#import "MPUserNotificationCenterDelegate.h"
|
||||
#import "MPAutotypeDoctor.h"
|
||||
|
||||
#import "MPPluginHost.h"
|
||||
#import "MPPlugin.h"
|
||||
@@ -57,12 +58,11 @@ NSString *const kMPProcessIdentifierKey = @"kMPProcessIdentifierKey";
|
||||
@property (strong) NSRunningApplication *previousApplication; // The application that was active before we got invoked
|
||||
@property (assign) NSTimeInterval userActionRequested;
|
||||
@property (strong) id applicationActivationObserver;
|
||||
@property (nonatomic, readonly) BOOL hasNecessaryAutotypePermissions;
|
||||
@end
|
||||
|
||||
@implementation MPAutotypeDaemon
|
||||
|
||||
@dynamic autotypeSupported;
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark Lifecylce
|
||||
|
||||
@@ -117,13 +117,6 @@ static MPAutotypeDaemon *_sharedInstance;
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark Properties
|
||||
- (BOOL)autotypeSupported {
|
||||
if(@available(macOS 10.14, *)) {
|
||||
return AXIsProcessTrusted();
|
||||
}
|
||||
/* macOS 10.13 and lower allows us to send key events regardless of accessibilty trust */
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (void)setEnabled:(BOOL)enabled {
|
||||
if(_enabled != enabled) {
|
||||
@@ -142,50 +135,8 @@ static MPAutotypeDaemon *_sharedInstance;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)checkForAccessibiltyPermissions {
|
||||
if(!self.enabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(NSApplication.sharedApplication.isRunningTests) {
|
||||
return; // Do not display pop-up when running tests
|
||||
}
|
||||
|
||||
BOOL hideAlert = NO;
|
||||
if(nil != [NSUserDefaults.standardUserDefaults objectForKey:kMPSettingsKeyAutotypeHideAccessibiltyWarning]) {
|
||||
hideAlert = [NSUserDefaults.standardUserDefaults boolForKey:kMPSettingsKeyAutotypeHideAccessibiltyWarning];
|
||||
}
|
||||
if(hideAlert || self.autotypeSupported) {
|
||||
return;
|
||||
}
|
||||
else {
|
||||
NSAlert *alert = [[NSAlert alloc] init];
|
||||
alert.alertStyle = NSWarningAlertStyle;
|
||||
alert.messageText = NSLocalizedString(@"ALERT_AUTOTYPE_MISSING_ACCESSIBILTY_PERMISSIONS_MESSAGE_TEXT", @"Alert message displayed when Autotype performs self check and lacks accessibilty permissions");
|
||||
alert.informativeText = NSLocalizedString(@"ALERT_AUTOTYPE_MISSING_ACCESSIBILTY_PERMISSIONS_INFORMATIVE_TEXT", @"Alert informative text displayed when Autotype performs self check and lacks accessibilty permissions");
|
||||
alert.showsSuppressionButton = YES;
|
||||
[alert addButtonWithTitle:NSLocalizedString(@"ALERT_AUTOTYPE_MISSING_ACCESSIBILTY_PERMISSIONS_BUTTON_OK", @"Button in dialog to leave autotype disabled and continiue!")];
|
||||
[alert addButtonWithTitle:NSLocalizedString(@"ALERT_AUTOTYPE_MISSING_ACCESSIBILTY_PERMISSIONS_BUTTON_OPEN_PREFERENCES", @"Button in dialog to open accessibilty preferences pane!")];
|
||||
NSModalResponse returnCode = [alert runModal];
|
||||
BOOL suppressWarning = (alert.suppressionButton.state == NSOnState);
|
||||
[NSUserDefaults.standardUserDefaults setBool:suppressWarning forKey:kMPSettingsKeyAutotypeHideAccessibiltyWarning];
|
||||
switch(returnCode) {
|
||||
case NSAlertFirstButtonReturn: {
|
||||
/* ok, ignore */
|
||||
break;
|
||||
}
|
||||
case NSAlertSecondButtonReturn:
|
||||
/* open prefs */
|
||||
[self openAccessibiltyPreferences];
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void)openAccessibiltyPreferences {
|
||||
[NSWorkspace.sharedWorkspace openURL:[NSURL URLWithString:@"x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility"]];
|
||||
- (BOOL)hasNecessaryAutotypePermissions {
|
||||
return MPAutotypeDoctor.defaultDoctor.hasNecessaryAutotypePermissions;
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
@@ -225,16 +176,16 @@ static MPAutotypeDaemon *_sharedInstance;
|
||||
#pragma mark Autotype Execution
|
||||
|
||||
- (void)_performAutotypeForEntry:(KPKEntry *)entryOrNil {
|
||||
/*if(!self.autotypeSupported) {
|
||||
NSUserNotification *notification = [[NSUserNotification alloc] init];
|
||||
notification.title = NSApp.applicationName;
|
||||
notification.informativeText = NSLocalizedString(@"AUTOTYPE_NOTIFICATION_MACPASS_HAS_NO_ACCESSIBILTY_PERMISSIONS", "Notification: Autotype failed, MacPass has no permission to send key strokes");
|
||||
notification.actionButtonTitle = NSLocalizedString(@"OPEN_PREFERENCES", "Action button in Notification to show the Accessibilty preferences");
|
||||
notification.userInfo = @{ MPUserNotificationTypeKey: MPUserNotificationTypeShowAccessibiltyPreferences };
|
||||
notification.showsButtons = YES;
|
||||
[NSUserNotificationCenter.defaultUserNotificationCenter deliverNotification:notification];
|
||||
return;
|
||||
}*/
|
||||
if(!self.hasNecessaryAutotypePermissions) {
|
||||
NSUserNotification *notification = [[NSUserNotification alloc] init];
|
||||
notification.title = NSApp.applicationName;
|
||||
notification.informativeText = NSLocalizedString(@"AUTOTYPE_NOTIFICATION_MACPASS_IS_MISSING_PERMISSIONS", "Notification: Autotype failed, MacPass has not enough permissions to perform autotype");
|
||||
notification.actionButtonTitle = NSLocalizedString(@"SHOW_AUTOTYPE_DOCTOR", "Action button in Notification to show the Autotype Doctor");
|
||||
notification.userInfo = @{ MPUserNotificationTypeKey: MPUserNotificationTypeRunAutotypeDoctor };
|
||||
notification.showsButtons = YES;
|
||||
[NSUserNotificationCenter.defaultUserNotificationCenter deliverNotification:notification];
|
||||
return;
|
||||
}
|
||||
NSInteger pid = NSProcessInfo.processInfo.processIdentifier;
|
||||
if(self.targetPID == pid) {
|
||||
return; // We do not perform Autotype on ourselves
|
||||
@@ -275,7 +226,7 @@ static MPAutotypeDaemon *_sharedInstance;
|
||||
}
|
||||
|
||||
MPAutotypeContext *context = [self _autotypeContextForDocuments:documents forWindowTitle:self.targetWindowTitle preferredEntry:entryOrNil];
|
||||
/* TODO: that's popping up if the mulit selection dialog goes up! */
|
||||
/* TODO: that's popping up if the multi selection dialog goes up! */
|
||||
if(self.matchSelectionWindow) {
|
||||
return; // we present the match selection window, just return
|
||||
}
|
||||
@@ -313,7 +264,7 @@ static MPAutotypeDaemon *_sharedInstance;
|
||||
if(candidates == 1 ) {
|
||||
return autotypeCandidates.lastObject;
|
||||
}
|
||||
[self _presentSelectionWindow:autotypeCandidates];
|
||||
[self _presentCandiadates:autotypeCandidates forWindowTitle:windowTitle];
|
||||
return nil; // Nothing to do, we get called back by the window
|
||||
}
|
||||
|
||||
@@ -394,10 +345,14 @@ static MPAutotypeDaemon *_sharedInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(currentWindows.count > 0 && infoDict.count == 0) {
|
||||
// show some information about not being able to determine any windows
|
||||
NSLog(@"Unable to retrieve any window names. If you encounter this issue you might be running 10.15 and MacPass has no permission for screen recording.");
|
||||
}
|
||||
return infoDict;
|
||||
}
|
||||
|
||||
- (void)_presentSelectionWindow:(NSArray *)candidates {
|
||||
- (void)_presentCandiadates:(NSArray *)candidates forWindowTitle:(NSString *)windowTitle {
|
||||
if(!self.matchSelectionWindow) {
|
||||
self.matchSelectionWindow = [[NSPanel alloc] initWithContentRect:NSMakeRect(0, 0, 100, 100)
|
||||
styleMask:NSWindowStyleMaskNonactivatingPanel|NSWindowStyleMaskTitled
|
||||
@@ -406,6 +361,7 @@ static MPAutotypeDaemon *_sharedInstance;
|
||||
self.matchSelectionWindow.level = kCGAssistiveTechHighWindowLevel;
|
||||
MPAutotypeCandidateSelectionViewController *vc = [[MPAutotypeCandidateSelectionViewController alloc] init];
|
||||
vc.candidates = candidates;
|
||||
vc.windowTitle = windowTitle;
|
||||
self.matchSelectionWindow.collectionBehavior |= (NSWindowCollectionBehaviorFullScreenAuxiliary |
|
||||
NSWindowCollectionBehaviorMoveToActiveSpace |
|
||||
NSWindowCollectionBehaviorTransient );
|
||||
|
||||
29
MacPass/MPAutotypeDoctor.h
Normal file
29
MacPass/MPAutotypeDoctor.h
Normal file
@@ -0,0 +1,29 @@
|
||||
//
|
||||
// MPAutotypeDoctor.h
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 03.07.19.
|
||||
// Copyright © 2019 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface MPAutotypeDoctor : NSObject
|
||||
|
||||
|
||||
@property (class, readonly, strong) MPAutotypeDoctor *defaultDoctor;
|
||||
@property (nonatomic, readonly) BOOL hasNecessaryAutotypePermissions; // MacPass has all the permissions it needs to run autotype on the current system
|
||||
|
||||
- (BOOL)hasScreenRecordingPermissions:(NSError *__autoreleasing*)error;
|
||||
- (BOOL)hasAccessibiltyPermissions:(NSError *__autoreleasing*)error;
|
||||
|
||||
- (void)runChecksAndPresentResults;
|
||||
- (void)openScreenRecordingPreferences;
|
||||
- (void)openAccessibiltyPreferences;
|
||||
- (void)openAutomationPreferences;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
136
MacPass/MPAutotypeDoctor.m
Normal file
136
MacPass/MPAutotypeDoctor.m
Normal file
@@ -0,0 +1,136 @@
|
||||
//
|
||||
// MPAutotypeDoctor.m
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 03.07.19.
|
||||
// Copyright © 2019 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import "MPAutotypeDoctor.h"
|
||||
#import "MPSettingsHelper.h"
|
||||
#import "NSApplication+MPAdditions.h"
|
||||
#import "MPAutotypeDoctorReportViewController.h"
|
||||
#import "NSError+Messages.h"
|
||||
|
||||
|
||||
@interface MPReportItem : NSObject
|
||||
|
||||
@property (copy) NSString *statusDescription;
|
||||
@property (copy) NSString *label;
|
||||
@property (copy) NSString *actionLabel;
|
||||
@property BOOL isOK;
|
||||
@property (weak) id target;
|
||||
|
||||
@end
|
||||
|
||||
@implementation MPReportItem
|
||||
|
||||
- (instancetype)init {
|
||||
self = [super init];
|
||||
if(self) {
|
||||
_isOK = NO;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@interface MPAutotypeDoctor () <NSWindowDelegate>
|
||||
@property (strong) NSWindow *reportWindow;
|
||||
@end
|
||||
|
||||
@implementation MPAutotypeDoctor
|
||||
|
||||
+ (MPAutotypeDoctor *)defaultDoctor {
|
||||
static MPAutotypeDoctor *instance;
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
instance = [[MPAutotypeDoctor alloc] init];
|
||||
});
|
||||
return instance;
|
||||
}
|
||||
|
||||
- (BOOL)hasNecessaryAutotypePermissions {
|
||||
if(![self hasAccessibiltyPermissions:NULL]) {
|
||||
return NO;
|
||||
}
|
||||
if(![self hasScreenRecordingPermissions:NULL]) {
|
||||
return NO;
|
||||
}
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (BOOL)hasScreenRecordingPermissions:(NSError *__autoreleasing*)error {
|
||||
BOOL canRecordScreen = YES;
|
||||
/* macos 10.14 and lower do not require screen recording permission to get window titles */
|
||||
if(@available(macos 10.15, *)) {
|
||||
/*
|
||||
To minimize the intrusion just make a 1px image of the upper left corner
|
||||
This way there is no real possibilty to access any private data
|
||||
*/
|
||||
CGImageRef screenshot = CGWindowListCreateImage(
|
||||
CGRectMake(0, 0, 1, 1),
|
||||
kCGWindowListOptionOnScreenOnly,
|
||||
kCGNullWindowID,
|
||||
kCGWindowImageDefault);
|
||||
BOOL canRecordScreen = !screenshot;
|
||||
if(!canRecordScreen) {
|
||||
CFRelease(screenshot);
|
||||
}
|
||||
if(!canRecordScreen && error) {
|
||||
*error = [NSError errorInDomain:MPAutotypeErrorDomain withCode:MPErrorAutotypeIsMissingScreenRecordingPermissions description:NSLocalizedString(@"ERROR_NO_PERMISSION_TO_RECORD_SCREEN", "Error description for missing screen recording permissions")];
|
||||
}
|
||||
}
|
||||
return canRecordScreen;
|
||||
}
|
||||
|
||||
- (BOOL)hasAccessibiltyPermissions:(NSError *__autoreleasing*)error {
|
||||
BOOL isTrusted = YES;
|
||||
/* macOS 10.13 and lower allows us to send key events regardless of accessibilty trust */
|
||||
if(@available(macOS 10.14, *)) {
|
||||
isTrusted = AXIsProcessTrusted();
|
||||
if(!isTrusted && error) {
|
||||
*error = [NSError errorInDomain:MPAutotypeErrorDomain withCode:MPErrorAutotypeIsMissingAccessibiltyPermissions description:NSLocalizedString(@"ERROR_NO_ACCESSIBILTY_PERMISSIONS", "Error description for missing accessibilty permissions")];
|
||||
}
|
||||
}
|
||||
return isTrusted;
|
||||
}
|
||||
|
||||
- (void)openAccessibiltyPreferences {
|
||||
[NSWorkspace.sharedWorkspace openURL:[NSURL URLWithString:@"x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility"]];
|
||||
}
|
||||
|
||||
- (void)openScreenRecordingPreferences {
|
||||
//TODO fix this in macOS 10.15 to use the correct URL
|
||||
[NSWorkspace.sharedWorkspace openURL:[NSURL URLWithString:@"x-apple.systempreferences:com.apple.preference.security"]];
|
||||
}
|
||||
|
||||
- (void)openAutomationPreferences {
|
||||
[NSWorkspace.sharedWorkspace openURL:[NSURL URLWithString:@"x-apple.systempreferences:com.apple.preference.security?Privacy_Automation"]];
|
||||
}
|
||||
|
||||
- (void)runChecksAndPresentResults {
|
||||
if(!self.reportWindow) {
|
||||
self.reportWindow = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 100, 100)
|
||||
styleMask:NSWindowStyleMaskTitled|NSWindowStyleMaskClosable|NSWindowStyleMaskResizable
|
||||
backing:NSBackingStoreBuffered
|
||||
defer:NO];
|
||||
self.reportWindow.releasedWhenClosed = NO;
|
||||
self.reportWindow.title = NSLocalizedString(@"AUTOTYPE_DOCTOR_RESULTS_WINDOW_TITLE", @"Window title for the stand-alone password creator window");
|
||||
self.reportWindow.delegate = self;
|
||||
}
|
||||
MPAutotypeDoctorReportViewController *vc = [[MPAutotypeDoctorReportViewController alloc] init];
|
||||
self.reportWindow.contentViewController = vc;
|
||||
|
||||
[self.reportWindow center];
|
||||
[self.reportWindow makeKeyAndOrderFront:vc];
|
||||
}
|
||||
|
||||
- (void)windowWillClose:(NSNotification *)notification {
|
||||
if(notification.object == self.reportWindow) {
|
||||
self.reportWindow = nil;
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
28
MacPass/MPAutotypeDoctorReportViewController.h
Normal file
28
MacPass/MPAutotypeDoctorReportViewController.h
Normal file
@@ -0,0 +1,28 @@
|
||||
//
|
||||
// MPAutotypeDoctorReportViewController.h
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 05.07.19.
|
||||
// Copyright © 2019 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface MPAutotypeDoctorReportViewController : NSViewController
|
||||
|
||||
@property (strong) IBOutlet NSImageView *accessibiltyStatusImageView;
|
||||
@property (strong) IBOutlet NSTextField *accessibiltyStatusTextField;
|
||||
|
||||
@property (strong) IBOutlet NSImageView *screenRecordingStatusImageView;
|
||||
@property (strong) IBOutlet NSTextField *screenRecordingStatusTextField;
|
||||
|
||||
- (IBAction)openAccessibiltyPreferences:(id)sender;
|
||||
- (IBAction)openScreenRecordingPreferences:(id)sender;
|
||||
- (IBAction)openAutomationPreferences:(id)sender;
|
||||
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
67
MacPass/MPAutotypeDoctorReportViewController.m
Normal file
67
MacPass/MPAutotypeDoctorReportViewController.m
Normal file
@@ -0,0 +1,67 @@
|
||||
//
|
||||
// MPAutotypeDoctorReportViewController.m
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 05.07.19.
|
||||
// Copyright © 2019 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import "MPAutotypeDoctorReportViewController.h"
|
||||
#import "MPAutotypeDoctor.h"
|
||||
|
||||
@implementation MPAutotypeDoctorReportViewController
|
||||
|
||||
- (NSNibName)nibName {
|
||||
return @"AutotypeDoctorReportViewController";
|
||||
}
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
[self _updateView];
|
||||
|
||||
}
|
||||
|
||||
- (void)openAccessibiltyPreferences:(id)sender {
|
||||
[MPAutotypeDoctor.defaultDoctor openAccessibiltyPreferences];
|
||||
}
|
||||
|
||||
- (void)openScreenRecordingPreferences:(id)sender {
|
||||
[MPAutotypeDoctor.defaultDoctor openScreenRecordingPreferences];
|
||||
}
|
||||
|
||||
- (void)openAutomationPreferences:(id)sender {
|
||||
[MPAutotypeDoctor.defaultDoctor openAutomationPreferences];
|
||||
}
|
||||
|
||||
|
||||
- (void)_updateView {
|
||||
NSError *error;
|
||||
if([MPAutotypeDoctor.defaultDoctor hasAccessibiltyPermissions:&error]) {
|
||||
self.accessibiltyStatusImageView.image = [NSImage imageNamed:NSImageNameStatusAvailable];
|
||||
self.accessibiltyStatusTextField.stringValue = NSLocalizedString(@"AUTOTYPE_STATUS_ACCESSIBILTY_PERMISSIONS_OK", "Status lable when no issue were found in accessibilty");
|
||||
}
|
||||
else {
|
||||
self.accessibiltyStatusImageView.image = [NSImage imageNamed:NSImageNameStatusUnavailable];
|
||||
if(error && error.localizedDescription) {
|
||||
self.accessibiltyStatusTextField.stringValue = error.localizedDescription;
|
||||
}
|
||||
else {
|
||||
self.accessibiltyStatusTextField.stringValue = NSLocalizedString(@"AUTOTYPE_STATUS_NO_ACCESSIBILTY_PERMISSIONS", "Status MacPass has no accessibilty permissions");
|
||||
}
|
||||
}
|
||||
if([MPAutotypeDoctor.defaultDoctor hasScreenRecordingPermissions:&error]) {
|
||||
self.screenRecordingStatusImageView.image = [NSImage imageNamed:NSImageNameStatusAvailable];
|
||||
self.screenRecordingStatusTextField.stringValue = NSLocalizedString(@"AUTOTYPE_STATUS_SCREEN_RECORDING_PERMISSIONS_OK", "Status lable when no issue were found in screen recording permissions");
|
||||
}
|
||||
else {
|
||||
self.screenRecordingStatusImageView.image = [NSImage imageNamed:NSImageNameStatusUnavailable];
|
||||
if(error && error.localizedDescription) {
|
||||
self.screenRecordingStatusTextField.stringValue = error.localizedDescription;
|
||||
}
|
||||
else {
|
||||
self.screenRecordingStatusTextField.stringValue = NSLocalizedString(@"AUTOTYPE_STATUS_NO_SCREEN_RECORDING_PERMISSIONS", "Status MacPass has no screen recording permissions");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -168,7 +168,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
||||
NSRecoveryAttempterErrorKey : recovery
|
||||
};
|
||||
if(outError != NULL) {
|
||||
*outError = [NSError errorWithDomain:MPErrorDomain code:MPErrorNoPasswordOrKeyFile userInfo:userInfo];
|
||||
*outError = [NSError errorWithDomain:MPDefaultErrorDomain code:MPErrorNoPasswordOrKeyFile userInfo:userInfo];
|
||||
}
|
||||
return NO;
|
||||
}
|
||||
@@ -181,7 +181,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
||||
if(!self.compositeKey.hasPasswordOrKeyFile) {
|
||||
if(outError != NULL) {
|
||||
NSDictionary *userInfo = @{ NSLocalizedDescriptionKey: NSLocalizedString(@"WARNING_ON_SAVE_NO_PASSWORD_OR_KEY_SET", "") };
|
||||
*outError = [NSError errorWithDomain:MPErrorDomain code:0 userInfo:userInfo];
|
||||
*outError = [NSError errorWithDomain:MPDefaultErrorDomain code:0 userInfo:userInfo];
|
||||
}
|
||||
return nil; // Saving without a password/key is not possible
|
||||
}
|
||||
@@ -190,7 +190,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou
|
||||
if(format == KPKDatabaseFormatUnknown) {
|
||||
if(outError != NULL) {
|
||||
NSDictionary *userInfo = @{ NSLocalizedDescriptionKey: NSLocalizedString(@"UNKNOWN_FILE_VERSION", "") };
|
||||
*outError = [NSError errorWithDomain:MPErrorDomain code:0 userInfo:userInfo];
|
||||
*outError = [NSError errorWithDomain:MPDefaultErrorDomain code:0 userInfo:userInfo];
|
||||
}
|
||||
return nil; // We do not know what version to save!
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
@class MPOutlineViewController;
|
||||
@class MPToolbarDelegate;
|
||||
|
||||
@interface MPDocumentWindowController : NSWindowController
|
||||
@interface MPDocumentWindowController : NSWindowController <NSTouchBarDelegate>
|
||||
|
||||
@property (readonly, strong) MPPasswordInputController *passwordInputController;
|
||||
@property (readonly, strong) MPEntryViewController *entryViewController;
|
||||
@@ -39,8 +39,7 @@
|
||||
@property (readonly, strong) MPInspectorViewController *inspectorViewController;
|
||||
@property (readonly, strong) MPToolbarDelegate *toolbarDelegate;
|
||||
|
||||
#pragma mark Search
|
||||
- (NSSearchField *)searchField;
|
||||
@property (readonly, nonatomic, strong) NSSearchField *searchField;
|
||||
|
||||
- (void)showEntries;
|
||||
- (void)showPasswordInput;
|
||||
|
||||
@@ -39,6 +39,8 @@
|
||||
#import "MPSettingsHelper.h"
|
||||
#import "MPToolbarDelegate.h"
|
||||
#import "MPTitlebarColorAccessoryViewController.h"
|
||||
#import "MPTouchBarButtonCreator.h"
|
||||
#import "MPIconHelper.h"
|
||||
|
||||
#import "MPPluginHost.h"
|
||||
#import "MPPlugin.h"
|
||||
@@ -652,4 +654,97 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
|
||||
return (nil != inspectorView.superview);
|
||||
}
|
||||
|
||||
- (NSTouchBar *)makeTouchBar {
|
||||
NSTouchBar *touchBar = [[NSTouchBar alloc] init];
|
||||
touchBar.delegate = self;
|
||||
touchBar.customizationIdentifier = MPTouchBarCustomizationIdentifierDocument;
|
||||
NSArray<NSTouchBarItemIdentifier> *defaultItemIdentifiers = @[MPTouchBarItemIdentifierSearch, MPTouchBarItemIdentifierEditPopover, MPTouchBarItemIdentifierCopyUsername, MPTouchBarItemIdentifierCopyPassword, MPTouchBarItemIdentifierPerformAutotype, NSTouchBarItemIdentifierFlexibleSpace, MPTouchBarItemIdentifierLock];
|
||||
touchBar.defaultItemIdentifiers = defaultItemIdentifiers;
|
||||
touchBar.customizationAllowedItemIdentifiers = defaultItemIdentifiers;
|
||||
return touchBar;
|
||||
}
|
||||
|
||||
- (NSTouchBarItem *)touchBar:(NSTouchBar *)touchBar makeItemForIdentifier:(NSTouchBarItemIdentifier)identifier API_AVAILABLE(macos(10.12.2)) {
|
||||
#pragma mark primary touchbar elements
|
||||
if([identifier isEqualToString:MPTouchBarItemIdentifierSearch]) {
|
||||
return [MPTouchBarButtonCreator touchBarButtonWithImage:[NSImage imageNamed:NSImageNameTouchBarSearchTemplate]
|
||||
identifier:MPTouchBarItemIdentifierSearch
|
||||
target:self
|
||||
selector:@selector(focusSearchField)
|
||||
customizationLabel:NSLocalizedString(@"TOUCHBAR_SEARCH","Touchbar button label for searching the database")];
|
||||
}
|
||||
|
||||
if([identifier isEqualToString:MPTouchBarItemIdentifierEditPopover]) {
|
||||
NSTouchBar *secondaryTouchBar = [[NSTouchBar alloc] init];
|
||||
secondaryTouchBar.delegate = self;
|
||||
secondaryTouchBar.defaultItemIdentifiers = @[MPTouchBarItemIdentifierNewEntry, MPTouchBarItemIdentifierNewGroup, MPTouchBarItemIdentifierDelete];
|
||||
return [MPTouchBarButtonCreator popoverTouchBarButton:NSLocalizedString(@"TOUCHBAR_EDIT","Touchbar button label for opening the popover to edit")
|
||||
identifier:MPTouchBarItemIdentifierEditPopover
|
||||
popoverTouchBar:secondaryTouchBar
|
||||
customizationLabel:NSLocalizedString(@"TOUCHBAR_EDIT","Touchbar button label for opening the popover to edit")];
|
||||
}
|
||||
|
||||
if([identifier isEqualToString:MPTouchBarItemIdentifierCopyUsername]) {
|
||||
return [MPTouchBarButtonCreator touchBarButtonWithTitle:NSLocalizedString(@"TOUCHBAR_COPY_USERNAME","Touchbar button label for copying the username")
|
||||
identifier:MPTouchBarItemIdentifierCopyUsername
|
||||
target:self
|
||||
selector:@selector(copyUsername:)
|
||||
customizationLabel:NSLocalizedString(@"TOUCHBAR_COPY_USERNAME","Touchbar button label for copying the username")];
|
||||
}
|
||||
|
||||
if([identifier isEqualToString:MPTouchBarItemIdentifierCopyPassword]) {
|
||||
return [MPTouchBarButtonCreator touchBarButtonWithTitle:NSLocalizedString(@"TOUCHBAR_COPY_PASSWORD","Touchbar button label for copying the password")
|
||||
identifier:MPTouchBarItemIdentifierCopyPassword
|
||||
target:self
|
||||
selector:@selector(copyPassword:)
|
||||
customizationLabel:NSLocalizedString(@"TOUCHBAR_COPY_PASSWORD","Touchbar button label for copying the password")];
|
||||
}
|
||||
|
||||
if([identifier isEqualToString:MPTouchBarItemIdentifierPerformAutotype]) {
|
||||
return [MPTouchBarButtonCreator touchBarButtonWithTitle:NSLocalizedString(@"TOUCHBAR_PERFORM_AUTOTYPE","Touchbar button label for performing autotype")
|
||||
identifier:MPTouchBarItemIdentifierPerformAutotype
|
||||
target:self
|
||||
selector:@selector(performAutotypeForEntry:)
|
||||
customizationLabel:NSLocalizedString(@"TOUCHBAR_PERFORM_AUTOTYPE","Touchbar button label for performing autotype")];
|
||||
}
|
||||
if([identifier isEqualToString:MPTouchBarItemIdentifierLock]) {
|
||||
return [MPTouchBarButtonCreator touchBarButtonWithImage:[NSImage imageNamed:NSImageNameLockLockedTemplate]
|
||||
identifier:MPTouchBarItemIdentifierLock
|
||||
target:self
|
||||
selector:@selector(lock:)
|
||||
customizationLabel:NSLocalizedString(@"TOUCHBAR_LOCK_DATABASE","Touchbar button label for locking the database")];
|
||||
}
|
||||
#pragma mark secondary/popover touchbar elements
|
||||
if([identifier isEqualToString:MPTouchBarItemIdentifierNewEntry]) {
|
||||
return [MPTouchBarButtonCreator touchBarButtonWithTitleAndImage:NSLocalizedString(@"TOUCHBAR_NEW_ENTRY","Touchbar button label for creating a new item")
|
||||
identifier:MPTouchBarItemIdentifierNewEntry
|
||||
image:[MPIconHelper icon:MPIconAddEntry]
|
||||
target:self
|
||||
selector:@selector(createEntry:)
|
||||
customizationLabel:NSLocalizedString(@"TOUCHBAR_NEW_ENTRY","Touchbar button label for creating a new item")];
|
||||
}
|
||||
if([identifier isEqualToString:MPTouchBarItemIdentifierNewGroup]) {
|
||||
return [MPTouchBarButtonCreator touchBarButtonWithTitleAndImage:NSLocalizedString(@"TOUCHBAR_NEW_GROUP","Touchbar button label for creating a new group")
|
||||
identifier:MPTouchBarItemIdentifierNewGroup
|
||||
image:[MPIconHelper icon:MPIconAddFolder]
|
||||
target:self
|
||||
selector:@selector(createGroup:)
|
||||
customizationLabel:NSLocalizedString(@"TOUCHBAR_NEW_GROUP","Touchbar button label for creating a new group")];
|
||||
}
|
||||
if([identifier isEqualToString:MPTouchBarItemIdentifierDelete]) {
|
||||
return [MPTouchBarButtonCreator touchBarButtonWithTitleAndImageAndColor:NSLocalizedString(@"TOUCHBAR_DELETE","Touchbar button label for deleting elements")
|
||||
identifier:MPTouchBarItemIdentifierDelete
|
||||
image:[MPIconHelper icon:MPIconTrash]
|
||||
color:NSColor.systemRedColor
|
||||
target:self
|
||||
selector:@selector(delete:)
|
||||
customizationLabel:NSLocalizedString(@"TOUCHBAR_DELETE","Touchbar button label for deleting elements")];
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (void)focusSearchField {
|
||||
[self.window makeFirstResponder:self.searchField];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -44,6 +44,6 @@
|
||||
/* Preview */
|
||||
@property (strong) IBOutlet NSButton *enableQuicklookCheckBox;
|
||||
|
||||
- (IBAction)openAccessibiltyPreferences:(id)sender;
|
||||
- (IBAction)runAutotypeDoctor:(id)sender;
|
||||
|
||||
@end
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
#import "MPIntegrationPreferencesController.h"
|
||||
#import "MPSettingsHelper.h"
|
||||
#import "MPIconHelper.h"
|
||||
#import "MPAutotypeDaemon.h"
|
||||
#import "MPAutotypeDoctor.h"
|
||||
|
||||
#import "DDHotKeyCenter.h"
|
||||
#import "DDHotKey+MacPassAdditions.h"
|
||||
@@ -105,7 +105,8 @@
|
||||
}
|
||||
|
||||
- (void)_updateAccessabilityWarning {
|
||||
BOOL hasAutotypeSupport = MPAutotypeDaemon.defaultDaemon.autotypeSupported;
|
||||
|
||||
BOOL hasAutotypeSupport = MPAutotypeDoctor.defaultDoctor.hasNecessaryAutotypePermissions;
|
||||
|
||||
if(hasAutotypeSupport) {
|
||||
[self.autotypeStackView setVisibilityPriority:NSStackViewVisibilityPriorityNotVisible forView:self.autotypeWarningTextField];
|
||||
@@ -117,7 +118,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
- (void)openAccessibiltyPreferences:(id)sender {
|
||||
[MPAutotypeDaemon.defaultDaemon openAccessibiltyPreferences];
|
||||
- (void)runAutotypeDoctor:(id)sender {
|
||||
[MPAutotypeDoctor.defaultDoctor runChecksAndPresentResults];
|
||||
}
|
||||
@end
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
@class KPKCompositeKey;
|
||||
|
||||
@interface MPPasswordInputController : MPViewController
|
||||
@interface MPPasswordInputController : MPViewController <NSTouchBarDelegate>
|
||||
|
||||
typedef BOOL (^passwordInputCompletionBlock)(NSString *password, NSURL *keyURL, BOOL didCancel, NSError *__autoreleasing*error);
|
||||
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#import "MPDocument.h"
|
||||
#import "MPSettingsHelper.h"
|
||||
#import "MPPathControl.h"
|
||||
#import "MPTouchBarButtonCreator.h"
|
||||
|
||||
#import "HNHUi/HNHUi.h"
|
||||
|
||||
@@ -33,6 +34,7 @@
|
||||
|
||||
@interface MPPasswordInputController ()
|
||||
|
||||
@property (strong) NSButton *showPasswordButton;
|
||||
@property (weak) IBOutlet HNHUISecureTextField *passwordTextField;
|
||||
@property (weak) IBOutlet MPPathControl *keyPathControl;
|
||||
@property (weak) IBOutlet NSImageView *messageImageView;
|
||||
@@ -177,4 +179,36 @@
|
||||
self.messageInfoTextField.hidden = NO;
|
||||
}
|
||||
|
||||
|
||||
- (NSTouchBar *)makeTouchBar {
|
||||
NSTouchBar *touchBar = [[NSTouchBar alloc] init];
|
||||
touchBar.delegate = self;
|
||||
touchBar.customizationIdentifier = MPTouchBarCustomizationIdentifierPasswordInput;
|
||||
NSArray<NSTouchBarItemIdentifier> *defaultItemIdentifiers = @[MPTouchBarItemIdentifierShowPassword, MPTouchBarItemIdentifierChooseKeyfile, NSTouchBarItemIdentifierFlexibleSpace,MPTouchBarItemIdentifierUnlock];
|
||||
touchBar.defaultItemIdentifiers = defaultItemIdentifiers;
|
||||
touchBar.customizationAllowedItemIdentifiers = defaultItemIdentifiers;
|
||||
return touchBar;
|
||||
}
|
||||
|
||||
- (NSTouchBarItem *)touchBar:(NSTouchBar *)touchBar makeItemForIdentifier:(NSTouchBarItemIdentifier)identifier API_AVAILABLE(macos(10.12.2)) {
|
||||
if (identifier == MPTouchBarItemIdentifierChooseKeyfile) {
|
||||
return [MPTouchBarButtonCreator touchBarButtonWithTitleAndImage:NSLocalizedString(@"TOUCHBAR_CHOOSE_KEYFILE","Touchbar button label for choosing the keyfile") identifier:MPTouchBarItemIdentifierChooseKeyfile image:[NSImage imageNamed:NSImageNameTouchBarFolderTemplate] target:self.keyPathControl selector:@selector(showOpenPanel:) customizationLabel:NSLocalizedString(@"TOUCHBAR_CHOOSE_KEYFILE","Touchbar button label for choosing the keyfile")];
|
||||
} else if (identifier == MPTouchBarItemIdentifierShowPassword) {
|
||||
NSTouchBarItem *item = [MPTouchBarButtonCreator touchBarButtonWithTitleAndImage:NSLocalizedString(@"TOUCHBAR_SHOW_PASSWORD","Touchbar button label for showing the password") identifier:MPTouchBarItemIdentifierShowPassword image:[NSImage imageNamed:NSImageNameTouchBarQuickLookTemplate] target:self selector:@selector(toggleShowPassword) customizationLabel:NSLocalizedString(@"TOUCHBAR_SHOW_PASSWORD","Touchbar button label for showing the password")];
|
||||
_showPasswordButton = (NSButton *) item.view;
|
||||
return item;
|
||||
} else if (identifier == MPTouchBarItemIdentifierUnlock) {
|
||||
return [MPTouchBarButtonCreator touchBarButtonWithImage:[NSImage imageNamed:NSImageNameLockUnlockedTemplate] identifier:MPTouchBarItemIdentifierUnlock target:self selector:@selector(_submit:) customizationLabel:NSLocalizedString(@"TOUCHBAR_UNLOCK_DATABASE","Touchbar button label for unlocking the database")];
|
||||
} else {
|
||||
return nil;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)toggleShowPassword {
|
||||
self.showPassword = !self.showPassword;
|
||||
if (@available(macOS 10.12.2, *)) {
|
||||
_showPasswordButton.bezelColor = self.showPassword ? [NSColor selectedControlColor] : [NSColor controlColor];
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -282,7 +282,7 @@ NSString *const MPPluginHostPluginBundleIdentifiyerKey = @"MPPluginHostPluginBun
|
||||
}
|
||||
}
|
||||
if(incompatiblePlugins.count > 0) {
|
||||
BOOL hideAlert = NO;
|
||||
BOOL hideAlert = NSApplication.sharedApplication.isRunningTests ? YES : NO;
|
||||
if(nil != [NSUserDefaults.standardUserDefaults objectForKey:kMPSettingsKeyHideIncopatiblePluginsWarning]) {
|
||||
hideAlert = [NSUserDefaults.standardUserDefaults boolForKey:kMPSettingsKeyHideIncopatiblePluginsWarning];
|
||||
}
|
||||
|
||||
@@ -68,7 +68,7 @@ APPKIT_EXTERN NSString *const kMPSettingsKeyAutotypeMatchTitle; //
|
||||
APPKIT_EXTERN NSString *const kMPSettingsKeyAutotypeMatchURL; // Autotype lookup includes entry URL
|
||||
APPKIT_EXTERN NSString *const kMPSettingsKeyAutotypeMatchHost; // Autotype lookup includes host part of entry URL
|
||||
APPKIT_EXTERN NSString *const kMPSettingsKeyAutotypeMatchTags; // Autotype lookup includes tags for entries
|
||||
APPKIT_EXTERN NSString *const kMPSettingsKeyAutotypeHideAccessibiltyWarning; // Do not show an alert, when MacPass has no support for Autotype
|
||||
APPKIT_EXTERN NSString *const kMPSettingsKeyAutotpyeHideMissingPermissionsWarning;
|
||||
|
||||
/* Search */
|
||||
APPKIT_EXTERN NSString *const kMPSettingsKeyEntrySearchFilterContext;
|
||||
|
||||
@@ -59,7 +59,7 @@ NSString *const kMPSettingsKeyAutotypeMatchTitle = @"Autoty
|
||||
NSString *const kMPSettingsKeyAutotypeMatchURL = @"AutotypeMatchURL";
|
||||
NSString *const kMPSettingsKeyAutotypeMatchHost = @"AutotypeMatchHost";
|
||||
NSString *const kMPSettingsKeyAutotypeMatchTags = @"AutotypeMatchTags";
|
||||
NSString *const kMPSettingsKeyAutotypeHideAccessibiltyWarning = @"AutotypeHideAccessibiltyWarning";
|
||||
NSString *const kMPSettingsKeyAutotpyeHideMissingPermissionsWarning = @"AutotpyeHideMissingPermissionsWarning";
|
||||
|
||||
NSString *const kMPSettingsKeyEntrySearchFilterContext = @"EntrySearchFilterContext";
|
||||
|
||||
@@ -97,7 +97,7 @@ NSString *const kMPDeprecatedSettingsKeyEnableHttpServer = @"En
|
||||
NSString *const kMPDeprecatedSettingsKeyShowMenuItem = @"ShowMenuItem";
|
||||
NSString *const kMPDeprecatedSettingsKeyDefaultPasswordRounds = @"KeyDefaultPasswordRounds";
|
||||
NSString *const kMPDepricatedSettingsKeyLoadUnsecurePlugins = @"MPLoadUnsecurePlugins";
|
||||
|
||||
NSString *const kMPDepricatedSettingsKeyAutotypeHideAccessibiltyWarning = @"AutotypeHideAccessibiltyWarning";
|
||||
|
||||
@implementation MPSettingsHelper
|
||||
|
||||
@@ -182,7 +182,8 @@ NSString *const kMPDepricatedSettingsKeyLoadUnsecurePlugins = @"MP
|
||||
kMPDeprecatedSettingsKeyHttpPort,
|
||||
kMPDeprecatedSettingsKeyEnableHttpServer,
|
||||
kMPDeprecatedSettingsKeyShowMenuItem,
|
||||
kMPDepricatedSettingsKeyLoadUnsecurePlugins
|
||||
kMPDepricatedSettingsKeyLoadUnsecurePlugins,
|
||||
kMPDepricatedSettingsKeyAutotypeHideAccessibiltyWarning
|
||||
];
|
||||
});
|
||||
return deprecatedSettings;
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
if(self) {
|
||||
self.focusRingType = NSFocusRingTypeNone;
|
||||
self.bezelStyle = NSTexturedRoundedBezelStyle;
|
||||
[self.cell setImageScaling:NSImageScaleProportionallyDown];
|
||||
((NSButtonCell *)(self.cell)).imageScaling = NSImageScaleProportionallyDown;
|
||||
[self setButtonType:NSMomentaryPushInButton];
|
||||
self.imagePosition = NSImageOnly;
|
||||
}
|
||||
|
||||
@@ -111,6 +111,7 @@ NSString *const MPToolbarItemAutotype = @"TOOLBAR_AUTOTYPE";
|
||||
item = [[MPToolbarItem alloc] initWithItemIdentifier:itemIdentifier];
|
||||
NSString *itemLabel = [self _localizedLabelForToolbarItemIdentifier:itemIdentifier];
|
||||
item.label = itemLabel;
|
||||
item.paletteLabel = itemLabel;
|
||||
|
||||
if([itemIdentifier isEqualToString:MPToolbarItemAction]) {
|
||||
NSPopUpButton *popupButton = [[NSPopUpButton alloc] initWithFrame:NSMakeRect(0, 0, 50, 32) pullsDown:YES];
|
||||
@@ -215,7 +216,7 @@ NSString *const MPToolbarItemAutotype = @"TOOLBAR_AUTOTYPE";
|
||||
}
|
||||
|
||||
- (NSDictionary *)createToolbarImages {
|
||||
NSDictionary *imageDict = @{ MPToolbarItemLock: [NSImage imageNamed:NSImageNameLockUnlockedTemplate],
|
||||
NSDictionary *imageDict = @{ MPToolbarItemLock: [NSImage imageNamed:NSImageNameLockLockedTemplate],
|
||||
MPToolbarItemAddEntry: [MPIconHelper icon:MPIconAddEntry],
|
||||
MPToolbarItemAddGroup: [MPIconHelper icon:MPIconAddFolder],
|
||||
MPToolbarItemCopyUsername : [MPIconHelper icon:MPIconIdentity],
|
||||
|
||||
40
MacPass/MPTouchBarButtonCreator.h
Normal file
40
MacPass/MPTouchBarButtonCreator.h
Normal file
@@ -0,0 +1,40 @@
|
||||
//
|
||||
// MPTouchBarButtonCreator.h
|
||||
// MacPass
|
||||
//
|
||||
// Created by Veit-Hendrik Schlenker on 25.12.18.
|
||||
// Copyright © 2018 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
#import "MPPasswordInputController.h"
|
||||
|
||||
@interface MPTouchBarButtonCreator: NSObject
|
||||
|
||||
APPKIT_EXTERN NSTouchBarCustomizationIdentifier MPTouchBarCustomizationIdentifierPasswordInput;
|
||||
APPKIT_EXTERN NSTouchBarItemIdentifier MPTouchBarItemIdentifierChooseKeyfile;
|
||||
APPKIT_EXTERN NSTouchBarItemIdentifier MPTouchBarItemIdentifierShowPassword;
|
||||
APPKIT_EXTERN NSTouchBarItemIdentifier MPTouchBarItemIdentifierUnlock;
|
||||
|
||||
APPKIT_EXTERN NSTouchBarCustomizationIdentifier MPTouchBarCustomizationIdentifierDocument;
|
||||
APPKIT_EXTERN NSTouchBarItemIdentifier MPTouchBarItemIdentifierSearch;
|
||||
APPKIT_EXTERN NSTouchBarItemIdentifier MPTouchBarItemIdentifierEditPopover;
|
||||
APPKIT_EXTERN NSTouchBarItemIdentifier MPTouchBarItemIdentifierCopyUsername;
|
||||
APPKIT_EXTERN NSTouchBarItemIdentifier MPTouchBarItemIdentifierCopyPassword;
|
||||
APPKIT_EXTERN NSTouchBarItemIdentifier MPTouchBarItemIdentifierPerformAutotype;
|
||||
APPKIT_EXTERN NSTouchBarItemIdentifier MPTouchBarItemIdentifierLock;
|
||||
|
||||
APPKIT_EXTERN NSTouchBarItemIdentifier MPTouchBarItemIdentifierNewEntry;
|
||||
APPKIT_EXTERN NSTouchBarItemIdentifier MPTouchBarItemIdentifierNewGroup;
|
||||
APPKIT_EXTERN NSTouchBarItemIdentifier MPTouchBarItemIdentifierDelete;
|
||||
|
||||
|
||||
+ (NSTouchBarItem *)touchBarButtonWithTitle:(NSString *)title identifier:(NSTouchBarItemIdentifier)identifier target:(id)target selector:(SEL)selector customizationLabel:(NSString *)customizationLabel API_AVAILABLE(macos(10.12.2));
|
||||
|
||||
+ (NSTouchBarItem *)touchBarButtonWithTitleAndImage:(NSString *)title identifier:(NSTouchBarItemIdentifier)identifier image:(NSImage *)image target:(id)target selector:(SEL)selector customizationLabel:(NSString *)customizationLabel API_AVAILABLE(macos(10.12.2));
|
||||
|
||||
+ (NSTouchBarItem *)touchBarButtonWithTitleAndImageAndColor:(NSString *)title identifier:(NSTouchBarItemIdentifier)identifier image:(NSImage *)image color:(NSColor *)color target:(id)target selector:(SEL)selector customizationLabel:(NSString *)customizationLabel API_AVAILABLE(macos(10.12.2));
|
||||
|
||||
+ (NSTouchBarItem *)touchBarButtonWithImage:(NSImage *)image identifier:(NSTouchBarItemIdentifier)identifier target:(id)target selector:(SEL)selector customizationLabel:(NSString *)customizationLabel API_AVAILABLE(macos(10.12.2));
|
||||
|
||||
+ (NSPopoverTouchBarItem *)popoverTouchBarButton:(NSString *)title identifier:(NSTouchBarItemIdentifier)identifier popoverTouchBar:(NSTouchBar *)popoverTouchBar customizationLabel:(NSString *)customizationLabel API_AVAILABLE(macos(10.12.2));
|
||||
|
||||
@end
|
||||
68
MacPass/MPTouchBarButtonCreator.m
Normal file
68
MacPass/MPTouchBarButtonCreator.m
Normal file
@@ -0,0 +1,68 @@
|
||||
//
|
||||
// MPTouchBarButtonCreator.m
|
||||
// MacPass
|
||||
//
|
||||
// Created by Veit-Hendrik Schlenker on 25.12.18.
|
||||
// Copyright © 2018 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import "MPTouchBarButtonCreator.h"
|
||||
|
||||
NSTouchBarCustomizationIdentifier MPTouchBarCustomizationIdentifierPasswordInput = @"com.hicknhacksoftware.MacPass.TouchBar.passwordInput";
|
||||
NSTouchBarItemIdentifier MPTouchBarItemIdentifierChooseKeyfile = @"com.hicknhacksoftware.MacPass.TouchBar.passwordInput.chooseKeyfile";
|
||||
NSTouchBarItemIdentifier MPTouchBarItemIdentifierShowPassword = @"com.hicknhacksoftware.MacPass.TouchBar.passwordInput.showPassword";
|
||||
NSTouchBarItemIdentifier MPTouchBarItemIdentifierUnlock = @"com.hicknhacksoftware.MacPass.TouchBar.passwordInput.unlock";
|
||||
|
||||
NSTouchBarCustomizationIdentifier MPTouchBarCustomizationIdentifierDocument = @"com.hicknhacksoftware.MacPass.TouchBar.documentWindow";
|
||||
NSTouchBarItemIdentifier MPTouchBarItemIdentifierSearch = @"com.hicknhacksoftware.MacPass.TouchBar.documentWindow.search";
|
||||
NSTouchBarItemIdentifier MPTouchBarItemIdentifierEditPopover = @"com.hicknhacksoftware.MacPass.TouchBar.documentWindow.editPopover";
|
||||
NSTouchBarItemIdentifier MPTouchBarItemIdentifierCopyUsername = @"com.hicknhacksoftware.MacPass.TouchBar.documentWindow.copyUsername";
|
||||
NSTouchBarItemIdentifier MPTouchBarItemIdentifierCopyPassword = @"com.hicknhacksoftware.MacPass.TouchBar.documentWindow.copyPassword";
|
||||
NSTouchBarItemIdentifier MPTouchBarItemIdentifierPerformAutotype = @"com.hicknhacksoftware.MacPass.TouchBar.documentWindow.performAutotype";
|
||||
NSTouchBarItemIdentifier MPTouchBarItemIdentifierLock = @"com.hicknhacksoftware.MacPass.TouchBar.documentWindow.lock";
|
||||
|
||||
NSTouchBarItemIdentifier MPTouchBarItemIdentifierNewEntry = @"com.hicknhacksoftware.MacPass.TouchBar.documentWindow.newEntry";
|
||||
NSTouchBarItemIdentifier MPTouchBarItemIdentifierNewGroup = @"com.hicknhacksoftware.MacPass.TouchBar.documentWindow.newGroup";
|
||||
NSTouchBarItemIdentifier MPTouchBarItemIdentifierDelete = @"com.hicknhacksoftware.MacPass.TouchBar.documentWindow.delete";
|
||||
|
||||
|
||||
@implementation MPTouchBarButtonCreator
|
||||
|
||||
+ (NSTouchBarItem *)touchBarButtonWithTitle:(NSString *)title identifier:(NSTouchBarItemIdentifier)identifier target:(id)target selector:(SEL)selector customizationLabel:(NSString *)customizationLabel API_AVAILABLE(macos(10.12.2)){
|
||||
NSCustomTouchBarItem *item = [[NSCustomTouchBarItem alloc] initWithIdentifier:identifier];
|
||||
NSButton *button = [NSButton buttonWithTitle:title target:target action:selector];
|
||||
item.view = button;
|
||||
item.customizationLabel = customizationLabel;
|
||||
return item;
|
||||
}
|
||||
|
||||
+ (NSTouchBarItem *)touchBarButtonWithTitleAndImage:(NSString *)title identifier:(NSTouchBarItemIdentifier)identifier image:(NSImage *)image target:(id)target selector:(SEL)selector customizationLabel:(NSString *)customizationLabel API_AVAILABLE(macos(10.12.2)){
|
||||
return [self touchBarButtonWithTitleAndImageAndColor:title identifier:identifier image:image color:nil target:target selector:selector customizationLabel:customizationLabel];
|
||||
}
|
||||
|
||||
+ (NSTouchBarItem *)touchBarButtonWithTitleAndImageAndColor:(NSString *)title identifier:(NSTouchBarItemIdentifier)identifier image:(NSImage *)image color:(NSColor *)color target:(id)target selector:(SEL)selector customizationLabel:(NSString *)customizationLabel API_AVAILABLE(macos(10.12.2)){
|
||||
NSCustomTouchBarItem *item = [[NSCustomTouchBarItem alloc] initWithIdentifier:identifier];
|
||||
NSButton *button = [NSButton buttonWithTitle:title image:image target:target action:selector];
|
||||
button.bezelColor = color;
|
||||
item.view = button;
|
||||
item.customizationLabel = customizationLabel;
|
||||
return item;
|
||||
}
|
||||
|
||||
+ (NSTouchBarItem *)touchBarButtonWithImage:(NSImage *)image identifier:(NSTouchBarItemIdentifier)identifier target:(id)target selector:(SEL)selector customizationLabel:(NSString *)customizationLabel API_AVAILABLE(macos(10.12.2)){
|
||||
NSCustomTouchBarItem *item = [[NSCustomTouchBarItem alloc] initWithIdentifier:identifier];
|
||||
NSButton *button = [NSButton buttonWithImage:image target:target action:selector];
|
||||
item.view = button;
|
||||
item.customizationLabel = customizationLabel;
|
||||
return item;
|
||||
}
|
||||
|
||||
+ (NSPopoverTouchBarItem *)popoverTouchBarButton:(NSString *)title identifier:(NSTouchBarItemIdentifier)identifier popoverTouchBar:(NSTouchBar *)popoverTouchBar customizationLabel:(NSString *)customizationLabel API_AVAILABLE(macos(10.12.2)){
|
||||
NSPopoverTouchBarItem *item = [[NSPopoverTouchBarItem alloc] initWithIdentifier:identifier];
|
||||
item.collapsedRepresentationLabel = title;
|
||||
item.popoverTouchBar = popoverTouchBar;
|
||||
item.customizationLabel = customizationLabel;
|
||||
return item;
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -25,7 +25,7 @@
|
||||
FOUNDATION_EXTERN NSString *const MPUserNotificationTypeKey;
|
||||
FOUNDATION_EXTERN NSString *const MPUserNotificationTypeAutotypeFeedback;
|
||||
FOUNDATION_EXTERN NSString *const MPUserNotificationTypeAutotypeOpenDocumentRequest;
|
||||
FOUNDATION_EXTERN NSString *const MPUserNotificationTypeShowAccessibiltyPreferences;
|
||||
FOUNDATION_EXTERN NSString *const MPUserNotificationTypeRunAutotypeDoctor;
|
||||
|
||||
@interface MPUserNotificationCenterDelegate : NSObject <NSUserNotificationCenterDelegate>
|
||||
|
||||
|
||||
@@ -22,12 +22,12 @@
|
||||
|
||||
#import "MPUserNotificationCenterDelegate.h"
|
||||
#import "MPDocumentController.h"
|
||||
#import "MPAutotypeDaemon.h"
|
||||
#import "MPAutotypeDoctor.h"
|
||||
|
||||
NSString *const MPUserNotificationTypeKey = @"MPUserNotificationTypeKey";
|
||||
NSString *const MPUserNotificationTypeAutotypeFeedback = @"MPUserNotificationTypeAutotypeFeedback";
|
||||
NSString *const MPUserNotificationTypeAutotypeOpenDocumentRequest = @"MPUserNotificationTypeAutotypeOpenDocumentRequest";
|
||||
NSString *const MPUserNotificationTypeShowAccessibiltyPreferences = @"MPUserNotificationTypeShowAccessibiltyPreferences";
|
||||
NSString *const MPUserNotificationTypeRunAutotypeDoctor = @"MPUserNotificationTypeRunAutotypeDoctor";
|
||||
|
||||
@implementation MPUserNotificationCenterDelegate
|
||||
|
||||
@@ -45,8 +45,8 @@ NSString *const MPUserNotificationTypeShowAccessibiltyPreferences = @"MPUserNoti
|
||||
if([notificationType isEqualToString:MPUserNotificationTypeAutotypeOpenDocumentRequest]) {
|
||||
[((MPDocumentController*)NSDocumentController.sharedDocumentController) reopenLastDocument];
|
||||
}
|
||||
else if([notificationType isEqualToString:MPUserNotificationTypeShowAccessibiltyPreferences]) {
|
||||
[MPAutotypeDaemon.defaultDaemon openAccessibiltyPreferences];
|
||||
else if([notificationType isEqualToString:MPUserNotificationTypeRunAutotypeDoctor]) {
|
||||
[MPAutotypeDoctor.defaultDoctor runChecksAndPresentResults];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,7 +55,7 @@ NSString *const MPUserNotificationTypeShowAccessibiltyPreferences = @"MPUserNoti
|
||||
if([notificationType isEqualToString:MPUserNotificationTypeAutotypeFeedback]) {
|
||||
return YES;
|
||||
}
|
||||
if([notificationType isEqualToString:MPUserNotificationTypeShowAccessibiltyPreferences]) {
|
||||
if([notificationType isEqualToString:MPUserNotificationTypeRunAutotypeDoctor]) {
|
||||
return YES;
|
||||
}
|
||||
return NO;
|
||||
|
||||
@@ -22,16 +22,20 @@
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
FOUNDATION_EXPORT NSString *const MPErrorDomain;
|
||||
FOUNDATION_EXPORT NSString *const MPDefaultErrorDomain;
|
||||
FOUNDATION_EXPORT NSString *const MPAutotypeErrorDomain;
|
||||
|
||||
typedef NS_ENUM(NSInteger, MPErrorCodes) {
|
||||
MPErrorNoPasswordOrKeyFile = 10000,
|
||||
MPErrorInvalidPlugin
|
||||
MPErrorInvalidPlugin,
|
||||
MPErrorAutotypeIsMissingAccessibiltyPermissions,
|
||||
MPErrorAutotypeIsMissingScreenRecordingPermissions
|
||||
};
|
||||
|
||||
@interface NSError (Messages)
|
||||
|
||||
+ (NSError *)errorWithCode:(NSInteger)code description:(NSString *)description;
|
||||
+ (NSError *)errorInDomain:(NSString *)domain withCode:(NSInteger)code description:(NSString *)description;
|
||||
|
||||
@property (nonatomic, readonly, copy) NSString *descriptionForErrorCode;
|
||||
|
||||
|
||||
@@ -22,7 +22,8 @@
|
||||
|
||||
#import "NSError+Messages.h"
|
||||
|
||||
NSString *const MPErrorDomain = @"com.hicknhack.macpass.error";
|
||||
NSString *const MPDefaultErrorDomain = @"com.hicknhack.macpass.error";
|
||||
NSString *const MPAutotypeErrorDomain = @"com.hicknhack.macpass.error.autotype";
|
||||
|
||||
@implementation NSError (Messages)
|
||||
|
||||
@@ -30,7 +31,12 @@ NSString *const MPErrorDomain = @"com.hicknhack.macpass.error";
|
||||
return [NSString stringWithFormat:@"%@ (%ld)", self.localizedDescription, self.code ];
|
||||
}
|
||||
|
||||
+ (NSError *)errorInDomain:(NSString *)domain withCode:(NSInteger)code description:(NSString *)description {
|
||||
return [[NSError alloc] initWithDomain:domain code:code userInfo:@{ NSLocalizedDescriptionKey: description }];
|
||||
}
|
||||
|
||||
+ (NSError *)errorWithCode:(NSInteger)code description:(NSString *)description {
|
||||
return [[NSError alloc] initWithDomain:MPErrorDomain code:code userInfo:@{ NSLocalizedDescriptionKey: description }];
|
||||
return [NSError errorInDomain:MPDefaultErrorDomain withCode:code description:description];
|
||||
|
||||
}
|
||||
@end
|
||||
|
||||
13
MacPass/NSTextView+MPTouchBarExtension.h
Normal file
13
MacPass/NSTextView+MPTouchBarExtension.h
Normal file
@@ -0,0 +1,13 @@
|
||||
//
|
||||
// NSTextView+MPNSTextView_TouchBarExtension_h.h
|
||||
// MacPass
|
||||
//
|
||||
// Created by Veit-Hendrik Schlenker on 23.12.18.
|
||||
// Copyright © 2018 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
@interface NSTextView (TouchBarExtension)
|
||||
|
||||
@end
|
||||
17
MacPass/NSTextView+MPTouchBarExtension.m
Normal file
17
MacPass/NSTextView+MPTouchBarExtension.m
Normal file
@@ -0,0 +1,17 @@
|
||||
//
|
||||
// MP.m
|
||||
// MacPass
|
||||
//
|
||||
// Created by Veit-Hendrik Schlenker on 23.12.18.
|
||||
// Copyright © 2018 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import "NSTextView+MPTouchBarExtension.h"
|
||||
|
||||
@implementation NSTextView (TouchBarExtension)
|
||||
|
||||
- (NSTouchBar *) makeTouchBar {
|
||||
return [self.window makeTouchBar];
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -46,18 +46,12 @@
|
||||
/* Class = "NSButtonCell"; title = "Lock after sleep"; ObjectID = "631"; */
|
||||
"631.title" = "Datenbank im Ruhezustand sperren";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Enable Autosave"; ObjectID = ""wG7-bi-2fi""; */
|
||||
"wG7-bi-2fi.title" = "Automatisches Speichern aktivieren";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Never"; ObjectID = "804"; */
|
||||
"804.title" = "Nie";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Lock while idle"; ObjectID = "806"; */
|
||||
"806.title" = "Sperren nach Inaktivität";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Close and open all documents for changes to take effect"; ObjectID = "3Bo-Ml-1KB"; */
|
||||
"3Bo-Ml-1KB.title" = "Die Änderungen werden erst für Dokumente wirksam, welche geschlossen und erneut geöffnet werden.";
|
||||
|
||||
/* Class = "NSBox"; title = "File Handling"; ObjectID = "888"; */
|
||||
"888.title" = "Dateibehandlung";
|
||||
|
||||
@@ -79,3 +73,9 @@
|
||||
/* Class = "NSButtonCell"; title = "Remember Keyfile for Databases"; ObjectID = "r6q-He-nYU"; */
|
||||
"r6q-He-nYU.title" = "Schlüsseldatei merken";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Enable Autosave"; ObjectID = "wG7-bi-2fi"; */
|
||||
"wG7-bi-2fi.title" = "Automatisches Speichern aktivieren";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Close and open all documents for changes to take effect"; ObjectID = "ya5-ps-c4W"; */
|
||||
"ya5-ps-c4W.title" = "Die Änderungen werden erst für Dokumente wirksam, welche geschlossen und erneut geöffnet werden.";
|
||||
|
||||
|
||||
@@ -10,13 +10,13 @@
|
||||
/* Class = "NSButtonCell"; title = "Enable Quicklook Preview"; ObjectID = "ERs-ct-Eyx"; */
|
||||
"ERs-ct-Eyx.title" = "Quicklook Preview aktivieren";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Autotype is not available, because MacPass is not allowed to control your computer. To enable Autotype, go to the Security and Privacy Preferences and add MacPass to the Accessibilty group. Changes require a restart of MacPass."; ObjectID = "H37-ku-aTc"; */
|
||||
/* Class = "NSTextFieldCell"; 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."; ObjectID = "H37-ku-aTc"; */
|
||||
"H37-ku-aTc.title" = "Autotype steht nicht zur Verfügung, da MacPass den Computer nicht steuern darf. Um Autotype zu ermöglichen, fügen Sie MacPass in den Einstellungen zur Privatsphäre zu den Bedienungshilfen hinzu.";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Shortcut is missing Key"; ObjectID = "Lxp-wI-yQy"; */
|
||||
"Lxp-wI-yQy.title" = "Der Kurzbefehl ist unvollständig";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Open Preferences…"; ObjectID = "NP0-R3-m6n"; */
|
||||
/* Class = "NSButtonCell"; title = "Run Autotype Doctor…"; ObjectID = "NP0-R3-m6n"; */
|
||||
"NP0-R3-m6n.title" = "Systemeinstellungen öffnen…";
|
||||
|
||||
/* Class = "NSBox"; title = "Autotype"; ObjectID = "P9N-HM-wER"; */
|
||||
|
||||
@@ -113,6 +113,12 @@
|
||||
/* Menu item for automatic trash creation */
|
||||
"AUTOCREATE_TRASH_FOLDER" = "Automatisch erstellen";
|
||||
|
||||
/* Message text in the autotype selection window. Placeholder is %1 - windowTitle */
|
||||
"AUTOTYPE_CANDIDATE_SELECTION_WINDOW_MESSAGE_%@" = "Es gibt mehrere Treffer für den aktuellen Fenstertitel: %@. Bitte wählen Sie den Eintrag aus der Liste aus, welcher verwendet werden soll.";
|
||||
|
||||
/* Window title for the stand-alone password creator window */
|
||||
"AUTOTYPE_DOCTOR_RESULTS_WINDOW_TITLE" = "Autotype Doktor";
|
||||
|
||||
/* Inherit autotype settings menu item */
|
||||
"AUTOTYPE_INHERIT" = "Autotype Einstellungen vererben";
|
||||
|
||||
@@ -122,8 +128,8 @@
|
||||
/* Disable autotype menu item */
|
||||
"AUTOTYPE_NO" = "Autotype deaktivieren";
|
||||
|
||||
/* Notification: Autotype failed, MacPass has no permission to send key strokes */
|
||||
"AUTOTYPE_NOTIFICATION_MACPASS_HAS_NO_ACCESSIBILTY_PERMISSIONS" = "Autotype ist deaktivert, weil keine Rechte zum Steuern des Computers vorhanden sind.";
|
||||
/* Notification: Autotype failed, MacPass has not enough permissions to perform autotype */
|
||||
"AUTOTYPE_NOTIFICATION_MACPASS_IS_MISSING_PERMISSIONS" = "MacPass hat nicht alle notwendigen Berechtigungen um Autotype ausführen zu können";
|
||||
|
||||
/* Notification: Autotype failed, no documents are open */
|
||||
"AUTOTYPE_OVERLAY_NO_DOCUMENTS" = "Bitte öffnen Sie eine Datei, um Global-Autotype zu nutzen!";
|
||||
@@ -134,6 +140,18 @@
|
||||
/* Notification: Autotype found a single match for %@ (string placeholder). */
|
||||
"AUTOTYPE_OVERLAY_SINGLE_MATCH_FOR_%@" = "Treffer für %@!";
|
||||
|
||||
/* Status lable when no issue were found in accessibilty */
|
||||
"AUTOTYPE_STATUS_ACCESSIBILTY_PERMISSIONS_OK" = "MacPass hat die Berechtigung den Computer zu steuern (Eingabehilfe)";
|
||||
|
||||
/* Status MacPass has no accessibilty permissions */
|
||||
"AUTOTYPE_STATUS_NO_ACCESSIBILTY_PERMISSIONS" = "MacPass hat keine Berechtigung den Computer zu steuern (Eingabehilfe)";
|
||||
|
||||
/* Status MacPass has no screen recording permissions */
|
||||
"AUTOTYPE_STATUS_NO_SCREEN_RECORDING_PERMISSIONS" = "MacPass hat keine Berechtigung den Bildschirminhalt aufzuzeichnen";
|
||||
|
||||
/* Status lable when no issue were found in screen recording permissions */
|
||||
"AUTOTYPE_STATUS_SCREEN_RECORDING_PERMISSIONS_OK" = "MacPass hat die Berechtigung den Bildschirminhalt aufzuzeichnen";
|
||||
|
||||
/* Notficication: Autotype timed out */
|
||||
"AUTOTYPE_TIMED_OUT" = "Autotype wegen zu langer Wartezeit abgebrochen";
|
||||
|
||||
@@ -337,6 +355,12 @@
|
||||
/* Error description given when adding an invalid plugin */
|
||||
"ERROR_INVALID_PLUGIN" = "Kein MacPass-Plugin";
|
||||
|
||||
/* Error description for missing accessibilty permissions */
|
||||
"ERROR_NO_ACCESSIBILTY_PERMISSIONS" = "MacPass hat keine Berechtigung den Bildschirminhalt aufzuzeichen.";
|
||||
|
||||
/* Error description for missing screen recording permissions */
|
||||
"ERROR_NO_PERMISSION_TO_RECORD_SCREEN" = "MacPass hat keine Berechtigungen den Bildschirminhalt aufzuzeichnen";
|
||||
|
||||
/* Passwords do not match */
|
||||
"ERROR_PASSWORD_MISSMATCH" = "Passwörter stimmen nicht überein";
|
||||
|
||||
@@ -498,9 +522,6 @@
|
||||
/* Action button in Notification to open a document */
|
||||
"OPEN_DOCUMENT" = "Datei öffnen";
|
||||
|
||||
/* Action button in Notification to show the Accessibilty preferences */
|
||||
"OPEN_PREFERENCES" = "Systemeinstellung Bedienungshilfen öffnen …";
|
||||
|
||||
/* Menu item to open the URL with the default application */
|
||||
"OPEN_URL" = "Adresse öffnen";
|
||||
|
||||
@@ -672,6 +693,9 @@
|
||||
/* Checkbox in dialog to set the selection as default file change strategy! */
|
||||
"SET_AS_DEFAULT_FILE_CHANGE_STRATEGY" = "Die gewählte Strategie immer verwenden. Sie können die Strategie jederzeit in den Einstellungen anpassen.";
|
||||
|
||||
/* Action button in Notification to show the Autotype Doctor */
|
||||
"SHOW_AUTOTYPE_DOCTOR" = "Autotype Doktor anzeigen";
|
||||
|
||||
/* Menu item to show the history of the selected entry
|
||||
Toolbar item to toggle history display */
|
||||
"SHOW_HISTORY" = "Historie anzeigen";
|
||||
@@ -688,6 +712,42 @@
|
||||
/* Toolbar item to perform autotype */
|
||||
"TOOLBAR_PERFORM_AUTOTYPE_FOR_ENTRY" = "Autotype";
|
||||
|
||||
/* Touchbar button label for choosing the keyfile */
|
||||
"TOUCHBAR_CHOOSE_KEYFILE" = "Schlüsseldatei wählen";
|
||||
|
||||
/* Touchbar button label for copying the password */
|
||||
"TOUCHBAR_COPY_PASSWORD" = "Passwort kopieren";
|
||||
|
||||
/* Touchbar button label for copying the username */
|
||||
"TOUCHBAR_COPY_USERNAME" = "Benutzername kopieren";
|
||||
|
||||
/* Touchbar button label for deleting elements */
|
||||
"TOUCHBAR_DELETE" = "Löschen";
|
||||
|
||||
/* Touchbar button label for opening the popover to edit */
|
||||
"TOUCHBAR_EDIT" = "Bearbeiten";
|
||||
|
||||
/* Touchbar button label for locking the database */
|
||||
"TOUCHBAR_LOCK_DATABASE" = "Datenbank sperren";
|
||||
|
||||
/* Touchbar button label for creating a new item */
|
||||
"TOUCHBAR_NEW_ENTRY" = "Neuer Eintrag";
|
||||
|
||||
/* Touchbar button label for creating a new group */
|
||||
"TOUCHBAR_NEW_GROUP" = "Neue Gruppe";
|
||||
|
||||
/* Touchbar button label for performing autotype */
|
||||
"TOUCHBAR_PERFORM_AUTOTYPE" = "Autotype ausführen";
|
||||
|
||||
/* Touchbar button label for searching the database */
|
||||
"TOUCHBAR_SEARCH" = "Datenbank durchsuchen";
|
||||
|
||||
/* Touchbar button label for showing the password */
|
||||
"TOUCHBAR_SHOW_PASSWORD" = "Password anzeigen";
|
||||
|
||||
/* Touchbar button label for unlocking the database */
|
||||
"TOUCHBAR_UNLOCK_DATABASE" = "Datenbank entsperren";
|
||||
|
||||
/* Move Entry to Trash */
|
||||
"TRASH_ENTRY" = "Eintrag löschen";
|
||||
|
||||
|
||||
@@ -139,7 +139,7 @@
|
||||
/* Class = "NSMenuItem"; title = "Toggle Inspector"; ObjectID = "1181"; */
|
||||
"1181.title" = "Inspector ein/ausblenden";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Show Password Generator"; ObjectID = "1200"; */
|
||||
/* Class = "NSMenuItem"; title = "Password Generator"; ObjectID = "1200"; */
|
||||
"1200.title" = "Passwortgenerator anzeigen";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Change Master Password…"; ObjectID = "1203"; */
|
||||
@@ -193,3 +193,6 @@
|
||||
/* Class = "NSMenuItem"; title = "Merge With…"; ObjectID = "zvE-0h-UxI"; */
|
||||
"zvE-0h-UxI.title" = "Synchronisieren…";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Autotype Doctor"; ObjectID = "zWx-Re-iuJ"; */
|
||||
"zWx-Re-iuJ.title" = "Autotype Doktor";
|
||||
|
||||
|
||||
24
MacPass/de.lproj/PluginRepositoryBrowserView.strings
Normal file
24
MacPass/de.lproj/PluginRepositoryBrowserView.strings
Normal file
@@ -0,0 +1,24 @@
|
||||
/* Class = "NSButtonCell"; title = "Action"; ObjectID = "6jQ-Uk-uqD"; */
|
||||
"6jQ-Uk-uqD.title" = "Aktion";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Updated at"; ObjectID = "DhR-ED-6gV"; */
|
||||
"DhR-ED-6gV.title" = "Aktualisiert am";
|
||||
|
||||
/* Class = "NSTableColumn"; headerCell.title = "Status"; ObjectID = "g1Q-BS-vCR"; */
|
||||
"g1Q-BS-vCR.headerCell.title" = "Status";
|
||||
|
||||
/* Class = "NSTableColumn"; headerCell.title = "Latest Version"; ObjectID = "hFg-AD-SqD"; */
|
||||
"hFg-AD-SqD.headerCell.title" = "Aktuelle Version";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Done"; ObjectID = "j9a-fn-Pye"; */
|
||||
"j9a-fn-Pye.title" = "Fertig";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Last updated:"; ObjectID = "ntD-sJ-NRw"; */
|
||||
"ntD-sJ-NRw.title" = "Letze Aktualisierung:";
|
||||
|
||||
/* Class = "NSTableColumn"; headerCell.title = "Plugin"; ObjectID = "Nzo-rR-Hfx"; */
|
||||
"Nzo-rR-Hfx.headerCell.title" = "Plugin";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Refresh"; ObjectID = "NZw-nO-lZ3"; */
|
||||
"NZw-nO-lZ3.title" = "Aktualisieren";
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "4"; */
|
||||
"4.title" = "OtherViews";
|
||||
|
||||
@@ -13,3 +12,4 @@
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Not all Information inside your current database can be stored with this format."; ObjectID = "52"; */
|
||||
"52.title" = "Es können nicht alle Informationen der Datenbank in diesem Format gespeichert werden.";
|
||||
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
/* Class = "NSButtonCell"; title = "Hide application after copying to clipboard "; ObjectID = "1Vr-nY-Ogv"; */
|
||||
"1Vr-nY-Ogv.title" = "MacPass nach dem jedem Kopieren in die Zwischenablage ausblenden";
|
||||
|
||||
/* Class = "NSBox"; title = "Entry Table"; ObjectID = "2"; */
|
||||
"2.title" = "Passwort-Tabelle";
|
||||
|
||||
@@ -31,6 +34,9 @@
|
||||
/* Class = "NSMenuItem"; title = "Item 2"; ObjectID = "gej-kA-GzQ"; */
|
||||
"gej-kA-GzQ.title" = "Item 2";
|
||||
|
||||
/* Class = "NSBox"; title = "Clipboard"; ObjectID = "Kff-Xp-hAT"; */
|
||||
"Kff-Xp-hAT.title" = "Zwischenablage";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Update password for new entries"; ObjectID = "RaM-t2-DVR"; */
|
||||
"RaM-t2-DVR.title" = "Passwörter für neue Einträge aktualisieren";
|
||||
|
||||
|
||||
@@ -1,18 +1,7 @@
|
||||
|
||||
/* Class = "NSWindow"; title = "Window"; ObjectID = "1"; */
|
||||
"1.title" = "Window";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Threads"; ObjectID = "2QI-ne-N5d"; */
|
||||
"2QI-ne-N5d.title" = "Threads";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Iterations"; ObjectID = "2ZA-Gc-JdZ"; */
|
||||
"2ZA-Gc-JdZ.title" = "Iterations";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Enforce key change"; ObjectID = "5QH-N1-FHK"; */
|
||||
"5QH-N1-FHK.title" = "Enforce key change";
|
||||
|
||||
/* Class = "NSTabViewItem"; label = "Argon2"; ObjectID = "6qB-sH-9FI"; */
|
||||
"6qB-sH-9FI.label" = "Argon2";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Database name:"; ObjectID = "190"; */
|
||||
"190.title" = "Database name:";
|
||||
|
||||
@@ -73,18 +62,39 @@
|
||||
/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "1740"; */
|
||||
"1740.title" = "OtherViews";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "File format:"; ObjectID = "bTk-YZ-x0G"; */
|
||||
"bTk-YZ-x0G.title" = "File format:";
|
||||
/* Class = "NSTextFieldCell"; title = "Threads"; ObjectID = "2QI-ne-N5d"; */
|
||||
"2QI-ne-N5d.title" = "Threads";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Iterations"; ObjectID = "2ZA-Gc-JdZ"; */
|
||||
"2ZA-Gc-JdZ.title" = "Iterations";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Enforce key change"; ObjectID = "5QH-N1-FHK"; */
|
||||
"5QH-N1-FHK.title" = "Enforce key change";
|
||||
|
||||
/* Class = "NSTabViewItem"; label = "Argon2"; ObjectID = "6qB-sH-9FI"; */
|
||||
"6qB-sH-9FI.label" = "Argon2";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Recommend key change"; ObjectID = "CtU-Eq-dgy"; */
|
||||
"CtU-Eq-dgy.title" = "Recommend key change";
|
||||
|
||||
/* Class = "NSTabViewItem"; label = "Aes"; ObjectID = "ft1-pl-lpO"; */
|
||||
"ft1-pl-lpO.label" = "Aes";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Algorithm"; ObjectID = "GVd-KH-pHc"; */
|
||||
"GVd-KH-pHc.title" = "Algorithm";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Generate Parameters"; ObjectID = "PoI-Er-Y8P"; */
|
||||
"PoI-Er-Y8P.title" = "Generate Parameters";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "VersionInfo"; ObjectID = "Ush-4r-A1A"; */
|
||||
"Ush-4r-A1A.title" = "VersionInfo";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Recommend key change"; ObjectID = "Xib-Fn-sqx"; */
|
||||
"Xib-Fn-sqx.title" = "Recommend key change";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "File format:"; ObjectID = "bTk-YZ-x0G"; */
|
||||
"bTk-YZ-x0G.title" = "File format:";
|
||||
|
||||
/* Class = "NSTabViewItem"; label = "Aes"; ObjectID = "ft1-pl-lpO"; */
|
||||
"ft1-pl-lpO.label" = "Aes";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Encryption:"; ObjectID = "gxY-UL-bEG"; */
|
||||
"gxY-UL-bEG.title" = "Encryption:";
|
||||
|
||||
@@ -100,18 +110,8 @@
|
||||
/* Class = "NSBox"; title = "Key derivation"; ObjectID = "pbl-Mb-r8V"; */
|
||||
"pbl-Mb-r8V.title" = "Key derivation";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Generate Parameters"; ObjectID = "PoI-Er-Y8P"; */
|
||||
"PoI-Er-Y8P.title" = "Generate Parameters";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "VersionInfo"; ObjectID = "Ush-4r-A1A"; */
|
||||
"Ush-4r-A1A.title" = "VersionInfo";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Rounds"; ObjectID = "uUQ-9s-M5E"; */
|
||||
"uUQ-9s-M5E.title" = "Rounds";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Recommend key change"; ObjectID = "Xib-Fn-sqx"; */
|
||||
"Xib-Fn-sqx.title" = "Recommend key change";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Force key change"; ObjectID = "z6u-YT-7LE"; */
|
||||
"z6u-YT-7LE.title" = "Force key change";
|
||||
|
||||
|
||||
@@ -62,8 +62,8 @@
|
||||
/* Class = "NSButtonCell"; title = "Lock after log out"; ObjectID = "Dzn-9R-JjE"; */
|
||||
"Dzn-9R-JjE.title" = "Lock after log out";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Disabling this compromises security. If disabled, anything copied to the Clipboard in MacPass will be available on your connected iOS devices. You should clear the clipboard on those devices manually."; ObjectID = "JGX-Tp-KJk"; */
|
||||
"JGX-Tp-KJk.title" = "Disabling this compromises security. If disabled, anything copied to the Clipboard in MacPass will be available on your connected iOS devices. You should clear the clipboard on those devices manually.";
|
||||
/* Class = "NSTextFieldCell"; title = "Disabling this compromises security. If enabled, anything copied to the Clipboard in MacPass will be available on your connected iOS devices. You should clear the clipboard on those devices manually."; ObjectID = "JGX-Tp-KJk"; */
|
||||
"JGX-Tp-KJk.title" = "Disabling this compromises security. If enabled, anything copied to the Clipboard in MacPass will be available on your connected iOS devices. You should clear the clipboard on those devices manually.";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "If file changes:"; ObjectID = "QrK-hM-Xt1"; */
|
||||
"QrK-hM-Xt1.title" = "If file changes:";
|
||||
@@ -73,3 +73,9 @@
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Remember Keyfile for Databases"; ObjectID = "r6q-He-nYU"; */
|
||||
"r6q-He-nYU.title" = "Remember Keyfile for Databases";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Enable Autosave"; ObjectID = "wG7-bi-2fi"; */
|
||||
"wG7-bi-2fi.title" = "Enable Autosave";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Close and open all documents for changes to take effect"; ObjectID = "ya5-ps-c4W"; */
|
||||
"ya5-ps-c4W.title" = "Close and open all documents for changes to take effect";
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Enable global Autotype"; ObjectID = "1qb-Rd-jYu"; */
|
||||
"1qb-Rd-jYu.title" = "Enable global Autotype";
|
||||
|
||||
@@ -10,29 +11,23 @@
|
||||
/* Class = "NSButtonCell"; title = "Enable Quicklook Preview"; ObjectID = "ERs-ct-Eyx"; */
|
||||
"ERs-ct-Eyx.title" = "Enable Quicklook Preview";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Autotype is not available, because MacPass is not allowed to control your computer. To enable Autotype, go to the Security and Privacy Preferences and add MacPass to the Accessibilty group. Changes require a restart of MacPass."; ObjectID = "H37-ku-aTc"; */
|
||||
"H37-ku-aTc.title" = "Autotype is not available, because MacPass is not allowed to control your computer. To enable Autotype, go to the Security and Privacy Preferences and add MacPass to the Accessibilty group. Changes require a restart of MacPass.";
|
||||
/* Class = "NSTextFieldCell"; 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."; ObjectID = "H37-ku-aTc"; */
|
||||
"H37-ku-aTc.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.";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Shortcut is missing Key"; ObjectID = "Lxp-wI-yQy"; */
|
||||
"Lxp-wI-yQy.title" = "Shortcut is missing Key";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Open Preferences…"; ObjectID = "NP0-R3-m6n"; */
|
||||
"NP0-R3-m6n.title" = "Open Preferences…";
|
||||
/* Class = "NSButtonCell"; title = "Run Autotype Doctor…"; ObjectID = "NP0-R3-m6n"; */
|
||||
"NP0-R3-m6n.title" = "Run Autotype Doctor…";
|
||||
|
||||
/* Class = "NSBox"; title = "Autotype"; ObjectID = "P9N-HM-wER"; */
|
||||
"P9N-HM-wER.title" = "Autotype";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Interpret ⌃ as ⌘"; ObjectID = "QfO-yG-l3F"; */
|
||||
"QfO-yG-l3F.title" = "Interpret ⌃ as ⌘";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "If enabled, every {CONTROL} command will be sent as ⌘. Only disable this if you are sure you need to."; ObjectID = "QRy-CY-ENC"; */
|
||||
"QRy-CY-ENC.title" = "If enabled, every {CONTROL} command will be sent as ⌘. Only disable this if you are sure you need to.";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Include Entry Tags for matches"; ObjectID = "rbu-G7-MT8"; */
|
||||
"rbu-G7-MT8.title" = "Include Entry Tags for matches";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Include Entry Title for matches"; ObjectID = "tmL-dT-D0G"; */
|
||||
"tmL-dT-D0G.title" = "Include Entry Title for matches";
|
||||
/* Class = "NSButtonCell"; title = "Interpret ⌃ as ⌘"; ObjectID = "QfO-yG-l3F"; */
|
||||
"QfO-yG-l3F.title" = "Interpret ⌃ as ⌘";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Include Entry URL for matches"; ObjectID = "TzR-00-Vp3"; */
|
||||
"TzR-00-Vp3.title" = "Include Entry URL for matches";
|
||||
@@ -43,3 +38,8 @@
|
||||
/* Class = "NSTextFieldCell"; title = "If enabled attached files will be copied to a temporary location for preview and deleted after the preview is closed."; ObjectID = "WmI-IB-Aso"; */
|
||||
"WmI-IB-Aso.title" = "If enabled attached files will be copied to a temporary location for preview and deleted after the preview is closed.";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Include Entry Tags for matches"; ObjectID = "rbu-G7-MT8"; */
|
||||
"rbu-G7-MT8.title" = "Include Entry Tags for matches";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Include Entry Title for matches"; ObjectID = "tmL-dT-D0G"; */
|
||||
"tmL-dT-D0G.title" = "Include Entry Title for matches";
|
||||
|
||||
@@ -113,6 +113,12 @@
|
||||
/* Menu item for automatic trash creation */
|
||||
"AUTOCREATE_TRASH_FOLDER" = "Create Automatically";
|
||||
|
||||
/* Message text in the autotype selection window. Placeholder is %1 - windowTitle */
|
||||
"AUTOTYPE_CANDIDATE_SELECTION_WINDOW_MESSAGE_%@" = "There are multiple matches for the current window: %@. Please select which match should be used.";
|
||||
|
||||
/* Window title for the stand-alone password creator window */
|
||||
"AUTOTYPE_DOCTOR_RESULTS_WINDOW_TITLE" = "Autotype Doctor";
|
||||
|
||||
/* Inherit autotype settings menu item */
|
||||
"AUTOTYPE_INHERIT" = "Inherit Autotype Settings";
|
||||
|
||||
@@ -122,8 +128,8 @@
|
||||
/* Disable autotype menu item */
|
||||
"AUTOTYPE_NO" = "Disable Autotype";
|
||||
|
||||
/* Notification: Autotype failed, MacPass has no permission to send key strokes */
|
||||
"AUTOTYPE_NOTIFICATION_MACPASS_HAS_NO_ACCESSIBILTY_PERMISSIONS" = "Autotype disabled because of missing accessibilty access.";
|
||||
/* Notification: Autotype failed, MacPass has not enough permissions to perform autotype */
|
||||
"AUTOTYPE_NOTIFICATION_MACPASS_IS_MISSING_PERMISSIONS" = "MacPass does not have all necessary permissions to perform Autotype.";
|
||||
|
||||
/* Notification: Autotype failed, no documents are open */
|
||||
"AUTOTYPE_OVERLAY_NO_DOCUMENTS" = "Please open a database file to use Global Autotype!";
|
||||
@@ -134,6 +140,18 @@
|
||||
/* Notification: Autotype found a single match for %@ (string placeholder). */
|
||||
"AUTOTYPE_OVERLAY_SINGLE_MATCH_FOR_%@" = "Found Match for %@!";
|
||||
|
||||
/* Status lable when no issue were found in accessibilty */
|
||||
"AUTOTYPE_STATUS_ACCESSIBILTY_PERMISSIONS_OK" = "MacPass has permission to control your computer (Accessibilty)";
|
||||
|
||||
/* Status MacPass has no accessibilty permissions */
|
||||
"AUTOTYPE_STATUS_NO_ACCESSIBILTY_PERMISSIONS" = "MacPass has no permission to control your computer (Accessibilty)";
|
||||
|
||||
/* Status MacPass has no screen recording permissions */
|
||||
"AUTOTYPE_STATUS_NO_SCREEN_RECORDING_PERMISSIONS" = "MacPass has no permission to record your screen";
|
||||
|
||||
/* Status lable when no issue were found in screen recording permissions */
|
||||
"AUTOTYPE_STATUS_SCREEN_RECORDING_PERMISSIONS_OK" = "MacPass has permission to record your screen";
|
||||
|
||||
/* Notficication: Autotype timed out */
|
||||
"AUTOTYPE_TIMED_OUT" = "Autotype timed out.";
|
||||
|
||||
@@ -337,6 +355,12 @@
|
||||
/* Error description given when adding an invalid plugin */
|
||||
"ERROR_INVALID_PLUGIN" = "Invalid plugin";
|
||||
|
||||
/* Error description for missing accessibilty permissions */
|
||||
"ERROR_NO_ACCESSIBILTY_PERMISSIONS" = "MacPass has no permission to control your computer (Accessibilty)";
|
||||
|
||||
/* Error description for missing screen recording permissions */
|
||||
"ERROR_NO_PERMISSION_TO_RECORD_SCREEN" = "MacPass has no permission to record your screen";
|
||||
|
||||
/* Passwords do not match */
|
||||
"ERROR_PASSWORD_MISSMATCH" = "Passwords do not match!";
|
||||
|
||||
@@ -498,9 +522,6 @@
|
||||
/* Action button in Notification to open a document */
|
||||
"OPEN_DOCUMENT" = "Open Document";
|
||||
|
||||
/* Action button in Notification to show the Accessibilty preferences */
|
||||
"OPEN_PREFERENCES" = "Open Accessiblity Preferences…";
|
||||
|
||||
/* Menu item to open the URL with the default application */
|
||||
"OPEN_URL" = "Open URL";
|
||||
|
||||
@@ -672,6 +693,9 @@
|
||||
/* Checkbox in dialog to set the selection as default file change strategy! */
|
||||
"SET_AS_DEFAULT_FILE_CHANGE_STRATEGY" = "Use this method as default. You can change this at any time in the preferences.";
|
||||
|
||||
/* Action button in Notification to show the Autotype Doctor */
|
||||
"SHOW_AUTOTYPE_DOCTOR" = "Show Autotype Doctor";
|
||||
|
||||
/* Menu item to show the history of the selected entry
|
||||
Toolbar item to toggle history display */
|
||||
"SHOW_HISTORY" = "Show History";
|
||||
@@ -688,6 +712,42 @@
|
||||
/* Toolbar item to perform autotype */
|
||||
"TOOLBAR_PERFORM_AUTOTYPE_FOR_ENTRY" = "Autotype";
|
||||
|
||||
/* Touchbar button label for choosing the keyfile */
|
||||
"TOUCHBAR_CHOOSE_KEYFILE" = "Choose Keyfile";
|
||||
|
||||
/* Touchbar button label for copying the password */
|
||||
"TOUCHBAR_COPY_PASSWORD" = "Copy Password";
|
||||
|
||||
/* Touchbar button label for copying the username */
|
||||
"TOUCHBAR_COPY_USERNAME" = "Copy Username";
|
||||
|
||||
/* Touchbar button label for deleting elements */
|
||||
"TOUCHBAR_DELETE" = "Delete";
|
||||
|
||||
/* Touchbar button label for opening the popover to edit */
|
||||
"TOUCHBAR_EDIT" = "Edit";
|
||||
|
||||
/* Touchbar button label for locking the database */
|
||||
"TOUCHBAR_LOCK_DATABASE" = "Lock Database";
|
||||
|
||||
/* Touchbar button label for creating a new item */
|
||||
"TOUCHBAR_NEW_ENTRY" = "New Entry";
|
||||
|
||||
/* Touchbar button label for creating a new group */
|
||||
"TOUCHBAR_NEW_GROUP" = "New Group";
|
||||
|
||||
/* Touchbar button label for performing autotype */
|
||||
"TOUCHBAR_PERFORM_AUTOTYPE" = "Perform Autotype";
|
||||
|
||||
/* Touchbar button label for searching the database */
|
||||
"TOUCHBAR_SEARCH" = "Search Database";
|
||||
|
||||
/* Touchbar button label for showing the password */
|
||||
"TOUCHBAR_SHOW_PASSWORD" = "Show Password";
|
||||
|
||||
/* Touchbar button label for unlocking the database */
|
||||
"TOUCHBAR_UNLOCK_DATABASE" = "Unlock Database";
|
||||
|
||||
/* Move Entry to Trash */
|
||||
"TRASH_ENTRY" = "Trash Entry";
|
||||
|
||||
|
||||
BIN
MacPass/en.lproj/Localizable.strings.updated
Normal file
BIN
MacPass/en.lproj/Localizable.strings.updated
Normal file
Binary file not shown.
@@ -1,9 +1,7 @@
|
||||
|
||||
/* Class = "NSBox"; title = "Entry Table"; ObjectID = "2"; */
|
||||
"2.title" = "Entry Table";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Default Browser"; ObjectID = "7YX-EA-9KA"; */
|
||||
"7YX-EA-9KA.title" = "Default Browser";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Double-click on URL:"; ObjectID = "10"; */
|
||||
"10.title" = "Double-click on URL:";
|
||||
|
||||
@@ -28,21 +26,29 @@
|
||||
/* Class = "NSMenuItem"; title = "Opens Inspector"; ObjectID = "44"; */
|
||||
"44.title" = "Opens Inspector";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Item 2"; ObjectID = "gej-kA-GzQ"; */
|
||||
"gej-kA-GzQ.title" = "Item 2";
|
||||
/* Class = "NSButtonCell"; title = "Hide application after copying to clipboard "; ObjectID = "1Vr-nY-Ogv"; */
|
||||
"1Vr-nY-Ogv.title" = "Hide application after copying to clipboard ";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Default Browser"; ObjectID = "7YX-EA-9KA"; */
|
||||
"7YX-EA-9KA.title" = "Default Browser";
|
||||
|
||||
/* Class = "NSBox"; title = "Clipboard"; ObjectID = "Kff-Xp-hAT"; */
|
||||
"Kff-Xp-hAT.title" = "Clipboard";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Update password for new entries"; ObjectID = "RaM-t2-DVR"; */
|
||||
"RaM-t2-DVR.title" = "Update password for new entries";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Open URLs in:"; ObjectID = "soD-wI-YOH"; */
|
||||
"soD-wI-YOH.title" = "Open URLs in:";
|
||||
|
||||
/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "XgO-Tj-QjO"; */
|
||||
"XgO-Tj-QjO.title" = "OtherViews";
|
||||
|
||||
/* Class = "NSBox"; title = "Templates"; ObjectID = "Xvt-tP-TbR"; */
|
||||
"Xvt-tP-TbR.title" = "Templates";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Item 2"; ObjectID = "gej-kA-GzQ"; */
|
||||
"gej-kA-GzQ.title" = "Item 2";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Open URLs in:"; ObjectID = "soD-wI-YOH"; */
|
||||
"soD-wI-YOH.title" = "Open URLs in:";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Item 3"; ObjectID = "zC2-cM-KDv"; */
|
||||
"zC2-cM-KDv.title" = "Item 3";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user