From 853f60efeb1f149940ce08393f30f302a92b4de5 Mon Sep 17 00:00:00 2001 From: michael starke Date: Fri, 5 Dec 2014 18:00:52 +0100 Subject: [PATCH] Reference builder now works rudimentarily --- MacPass.xcodeproj/project.pbxproj | 16 ++- MacPass/Base.lproj/ReferenceBuilderView.xib | 143 ++++++++++++++++++++ MacPass/MPReferenceBuilderViewController.h | 4 + MacPass/MPReferenceBuilderViewController.m | 35 ++++- MacPass/ReferenceBuilderView.xib | 83 ------------ 5 files changed, 192 insertions(+), 89 deletions(-) create mode 100644 MacPass/Base.lproj/ReferenceBuilderView.xib delete mode 100644 MacPass/ReferenceBuilderView.xib diff --git a/MacPass.xcodeproj/project.pbxproj b/MacPass.xcodeproj/project.pbxproj index 6bca9df7..9552c22d 100644 --- a/MacPass.xcodeproj/project.pbxproj +++ b/MacPass.xcodeproj/project.pbxproj @@ -223,7 +223,6 @@ 4C96D15417A12E4F00D931FA /* 99_CreatedTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C96D15317A12E4F00D931FA /* 99_CreatedTemplate.pdf */; }; 4C978E0619AE53FE003067DF /* HNHCommon.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C978E0519AE53FE003067DF /* HNHCommon.m */; }; 4C978E0D19AE54AB003067DF /* MPFlagsHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C978E0C19AE54AB003067DF /* MPFlagsHelper.m */; }; - 4C99E6A51A30FDFD00E2BA8D /* ReferenceBuilderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C99E6A41A30FDFD00E2BA8D /* ReferenceBuilderView.xib */; }; 4C9D6AA917615199001C660C /* HNHRoundedSecureTextFieldCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C9D6AA817615199001C660C /* HNHRoundedSecureTextFieldCell.m */; }; 4CA08DA017A831B200A6544B /* MPAddEntryContextMenuDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA08D9F17A831B200A6544B /* MPAddEntryContextMenuDelegate.m */; }; 4CA0B2ED15BCADAC00654E32 /* SettingsWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4CA0B2EC15BCADAC00654E32 /* SettingsWindow.xib */; }; @@ -277,6 +276,7 @@ 4CD78ABE16D155FF00768A1D /* 09_IdentityTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4CD78AB916D155FF00768A1D /* 09_IdentityTemplate.pdf */; }; 4CD78ABF16D155FF00768A1D /* 10_ContactTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4CD78ABA16D155FF00768A1D /* 10_ContactTemplate.pdf */; }; 4CD78AC016D155FF00768A1D /* 11_CameraTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4CD78ABB16D155FF00768A1D /* 11_CameraTemplate.pdf */; }; + 4CD820211A32173100399DBB /* ReferenceBuilderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4CD820231A32173100399DBB /* ReferenceBuilderView.xib */; }; 4CD884B715BD47080042BBF8 /* DocumentWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4CD884B615BD47080042BBF8 /* DocumentWindow.xib */; }; 4CDB5C421794AA4F0017667E /* KPKTree+Serializing.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CDB5C411794AA4F0017667E /* KPKTree+Serializing.m */; }; 4CDF01A316D1B76700D0AC08 /* MPEntryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CDF01A216D1B76700D0AC08 /* MPEntryViewController.m */; }; @@ -784,7 +784,6 @@ 4C96D15317A12E4F00D931FA /* 99_CreatedTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; name = 99_CreatedTemplate.pdf; path = Icons/99_CreatedTemplate.pdf; sourceTree = ""; }; 4C978E0519AE53FE003067DF /* HNHCommon.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HNHCommon.m; sourceTree = ""; }; 4C978E0C19AE54AB003067DF /* MPFlagsHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPFlagsHelper.m; sourceTree = ""; }; - 4C99E6A41A30FDFD00E2BA8D /* ReferenceBuilderView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ReferenceBuilderView.xib; sourceTree = ""; }; 4C9D6AA717615199001C660C /* HNHRoundedSecureTextFieldCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HNHRoundedSecureTextFieldCell.h; sourceTree = ""; }; 4C9D6AA817615199001C660C /* HNHRoundedSecureTextFieldCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HNHRoundedSecureTextFieldCell.m; sourceTree = ""; }; 4CA08D9E17A831B200A6544B /* MPAddEntryContextMenuDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPAddEntryContextMenuDelegate.h; sourceTree = ""; }; @@ -881,6 +880,7 @@ 4CD78AB916D155FF00768A1D /* 09_IdentityTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 09_IdentityTemplate.pdf; sourceTree = ""; }; 4CD78ABA16D155FF00768A1D /* 10_ContactTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 10_ContactTemplate.pdf; sourceTree = ""; }; 4CD78ABB16D155FF00768A1D /* 11_CameraTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 11_CameraTemplate.pdf; sourceTree = ""; }; + 4CD820221A32173100399DBB /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/ReferenceBuilderView.xib; sourceTree = ""; }; 4CD884B615BD47080042BBF8 /* DocumentWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = DocumentWindow.xib; sourceTree = ""; }; 4CDB5C401794AA4F0017667E /* KPKTree+Serializing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "KPKTree+Serializing.h"; sourceTree = ""; }; 4CDB5C411794AA4F0017667E /* KPKTree+Serializing.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = "KPKTree+Serializing.m"; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; @@ -1093,7 +1093,7 @@ 4C2C8B331787500E009649F3 /* UnprotectedWarningView.xib */, 6021FE7918E15FF300C3BC51 /* DatePickingView.xib */, 4C26C34A18D8D5A300CF1A1C /* PreviewView.xib */, - 4C99E6A41A30FDFD00E2BA8D /* ReferenceBuilderView.xib */, + 4CD820231A32173100399DBB /* ReferenceBuilderView.xib */, 4C74DD05177BD1640034A9DB /* MPCustomFieldView.h */, 4C74DD06177BD1640034A9DB /* MPCustomFieldView.m */, 4CE8247316E2F2B900573141 /* MPOverlayView.h */, @@ -2253,7 +2253,7 @@ 6021FE8D18E1617300C3BC51 /* PasswordCreatorView.xib in Resources */, 4C1DDCDD1711ECEB00C98DA3 /* PasswordCreatorWindow.xib in Resources */, 4C7714AA176C998F00549F2A /* 43_TrashTemplate.pdf in Resources */, - 4C99E6A51A30FDFD00E2BA8D /* ReferenceBuilderView.xib in Resources */, + 4CD820211A32173100399DBB /* ReferenceBuilderView.xib in Resources */, 4C7714AC176C9D4600549F2A /* 99_InfoTemplate.pdf in Resources */, 6021FE5618E1429500C3BC51 /* IntegrationSettings.xib in Resources */, 4CA3531218A5577300839B0F /* dsa_sparkle_pub.pem in Resources */, @@ -2691,6 +2691,14 @@ name = Credits.rtf; sourceTree = ""; }; + 4CD820231A32173100399DBB /* ReferenceBuilderView.xib */ = { + isa = PBXVariantGroup; + children = ( + 4CD820221A32173100399DBB /* Base */, + ); + name = ReferenceBuilderView.xib; + sourceTree = ""; + }; 6021FE3D18E1341900C3BC51 /* EntryInspectorView.xib */ = { isa = PBXVariantGroup; children = ( diff --git a/MacPass/Base.lproj/ReferenceBuilderView.xib b/MacPass/Base.lproj/ReferenceBuilderView.xib new file mode 100644 index 00000000..aea657ed --- /dev/null +++ b/MacPass/Base.lproj/ReferenceBuilderView.xib @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MacPass/MPReferenceBuilderViewController.h b/MacPass/MPReferenceBuilderViewController.h index 2b6f7656..e071d25b 100644 --- a/MacPass/MPReferenceBuilderViewController.h +++ b/MacPass/MPReferenceBuilderViewController.h @@ -12,5 +12,9 @@ @property (weak) IBOutlet NSPopUpButton *valuePopUpButton; @property (weak) IBOutlet NSPopUpButton *searchKeyPopUpButton; @property (weak) IBOutlet NSTextField *searchStringTextField; +@property (weak) IBOutlet NSTextField *referenceStringTextField; + +- (IBAction)updateReference:(id)sender; +- (IBAction)updateKey:(id)sender; @end diff --git a/MacPass/MPReferenceBuilderViewController.m b/MacPass/MPReferenceBuilderViewController.m index 81014f81..d15cf123 100644 --- a/MacPass/MPReferenceBuilderViewController.m +++ b/MacPass/MPReferenceBuilderViewController.m @@ -10,6 +10,8 @@ @interface MPReferenceBuilderViewController () +@property (nonatomic, copy) NSString *searchString; + @end @implementation MPReferenceBuilderViewController @@ -28,22 +30,51 @@ - (void)didLoadView { [self.searchKeyPopUpButton setMenu:[self _allocateAttributeItemMenu:YES withTitle:NSLocalizedString(@"SEARCH_VALUE", "")]]; [self.valuePopUpButton setMenu:[self _allocateAttributeItemMenu:NO withTitle:NSLocalizedString(@"OUTPUT_VALUE", "")]]; + [self.searchStringTextField bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(searchString)) options:nil]; + [self _updateReferenceString]; } - (NSMenu *)_allocateAttributeItemMenu:(BOOL)allowCustomAttributes withTitle:(NSString *)title { NSMenu *menu = [[NSMenu alloc] init]; /* first item is button label */ - [menu addItemWithTitle:title action:NULL keyEquivalent:@""]; + //[menu addItemWithTitle:title action:NULL keyEquivalent:@""]; [menu addItemWithTitle:NSLocalizedString(@"UUID","") action:NULL keyEquivalent:@""]; [menu addItemWithTitle:NSLocalizedString(@"TITLE","") action:NULL keyEquivalent:@""]; [menu addItemWithTitle:NSLocalizedString(@"USERNAME","") action:NULL keyEquivalent:@""]; [menu addItemWithTitle:NSLocalizedString(@"PASSWORD","") action:NULL keyEquivalent:@""]; [menu addItemWithTitle:NSLocalizedString(@"URL","") action:NULL keyEquivalent:@""]; - [menu addItemWithTitle:NSLocalizedString(@"NOTES","") action:NULL keyEquivalent:@""]; + [menu addItemWithTitle:NSLocalizedString(@"NOTES","") action:NULL keyEquivalent:@""]; if(allowCustomAttributes) { [menu addItemWithTitle:NSLocalizedString(@"CUSTOM_ATTRIBUTE","") action:NULL keyEquivalent:@""]; } + NSArray *keys = @[ @"I", @"T", @"U", @"P", @"A", @"N", @"S" ]; + [menu.itemArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { + NSMenuItem *item = (NSMenuItem *)obj; + NSAssert(keys.count > idx, @""); + item.representedObject = keys[idx]; + }]; return menu; } +- (void)setSearchString:(NSString *)searchString { + if(![searchString isEqualToString:_searchString]) { + _searchString = [searchString copy]; + [self _updateReferenceString]; + } +} + +- (IBAction)updateReference:(id)sender { + [self _updateReferenceString]; +} + +- (IBAction)updateKey:(id)sender { + [self _updateReferenceString]; +} + +- (void)_updateReferenceString { + NSString *key = self.searchKeyPopUpButton.selectedItem.representedObject; + NSString *value = self.valuePopUpButton.selectedItem.representedObject; + NSString *newValue = [[NSString alloc] initWithFormat:@"{REF:%@@%@:%@}", value, key, self.searchStringTextField.stringValue]; + self.referenceStringTextField.stringValue = newValue; +} @end diff --git a/MacPass/ReferenceBuilderView.xib b/MacPass/ReferenceBuilderView.xib deleted file mode 100644 index 4a074836..00000000 --- a/MacPass/ReferenceBuilderView.xib +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -