mirror of
https://github.com/MacPass/MacPass.git
synced 2025-12-14 14:02:28 +00:00
Updated Localization
Added configureable Table headers in Entry view
This commit is contained in:
@@ -168,6 +168,7 @@
|
||||
4C67D33017981A2B00A7BDFC /* HNHTokenField.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C67D32F17981A2B00A7BDFC /* HNHTokenField.m */; };
|
||||
4C67D33317981ABA00A7BDFC /* HNHTokenFieldCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C67D33217981ABA00A7BDFC /* HNHTokenFieldCell.m */; };
|
||||
4C69A73A16D589DF00EC1B1A /* HNHGradientView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C69A73916D589DF00EC1B1A /* HNHGradientView.m */; };
|
||||
4C6BEA3117A88E6C00CF69A8 /* MPStripLineBreaksTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C6BEA3017A88E6C00CF69A8 /* MPStripLineBreaksTransformer.m */; };
|
||||
4C6D1D25178579570014C5A5 /* 48_FolderTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C6D1D24178579570014C5A5 /* 48_FolderTemplate.pdf */; };
|
||||
4C6D1D27178586CA0014C5A5 /* 99_AddFolderTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4C6D1D26178586CA0014C5A5 /* 99_AddFolderTemplate.pdf */; };
|
||||
4C6D1D2B17858A250014C5A5 /* MacPass.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4C6D1D2A17858A250014C5A5 /* MacPass.icns */; };
|
||||
@@ -577,6 +578,8 @@
|
||||
4C67D33217981ABA00A7BDFC /* HNHTokenFieldCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HNHTokenFieldCell.m; sourceTree = "<group>"; };
|
||||
4C69A73816D589DF00EC1B1A /* HNHGradientView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HNHGradientView.h; sourceTree = "<group>"; };
|
||||
4C69A73916D589DF00EC1B1A /* HNHGradientView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HNHGradientView.m; sourceTree = "<group>"; };
|
||||
4C6BEA2F17A88E6C00CF69A8 /* MPStripLineBreaksTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPStripLineBreaksTransformer.h; sourceTree = "<group>"; };
|
||||
4C6BEA3017A88E6C00CF69A8 /* MPStripLineBreaksTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPStripLineBreaksTransformer.m; sourceTree = "<group>"; };
|
||||
4C6D1D24178579570014C5A5 /* 48_FolderTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 48_FolderTemplate.pdf; sourceTree = "<group>"; };
|
||||
4C6D1D26178586CA0014C5A5 /* 99_AddFolderTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = 99_AddFolderTemplate.pdf; sourceTree = "<group>"; };
|
||||
4C6D1D2A17858A250014C5A5 /* MacPass.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = MacPass.icns; path = "../Assets/App icon/MacPass.icns"; sourceTree = "<group>"; };
|
||||
@@ -1082,6 +1085,8 @@
|
||||
4C5BF67A175C01F300D53DF7 /* MPUppercaseStringValueTransformer.m */,
|
||||
4CF6C70F176F4533007A811D /* MPStringLengthValueTransformer.h */,
|
||||
4CF6C710176F4533007A811D /* MPStringLengthValueTransformer.m */,
|
||||
4C6BEA2F17A88E6C00CF69A8 /* MPStripLineBreaksTransformer.h */,
|
||||
4C6BEA3017A88E6C00CF69A8 /* MPStripLineBreaksTransformer.m */,
|
||||
4C888C9516EB754B003D34A1 /* MPActionHelper.h */,
|
||||
4C888C9616EB754B003D34A1 /* MPActionHelper.m */,
|
||||
4C2E382116D1421B00037A9D /* MPIconHelper.h */,
|
||||
@@ -2060,6 +2065,7 @@
|
||||
4CD7223B17A7CB0700F5A1E1 /* MPWorkflowSettingsController.m in Sources */,
|
||||
4C2671AD17A7D8FC00F3A645 /* HNHColorWell.m in Sources */,
|
||||
4CA08DA017A831B200A6544B /* MPAddEntryContextMenuDelegate.m in Sources */,
|
||||
4C6BEA3117A88E6C00CF69A8 /* MPStripLineBreaksTransformer.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
<string key="NSClassName">NSApplication</string>
|
||||
</object>
|
||||
<object class="NSCustomView" id="997686550">
|
||||
<nil key="NSNextResponder"/>
|
||||
<reference key="NSNextResponder"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<object class="NSCustomView" id="163272962">
|
||||
@@ -55,8 +55,10 @@
|
||||
<object class="NSButton" id="276578969">
|
||||
<reference key="NSNextResponder" ref="163272962"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<array class="NSMutableArray" key="NSSubviews"/>
|
||||
<string key="NSFrame">{{7, 5}, {32, 19}}</string>
|
||||
<reference key="NSSuperview" ref="163272962"/>
|
||||
<reference key="NSWindow"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="160641004">
|
||||
@@ -86,6 +88,7 @@
|
||||
</array>
|
||||
<string key="NSFrameSize">{694, 30}</string>
|
||||
<reference key="NSSuperview" ref="997686550"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="276578969"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<string key="NSClassName">HNHGradientView</string>
|
||||
@@ -104,6 +107,7 @@
|
||||
<array class="NSMutableArray" key="NSSubviews"/>
|
||||
<string key="NSFrameSize">{694, 548}</string>
|
||||
<reference key="NSSuperview" ref="262664416"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="736877784"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:13</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
@@ -114,6 +118,7 @@
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrameSize">{694, 17}</string>
|
||||
<reference key="NSSuperview" ref="736877784"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="262664416"/>
|
||||
<reference key="NSTableView" ref="528076956"/>
|
||||
</object>
|
||||
@@ -143,7 +148,7 @@
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">headerColor</string>
|
||||
<object class="NSColor" key="NSColor">
|
||||
<object class="NSColor" key="NSColor" id="926091365">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MQA</bytes>
|
||||
</object>
|
||||
@@ -299,10 +304,7 @@
|
||||
</array>
|
||||
<double key="NSIntercellSpacingWidth">3</double>
|
||||
<double key="NSIntercellSpacingHeight">2</double>
|
||||
<object class="NSColor" key="NSBackgroundColor">
|
||||
<int key="NSColorSpace">1</int>
|
||||
<bytes key="NSRGB">MSAxIDEAA</bytes>
|
||||
</object>
|
||||
<reference key="NSBackgroundColor" ref="926091365"/>
|
||||
<object class="NSColor" key="NSGridColor">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
@@ -326,17 +328,19 @@
|
||||
</array>
|
||||
<string key="NSFrame">{{0, 17}, {694, 548}}</string>
|
||||
<reference key="NSSuperview" ref="613995671"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="528076956"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:11</string>
|
||||
<reference key="NSDocView" ref="528076956"/>
|
||||
<reference key="NSBGColor" ref="136901388"/>
|
||||
<int key="NScvFlags">6</int>
|
||||
<int key="NScvFlags">4</int>
|
||||
</object>
|
||||
<object class="NSScroller" id="1037276411">
|
||||
<reference key="NSNextResponder" ref="613995671"/>
|
||||
<int key="NSvFlags">-2147483392</int>
|
||||
<string key="NSFrame">{{224, 17}, {15, 102}}</string>
|
||||
<reference key="NSSuperview" ref="613995671"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="802411427"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:58</string>
|
||||
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
|
||||
@@ -349,6 +353,7 @@
|
||||
<int key="NSvFlags">-2147483392</int>
|
||||
<string key="NSFrame">{{0, 310}, {480, 16}}</string>
|
||||
<reference key="NSSuperview" ref="613995671"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="163272962"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:60</string>
|
||||
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
|
||||
@@ -365,6 +370,7 @@
|
||||
</array>
|
||||
<string key="NSFrameSize">{694, 17}</string>
|
||||
<reference key="NSSuperview" ref="613995671"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="253618752"/>
|
||||
<reference key="NSDocView" ref="253618752"/>
|
||||
<reference key="NSBGColor" ref="136901388"/>
|
||||
@@ -373,6 +379,7 @@
|
||||
</array>
|
||||
<string key="NSFrame">{{0, 30}, {694, 565}}</string>
|
||||
<reference key="NSSuperview" ref="997686550"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="262664416"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<int key="NSsFlags">133680</int>
|
||||
@@ -387,6 +394,8 @@
|
||||
</object>
|
||||
</array>
|
||||
<string key="NSFrameSize">{694, 594}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="613995671"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<string key="NSClassName">NSView</string>
|
||||
@@ -1729,7 +1738,7 @@
|
||||
<nil key="activeLocalization"/>
|
||||
<dictionary class="NSMutableDictionary" key="localizations"/>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">844</int>
|
||||
<int key="maxID">867</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
@@ -1756,7 +1765,7 @@
|
||||
<string key="filterTitleButton">NSButton</string>
|
||||
<string key="filterURLButton">NSButton</string>
|
||||
<string key="filterUsernameButton">NSButton</string>
|
||||
<string key="tableToTop">NSLayoutConstraint</string>
|
||||
<string key="tableToTopConstraint">NSLayoutConstraint</string>
|
||||
<string key="trashBar">HNHGradientView</string>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||
@@ -1804,8 +1813,8 @@
|
||||
<string key="name">filterUsernameButton</string>
|
||||
<string key="candidateClassName">NSButton</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="tableToTop">
|
||||
<string key="name">tableToTop</string>
|
||||
<object class="IBToOneOutletInfo" key="tableToTopConstraint">
|
||||
<string key="name">tableToTopConstraint</string>
|
||||
<string key="candidateClassName">NSLayoutConstraint</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="trashBar">
|
||||
|
||||
@@ -45,9 +45,10 @@
|
||||
<object class="NSButton" id="317760263">
|
||||
<reference key="NSNextResponder" ref="1005"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{182, 18}, {118, 25}}</string>
|
||||
<string key="NSFrame">{{262, 18}, {118, 25}}</string>
|
||||
<reference key="NSSuperview" ref="1005"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:22</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="619274271">
|
||||
@@ -81,7 +82,7 @@
|
||||
<object class="NSCollectionView" id="697027275">
|
||||
<reference key="NSNextResponder" ref="785205210"/>
|
||||
<int key="NSvFlags">4370</int>
|
||||
<string key="NSFrameSize">{300, 250}</string>
|
||||
<string key="NSFrameSize">{380, 280}</string>
|
||||
<reference key="NSSuperview" ref="785205210"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="319187659"/>
|
||||
@@ -105,7 +106,7 @@
|
||||
<int key="NSDraggingSourceMaskForNonLocal">0</int>
|
||||
</object>
|
||||
</array>
|
||||
<string key="NSFrameSize">{300, 250}</string>
|
||||
<string key="NSFrameSize">{380, 280}</string>
|
||||
<reference key="NSSuperview" ref="170990502"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="697027275"/>
|
||||
@@ -151,7 +152,7 @@
|
||||
<double key="NSPercent">0.63157892227172852</double>
|
||||
</object>
|
||||
</array>
|
||||
<string key="NSFrame">{{10, 50}, {300, 250}}</string>
|
||||
<string key="NSFrame">{{10, 50}, {380, 280}}</string>
|
||||
<reference key="NSSuperview" ref="1005"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="785205210"/>
|
||||
@@ -165,7 +166,7 @@
|
||||
<double key="NSMagnification">1</double>
|
||||
</object>
|
||||
</array>
|
||||
<string key="NSFrameSize">{320, 310}</string>
|
||||
<string key="NSFrameSize">{400, 340}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="170990502"/>
|
||||
@@ -179,9 +180,10 @@
|
||||
<object class="NSButton" id="612603831">
|
||||
<reference key="NSNextResponder" ref="340719917"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{9, 9}, {32, 32}}</string>
|
||||
<string key="NSFrame">{{4, 4}, {32, 32}}</string>
|
||||
<reference key="NSSuperview" ref="340719917"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="344314901">
|
||||
@@ -205,7 +207,7 @@
|
||||
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
|
||||
</object>
|
||||
</array>
|
||||
<string key="NSFrameSize">{50, 50}</string>
|
||||
<string key="NSFrameSize">{40, 40}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="612603831"/>
|
||||
@@ -562,22 +564,22 @@
|
||||
<reference key="parent" ref="1005"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">148</int>
|
||||
<int key="objectID">161</int>
|
||||
<reference key="object" ref="1006496299"/>
|
||||
<reference key="parent" ref="612603831"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">149</int>
|
||||
<int key="objectID">162</int>
|
||||
<reference key="object" ref="1004322278"/>
|
||||
<reference key="parent" ref="612603831"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">150</int>
|
||||
<int key="objectID">168</int>
|
||||
<reference key="object" ref="926242244"/>
|
||||
<reference key="parent" ref="340719917"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">151</int>
|
||||
<int key="objectID">169</int>
|
||||
<reference key="object" ref="528411379"/>
|
||||
<reference key="parent" ref="340719917"/>
|
||||
</object>
|
||||
@@ -617,10 +619,10 @@
|
||||
<boolean value="NO" key="114.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
|
||||
<string key="114.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="115.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="148.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="149.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="150.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="151.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="161.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="162.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="168.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="169.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="57.CustomClassName">HNHScrollView</string>
|
||||
<boolean value="NO" key="57.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
|
||||
<string key="57.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
@@ -635,7 +637,7 @@
|
||||
<nil key="activeLocalization"/>
|
||||
<dictionary class="NSMutableDictionary" key="localizations"/>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">151</int>
|
||||
<int key="maxID">169</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
@@ -688,6 +690,27 @@
|
||||
<string key="minorKey">./Classes/MPViewController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSCollectionViewItem</string>
|
||||
<dictionary class="NSMutableDictionary" key="outlets">
|
||||
<string key="imageView">NSImageView</string>
|
||||
<string key="textField">NSTextField</string>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||
<object class="IBToOneOutletInfo" key="imageView">
|
||||
<string key="name">imageView</string>
|
||||
<string key="candidateClassName">NSImageView</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo" key="textField">
|
||||
<string key="name">textField</string>
|
||||
<string key="candidateClassName">NSTextField</string>
|
||||
</object>
|
||||
</dictionary>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">./Classes/NSCollectionViewItem.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSLayoutConstraint</string>
|
||||
<string key="superclassName">NSObject</string>
|
||||
|
||||
@@ -8,13 +8,6 @@
|
||||
|
||||
#import "Kdb.h"
|
||||
|
||||
APPKIT_EXTERN NSString *const MPEntryTitleUndoableKey;
|
||||
APPKIT_EXTERN NSString *const MPEntryUsernameUndoableKey;
|
||||
APPKIT_EXTERN NSString *const MPEntryPasswordUndoableKey;
|
||||
APPKIT_EXTERN NSString *const MPEntryUrlUndoableKey;
|
||||
APPKIT_EXTERN NSString *const MPEntryNotesUndoableKey;
|
||||
|
||||
|
||||
@interface KdbEntry (Undo)
|
||||
|
||||
- (NSString *)titleUndoable;
|
||||
|
||||
@@ -11,12 +11,6 @@
|
||||
#import "KdbGroup+KVOAdditions.h"
|
||||
#import "KdbGroup+MPTreeTools.h"
|
||||
|
||||
NSString *const MPEntryTitleUndoableKey = @"titleUndoable";
|
||||
NSString *const MPEntryUsernameUndoableKey = @"usernameUndoable";
|
||||
NSString *const MPEntryPasswordUndoableKey = @"passwordUndoable";
|
||||
NSString *const MPEntryUrlUndoableKey = @"urlUndoable";
|
||||
NSString *const MPEntryNotesUndoableKey = @"notesUndoable";
|
||||
|
||||
#ifndef MPSetActionName
|
||||
#define MPSetActionName(key, comment) \
|
||||
if(![[self undoManager] isUndoing]) {\
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
#import "MPSettingsHelper.h"
|
||||
#import "MPUppercaseStringValueTransformer.h"
|
||||
#import "MPStringLengthValueTransformer.h"
|
||||
#import "MPStripLineBreaksTransformer.h"
|
||||
#import "MPServerDaemon.h"
|
||||
#import "MPLockDaemon.h"
|
||||
#import "MPDocumentWindowController.h"
|
||||
@@ -37,6 +38,7 @@
|
||||
[MPSettingsHelper setupDefaults];
|
||||
[MPUppercaseStringValueTransformer registerTransformer];
|
||||
[MPStringLengthValueTransformer registerTransformer];
|
||||
[MPStripLineBreaksTransformer registerTransformer];
|
||||
}
|
||||
|
||||
- (void)dealloc {
|
||||
|
||||
@@ -99,6 +99,7 @@ typedef NS_ENUM(NSUInteger, MPAlertType) {
|
||||
_readOnly = NO;
|
||||
_rootAdapter = [[MPRootAdapter alloc] init];
|
||||
_version = version;
|
||||
[[self undoManager] setLevelsOfUndo:10];
|
||||
switch(_version) {
|
||||
case MPDatabaseVersion3:
|
||||
self.tree = [Kdb3Tree templateTree];
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
NSArray *classArray = [NSArray arrayWithObject:[NSURL class]];
|
||||
NSArray *arrayOfURLs = [draggingPasteBoard readObjectsForClasses:classArray options:nil];
|
||||
BOOL ok;
|
||||
BOOL ok = NO;
|
||||
for(NSURL *url in arrayOfURLs) {
|
||||
if([url isFileURL] || [url isFileReferenceURL]) {
|
||||
continue;
|
||||
|
||||
@@ -7,10 +7,7 @@
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
@class MPEntryViewController;
|
||||
|
||||
@interface MPEntryContextMenuDelegate : NSObject <NSMenuDelegate>
|
||||
|
||||
@property (weak) MPEntryViewController *viewController;
|
||||
|
||||
@end
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
//
|
||||
|
||||
#import "MPEntryContextMenuDelegate.h"
|
||||
#import "MPEntryViewController.h"
|
||||
#import "MPDocument.h"
|
||||
|
||||
#import "Kdb4Node.h"
|
||||
|
||||
@@ -30,9 +30,9 @@ static NSUInteger const kMPAttachmentsMenuItem = 2000;
|
||||
if([lastItem isSeparatorItem]) {
|
||||
[menu removeItem:lastItem];
|
||||
}
|
||||
|
||||
if([self.viewController.selectedEntry isKindOfClass:[Kdb4Entry class]]) {
|
||||
Kdb4Entry *entry = (Kdb4Entry *)self.viewController.selectedEntry;
|
||||
MPDocument *document = [[NSDocumentController sharedDocumentController] currentDocument];
|
||||
if([document.selectedEntry isKindOfClass:[Kdb4Entry class]]) {
|
||||
Kdb4Entry *entry = (Kdb4Entry *)document.selectedEntry;
|
||||
if([entry.stringFields count] > 0) {
|
||||
[menu addItem:[NSMenuItem separatorItem]];
|
||||
NSMenuItem *customFieldsItem = [[NSMenuItem alloc] init];
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#import "MPConstants.h"
|
||||
#import "MPEntryTableDataSource.h"
|
||||
#import "MPStringLengthValueTransformer.h"
|
||||
#import "MPStripLineBreaksTransformer.h"
|
||||
#import "MPEntryContextMenuDelegate.h"
|
||||
|
||||
#import "HNHTableHeaderCell.h"
|
||||
@@ -54,6 +55,8 @@ NSString *const MPEntryTableTitleColumnIdentifier = @"MPTitleColumnIdentifier";
|
||||
NSString *const MPEntryTablePasswordColumnIdentifier = @"MPPasswordColumnIdentifier";
|
||||
NSString *const MPEntryTableParentColumnIdentifier = @"MPParentColumnIdentifier";
|
||||
NSString *const MPEntryTableURLColumnIdentifier = @"MPEntryTableURLColumnIdentifier";
|
||||
NSString *const MPEntryTableNotesColumnIdentifier = @"MPEntryTableNotesColumnIdentifier";
|
||||
NSString *const MPEntryTableAttachmentColumnIdentifier = @"MPEntryTableAttachmentColumnIdentifier";
|
||||
|
||||
NSString *const _MPTableImageCellView = @"ImageCell";
|
||||
NSString *const _MPTableStringCellView = @"StringCell";
|
||||
@@ -114,8 +117,6 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
|
||||
_dataSource = [[MPEntryTableDataSource alloc] init];
|
||||
_dataSource.viewController = self;
|
||||
_menuDelegate = [[MPEntryContextMenuDelegate alloc] init];
|
||||
_menuDelegate.viewController = self;
|
||||
|
||||
_selectedEntry = nil;
|
||||
}
|
||||
return self;
|
||||
@@ -127,7 +128,7 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
|
||||
}
|
||||
|
||||
- (void)didLoadView {
|
||||
[self.view setWantsLayer:YES];
|
||||
[[self view] setWantsLayer:YES];
|
||||
[self _hideFilterBarAnimated];
|
||||
|
||||
[_bottomBar setBorderType:HNHBorderTop];
|
||||
@@ -150,7 +151,10 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
|
||||
NSTableColumn *userNameColumn = [self.entryTable tableColumns][2];
|
||||
NSTableColumn *passwordColumn = [self.entryTable tableColumns][3];
|
||||
NSTableColumn *urlColumn = [self.entryTable tableColumns][4];
|
||||
|
||||
NSTableColumn *attachmentsColumn = [[NSTableColumn alloc] initWithIdentifier:MPEntryTableAttachmentColumnIdentifier];
|
||||
NSTableColumn *notesColumn = [[NSTableColumn alloc] initWithIdentifier:MPEntryTableNotesColumnIdentifier];
|
||||
[self.entryTable addTableColumn:notesColumn];
|
||||
[self.entryTable addTableColumn:attachmentsColumn];
|
||||
|
||||
[parentColumn setIdentifier:MPEntryTableParentColumnIdentifier];
|
||||
[titleColumn setIdentifier:MPEntryTableTitleColumnIdentifier];
|
||||
@@ -169,16 +173,19 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
|
||||
[userNameColumn setSortDescriptorPrototype:userNameSortDescriptor];
|
||||
[urlColumn setSortDescriptorPrototype:urlSortDescriptor];
|
||||
|
||||
[[parentColumn headerCell] setStringValue:@"Group"];
|
||||
[[titleColumn headerCell] setStringValue:@"Title"];
|
||||
[[userNameColumn headerCell] setStringValue:@"Username"];
|
||||
[[passwordColumn headerCell] setStringValue:@"Password"];
|
||||
[[urlColumn headerCell] setStringValue:@"URL"];
|
||||
[[parentColumn headerCell] setStringValue:NSLocalizedString(@"GROUP", "")];
|
||||
[[titleColumn headerCell] setStringValue:NSLocalizedString(@"TITLE", "")];
|
||||
[[userNameColumn headerCell] setStringValue:NSLocalizedString(@"USERNAME", "")];
|
||||
[[passwordColumn headerCell] setStringValue:NSLocalizedString(@"PASSWORD", "")];
|
||||
[[urlColumn headerCell] setStringValue:NSLocalizedString(@"URL", "")];
|
||||
[[notesColumn headerCell] setStringValue:NSLocalizedString(@"NOTES", "")];
|
||||
[[attachmentsColumn headerCell] setStringValue:NSLocalizedString(@"ATTACHMENTS", "")];
|
||||
|
||||
[self.entryTable bind:NSContentBinding toObject:self.entryArrayController withKeyPath:@"arrangedObjects" options:nil];
|
||||
[self.entryTable bind:NSSortDescriptorsBinding toObject:self.entryArrayController withKeyPath:@"sortDescriptors" options:nil];
|
||||
[self.entryTable setDataSource:_dataSource];
|
||||
|
||||
[self _setupHeaderMenu];
|
||||
[parentColumn setHidden:YES];
|
||||
|
||||
}
|
||||
@@ -195,18 +202,19 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
|
||||
|
||||
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
|
||||
KdbEntry *entry = [self.entryArrayController arrangedObjects][row];
|
||||
|
||||
const BOOL isTitleColumn = [[tableColumn identifier] isEqualToString:MPEntryTableTitleColumnIdentifier];
|
||||
const BOOL isGroupColumn = [[tableColumn identifier] isEqualToString:MPEntryTableParentColumnIdentifier];
|
||||
const BOOL isPasswordColum = [[tableColumn identifier] isEqualToString:MPEntryTablePasswordColumnIdentifier];
|
||||
const BOOL isUsernameColumn = [[tableColumn identifier] isEqualToString:MPEntryTableUserNameColumnIdentifier];
|
||||
const BOOL isURLColumn = [[tableColumn identifier] isEqualToString:MPEntryTableURLColumnIdentifier];
|
||||
BOOL isTitleColumn = [[tableColumn identifier] isEqualToString:MPEntryTableTitleColumnIdentifier];
|
||||
BOOL isGroupColumn = [[tableColumn identifier] isEqualToString:MPEntryTableParentColumnIdentifier];
|
||||
BOOL isPasswordColum = [[tableColumn identifier] isEqualToString:MPEntryTablePasswordColumnIdentifier];
|
||||
BOOL isUsernameColumn = [[tableColumn identifier] isEqualToString:MPEntryTableUserNameColumnIdentifier];
|
||||
BOOL isURLColumn = [[tableColumn identifier] isEqualToString:MPEntryTableURLColumnIdentifier];
|
||||
BOOL isAttachmentColumn = [[tableColumn identifier] isEqualToString:MPEntryTableAttachmentColumnIdentifier];
|
||||
BOOL isNotesColumn = [[tableColumn identifier] isEqualToString:MPEntryTableNotesColumnIdentifier];
|
||||
|
||||
NSTableCellView *view = nil;
|
||||
if(isTitleColumn || isGroupColumn) {
|
||||
view = [tableView makeViewWithIdentifier:_MPTableImageCellView owner:self];
|
||||
if( isTitleColumn ) {
|
||||
[[view textField] bind:NSValueBinding toObject:entry withKeyPath:MPEntryTitleUndoableKey options:nil];
|
||||
[[view textField] bind:NSValueBinding toObject:entry withKeyPath:@"titleUndoable" options:nil];
|
||||
[[view imageView] setImage:[MPIconHelper icon:(MPIconType)entry.image]];
|
||||
}
|
||||
else {
|
||||
@@ -218,17 +226,23 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
|
||||
else if( isPasswordColum ) {
|
||||
view = [tableView makeViewWithIdentifier:_MPTAbleSecurCellView owner:self];
|
||||
NSDictionary *options = @{ NSValueTransformerBindingOption : [NSValueTransformer valueTransformerForName:MPStringLengthValueTransformerName] };
|
||||
[[view textField] bind:NSValueBinding toObject:entry withKeyPath:MPEntryPasswordUndoableKey options:options];
|
||||
}
|
||||
else if( isUsernameColumn || isURLColumn ) {
|
||||
view = [tableView makeViewWithIdentifier:_MPTableStringCellView owner:self];
|
||||
if(isURLColumn) {
|
||||
[[view textField] bind:NSValueBinding toObject:entry withKeyPath:MPEntryUrlUndoableKey options:nil];
|
||||
//[[view textField] setStringValue:entry.url];
|
||||
[[view textField] bind:NSValueBinding toObject:entry withKeyPath:@"passwordUndoable" options:options];
|
||||
}
|
||||
else {
|
||||
[[view textField] bind:NSValueBinding toObject:entry withKeyPath:MPEntryUsernameUndoableKey options:nil];
|
||||
//[[view textField] setStringValue:entry.username];
|
||||
view = [tableView makeViewWithIdentifier:_MPTableStringCellView owner:self];
|
||||
if(isURLColumn) {
|
||||
[[view textField] bind:NSValueBinding toObject:entry withKeyPath:@"urlUndoable" options:nil];
|
||||
}
|
||||
else if( isUsernameColumn) {
|
||||
[[view textField] bind:NSValueBinding toObject:entry withKeyPath:@"usernameUndoable" options:nil];
|
||||
}
|
||||
else if( isNotesColumn ) {
|
||||
NSDictionary *options = @{ NSValueTransformerNameBindingOption : MPStripLineBreaksTransformerName };
|
||||
[[view textField] bind:NSValueBinding toObject:entry withKeyPath:@"notesUndoable" options:options];
|
||||
}
|
||||
else if( isAttachmentColumn ) {
|
||||
[[view textField] setStringValue:@""];
|
||||
//[[view textField] bind:NSValueBinding toObject:entry withKeyPath:@"countOfBinaries" options:nil];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -412,7 +426,6 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
|
||||
multiplier:1
|
||||
constant:0];
|
||||
[[self view] addConstraint:self.filterbarTopConstraint];
|
||||
|
||||
[NSAnimationContext runAnimationGroup:^(NSAnimationContext* context) {
|
||||
context.duration = STATUS_BAR_ANIMATION_TIME;
|
||||
context.allowsImplicitAnimation = YES;
|
||||
@@ -424,7 +437,6 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
|
||||
}
|
||||
|
||||
- (void)_hideFilterBarAnimated {
|
||||
|
||||
if(![self _showsFilterBar]) {
|
||||
return; // nothing to do;
|
||||
}
|
||||
@@ -522,7 +534,7 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
|
||||
self.trashBar.inactiveGradient = [[NSGradient alloc] initWithColors:inactiveColors];
|
||||
}
|
||||
|
||||
#pragma mark EntryMenu
|
||||
#pragma mark ContextMenu
|
||||
|
||||
- (void)_setupEntryMenu {
|
||||
|
||||
@@ -533,9 +545,36 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
|
||||
}
|
||||
[menu setDelegate:_menuDelegate];
|
||||
[self.entryTable setMenu:menu];
|
||||
|
||||
}
|
||||
|
||||
- (void)_setupHeaderMenu {
|
||||
NSMenu *headerMenu = [[NSMenu allocWithZone:[NSMenu menuZone]] init];
|
||||
|
||||
[headerMenu addItemWithTitle:NSLocalizedString(@"TITLE", "") action:NULL keyEquivalent:@""];
|
||||
[headerMenu addItemWithTitle:NSLocalizedString(@"USERNAME", "") action:NULL keyEquivalent:@""];
|
||||
[headerMenu addItemWithTitle:NSLocalizedString(@"PASSWORD", "") action:NULL keyEquivalent:@""];
|
||||
[headerMenu addItemWithTitle:NSLocalizedString(@"URL", "") action:NULL keyEquivalent:@""];
|
||||
[headerMenu addItemWithTitle:NSLocalizedString(@"NOTES", "") action:NULL keyEquivalent:@""];
|
||||
[headerMenu addItemWithTitle:NSLocalizedString(@"ATTACHMENTS", "") action:NULL keyEquivalent:@""];
|
||||
|
||||
NSArray *identifier = @[ MPEntryTableTitleColumnIdentifier,
|
||||
MPEntryTableUserNameColumnIdentifier,
|
||||
MPEntryTablePasswordColumnIdentifier,
|
||||
MPEntryTableURLColumnIdentifier,
|
||||
MPEntryTableNotesColumnIdentifier,
|
||||
MPEntryTableAttachmentColumnIdentifier ];
|
||||
|
||||
NSDictionary *options = @{ NSValueTransformerNameBindingOption : NSNegateBooleanTransformerName };
|
||||
for(NSMenuItem *item in [headerMenu itemArray]) {
|
||||
NSUInteger index = [headerMenu indexOfItem:item];
|
||||
NSTableColumn *column= [self.entryTable tableColumnWithIdentifier:identifier[index]];
|
||||
[item bind:NSValueBinding toObject:column withKeyPath:@"hidden" options:options];
|
||||
}
|
||||
|
||||
[[self.entryTable headerView] setMenu:headerMenu];
|
||||
}
|
||||
|
||||
|
||||
#pragma makr Action Helper
|
||||
|
||||
- (KdbEntry *)_clickedOrSelectedEntry {
|
||||
@@ -598,6 +637,10 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
|
||||
[document deleteEntry:entry];
|
||||
}
|
||||
|
||||
//- (void)toggleHeader:(id)sender {
|
||||
// //
|
||||
//}
|
||||
|
||||
#pragma mark Validation
|
||||
- (BOOL)validateMenuItem:(NSMenuItem *)menuItem {
|
||||
return YES;
|
||||
@@ -643,6 +686,7 @@ NSString *const _toggleFilterUsernameButton = @"SearchUsername";
|
||||
else
|
||||
[self copyURL:nil];
|
||||
}
|
||||
// TODO: Add more actions for new columns
|
||||
}
|
||||
|
||||
- (void)setFilterMode:(MPFilterModeType)newFilterMode {
|
||||
|
||||
17
MacPass/MPStripLineBreaksTransformer.h
Normal file
17
MacPass/MPStripLineBreaksTransformer.h
Normal file
@@ -0,0 +1,17 @@
|
||||
//
|
||||
// MPStripLineBreaksTransformer.h
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 31.07.13.
|
||||
// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
FOUNDATION_EXPORT NSString *const MPStripLineBreaksTransformerName;
|
||||
|
||||
@interface MPStripLineBreaksTransformer : NSValueTransformer
|
||||
|
||||
+ (void)registerTransformer;
|
||||
|
||||
@end
|
||||
37
MacPass/MPStripLineBreaksTransformer.m
Normal file
37
MacPass/MPStripLineBreaksTransformer.m
Normal file
@@ -0,0 +1,37 @@
|
||||
//
|
||||
// MPStripLineBreaksTransformer.m
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 31.07.13.
|
||||
// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import "MPStripLineBreaksTransformer.h"
|
||||
|
||||
NSString *const MPStripLineBreaksTransformerName = @"com.hicknhack.macpass.MPStripLineBreaksTransformerName";
|
||||
|
||||
@implementation MPStripLineBreaksTransformer
|
||||
|
||||
+ (Class)transformedValueClass {
|
||||
return [NSString class];
|
||||
}
|
||||
|
||||
+ (BOOL)allowsReverseTransformation {
|
||||
return NO;
|
||||
}
|
||||
|
||||
+ (void)registerTransformer {
|
||||
MPStripLineBreaksTransformer *transformer = [[MPStripLineBreaksTransformer alloc] init];
|
||||
[NSValueTransformer setValueTransformer:transformer
|
||||
forName:MPStripLineBreaksTransformerName];
|
||||
}
|
||||
|
||||
- (id)transformedValue:(id)value {
|
||||
if(![value isKindOfClass:[NSString class]]) {
|
||||
return nil;
|
||||
}
|
||||
NSArray *elements = [value componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
|
||||
return [elements componentsJoinedByString:@" "];
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -48,7 +48,7 @@
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>2525</string>
|
||||
<string>2527</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user