mirror of
https://github.com/TermiT/Flycut.git
synced 2025-09-23 05:24:31 +08:00
Recognize specific length strings of lower, upper, number, and symbol or punctuation but nothing else as passwords. Add preferences panel controls for password avoidance via type or length.
This commit is contained in:
parent
12a5cc0299
commit
63b90b0284
3 changed files with 158 additions and 24 deletions
|
@ -55,6 +55,16 @@
|
|||
@"store",
|
||||
[NSNumber numberWithBool:YES],
|
||||
@"skipPasswordFields",
|
||||
[NSNumber numberWithBool:YES],
|
||||
@"skipPboardTypes",
|
||||
@"PasswordPboardType",
|
||||
@"skipPboardTypesList",
|
||||
[NSNumber numberWithBool:NO],
|
||||
@"skipPasswordLengths",
|
||||
@"12, 20, 32",
|
||||
@"skipPasswordLengthsList",
|
||||
[NSNumber numberWithBool:NO],
|
||||
@"revealPasteboardTypes",
|
||||
[NSNumber numberWithBool:NO],
|
||||
@"removeDuplicates",
|
||||
[NSNumber numberWithBool:YES],
|
||||
|
@ -427,6 +437,73 @@
|
|||
CFRelease(sourceRef);
|
||||
}
|
||||
|
||||
-(BOOL)shouldSkip:(NSString *)contents
|
||||
{
|
||||
NSString *type = [jcPasteboard availableTypeFromArray:[NSArray arrayWithObject:NSStringPboardType]];
|
||||
|
||||
// Check to see if we are skipping passwords based on length and characters.
|
||||
if ( [[DBUserDefaults standardUserDefaults] boolForKey:@"skipPasswordFields"] )
|
||||
{
|
||||
// Check to see if they want a little help figuring out what types to enter.
|
||||
if ( [[DBUserDefaults standardUserDefaults] boolForKey:@"revealPasteboardTypes"] )
|
||||
[clippingStore addClipping:type ofType:type];
|
||||
|
||||
__block bool skipClipping = NO;
|
||||
|
||||
// Check the array of types to skip.
|
||||
if ( [[DBUserDefaults standardUserDefaults] boolForKey:@"skipPboardTypes"] )
|
||||
{
|
||||
NSArray *typesArray = [[[[DBUserDefaults standardUserDefaults] stringForKey:@"skipPboardTypesList"] stringByReplacingOccurrencesOfString:@" " withString:@""] componentsSeparatedByString: @","];
|
||||
[typesArray enumerateObjectsUsingBlock:^(id typeString, NSUInteger idx, BOOL *stop)
|
||||
{
|
||||
if ( [type isEqualToString:typeString] )
|
||||
{
|
||||
skipClipping = YES;
|
||||
stop = YES;
|
||||
}
|
||||
}];
|
||||
}
|
||||
if (skipClipping)
|
||||
return YES;
|
||||
|
||||
// Check the array of lengths to skip for suspicious strings.
|
||||
if ( [[DBUserDefaults standardUserDefaults] boolForKey:@"skipPasswordLengths"] )
|
||||
{
|
||||
int contentsLength = [contents length];
|
||||
NSArray *lengthsArray = [[[[DBUserDefaults standardUserDefaults] stringForKey:@"skipPasswordLengthsList"] stringByReplacingOccurrencesOfString:@" " withString:@""] componentsSeparatedByString: @","];
|
||||
[lengthsArray enumerateObjectsUsingBlock:^(id lengthString, NSUInteger idx, BOOL *stop)
|
||||
{
|
||||
if ( [lengthString integerValue] == contentsLength )
|
||||
{
|
||||
NSRange uppercaseLetter = [contents rangeOfCharacterFromSet: [NSCharacterSet uppercaseLetterCharacterSet]];
|
||||
NSRange lowercaseLetter = [contents rangeOfCharacterFromSet: [NSCharacterSet lowercaseLetterCharacterSet]];
|
||||
NSRange decimalDigit = [contents rangeOfCharacterFromSet: [NSCharacterSet decimalDigitCharacterSet]];
|
||||
NSRange punctuation = [contents rangeOfCharacterFromSet: [NSCharacterSet punctuationCharacterSet]];
|
||||
NSRange symbol = [contents rangeOfCharacterFromSet: [NSCharacterSet symbolCharacterSet]];
|
||||
NSRange control = [contents rangeOfCharacterFromSet: [NSCharacterSet controlCharacterSet]];
|
||||
NSRange illegal = [contents rangeOfCharacterFromSet: [NSCharacterSet illegalCharacterSet]];
|
||||
NSRange whitespaceAndNewline = [contents rangeOfCharacterFromSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]];
|
||||
if ( NSNotFound == control.location
|
||||
&& NSNotFound == illegal.location
|
||||
&& NSNotFound == whitespaceAndNewline.location
|
||||
&& NSNotFound != uppercaseLetter.location
|
||||
&& NSNotFound != lowercaseLetter.location
|
||||
&& NSNotFound != decimalDigit.location
|
||||
&& ( NSNotFound != punctuation.location
|
||||
|| NSNotFound != symbol.location ) )
|
||||
{
|
||||
skipClipping = YES;
|
||||
stop = YES;
|
||||
}
|
||||
}
|
||||
}];
|
||||
|
||||
if (skipClipping)
|
||||
return YES;
|
||||
}
|
||||
}
|
||||
return NO;
|
||||
}
|
||||
|
||||
-(void)pollPB:(NSTimer *)timer
|
||||
{
|
||||
|
@ -458,8 +535,8 @@
|
|||
if (largeCopyRisk)
|
||||
[self toggleMenuIconDisabled];
|
||||
|
||||
if ( contents == nil || ([jcPasteboard stringForType:@"PasswordPboardType"] && [[DBUserDefaults standardUserDefaults] boolForKey:@"skipPasswordFields"]) ) {
|
||||
NSLog(@"Contents: Empty");
|
||||
if ( contents == nil || [self shouldSkip:contents] ) {
|
||||
NSLog(@"Contents: Empty or skipped");
|
||||
} else {
|
||||
if (( [clippingStore jcListCount] == 0 || ! [contents isEqualToString:[clippingStore clippingContentsAtPosition:0]])
|
||||
&& ! [pbCount isEqualTo:pbBlockCount] ) {
|
||||
|
|
101
English.lproj/MainMenu.nib/designable.nib
generated
101
English.lproj/MainMenu.nib/designable.nib
generated
|
@ -80,14 +80,14 @@
|
|||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<box title="Box" boxType="oldStyle" borderType="none" titlePosition="noTitle" id="387">
|
||||
<rect key="frame" x="-3" y="180" width="555" height="305"/>
|
||||
<rect key="frame" x="-3" y="141" width="555" height="344"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<view key="contentView">
|
||||
<rect key="frame" x="0.0" y="0.0" width="555" height="305"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="555" height="344"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<button toolTip="The bezel must be manually dismissed using the "escape" or "return" keys." id="390">
|
||||
<rect key="frame" x="14" y="275" width="97" height="18"/>
|
||||
<rect key="frame" x="14" y="314" width="97" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<buttonCell key="cell" type="check" title="Sticky bezel" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="750">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
|
@ -98,7 +98,7 @@
|
|||
</connections>
|
||||
</button>
|
||||
<popUpButton verticalHuggingPriority="750" id="392">
|
||||
<rect key="frame" x="79" y="133" width="189" height="26"/>
|
||||
<rect key="frame" x="79" y="172" width="189" height="26"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<popUpButtonCell key="cell" type="push" title="On exit" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" inset="2" arrowPosition="arrowAtCenter" preferredEdge="maxY" selectedItem="394" id="751">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
|
@ -116,7 +116,7 @@
|
|||
</connections>
|
||||
</popUpButton>
|
||||
<button id="398">
|
||||
<rect key="frame" x="14" y="214" width="204" height="18"/>
|
||||
<rect key="frame" x="14" y="253" width="204" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<buttonCell key="cell" type="check" title="Launch Flycut on login" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="753">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
|
@ -128,7 +128,7 @@
|
|||
</connections>
|
||||
</button>
|
||||
<button id="857">
|
||||
<rect key="frame" x="14" y="194" width="247" height="18"/>
|
||||
<rect key="frame" x="14" y="233" width="247" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<buttonCell key="cell" type="check" title="Dropbox Sync (settings & clippings)" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="858">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
|
@ -139,7 +139,7 @@
|
|||
</connections>
|
||||
</button>
|
||||
<button id="897">
|
||||
<rect key="frame" x="14" y="77" width="247" height="18"/>
|
||||
<rect key="frame" x="14" y="116" width="247" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<buttonCell key="cell" type="check" title="Don't copy from password fields" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="898">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
|
@ -150,7 +150,7 @@
|
|||
</connections>
|
||||
</button>
|
||||
<button id="903">
|
||||
<rect key="frame" x="14" y="57" width="247" height="18"/>
|
||||
<rect key="frame" x="14" y="34" width="247" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<buttonCell key="cell" type="check" title="Remove duplicates" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="904">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
|
@ -161,7 +161,7 @@
|
|||
</connections>
|
||||
</button>
|
||||
<textField verticalHuggingPriority="750" id="416">
|
||||
<rect key="frame" x="13" y="161" width="76" height="23"/>
|
||||
<rect key="frame" x="13" y="200" width="76" height="23"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" id="754">
|
||||
<font key="font" metaFont="system"/>
|
||||
|
@ -172,7 +172,7 @@
|
|||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" id="418">
|
||||
<rect key="frame" x="13" y="139" width="33" height="14"/>
|
||||
<rect key="frame" x="13" y="178" width="33" height="14"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" id="755">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
|
@ -183,7 +183,7 @@
|
|||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" id="419">
|
||||
<rect key="frame" x="13" y="113" width="62" height="14"/>
|
||||
<rect key="frame" x="13" y="152" width="62" height="14"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" id="756">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
|
@ -194,7 +194,7 @@
|
|||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" id="420">
|
||||
<rect key="frame" x="134" y="113" width="95" height="14"/>
|
||||
<rect key="frame" x="134" y="152" width="95" height="14"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Display in menu" id="757">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
|
@ -203,7 +203,7 @@
|
|||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" id="470">
|
||||
<rect key="frame" x="79" y="108" width="25" height="22"/>
|
||||
<rect key="frame" x="79" y="147" width="25" height="22"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" id="758">
|
||||
<numberFormatter key="formatter" formatterBehavior="10_0" positiveFormat="#" negativeFormat="-#" hasThousandSeparators="NO" thousandSeparator=" " id="483">
|
||||
|
@ -222,7 +222,7 @@
|
|||
</connections>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" id="471">
|
||||
<rect key="frame" x="224" y="108" width="24" height="22"/>
|
||||
<rect key="frame" x="224" y="147" width="24" height="22"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" id="759">
|
||||
<numberFormatter key="formatter" formatterBehavior="10_0" positiveFormat="#" negativeFormat="-#" hasThousandSeparators="NO" thousandSeparator=" " id="484">
|
||||
|
@ -241,7 +241,7 @@
|
|||
</connections>
|
||||
</textField>
|
||||
<stepper toolTip="Controls how many clippings Jumpcut stores in its stack" horizontalHuggingPriority="750" verticalHuggingPriority="750" id="472">
|
||||
<rect key="frame" x="104" y="106" width="19" height="27"/>
|
||||
<rect key="frame" x="104" y="145" width="19" height="27"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<stepperCell key="cell" continuous="YES" alignment="left" minValue="10" maxValue="99" doubleValue="10" valueWraps="YES" id="760"/>
|
||||
<connections>
|
||||
|
@ -250,7 +250,7 @@
|
|||
</connections>
|
||||
</stepper>
|
||||
<stepper toolTip="Controls how many clippings Jumpcut shows in the menu" horizontalHuggingPriority="750" verticalHuggingPriority="750" id="473">
|
||||
<rect key="frame" x="249" y="106" width="19" height="27"/>
|
||||
<rect key="frame" x="249" y="145" width="19" height="27"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<stepperCell key="cell" continuous="YES" alignment="left" minValue="5" maxValue="99" doubleValue="5" valueWraps="YES" id="761"/>
|
||||
<connections>
|
||||
|
@ -260,7 +260,7 @@
|
|||
</connections>
|
||||
</stepper>
|
||||
<button toolTip="In the bezel, moving down from the last item takes you to the top and moving up from the first item takes you to the bottom." id="692">
|
||||
<rect key="frame" x="14" y="255" width="162" height="18"/>
|
||||
<rect key="frame" x="14" y="294" width="162" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<buttonCell key="cell" type="check" title="Wraparound bezel" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="762">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
|
@ -271,7 +271,7 @@
|
|||
</connections>
|
||||
</button>
|
||||
<button toolTip="Selecting a clipping from the menu causes it to be pasted instead of copied back onto the pasteboard." id="694">
|
||||
<rect key="frame" x="14" y="235" width="162" height="18"/>
|
||||
<rect key="frame" x="14" y="274" width="162" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<buttonCell key="cell" type="check" title="Menu selection pastes" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="763">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
|
@ -282,7 +282,7 @@
|
|||
</connections>
|
||||
</button>
|
||||
<button id="914">
|
||||
<rect key="frame" x="14" y="37" width="230" height="18"/>
|
||||
<rect key="frame" x="14" y="14" width="230" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="check" title="Move pasted item to top of stack" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="915">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
|
@ -293,7 +293,7 @@
|
|||
</connections>
|
||||
</button>
|
||||
<textField verticalHuggingPriority="750" id="Ubt-DS-zHf">
|
||||
<rect key="frame" x="280" y="113" width="62" height="14"/>
|
||||
<rect key="frame" x="280" y="152" width="62" height="14"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Favorites" id="2L6-OM-5rx">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
|
@ -302,7 +302,7 @@
|
|||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" id="dM5-eN-Zvt">
|
||||
<rect key="frame" x="346" y="108" width="25" height="22"/>
|
||||
<rect key="frame" x="346" y="147" width="25" height="22"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" id="nes-6O-e5R">
|
||||
<numberFormatter key="formatter" formatterBehavior="10_0" positiveFormat="#" negativeFormat="-#" hasThousandSeparators="NO" thousandSeparator="," id="aqt-p2-eya">
|
||||
|
@ -321,7 +321,7 @@
|
|||
</connections>
|
||||
</textField>
|
||||
<stepper toolTip="Controls how many clippings Jumpcut stores in its stack" horizontalHuggingPriority="750" verticalHuggingPriority="750" id="wZv-HJ-VdW">
|
||||
<rect key="frame" x="371" y="106" width="19" height="27"/>
|
||||
<rect key="frame" x="371" y="145" width="19" height="27"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<stepperCell key="cell" continuous="YES" alignment="left" minValue="10" maxValue="99" doubleValue="10" valueWraps="YES" id="gUi-gl-RH6"/>
|
||||
<connections>
|
||||
|
@ -329,6 +329,63 @@
|
|||
<binding destination="808" name="value" keyPath="values.rememberNum" id="nUm-81-DgP"/>
|
||||
</connections>
|
||||
</stepper>
|
||||
<button id="pDS-jE-9jb">
|
||||
<rect key="frame" x="32" y="96" width="133" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="check" title="Pasteboard types:" bezelStyle="regularSquare" imagePosition="left" inset="2" id="tzh-NM-RSb">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<binding destination="808" name="value" keyPath="values.skipPboardTypes" id="kfD-fG-t1V"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button id="Bxp-pI-XMk">
|
||||
<rect key="frame" x="32" y="75" width="356" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="check" title="Detect with Upper, Lower, Digit, and Symbol lengths:" bezelStyle="regularSquare" imagePosition="left" inset="2" id="aAK-L0-EHa">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<binding destination="808" name="value" keyPath="values.skipPasswordLengths" id="PyJ-gO-ieM"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button toolTip="For identifying types to include in Pasteboard Types above." id="mka-NZ-Esg">
|
||||
<rect key="frame" x="32" y="55" width="279" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="check" title="Include pasteboard types in clippings list" bezelStyle="regularSquare" imagePosition="left" inset="2" id="9Vi-RY-G0b">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<binding destination="808" name="value" keyPath="values.revealPasteboardTypes" id="Nn3-7D-D7e"/>
|
||||
</connections>
|
||||
</button>
|
||||
<textField verticalHuggingPriority="750" id="RYj-wx-tTx">
|
||||
<rect key="frame" x="394" y="73" width="108" height="22"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" title="12, 20, 32" drawsBackground="YES" id="aqQ-SR-BmT">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<binding destination="808" name="value" keyPath="values.skipPasswordLengthsList" id="NJg-wN-gsn"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" id="x34-dK-wxl">
|
||||
<rect key="frame" x="171" y="94" width="331" height="22"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" title="PasswordPboardType" drawsBackground="YES" id="kTZ-dC-s1q">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<binding destination="808" name="value" keyPath="values.skipPboardTypesList" id="Wbn-u9-3vY"/>
|
||||
</connections>
|
||||
</textField>
|
||||
</subviews>
|
||||
</view>
|
||||
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
|
||||
|
|
BIN
English.lproj/MainMenu.nib/keyedobjects.nib
generated
BIN
English.lproj/MainMenu.nib/keyedobjects.nib
generated
Binary file not shown.
Loading…
Add table
Reference in a new issue