mirror of
https://github.com/MacPass/MacPass.git
synced 2025-12-13 19:22:25 +00:00
rough version of {PICKFIELD}
This commit is contained in:
@@ -176,6 +176,9 @@
|
||||
4C7F8B681A10B68400CCB83D /* WelcomeWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C7F8B6A1A10B68400CCB83D /* WelcomeWindow.xib */; };
|
||||
4C80304A1E2FBAA300133E4C /* MPTestKeyMapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C8030491E2FBAA300133E4C /* MPTestKeyMapper.m */; };
|
||||
4C811C8316ECD06E00C4BAC6 /* MPKeyfilePathControlDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C811C8216ECD06E00C4BAC6 /* MPKeyfilePathControlDelegate.m */; };
|
||||
4C82046A1FCDC07800EB24A4 /* MPPickfieldViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C8204681FCDC07800EB24A4 /* MPPickfieldViewController.m */; };
|
||||
4C82046B1FCDC07800EB24A4 /* PickfieldView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C8204691FCDC07800EB24A4 /* PickfieldView.xib */; };
|
||||
4C82046E1FCDC8A100EB24A4 /* MPPickfieldTableModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C82046D1FCDC8A100EB24A4 /* MPPickfieldTableModel.m */; };
|
||||
4C83814215BF4677001AE468 /* MPDocumentWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C83814115BF4677001AE468 /* MPDocumentWindowController.m */; };
|
||||
4C888C9016EB6C91003D34A1 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 4C888C8E16EB6C91003D34A1 /* Localizable.strings */; };
|
||||
4C888C9316EB6F5E003D34A1 /* MPToolbarItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C888C9216EB6F5E003D34A1 /* MPToolbarItem.m */; };
|
||||
@@ -609,6 +612,11 @@
|
||||
4C8030491E2FBAA300133E4C /* MPTestKeyMapper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPTestKeyMapper.m; sourceTree = "<group>"; };
|
||||
4C811C8116ECD06E00C4BAC6 /* MPKeyfilePathControlDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPKeyfilePathControlDelegate.h; sourceTree = "<group>"; };
|
||||
4C811C8216ECD06E00C4BAC6 /* MPKeyfilePathControlDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPKeyfilePathControlDelegate.m; sourceTree = "<group>"; };
|
||||
4C8204671FCDC07800EB24A4 /* MPPickfieldViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPPickfieldViewController.h; sourceTree = "<group>"; };
|
||||
4C8204681FCDC07800EB24A4 /* MPPickfieldViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPPickfieldViewController.m; sourceTree = "<group>"; };
|
||||
4C8204691FCDC07800EB24A4 /* PickfieldView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PickfieldView.xib; sourceTree = "<group>"; };
|
||||
4C82046C1FCDC8A100EB24A4 /* MPPickfieldTableModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPPickfieldTableModel.h; sourceTree = "<group>"; };
|
||||
4C82046D1FCDC8A100EB24A4 /* MPPickfieldTableModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPPickfieldTableModel.m; sourceTree = "<group>"; };
|
||||
4C83814015BF4677001AE468 /* MPDocumentWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPDocumentWindowController.h; sourceTree = "<group>"; };
|
||||
4C83814115BF4677001AE468 /* MPDocumentWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPDocumentWindowController.m; sourceTree = "<group>"; };
|
||||
4C840C441D773E5D0081F605 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/DatabaseSettingsWindow.strings; sourceTree = "<group>"; };
|
||||
@@ -1082,6 +1090,8 @@
|
||||
4C6B7C7C18BE7EB0001D5D77 /* MPDocument+History.m */,
|
||||
4C0AF62D195C1F2B009E658D /* MPEntrySearchContext.h */,
|
||||
4C0AF62E195C1F2B009E658D /* MPEntrySearchContext.m */,
|
||||
4C82046C1FCDC8A100EB24A4 /* MPPickfieldTableModel.h */,
|
||||
4C82046D1FCDC8A100EB24A4 /* MPPickfieldTableModel.m */,
|
||||
);
|
||||
name = Model;
|
||||
sourceTree = "<group>";
|
||||
@@ -1443,6 +1453,9 @@
|
||||
4CD4EE101FC7284000EA6EB3 /* MPPickcharViewController.h */,
|
||||
4CD4EE111FC7284000EA6EB3 /* MPPickcharViewController.m */,
|
||||
4CA4B3451FC88339007DF507 /* PickcharView.xib */,
|
||||
4C8204671FCDC07800EB24A4 /* MPPickfieldViewController.h */,
|
||||
4C8204681FCDC07800EB24A4 /* MPPickfieldViewController.m */,
|
||||
4C8204691FCDC07800EB24A4 /* PickfieldView.xib */,
|
||||
);
|
||||
name = "View Controller";
|
||||
sourceTree = "<group>";
|
||||
@@ -1701,6 +1714,7 @@
|
||||
4C3826B51AD04D8E007D7D67 /* 40_FindMailTemplate.pdf in Resources */,
|
||||
4C2E381F16D11FF900037A9D /* 05_LanguagesTemplate.pdf in Resources */,
|
||||
4C3826721AD04B51007D7D67 /* addFolderTemplate.pdf in Resources */,
|
||||
4C82046B1FCDC07800EB24A4 /* PickfieldView.xib in Resources */,
|
||||
4C3826C21AD04D8E007D7D67 /* 55_ThumbnailTemplate.pdf in Resources */,
|
||||
4C3826A61AD04D8E007D7D67 /* 22_ASCIITemplate.pdf in Resources */,
|
||||
4CD78ABC16D155FF00768A1D /* 07_NotepadTemplate.pdf in Resources */,
|
||||
@@ -1822,6 +1836,7 @@
|
||||
4CA0B2FC15BCAF8600654E32 /* MPSettingsWindowController.m in Sources */,
|
||||
4C4F72D118DF704400E8D378 /* DDHotKeyTextField.m in Sources */,
|
||||
4C83814215BF4677001AE468 /* MPDocumentWindowController.m in Sources */,
|
||||
4C82046A1FCDC07800EB24A4 /* MPPickfieldViewController.m in Sources */,
|
||||
4C2E382316D1421B00037A9D /* MPIconHelper.m in Sources */,
|
||||
4C2E382616D1470200037A9D /* MPViewController.m in Sources */,
|
||||
4C65FAE916D16DDB006E0577 /* MPPasswordInputController.m in Sources */,
|
||||
@@ -1870,6 +1885,7 @@
|
||||
4CE30ACC1A312B7F0063FCC6 /* MPReferenceBuilderViewController.m in Sources */,
|
||||
4C6F228C19A4AA700012310C /* MPAutotypeDelay.m in Sources */,
|
||||
4C3C4EAF18D7039300153127 /* MPValueTransformerHelper.m in Sources */,
|
||||
4C82046E1FCDC8A100EB24A4 /* MPPickfieldTableModel.m in Sources */,
|
||||
4C978E0D19AE54AB003067DF /* MPFlagsHelper.m in Sources */,
|
||||
4C6F228919A4A7F90012310C /* MPAutotypeClear.m in Sources */,
|
||||
4C0B038C18E36DA400B9F9C9 /* MPFixAutotypeWindowController.m in Sources */,
|
||||
|
||||
33
MacPass/MPPickfieldTableModel.h
Normal file
33
MacPass/MPPickfieldTableModel.h
Normal file
@@ -0,0 +1,33 @@
|
||||
//
|
||||
// MPPickfieldTableModel.h
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 28.11.17.
|
||||
// Copyright © 2017 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@class MPDocument;
|
||||
@class KPKEntry;
|
||||
|
||||
@interface MPPickFieldTableModelRowItem : NSObject
|
||||
|
||||
@property (copy) NSString *name;
|
||||
@property (copy) NSString *value;
|
||||
@property BOOL isGroup;
|
||||
|
||||
+ (instancetype)groupItemWithName:(NSString *)name;
|
||||
+ (instancetype)itemWithName:(NSString *)name value:(NSString *)value;
|
||||
|
||||
@end
|
||||
|
||||
@interface MPPickfieldTableModel : NSObject
|
||||
|
||||
@property (copy) NSArray<MPPickFieldTableModelRowItem *> *items;
|
||||
|
||||
- (instancetype)initWithEntry:(KPKEntry *)entry inDocument:(MPDocument *)document;
|
||||
- (MPPickFieldTableModelRowItem *)itemAtIndex:(NSUInteger)index;
|
||||
|
||||
@end
|
||||
|
||||
72
MacPass/MPPickfieldTableModel.m
Normal file
72
MacPass/MPPickfieldTableModel.m
Normal file
@@ -0,0 +1,72 @@
|
||||
//
|
||||
// MPPickfieldTableModel.m
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 28.11.17.
|
||||
// Copyright © 2017 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import "MPPickfieldTableModel.h"
|
||||
#import <KeePassKit/KeePassKit.h>
|
||||
|
||||
@implementation MPPickFieldTableModelRowItem
|
||||
|
||||
- (instancetype)init {
|
||||
self = [super init];
|
||||
if(self) {
|
||||
_isGroup = NO;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
+ (instancetype)groupItemWithName:(NSString *)name {
|
||||
MPPickFieldTableModelRowItem *item = [self itemWithName:name value:nil];
|
||||
item.isGroup = YES;
|
||||
return item;
|
||||
}
|
||||
|
||||
+ (instancetype)itemWithName:(NSString *)name value:(NSString *)value {
|
||||
MPPickFieldTableModelRowItem *item = [[MPPickFieldTableModelRowItem alloc] init];
|
||||
item.name = name;
|
||||
item.value = value;
|
||||
return item;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation MPPickfieldTableModel
|
||||
|
||||
- (instancetype)initWithEntry:(KPKEntry *)entry inDocument:(MPDocument *)document {
|
||||
self = [super init];
|
||||
if(self) {
|
||||
[self _setupItemsForEntry:entry document:document];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)_setupItemsForEntry:(KPKEntry *)entry document:(MPDocument *)document {
|
||||
/* Default attributes */
|
||||
NSMutableArray *items = [[NSMutableArray alloc] init];
|
||||
[items addObject:[MPPickFieldTableModelRowItem groupItemWithName:NSLocalizedString(@"ENTRY_DEFAULT_ATTRIBUTES", @"Group row for entry attributes")]];
|
||||
|
||||
for(KPKAttribute *attribute in entry.defaultAttributes) {
|
||||
/* TODO exclude protected values */
|
||||
[items addObject:[MPPickFieldTableModelRowItem itemWithName:attribute.key value:attribute.value]];
|
||||
}
|
||||
|
||||
[items addObject:[MPPickFieldTableModelRowItem groupItemWithName:NSLocalizedString(@"ENTRY_CUSTOM_ATTRIBUTES", @"Group row for entry attributes")]];
|
||||
for(KPKAttribute *attribute in entry.customAttributes) {
|
||||
/* TODO exclude protected values */
|
||||
[items addObject:[MPPickFieldTableModelRowItem itemWithName:attribute.key value:attribute.value]];
|
||||
}
|
||||
self.items = items; // copy creates an immutable copy
|
||||
}
|
||||
|
||||
- (MPPickFieldTableModelRowItem *)itemAtIndex:(NSUInteger)index {
|
||||
if(index < _items.count) {
|
||||
return _items[index];
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
|
||||
@end
|
||||
20
MacPass/MPPickfieldViewController.h
Normal file
20
MacPass/MPPickfieldViewController.h
Normal file
@@ -0,0 +1,20 @@
|
||||
//
|
||||
// MPPickfieldViewController.h
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 28.11.17.
|
||||
// Copyright © 2017 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
@class MPDocument;
|
||||
|
||||
@interface MPPickfieldViewController : NSViewController
|
||||
|
||||
@property (weak) MPDocument *document;
|
||||
@property (copy, readonly) NSString *pickedValue;
|
||||
|
||||
- (IBAction)pickField:(id)sender;
|
||||
|
||||
@end
|
||||
95
MacPass/MPPickfieldViewController.m
Normal file
95
MacPass/MPPickfieldViewController.m
Normal file
@@ -0,0 +1,95 @@
|
||||
//
|
||||
// MPPickfieldViewController.m
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 28.11.17.
|
||||
// Copyright © 2017 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import "MPPickfieldViewController.h"
|
||||
#import "MPPickfieldTableModel.h"
|
||||
|
||||
#import <KeePassKit/KeePassKit.h>
|
||||
@interface MPPickfieldViewController () <NSTableViewDelegate, NSTableViewDataSource>
|
||||
|
||||
@property (nonatomic, strong, readonly) KPKEntry *representedEntry;
|
||||
@property (strong) MPPickfieldTableModel *tableModel;
|
||||
@property (weak) IBOutlet NSTableView *tableView;
|
||||
@property (copy) NSString *pickedValue;
|
||||
|
||||
@end
|
||||
|
||||
@implementation MPPickfieldViewController
|
||||
|
||||
@dynamic representedEntry;
|
||||
|
||||
- (NSString *)nibName {
|
||||
return @"PickfieldView";
|
||||
}
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
self.tableModel = [[MPPickfieldTableModel alloc] initWithEntry:self.representedEntry inDocument:nil];
|
||||
}
|
||||
|
||||
- (KPKEntry *)representedEntry {
|
||||
if([self.representedObject isKindOfClass:KPKEntry.class]) {
|
||||
return self.representedObject;
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (void)pickField:(id)sender {
|
||||
[NSApp stopModalWithCode:NSModalResponseOK];
|
||||
}
|
||||
|
||||
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
|
||||
return self.tableModel.items.count;
|
||||
}
|
||||
|
||||
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
|
||||
NSTableCellView *view;
|
||||
if(tableColumn) {
|
||||
view = [tableView makeViewWithIdentifier:@"DataCell" owner:self];
|
||||
}
|
||||
else {
|
||||
view = [tableView makeViewWithIdentifier:@"HeaderCell" owner:self];
|
||||
}
|
||||
MPPickFieldTableModelRowItem *rowItem = [self.tableModel itemAtIndex:row];
|
||||
view.textField.stringValue = @"";
|
||||
|
||||
if(!rowItem) {
|
||||
return view;
|
||||
}
|
||||
/* group view or first column */
|
||||
if(tableColumn == nil || [tableColumn.identifier isEqualToString:@"AutomaticTableColumnIdentifier.0"]) {
|
||||
view.textField.stringValue = rowItem.name;
|
||||
}
|
||||
else if([tableColumn.identifier isEqualToString:@"AutomaticTableColumnIdentifier.1"]) {
|
||||
view.textField.stringValue = rowItem.value;
|
||||
}
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
- (BOOL)tableView:(NSTableView *)tableView isGroupRow:(NSInteger)row {
|
||||
MPPickFieldTableModelRowItem *rowItem = [self.tableModel itemAtIndex:row];
|
||||
return rowItem.isGroup;
|
||||
}
|
||||
|
||||
- (BOOL)tableView:(NSTableView *)tableView shouldSelectRow:(NSInteger)row {
|
||||
return ![self tableView:tableView isGroupRow:row];
|
||||
}
|
||||
|
||||
- (void)tableViewSelectionDidChange:(NSNotification *)notification {
|
||||
NSTableView *tableView = notification.object;
|
||||
if(tableView.selectedRow < 0) {
|
||||
self.pickedValue = @"";
|
||||
}
|
||||
else {
|
||||
MPPickFieldTableModelRowItem *item = [self.tableModel itemAtIndex:tableView.selectedRow];
|
||||
self.pickedValue = item ? item.value : @"";
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -25,6 +25,7 @@
|
||||
#import "MPDocument.h"
|
||||
#import "MPSettingsHelper.h"
|
||||
#import "MPPickcharViewController.h"
|
||||
#import "MPPickfieldViewController.h"
|
||||
|
||||
@interface MPTreeDelegate ();
|
||||
|
||||
@@ -80,6 +81,22 @@
|
||||
}
|
||||
|
||||
- (NSString *)tree:(KPKTree *)tree resolvePickFieldPlaceholderForEntry:(KPKEntry *)entry {
|
||||
MPPickfieldViewController *pickFieldViewController = [[MPPickfieldViewController alloc] init];
|
||||
|
||||
pickFieldViewController.representedObject = entry;
|
||||
|
||||
NSPanel *panel = [[NSPanel alloc] initWithContentRect:NSMakeRect(0, 0, 100, 100)
|
||||
styleMask:NSWindowStyleMaskNonactivatingPanel|NSWindowStyleMaskTitled|NSWindowStyleMaskResizable
|
||||
backing:NSBackingStoreRetained
|
||||
defer:YES];
|
||||
panel.level = NSScreenSaverWindowLevel;
|
||||
panel.contentViewController = pickFieldViewController;
|
||||
panel.title = NSLocalizedString(@"PICKFIELD_WINDOW_TITLE", @"Window displayed to the user to pick an amout of characters");
|
||||
[panel center];
|
||||
if(NSModalResponseOK == [NSApp runModalForWindow:panel]) {
|
||||
/* add appropriate key press comamnds? or let the pick-char view-controller handel this? */
|
||||
return pickFieldViewController.pickedValue;
|
||||
}
|
||||
return @"";
|
||||
}
|
||||
|
||||
|
||||
@@ -154,7 +154,7 @@
|
||||
<constraint firstItem="KQ1-tZ-qja" firstAttribute="top" secondItem="MVS-ug-wys" secondAttribute="bottom" constant="8" symbolic="YES" id="nKb-eh-ba4"/>
|
||||
<constraint firstItem="e2q-qh-Zlv" firstAttribute="centerX" secondItem="Hz6-mo-xeY" secondAttribute="centerX" id="tE5-PK-tp0"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="-769" y="-173"/>
|
||||
<point key="canvasLocation" x="-917" y="-230"/>
|
||||
</customView>
|
||||
</objects>
|
||||
<resources>
|
||||
|
||||
153
MacPass/PickfieldView.xib
Normal file
153
MacPass/PickfieldView.xib
Normal file
@@ -0,0 +1,153 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="13529" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13529"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="MPPickfieldViewController">
|
||||
<connections>
|
||||
<outlet property="tableView" destination="5xi-x0-G4W" id="Tm9-fm-aqh"/>
|
||||
<outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView id="Hz6-mo-xeY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="474" height="378"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="BDL-W9-psF">
|
||||
<rect key="frame" x="18" y="341" width="237" height="17"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Please pick a field value to be inserted" id="aJS-22-6Va">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="n1E-iQ-yd7">
|
||||
<rect key="frame" x="388" y="13" width="72" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Done" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="6Wi-9i-Tcb">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="pickField:" target="-1" id="4cZ-5D-Nlf"/>
|
||||
</connections>
|
||||
</button>
|
||||
<scrollView autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nlF-dy-Ttg">
|
||||
<rect key="frame" x="20" y="61" width="434" height="272"/>
|
||||
<clipView key="contentView" id="am4-w0-FSd">
|
||||
<rect key="frame" x="1" y="0.0" width="432" height="271"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnReordering="NO" multipleSelection="NO" autosaveColumns="NO" rowSizeStyle="automatic" headerView="jX4-Gp-btT" viewBased="YES" id="5xi-x0-G4W">
|
||||
<rect key="frame" x="0.0" y="0.0" width="436" height="248"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<size key="intercellSpacing" width="3" height="2"/>
|
||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
|
||||
<tableColumns>
|
||||
<tableColumn width="118" minWidth="40" maxWidth="1000" id="0H9-DW-Jyj">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" title="Field">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||
</tableHeaderCell>
|
||||
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="fil-tT-GXX">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView identifier="DataCell" id="s1C-7e-04S">
|
||||
<rect key="frame" x="1" y="1" width="118" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField identifier="DataCell" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ADN-XZ-Lq7">
|
||||
<rect key="frame" x="0.0" y="0.0" width="118" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="e8U-mE-mZh">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</subviews>
|
||||
<connections>
|
||||
<outlet property="textField" destination="ADN-XZ-Lq7" id="7zs-7K-4Wg"/>
|
||||
</connections>
|
||||
</tableCellView>
|
||||
<tableCellView identifier="HeaderCell" id="wpe-VG-m1j">
|
||||
<rect key="frame" x="1" y="20" width="118" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6sH-Uk-P1B">
|
||||
<rect key="frame" x="0.0" y="0.0" width="118" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Header View Cell" id="kTy-VO-Xlg">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</subviews>
|
||||
<connections>
|
||||
<outlet property="textField" destination="6sH-Uk-P1B" id="4fT-uR-lzM"/>
|
||||
</connections>
|
||||
</tableCellView>
|
||||
</prototypeCellViews>
|
||||
</tableColumn>
|
||||
<tableColumn width="312" minWidth="40" maxWidth="1000" id="rVo-ud-5fs">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" title="Value">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||
</tableHeaderCell>
|
||||
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="z1F-Bi-PBg">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||
</tableColumn>
|
||||
</tableColumns>
|
||||
<connections>
|
||||
<outlet property="dataSource" destination="-2" id="66g-fd-91p"/>
|
||||
<outlet property="delegate" destination="-2" id="DaT-Xh-Etj"/>
|
||||
</connections>
|
||||
</tableView>
|
||||
</subviews>
|
||||
</clipView>
|
||||
<scroller key="horizontalScroller" verticalHuggingPriority="750" horizontal="YES" id="RHy-ph-0lP">
|
||||
<rect key="frame" x="1" y="255" width="432" height="16"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="b5D-WW-IPI">
|
||||
<rect key="frame" x="224" y="17" width="15" height="102"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<tableHeaderView key="headerView" id="jX4-Gp-btT">
|
||||
<rect key="frame" x="0.0" y="0.0" width="436" height="23"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</tableHeaderView>
|
||||
</scrollView>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="BDL-W9-psF" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="11J-Yq-T60"/>
|
||||
<constraint firstItem="n1E-iQ-yd7" firstAttribute="top" secondItem="nlF-dy-Ttg" secondAttribute="bottom" constant="20" symbolic="YES" id="7i7-Zj-Aco"/>
|
||||
<constraint firstItem="nlF-dy-Ttg" firstAttribute="top" secondItem="BDL-W9-psF" secondAttribute="bottom" constant="8" symbolic="YES" id="JQU-HY-3hx"/>
|
||||
<constraint firstItem="n1E-iQ-yd7" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="P1O-O7-bxC"/>
|
||||
<constraint firstItem="nlF-dy-Ttg" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="RH7-aQ-wKU"/>
|
||||
<constraint firstAttribute="bottom" secondItem="n1E-iQ-yd7" secondAttribute="bottom" constant="20" symbolic="YES" id="SBF-2E-hzT"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="BDL-W9-psF" secondAttribute="trailing" constant="20" symbolic="YES" id="W73-3d-vkM"/>
|
||||
<constraint firstItem="BDL-W9-psF" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="20" symbolic="YES" id="p0t-q5-CZ1"/>
|
||||
<constraint firstAttribute="trailing" secondItem="n1E-iQ-yd7" secondAttribute="trailing" constant="20" symbolic="YES" id="rJE-FS-dLo"/>
|
||||
<constraint firstAttribute="trailing" secondItem="nlF-dy-Ttg" secondAttribute="trailing" constant="20" symbolic="YES" id="yiP-Kc-fqd"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="-43" y="-58"/>
|
||||
</customView>
|
||||
</objects>
|
||||
</document>
|
||||
Reference in New Issue
Block a user