From eaae3362e6e75a130c9e9569d84193ad41e5bdc7 Mon Sep 17 00:00:00 2001 From: Shamyl Zakariya Date: Tue, 14 May 2019 07:35:03 -0700 Subject: [PATCH 1/4] Get CT Badge compiling with modern Xcode --- CTBadge.h | 12 +- CTBadge.m | 482 +++++++++--------- CTBadge.xcodeproj/project.pbxproj | 17 +- .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 43139 bytes .../xcschemes/xcschememanagement.plist | 14 + MainController.h | 16 +- MainController.m | 87 ++-- 9 files changed, 338 insertions(+), 305 deletions(-) create mode 100644 CTBadge.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 CTBadge.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 CTBadge.xcodeproj/project.xcworkspace/xcuserdata/shamyl.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 CTBadge.xcodeproj/xcuserdata/shamyl.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/CTBadge.h b/CTBadge.h index 9d4a329..f085e7a 100644 --- a/CTBadge.h +++ b/CTBadge.h @@ -17,10 +17,10 @@ extern const float CTLargeLabelSize; extern const float CTSmallLabelSize; @interface CTBadge : NSObject - { - NSColor *badgeColor; - NSColor *labelColor; - } +{ + NSColor *badgeColor; + NSColor *labelColor; +} + (CTBadge *)systemBadge; //Classic white on red badge + (CTBadge *)badgeWithColor:(NSColor *)badgeColor labelColor:(NSColor *)labelColor; //Badge of any color scheme @@ -31,8 +31,8 @@ extern const float CTSmallLabelSize; - (NSImage *)largeBadgeForString:(NSString *)string; - (NSImage *)badgeOfSize:(float)size forValue:(unsigned)value; //A badge of arbitrary size, - (NSImage *)badgeOfSize:(float)size forString:(NSString *)string; // is the size in pixels of the badge - // not counting the shadow effect - // (image returned will be larger than ) +// not counting the shadow effect +// (image returned will be larger than ) - (NSImage *)badgeOverlayImageForValue:(unsigned)value insetX:(float)dx y:(float)dy; //Returns a transparent 128x128 image - (NSImage *)badgeOverlayImageForString:(NSString *)string insetX:(float)dx y:(float)dy; // with Large badge inset dx/dy from the upper right diff --git a/CTBadge.m b/CTBadge.m index c491b87..889ae48 100644 --- a/CTBadge.m +++ b/CTBadge.m @@ -26,296 +26,296 @@ - (NSGradient *)badgeGradient; //gradient used to fill badge mask @implementation CTBadge - (id)init - { - self = [super init]; - - if (self != nil) - { - badgeColor = nil; - labelColor = nil; - - [self setBadgeColor:[NSColor redColor]]; - [self setLabelColor:[NSColor whiteColor]]; - } - return self; - } +{ + self = [super init]; + + if (self != nil) + { + badgeColor = nil; + labelColor = nil; + + [self setBadgeColor:[NSColor redColor]]; + [self setLabelColor:[NSColor whiteColor]]; + } + return self; +} - (void)dealloc - { - if(badgeColor != nil) - [badgeColor release]; - if(labelColor != nil) - [labelColor release]; - - [super dealloc]; - } +{ + if(badgeColor != nil) + [badgeColor release]; + if(labelColor != nil) + [labelColor release]; + + [super dealloc]; +} + (CTBadge *)systemBadge - { - id newInstance = [[[self class] alloc] init]; - - return [newInstance autorelease]; - } +{ + id newInstance = [[[self class] alloc] init]; + + return [newInstance autorelease]; +} + (CTBadge *)badgeWithColor:(NSColor *)badgeColor labelColor:(NSColor *)labelColor; - { - id newInstance = [[[self class] alloc] init]; - - [newInstance setBadgeColor:badgeColor]; - [newInstance setLabelColor:labelColor]; - - return [newInstance autorelease]; - } +{ + id newInstance = [[[self class] alloc] init]; + + [newInstance setBadgeColor:badgeColor]; + [newInstance setLabelColor:labelColor]; + + return [newInstance autorelease]; +} #pragma mark - #pragma mark Appearance - (void)setBadgeColor:(NSColor *)theColor; - { - if(badgeColor != nil) - [badgeColor release]; - - badgeColor = theColor; - [badgeColor retain]; - } +{ + if(badgeColor != nil) + [badgeColor release]; + + badgeColor = theColor; + [badgeColor retain]; +} - (void)setLabelColor:(NSColor *)theColor; - { - if(labelColor != nil) - [labelColor release]; - - labelColor = theColor; - [labelColor retain]; - } +{ + if(labelColor != nil) + [labelColor release]; + + labelColor = theColor; + [labelColor retain]; +} - (NSColor *)badgeColor - { - return badgeColor; - } +{ + return badgeColor; +} - (NSColor *)labelColor - { - return labelColor; - } +{ + return labelColor; +} #pragma mark - #pragma mark Drawing - (NSImage *)smallBadgeForValue:(unsigned)value //does drawing in it's own special way - { - return [self badgeOfSize:CTSmallBadgeSize forString:[self stringForValue:value]]; - } +{ + return [self badgeOfSize:CTSmallBadgeSize forString:[self stringForValue:value]]; +} - (NSImage *)smallBadgeForString:(NSString *)string - { - return [self badgeOfSize:CTSmallBadgeSize forString:string]; - } +{ + return [self badgeOfSize:CTSmallBadgeSize forString:string]; +} - (NSImage *)largeBadgeForValue:(unsigned)value - { - return [self badgeOfSize:CTLargeBadgeSize forString:[self stringForValue:value]]; - } +{ + return [self badgeOfSize:CTLargeBadgeSize forString:[self stringForValue:value]]; +} - (NSImage *)largeBadgeForString:(NSString *)string - { - return [self badgeOfSize:CTLargeBadgeSize forString:string]; - } +{ + return [self badgeOfSize:CTLargeBadgeSize forString:string]; +} - (NSImage *)badgeOfSize:(float)size forValue:(unsigned)value - { - return [self badgeOfSize:(float)size forString:[self stringForValue:value]]; - } +{ + return [self badgeOfSize:(float)size forString:[self stringForValue:value]]; +} - (NSImage *)badgeOfSize:(float)size forString:(NSString *)string - { - float scaleFactor = 1; - - if(size <= 0) - [NSException raise:NSInvalidArgumentException format:@"%@ %@: size (%f) must be positive", [self class], NSStringFromSelector(_cmd), size]; - else if(size <= CTSmallBadgeSize) - scaleFactor = size/CTSmallBadgeSize; - else - scaleFactor = size/CTLargeBadgeSize; - - //Label stuff ----------------------------------------------- - NSAttributedString *label; - NSSize labelSize; - - if(size <= CTSmallBadgeSize) - label = [self labelForString:string size:CTSmallLabelSize*scaleFactor]; - else - label = [self labelForString:string size:CTLargeLabelSize*scaleFactor]; - - labelSize = [label size]; - - //Badge stuff ----------------------------------------------- - NSImage *badgeImage; //this the image with the gradient fill - NSImage *badgeMask ; //we nock out this mask from the gradient - - NSGradient *badgeGradient = [self badgeGradient]; - - float shadowOpacity, - shadowOffset, - shadowBlurRadius; - - int angle; - - if(size <= CTSmallBadgeSize) - { - shadowOpacity = .6; - shadowOffset = floorf(1*scaleFactor); - shadowBlurRadius = ceilf(1*scaleFactor); - } - else - { - shadowOpacity = .8; - shadowOffset = ceilf(1*scaleFactor); - shadowBlurRadius = ceilf(2*scaleFactor); - } - - if ([label length] <= 3) //Badges have different gradient angles - angle = -45; - else - angle = -30; - - badgeMask = [self badgeMaskOfSize:size length:[label length]]; - - NSSize badgeSize = [badgeMask size]; - NSPoint origin = NSMakePoint(shadowBlurRadius, shadowBlurRadius+shadowOffset); - - badgeImage = [[NSImage alloc] initWithSize:NSMakeSize(badgeSize.width + 2*shadowBlurRadius, //sometimes it needs more - badgeSize.height + 2*shadowBlurRadius - shadowOffset + (size <= CTSmallBadgeSize))]; //space when small - - [badgeImage lockFocus]; - [badgeGradient drawInRect:NSMakeRect(origin.x, origin.y, floorf(badgeSize.width), floorf(badgeSize.height)) angle:angle]; //apply the gradient - [badgeMask compositeToPoint:origin operation: NSCompositeDestinationAtop]; //knock out the badge area - [label drawInRect:NSMakeRect(origin.x+floorf((badgeSize.width-labelSize.width)/2), origin.y+floorf((badgeSize.height-labelSize.height)/2), badgeSize.width, labelSize.height)]; //draw label in center - [badgeImage unlockFocus]; - - - //Final stuff ----------------------------------------------- - NSImage *image = [[NSImage alloc] initWithSize:[badgeImage size]]; - - [image lockFocus]; - [NSGraphicsContext saveGraphicsState]; - NSShadow *theShadow = [[NSShadow alloc] init]; - [theShadow setShadowOffset: NSMakeSize(0,-shadowOffset)]; - [theShadow setShadowBlurRadius:shadowBlurRadius]; - [theShadow setShadowColor:[[NSColor blackColor] colorWithAlphaComponent:shadowOpacity]]; - [theShadow set]; - [theShadow release]; - [badgeImage compositeToPoint:NSZeroPoint operation:NSCompositeSourceOver]; - [NSGraphicsContext restoreGraphicsState]; - [image unlockFocus]; - - [label release]; - [badgeImage release]; - - return [image autorelease]; - } +{ + float scaleFactor = 1; + + if(size <= 0) + [NSException raise:NSInvalidArgumentException format:@"%@ %@: size (%f) must be positive", [self class], NSStringFromSelector(_cmd), size]; + else if(size <= CTSmallBadgeSize) + scaleFactor = size/CTSmallBadgeSize; + else + scaleFactor = size/CTLargeBadgeSize; + + //Label stuff ----------------------------------------------- + NSAttributedString *label; + NSSize labelSize; + + if(size <= CTSmallBadgeSize) + label = [self labelForString:string size:CTSmallLabelSize*scaleFactor]; + else + label = [self labelForString:string size:CTLargeLabelSize*scaleFactor]; + + labelSize = [label size]; + + //Badge stuff ----------------------------------------------- + NSImage *badgeImage; //this the image with the gradient fill + NSImage *badgeMask ; //we nock out this mask from the gradient + + NSGradient *badgeGradient = [self badgeGradient]; + + float shadowOpacity, + shadowOffset, + shadowBlurRadius; + + int angle; + + if(size <= CTSmallBadgeSize) + { + shadowOpacity = .6; + shadowOffset = floorf(1*scaleFactor); + shadowBlurRadius = ceilf(1*scaleFactor); + } + else + { + shadowOpacity = .8; + shadowOffset = ceilf(1*scaleFactor); + shadowBlurRadius = ceilf(2*scaleFactor); + } + + if ([label length] <= 3) //Badges have different gradient angles + angle = -45; + else + angle = -30; + + badgeMask = [self badgeMaskOfSize:size length:[label length]]; + + NSSize badgeSize = [badgeMask size]; + NSPoint origin = NSMakePoint(shadowBlurRadius, shadowBlurRadius+shadowOffset); + + badgeImage = [[NSImage alloc] initWithSize:NSMakeSize(badgeSize.width + 2*shadowBlurRadius, //sometimes it needs more + badgeSize.height + 2*shadowBlurRadius - shadowOffset + (size <= CTSmallBadgeSize))]; //space when small + + [badgeImage lockFocus]; + [badgeGradient drawInRect:NSMakeRect(origin.x, origin.y, floorf(badgeSize.width), floorf(badgeSize.height)) angle:angle]; //apply the gradient + [badgeMask compositeToPoint:origin operation: NSCompositeDestinationAtop]; //knock out the badge area + [label drawInRect:NSMakeRect(origin.x+floorf((badgeSize.width-labelSize.width)/2), origin.y+floorf((badgeSize.height-labelSize.height)/2), badgeSize.width, labelSize.height)]; //draw label in center + [badgeImage unlockFocus]; + + + //Final stuff ----------------------------------------------- + NSImage *image = [[NSImage alloc] initWithSize:[badgeImage size]]; + + [image lockFocus]; + [NSGraphicsContext saveGraphicsState]; + NSShadow *theShadow = [[NSShadow alloc] init]; + [theShadow setShadowOffset: NSMakeSize(0,-shadowOffset)]; + [theShadow setShadowBlurRadius:shadowBlurRadius]; + [theShadow setShadowColor:[[NSColor blackColor] colorWithAlphaComponent:shadowOpacity]]; + [theShadow set]; + [theShadow release]; + [badgeImage compositeToPoint:NSZeroPoint operation:NSCompositeSourceOver]; + [NSGraphicsContext restoreGraphicsState]; + [image unlockFocus]; + + [label release]; + [badgeImage release]; + + return [image autorelease]; +} - (NSImage *)badgeOverlayImageForString:(NSString *)string insetX:(float)dx y:(float)dy; - { - NSImage *badgeImage = [self largeBadgeForString:string]; - NSImage *overlayImage = [[NSImage alloc] initWithSize:NSMakeSize(128,128)]; - - //draw large icon in the upper right corner of the overlay image - [overlayImage lockFocus]; - NSSize badgeSize = [badgeImage size]; - [badgeImage compositeToPoint:NSMakePoint(128-dx-badgeSize.width,128-dy-badgeSize.height) operation:NSCompositeSourceOver]; - [overlayImage unlockFocus]; - - return [overlayImage autorelease]; - } +{ + NSImage *badgeImage = [self largeBadgeForString:string]; + NSImage *overlayImage = [[NSImage alloc] initWithSize:NSMakeSize(128,128)]; + + //draw large icon in the upper right corner of the overlay image + [overlayImage lockFocus]; + NSSize badgeSize = [badgeImage size]; + [badgeImage compositeToPoint:NSMakePoint(128-dx-badgeSize.width,128-dy-badgeSize.height) operation:NSCompositeSourceOver]; + [overlayImage unlockFocus]; + + return [overlayImage autorelease]; +} - (void)badgeApplicationDockIconWithString:(NSString *)string insetX:(float)dx y:(float)dy; - { - NSImage *appIcon = [NSImage imageNamed:@"NSApplicationIcon"]; - NSImage *badgeOverlay = [self badgeOverlayImageForString:string insetX:dx y:dy]; - - //Put the appIcon underneath the badgeOverlay - [badgeOverlay lockFocus]; - [appIcon compositeToPoint:NSZeroPoint operation:NSCompositeDestinationOver]; - [badgeOverlay unlockFocus]; - - [NSApp setApplicationIconImage:badgeOverlay]; - } +{ + NSImage *appIcon = [NSImage imageNamed:@"NSApplicationIcon"]; + NSImage *badgeOverlay = [self badgeOverlayImageForString:string insetX:dx y:dy]; + + //Put the appIcon underneath the badgeOverlay + [badgeOverlay lockFocus]; + [appIcon compositeToPoint:NSZeroPoint operation:NSCompositeDestinationOver]; + [badgeOverlay unlockFocus]; + + [NSApp setApplicationIconImage:badgeOverlay]; +} - (NSImage *)badgeOverlayImageForValue:(unsigned)value insetX:(float)dx y:(float)dy - { - return [self badgeOverlayImageForString:[self stringForValue:value] insetX:dx y:dy]; - } +{ + return [self badgeOverlayImageForString:[self stringForValue:value] insetX:dx y:dy]; +} - (void)badgeApplicationDockIconWithValue:(unsigned)value insetX:(float)dx y:(float)dy - { - [self badgeApplicationDockIconWithString:[self stringForValue:value] insetX:dx y:dy]; - } +{ + [self badgeApplicationDockIconWithString:[self stringForValue:value] insetX:dx y:dy]; +} #pragma mark - #pragma mark Misc. - (NSGradient *)badgeGradient - { - NSGradient *aGradient = [[NSGradient alloc] initWithColorsAndLocations:[self badgeColor], 0.0, - [self badgeColor], 1/3., - [[self badgeColor] shadowWithLevel:1/3.], 1.0, nil]; - - return [aGradient autorelease]; - } +{ + NSGradient *aGradient = [[NSGradient alloc] initWithColorsAndLocations:[self badgeColor], 0.0, + [self badgeColor], 1/3., + [[self badgeColor] shadowWithLevel:1/3.], 1.0, nil]; + + return [aGradient autorelease]; +} - (NSAttributedString *)labelForString:(NSString *)label size:(unsigned)size - { - //set Attributes to use on String --------------------------- - NSFont *labelFont; - - if(size <= CTSmallLabelSize) - labelFont = [NSFont boldSystemFontOfSize:size]; - else - labelFont = [NSFont fontWithName:@"Helvetica-Bold" size:size]; - - NSMutableParagraphStyle *pStyle = [[NSMutableParagraphStyle alloc] init];[pStyle setAlignment:NSCenterTextAlignment]; - NSDictionary *attributes = [[NSDictionary alloc] initWithObjectsAndKeys:[self labelColor], NSForegroundColorAttributeName, - labelFont , NSFontAttributeName , nil]; - [pStyle release]; - - //Label stuff - if([label length] >= 6) //replace with summarized string - ellipses at end and a zero-width space to trick us into using the 5-wide badge - label = [NSString stringWithFormat:@"%@%@", [label substringToIndex:3], [NSString stringWithUTF8String:"\xe2\x80\xa6\xe2\x80\x8b"]]; - - NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:label attributes:attributes]; - [attributes release]; - - return attributedString; - } +{ + //set Attributes to use on String --------------------------- + NSFont *labelFont; + + if(size <= CTSmallLabelSize) + labelFont = [NSFont boldSystemFontOfSize:size]; + else + labelFont = [NSFont fontWithName:@"Helvetica-Bold" size:size]; + + NSMutableParagraphStyle *pStyle = [[NSMutableParagraphStyle alloc] init];[pStyle setAlignment:NSCenterTextAlignment]; + NSDictionary *attributes = [[NSDictionary alloc] initWithObjectsAndKeys:[self labelColor], NSForegroundColorAttributeName, + labelFont , NSFontAttributeName , nil]; + [pStyle release]; + + //Label stuff + if([label length] >= 6) //replace with summarized string - ellipses at end and a zero-width space to trick us into using the 5-wide badge + label = [NSString stringWithFormat:@"%@%@", [label substringToIndex:3], [NSString stringWithUTF8String:"\xe2\x80\xa6\xe2\x80\x8b"]]; + + NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:label attributes:attributes]; + [attributes release]; + + return attributedString; +} - (NSString *)stringForValue:(unsigned)value - { - if(value < 100000) - return [NSString stringWithFormat:@"%u", value]; - else //give infinity - return [NSString stringWithUTF8String:"\xe2\x88\x9e"]; - } +{ + if(value < 100000) + return [NSString stringWithFormat:@"%u", value]; + else //give infinity + return [NSString stringWithUTF8String:"\xe2\x88\x9e"]; +} - (NSImage *)badgeMaskOfSize:(float)size length:(NSUInteger)length; - { - NSImage *badgeMask; - - if(length <=2) - badgeMask = [NSImage imageNamed:@"CTBadge_1.pdf"]; - else if(length <=3) - badgeMask = [NSImage imageNamed:@"CTBadge_3.pdf"]; - else if(length <=4) - badgeMask = [NSImage imageNamed:@"CTBadge_4.pdf"]; - else - badgeMask = [NSImage imageNamed:@"CTBadge_5.pdf"]; - - if(size > 0 && size != [badgeMask size].height) - { - [badgeMask setName:nil]; - [badgeMask setScalesWhenResized:YES]; - [badgeMask setSize:NSMakeSize([badgeMask size].width*(size/[badgeMask size].height), size)]; - } - - return badgeMask; - } +{ + NSImage *badgeMask; + + if(length <=2) + badgeMask = [NSImage imageNamed:@"CTBadge_1.pdf"]; + else if(length <=3) + badgeMask = [NSImage imageNamed:@"CTBadge_3.pdf"]; + else if(length <=4) + badgeMask = [NSImage imageNamed:@"CTBadge_4.pdf"]; + else + badgeMask = [NSImage imageNamed:@"CTBadge_5.pdf"]; + + if(size > 0 && size != [badgeMask size].height) + { + [badgeMask setName:nil]; + [badgeMask setScalesWhenResized:YES]; + [badgeMask setSize:NSMakeSize([badgeMask size].width*(size/[badgeMask size].height), size)]; + } + + return badgeMask; +} @end diff --git a/CTBadge.xcodeproj/project.pbxproj b/CTBadge.xcodeproj/project.pbxproj index f1ddd62..97fc950 100644 --- a/CTBadge.xcodeproj/project.pbxproj +++ b/CTBadge.xcodeproj/project.pbxproj @@ -169,9 +169,16 @@ /* Begin PBXProject section */ 29B97313FDCFA39411CA2CEA /* Project object */ = { isa = PBXProject; + attributes = { + }; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "CTBadge" */; compatibilityVersion = "Xcode 2.4"; + developmentRegion = en; hasScannedForEncodings = 1; + knownRegions = ( + en, + English, + ); mainGroup = 29B97314FDCFA39411CA2CEA /* CTBadge */; projectDirPath = ""; projectRoot = ""; @@ -261,24 +268,22 @@ C01FCF4F08A954540054247B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1)"; - ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1 = "ppc i386"; + ARCHS = "$(ARCHS_STANDARD)"; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; PREBINDING = NO; - SDKROOT = /Developer/SDKs/MacOSX10.5.sdk; + SDKROOT = macosx; }; name = Debug; }; C01FCF5008A954540054247B /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1)"; - ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1 = "ppc i386"; + ARCHS = "$(ARCHS_STANDARD)"; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; PREBINDING = NO; - SDKROOT = /Developer/SDKs/MacOSX10.5.sdk; + SDKROOT = macosx; }; name = Release; }; diff --git a/CTBadge.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/CTBadge.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/CTBadge.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/CTBadge.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/CTBadge.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/CTBadge.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/CTBadge.xcodeproj/project.xcworkspace/xcuserdata/shamyl.xcuserdatad/UserInterfaceState.xcuserstate b/CTBadge.xcodeproj/project.xcworkspace/xcuserdata/shamyl.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..e68a8687f816653817c1770d1e217a4847df59da GIT binary patch literal 43139 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 V_77oBoA%F*MgL8jQBh(0{{i6f^@jie literal 0 HcmV?d00001 diff --git a/CTBadge.xcodeproj/xcuserdata/shamyl.xcuserdatad/xcschemes/xcschememanagement.plist b/CTBadge.xcodeproj/xcuserdata/shamyl.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..74b576d --- /dev/null +++ b/CTBadge.xcodeproj/xcuserdata/shamyl.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + CTBadge.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/MainController.h b/MainController.h index 937d85d..2fc6f58 100644 --- a/MainController.h +++ b/MainController.h @@ -5,14 +5,14 @@ #import "CTBadge.h" @interface MainController : NSObject - { - CTBadge *myBadge; - - IBOutlet id scroller; - - IBOutlet id largeBadgeView; - IBOutlet id smallBadgeView; - } +{ + CTBadge *myBadge; + + IBOutlet id scroller; + + IBOutlet id largeBadgeView; + IBOutlet id smallBadgeView; +} - (IBAction)setBadgeValue:(id)sender; - (IBAction)setBadgeColor:(id)sender; diff --git a/MainController.m b/MainController.m index 18fb033..92a625b 100644 --- a/MainController.m +++ b/MainController.m @@ -3,63 +3,62 @@ @implementation MainController - (void)awakeFromNib - { - myBadge = [[CTBadge alloc] init]; - [self setBadgeValue:scroller]; - [[NSColorPanel sharedColorPanel] setShowsAlpha:YES]; - } +{ + myBadge = [[CTBadge alloc] init]; + [self setBadgeValue:scroller]; + [[NSColorPanel sharedColorPanel] setShowsAlpha:YES]; +} - (void)windowWillClose:(NSNotification *)aNotification - { - RestoreApplicationDockTileImage(); - [NSApp terminate:self]; - } +{ + [NSApp terminate:self]; +} - (IBAction)setBadgeValue:(id)sender - { - int value = [sender intValue]; - - [largeBadgeView setImage:[myBadge largeBadgeForValue:value]]; - [smallBadgeView setImage:[myBadge smallBadgeForValue:value]]; - [myBadge badgeApplicationDockIconWithValue:value insetX:3 y:0]; - - //[[[myBadge largeBadgeForValue:value] TIFFRepresentation] writeToFile:@"/tmp/badge.tif" atomically:NO]; - } +{ + int value = [sender intValue]; + + [largeBadgeView setImage:[myBadge largeBadgeForValue:value]]; + [smallBadgeView setImage:[myBadge smallBadgeForValue:value]]; + [myBadge badgeApplicationDockIconWithValue:value insetX:3 y:0]; + + //[[[myBadge largeBadgeForValue:value] TIFFRepresentation] writeToFile:@"/tmp/badge.tif" atomically:NO]; +} - (IBAction)setBadgeColor:(id)sender - { - [myBadge setBadgeColor:[sender color]]; - [self setBadgeValue:scroller]; - } +{ + [myBadge setBadgeColor:[sender color]]; + [self setBadgeValue:scroller]; +} - (IBAction)setLabelColor:(id)sender - { - [myBadge setLabelColor:[sender color]]; - [self setBadgeValue:scroller]; - } +{ + [myBadge setLabelColor:[sender color]]; + [self setBadgeValue:scroller]; +} - (IBAction)setApplicationIcon:(id)sender - { - NSOpenPanel *openPanel = [NSOpenPanel openPanel]; - - int result = [openPanel runModalForDirectory:NSHomeDirectory() file:nil types:[NSArray arrayWithObject:@"icns"]]; - - if(result == NSOKButton) - { - [self application:nil openFile:[openPanel filename]]; - } - } +{ + NSOpenPanel *openPanel = [NSOpenPanel openPanel]; + + int result = [openPanel runModalForDirectory:NSHomeDirectory() file:nil types:[NSArray arrayWithObject:@"icns"]]; + + if(result == NSOKButton) + { + [self application:nil openFile:[openPanel filename]]; + } +} - (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename - { - NSImage *newAppIcon = [[NSImage alloc] initWithContentsOfFile:filename]; - [(NSImage *)[NSImage imageNamed:@"NSApplicationIcon"] setName:nil]; - [newAppIcon setName:@"NSApplicationIcon"]; - - [self setBadgeValue:scroller]; - return YES; - } +{ + NSImage *newAppIcon = [[NSImage alloc] initWithContentsOfFile:filename]; + [(NSImage *)[NSImage imageNamed:@"NSApplicationIcon"] setName:nil]; + [newAppIcon setName:@"NSApplicationIcon"]; + + [self setBadgeValue:scroller]; + return YES; +} @end From 8ad9ef04a89d264248b379cc4040cca00f20e8cb Mon Sep 17 00:00:00 2001 From: Shamyl Zakariya Date: Tue, 14 May 2019 07:50:36 -0700 Subject: [PATCH 2/4] Fix deprecations, modernize Xcode setup, etc --- .DS_Store | Bin 0 -> 6148 bytes Base.lproj/MainMenu.nib/designable.nib | 2194 +++++++++++++++++ Base.lproj/MainMenu.nib/keyedobjects.nib | Bin 0 -> 22913 bytes CTBadge.m | 19 +- CTBadge.xcodeproj/project.pbxproj | 72 +- .../UserInterfaceState.xcuserstate | Bin 43139 -> 32873 bytes English.lproj/MainMenu.nib/classes.nib | 18 - English.lproj/MainMenu.nib/info.nib | 23 - English.lproj/MainMenu.nib/keyedobjects.nib | Bin 18438 -> 0 bytes Info.plist | 4 +- MainController.h | 2 +- MainController.m | 17 +- {English.lproj => en.lproj}/InfoPlist.strings | Bin 13 files changed, 2280 insertions(+), 69 deletions(-) create mode 100644 .DS_Store create mode 100644 Base.lproj/MainMenu.nib/designable.nib create mode 100644 Base.lproj/MainMenu.nib/keyedobjects.nib delete mode 100644 English.lproj/MainMenu.nib/classes.nib delete mode 100644 English.lproj/MainMenu.nib/info.nib delete mode 100644 English.lproj/MainMenu.nib/keyedobjects.nib rename {English.lproj => en.lproj}/InfoPlist.strings (100%) diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..b45456e92d3a5aaa037fd9caa1a8be823356323b GIT binary patch literal 6148 zcmeHKJ5B>J5Pc4-C<1{(1?8R~A~#sVMidbh902lB0@|<<0f}-84nRjm!xgvyl!z

MwTyb>aRfo@~<)Zvtdy;DtO~=_MeUUVWk4C2Fd*kc$R-#$%q-?d2fGrdVh;pGIF`4BVCXP%m|3KS zVr(eUh8p+8FgBd}(D_9UGmADHCeO@uTxR25C??NNeVDt$L>9GI29yDxfi*j=%KhJ* z|Ni%bbfyd_11rUV3F70p!7aJFb!u~R*M@ATY$D>9S + + + 101400 + 14490.70 + 1671.40.119 + 918.40 + + com.apple.InterfaceBuilder.CocoaPlugin + 14490.70 + + + NSButton + NSButtonCell + NSColorWell + NSCustomObject + NSImageCell + NSImageView + NSMenu + NSMenuItem + NSSlider + NSSliderCell + NSTextField + NSTextFieldCell + NSView + NSWindowTemplate + + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + NSApplication + + + + FirstResponder + + + NSApplication + + + 15 + 2 + {{654, 552}, {292, 162}} + 1886912512 + CTBadge + NSWindow + + View + + + + + + 256 + + + + + 278 + + + Apple PDF pasteboard type + Apple PICT pasteboard type + Apple PNG pasteboard type + NSFilenamesPboardType + NeXT Encapsulated PostScript v1.2 pasteboard type + NeXT TIFF v4.0 pasteboard type + com.apple.NSFilePromiseItemMetaData + com.apple.pasteboard.promised-file-content-type + dyn.ah62d4rv4gu8yc6durvwwa3xmrvw1gkdusm1044pxqyuha2pxsvw0e55bsmwca7d3sbwu + + {{17, 17}, {128, 128}} + + + YES + + 134217728 + 33554432 + 0 + 2 + 2 + NO + + NO + YES + + + + + + 279 + + + Apple PDF pasteboard type + Apple PICT pasteboard type + Apple PNG pasteboard type + NSFilenamesPboardType + NeXT Encapsulated PostScript v1.2 pasteboard type + NeXT TIFF v4.0 pasteboard type + com.apple.NSFilePromiseItemMetaData + com.apple.pasteboard.promised-file-content-type + dyn.ah62d4rv4gu8yc6durvwwa3xmrvw1gkdusm1044pxqyuha2pxsvw0e55bsmwca7d3sbwu + + {{147, 17}, {128, 128}} + + + YES + + 134217728 + 33554432 + 0 + 2 + 2 + NO + + NO + YES + + + + {292, 162} + + + + {{0, 0}, {1680, 1027}} + {213, 129} + {3.4028200000000001e+38, 3.4028200000000001e+38} + YES + + + MainMenu + + + + NewApplication + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + + NewApplication + + + + About CTBadge + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Preferences… + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + + + Services + + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide CTBadge + h + 1048576 + 2147483647 + + + + + + Hide Others + h + 1572864 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit CTBadge + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + File + + 1048576 + 2147483647 + + + submenuAction: + + + + File + + + + + New + n + 1048576 + 2147483647 + + + + + + Open... + o + 1048576 + 2147483647 + + + + + + Open Recent + + 1048576 + 2147483647 + + + submenuAction: + + + + Open Recent + + + + + Clear Menu + + 1048576 + 2147483647 + + + + + _NSRecentDocumentsMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Close + w + 1048576 + 2147483647 + + + + + + Save + s + 1048576 + 2147483647 + + + + + + Save As… + S + 1048576 + 2147483647 + + + + + + Revert + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Page Setup… + P + 1048576 + 2147483647 + + + + + + Print… + p + 1048576 + 2147483647 + + + + + + + + + Edit + + 1048576 + 2147483647 + + + submenuAction: + + + + Edit + + + + + Undo + z + 1048576 + 2147483647 + + + + + + Redo + Z + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Cut + x + 1048576 + 2147483647 + + + + + + Copy + c + 1048576 + 2147483647 + + + + + + Paste + v + 1048576 + 2147483647 + + + + + + Paste and Match Style + V + 1572864 + 2147483647 + + + + + + Delete + + 1048576 + 2147483647 + + + + + + Select All + a + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Find + + 1048576 + 2147483647 + + + submenuAction: + + + + Find + + + + + Find… + f + 1048576 + 2147483647 + + + 1 + + + + Find Next + g + 1048576 + 2147483647 + + + 2 + + + + Find Previous + G + 1048576 + 2147483647 + + + 3 + + + + Use Selection for Find + e + 1048576 + 2147483647 + + + 7 + + + + Jump to Selection + j + 1048576 + 2147483647 + + + + + + + + + Spelling + + 1048576 + 2147483647 + + + submenuAction: + + + Spelling + + + + Spelling… + : + 1048576 + 2147483647 + + + + + + Check Spelling + ; + 1048576 + 2147483647 + + + + + + Check Spelling as You Type + + 1048576 + 2147483647 + + + + + + + + + + + + Window + + 1048576 + 2147483647 + + + submenuAction: + + + + Window + + + + + Minimize + m + 1048576 + 2147483647 + + + + + + Zoom + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Bring All to Front + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + _NSMainMenu + + + MainController + + + 19 + 2 + {{654, 434}, {292, 101}} + -260571136 + Settings + + NSPanel + + + View + + + + + + 256 + + + + + 290 + + {{57, 63}, {217, 21}} + + + YES + + 67371264 + 0 + + + + + Helvetica + 12 + 16 + + + 10000 + 0.0 + 0.0 + 0.0 + 0 + 1 + NO + NO + + NO + + + + + 256 + {{17, 67}, {37, 14}} + + + YES + + 67108864 + 272629760 + Value: + + YES + 11 + 3100 + + + + 6 + System + controlColor + + 3 + MC42MDI3MTUzNzMAA + + 9 + 0 + + AAARaGFwcGwCAAAAbW50ckdSQVlYWVogB9wACAAXAA8ALgAPYWNzcEFQUEwAAAAAbm9uZQAAAAAAAAAA +AAAAAAAAAAAAAPbWAAEAAAAA0y1hcHBsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAFZGVzYwAAAMAAAAB5ZHNjbQAAATwAAAfoY3BydAAACSQAAAAjd3RwdAAACUgAAAAU +a1RSQwAACVwAAAgMZGVzYwAAAAAAAAAfR2VuZXJpYyBHcmF5IEdhbW1hIDIuMiBQcm9maWxlAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAG1sdWMAAAAAAAAAHwAAAAxza1NLAAAALgAAAYRkYURLAAAAOAAAAbJjYUVT +AAAAOAAAAep2aVZOAAAAQAAAAiJwdEJSAAAASgAAAmJ1a1VBAAAALAAAAqxmckZVAAAAPgAAAthodUhV +AAAANAAAAxZ6aFRXAAAAHgAAA0puYk5PAAAAOgAAA2hjc0NaAAAAKAAAA6JoZUlMAAAAJAAAA8ppdElU +AAAATgAAA+5yb1JPAAAAKgAABDxkZURFAAAATgAABGZrb0tSAAAAIgAABLRzdlNFAAAAOAAAAbJ6aENO +AAAAHgAABNZqYUpQAAAAJgAABPRlbEdSAAAAKgAABRpwdFBPAAAAUgAABURubE5MAAAAQAAABZZlc0VT +AAAATAAABdZ0aFRIAAAAMgAABiJ0clRSAAAAJAAABlRmaUZJAAAARgAABnhockhSAAAAPgAABr5wbFBM +AAAASgAABvxydVJVAAAAOgAAB0ZlblVTAAAAPAAAB4BhckVHAAAALAAAB7wAVgFhAGUAbwBiAGUAYwBu +AOEAIABzAGkAdgDhACAAZwBhAG0AYQAgADIALAAyAEcAZQBuAGUAcgBpAHMAawAgAGcAcgDlACAAMgAs +ADIAIABnAGEAbQBtAGEAcAByAG8AZgBpAGwARwBhAG0AbQBhACAAZABlACAAZwByAGkAcwBvAHMAIABn +AGUAbgDoAHIAaQBjAGEAIAAyAC4AMgBDHqUAdQAgAGgA7ABuAGgAIABNAOAAdQAgAHgA4QBtACAAQwBo +AHUAbgBnACAARwBhAG0AbQBhACAAMgAuADIAUABlAHIAZgBpAGwAIABHAGUAbgDpAHIAaQBjAG8AIABk +AGEAIABHAGEAbQBhACAAZABlACAAQwBpAG4AegBhAHMAIAAyACwAMgQXBDAEMwQwBDsETAQ9BDAAIABH +AHIAYQB5AC0EMwQwBDwEMAAgADIALgAyAFAAcgBvAGYAaQBsACAAZwDpAG4A6QByAGkAcQB1AGUAIABn +AHIAaQBzACAAZwBhAG0AbQBhACAAMgAsADIAwQBsAHQAYQBsAOEAbgBvAHMAIABzAHoA/AByAGsAZQAg +AGcAYQBtAG0AYQAgADIALgAykBp1KHBwlo5RSV6mACAAMgAuADIAIIJyX2ljz4/wAEcAZQBuAGUAcgBp +AHMAawAgAGcAcgDlACAAZwBhAG0AbQBhACAAMgAsADIALQBwAHIAbwBmAGkAbABPAGIAZQBjAG4A4QAg +AWEAZQBkAOEAIABnAGEAbQBhACAAMgAuADIF0gXQBd4F1AAgBdAF5AXVBegAIAXbBdwF3AXZACAAMgAu +ADIAUAByAG8AZgBpAGwAbwAgAGcAcgBpAGcAaQBvACAAZwBlAG4AZQByAGkAYwBvACAAZABlAGwAbABh +ACAAZwBhAG0AbQBhACAAMgAsADIARwBhAG0AYQAgAGcAcgBpACAAZwBlAG4AZQByAGkAYwEDACAAMgAs +ADIAQQBsAGwAZwBlAG0AZQBpAG4AZQBzACAARwByAGEAdQBzAHQAdQBmAGUAbgAtAFAAcgBvAGYAaQBs +ACAARwBhAG0AbQBhACAAMgAsADLHfLwYACDWjMDJACCsELnIACAAMgAuADIAINUEuFzTDMd8Zm6QGnBw +XqZ8+2VwACAAMgAuADIAIGPPj/Blh072TgCCLDCwMOwwpDCsMPMw3gAgADIALgAyACAw1zDtMNUwoTCk +MOsDkwO1A70DuQO6A8wAIAOTA7oDwQO5ACADkwOsA7wDvAOxACAAMgAuADIAUABlAHIAZgBpAGwAIABn +AGUAbgDpAHIAaQBjAG8AIABkAGUAIABjAGkAbgB6AGUAbgB0AG8AcwAgAGQAYQAgAEcAYQBtAG0AYQAg +ADIALAAyAEEAbABnAGUAbQBlAGUAbgAgAGcAcgBpAGoAcwAgAGcAYQBtAG0AYQAgADIALAAyAC0AcABy +AG8AZgBpAGUAbABQAGUAcgBmAGkAbAAgAGcAZQBuAOkAcgBpAGMAbwAgAGQAZQAgAGcAYQBtAG0AYQAg +AGQAZQAgAGcAcgBpAHMAZQBzACAAMgAsADIOIw4xDgcOKg41DkEOAQ4hDiEOMg5ADgEOIw4iDkwOFw4x +DkgOJw5EDhsAIAAyAC4AMgBHAGUAbgBlAGwAIABHAHIAaQAgAEcAYQBtAGEAIAAyACwAMgBZAGwAZQBp +AG4AZQBuACAAaABhAHIAbQBhAGEAbgAgAGcAYQBtAG0AYQAgADIALAAyACAALQBwAHIAbwBmAGkAaQBs +AGkARwBlAG4AZQByAGkBDQBrAGkAIABHAHIAYQB5ACAARwBhAG0AbQBhACAAMgAuADIAIABwAHIAbwBm +AGkAbABVAG4AaQB3AGUAcgBzAGEAbABuAHkAIABwAHIAbwBmAGkAbAAgAHMAegBhAHIAbwFbAGMAaQAg +AGcAYQBtAG0AYQAgADIALAAyBB4EMQRJBDAETwAgBEEENQRABDAETwAgBDMEMAQ8BDwEMAAgADIALAAy +AC0EPwRABD4ERAQ4BDsETABHAGUAbgBlAHIAaQBjACAARwByAGEAeQAgAEcAYQBtAG0AYQAgADIALgAy +ACAAUAByAG8AZgBpAGwAZQY6BicGRQYnACAAMgAuADIAIAZEBkgGRgAgBjEGRQYnBi8GSgAgBjkGJwZF +dGV4dAAAAABDb3B5cmlnaHQgQXBwbGUgSW5jLiwgMjAxMgAAWFlaIAAAAAAAAPNRAAEAAAABFsxjdXJ2 +AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8 +AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZ +AR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHy +AfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMW +AyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSM +BJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZ +BmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiC +CJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsL +CyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34 +DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFP +EW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUS +FTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlF +GWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3s +HhYeQB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMK +IzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSii +KNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63 +Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVN +NYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8Jzxl +PKQ84z0iPWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQD +REdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwq +THJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJUj1Tb +VShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4a +XmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fp +aD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJL +cqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1B +faF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASIaYjO +iTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6kuOTTZO2lCCUipT0 +lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2 +oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8W +r4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70V +vY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2 +zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr7 +24DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl +63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3 +/Af8mP0p/br+S/7c/23//w + + + 0.6666666667 1 + + + + 6 + System + controlTextColor + + 3 + MAA + + 0 1 + + + + NO + 2 + + + + + 256 + + + NSColor pasteboard type + + + {{90, 42}, {41, 20}} + + + YES + NO + YES + + 3 + MQA + + + + + + 256 + {{17, 45}, {68, 14}} + + + YES + + 67108864 + 272629760 + Label Color: + + + + + + NO + 2 + + + + + 256 + {{153, 45}, {73, 14}} + + + YES + + 67108864 + 272629760 + Badge Color: + + + + + + NO + 2 + + + + + 256 + + + NSColor pasteboard type + + + {{231, 42}, {41, 20}} + + + YES + NO + YES + + 1 + MSAwIDAAA + + + + + + 256 + + {{54, 9}, {183, 28}} + + + YES + + 67108864 + 134348800 + Select Dock Icon... + + + -2038284256 + 1 + + LucidaGrande + 11 + 16 + + + + + + 200 + 25 + + NO + + + {292, 101} + + + + {{0, 0}, {1680, 1027}} + {292, 98} + {3.4028200000000001e+38, 3.4028200000000001e+38} + YES + + + + + + + terminate: + + + + 139 + + + + orderFrontStandardAboutPanel: + + + + 142 + + + + hideOtherApplications: + + + + 146 + + + + hide: + + + + 152 + + + + unhideAllApplications: + + + + 153 + + + + delegate + + + + 243 + + + + performMiniaturize: + + + + 37 + + + + arrangeInFront: + + + + 39 + + + + print: + + + + 86 + + + + runPageLayout: + + + + 87 + + + + clearRecentDocuments: + + + + 127 + + + + cut: + + + + 175 + + + + paste: + + + + 176 + + + + redo: + + + + 178 + + + + selectAll: + + + + 179 + + + + undo: + + + + 180 + + + + copy: + + + + 181 + + + + showGuessPanel: + + + + 188 + + + + checkSpelling: + + + + 190 + + + + toggleContinuousSpellChecking: + + + + 192 + + + + performClose: + + + + 193 + + + + delete: + + + + 195 + + + + performZoom: + + + + 198 + + + + performFindPanelAction: + + + + 199 + + + + performFindPanelAction: + + + + 200 + + + + performFindPanelAction: + + + + 201 + + + + performFindPanelAction: + + + + 202 + + + + centerSelectionInVisibleArea: + + + + 203 + + + + pasteAsPlainText: + + + + 205 + + + + delegate + + + + 215 + + + + largeBadgeView + + + + 211 + + + + smallBadgeView + + + + 212 + + + + scroller + + + + 236 + + + + setBadgeValue: + + + + 237 + + + + setLabelColor: + + + + 238 + + + + setBadgeColor: + + + + 239 + + + + setApplicationIcon: + + + + 240 + + + + setApplicationIcon: + + + + 242 + + + + settingsWindow + + + + 252 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + 21 + + + + + + Window + + + 2 + + + + + + + + + 208 + + + + + + + + 209 + + + + + + + + 29 + + + + + + + + + MainMenu + + + 19 + + + + + + + + 24 + + + + + + + + + + + 5 + + + + + 23 + + + + + 92 + + + + + 197 + + + + + 56 + + + + + + + + 57 + + + + + + + + + + + + + + + + + + 58 + + + + + 129 + + + + + 131 + + + + + + + + 130 + + + + + 134 + + + + + 136 + + + + + 143 + + + + + 144 + + + + + 145 + + + + + 149 + + + + + 150 + + + + + 196 + + + + + 83 + + + + + + + + 81 + + + + + + + + + + + + + + + + + + 72 + + + + + 73 + + + + + 74 + + + + + 75 + + + + + 77 + + + + + 78 + + + + + 79 + + + + + 80 + + + + + 82 + + + + + 112 + + + + + 124 + + + + + + + + 125 + + + + + + + + 126 + + + + + 163 + + + + + + + + 169 + + + + + + + + + + + + + + + + + + + 156 + + + + + 157 + + + + + 158 + + + + + 160 + + + + + 164 + + + + + 168 + + + + + + + + 159 + + + + + + + + + + + + 154 + + + + + 155 + + + + + 161 + + + + + 162 + + + + + 167 + + + + + 171 + + + + + 172 + + + + + 173 + + + + + 174 + + + + + 184 + + + + + + + + 185 + + + + + + + + + + 187 + + + + + 189 + + + + + 191 + + + + + 204 + + + + + 206 + + + MainController + + + 226 + + + + + + Panel + + + 227 + + + + + + + + + + + + + + 228 + + + + + + + + 231 + + + + + + + + 232 + + + + + 233 + + + + + + + + 234 + + + + + + + + 235 + + + + + 241 + + + + + + + + 245 + + + + + 246 + + + + + 247 + + + + + 248 + + + + + 249 + + + + + 250 + + + + + 251 + + + + + -3 + + + Application + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + {139, 149.5} + com.apple.InterfaceBuilder.CocoaPlugin + + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + 252 + + + + + MainController + NSObject + + id + id + id + id + + + + setApplicationIcon: + id + + + setBadgeColor: + id + + + setBadgeValue: + id + + + setLabelColor: + id + + + + id + id + NSWindow + id + + + + largeBadgeView + id + + + scroller + id + + + settingsWindow + NSWindow + + + smallBadgeView + id + + + + IBProjectSource + ../MainController.h + + + + MainController + + id + id + id + id + + + + setApplicationIcon: + id + + + setBadgeColor: + id + + + setBadgeValue: + id + + + setLabelColor: + id + + + + IBProjectSource + ../MainController.m + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + 3 + + {12, 12} + {10, 2} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Base.lproj/MainMenu.nib/keyedobjects.nib b/Base.lproj/MainMenu.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..7be296e4d939d5be7ddf9360402fc7575b9ad506 GIT binary patch literal 22913 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 GNB@6DrK1Y~ literal 0 HcmV?d00001 diff --git a/CTBadge.m b/CTBadge.m index 889ae48..801e699 100644 --- a/CTBadge.m +++ b/CTBadge.m @@ -186,7 +186,7 @@ - (NSImage *)badgeOfSize:(float)size forString:(NSString *)string [badgeImage lockFocus]; [badgeGradient drawInRect:NSMakeRect(origin.x, origin.y, floorf(badgeSize.width), floorf(badgeSize.height)) angle:angle]; //apply the gradient - [badgeMask compositeToPoint:origin operation: NSCompositeDestinationAtop]; //knock out the badge area + [badgeMask drawAtPoint:origin fromRect:NSMakeRect(0,0,badgeMask.size.width, badgeMask.size.height) operation:NSCompositingOperationDestinationAtop fraction:1]; [label drawInRect:NSMakeRect(origin.x+floorf((badgeSize.width-labelSize.width)/2), origin.y+floorf((badgeSize.height-labelSize.height)/2), badgeSize.width, labelSize.height)]; //draw label in center [badgeImage unlockFocus]; @@ -202,7 +202,9 @@ - (NSImage *)badgeOfSize:(float)size forString:(NSString *)string [theShadow setShadowColor:[[NSColor blackColor] colorWithAlphaComponent:shadowOpacity]]; [theShadow set]; [theShadow release]; - [badgeImage compositeToPoint:NSZeroPoint operation:NSCompositeSourceOver]; + + [badgeImage drawAtPoint:NSZeroPoint fromRect:NSMakeRect(0,0,badgeImage.size.width, badgeImage.size.height) operation:NSCompositingOperationSourceOver fraction:1]; + [NSGraphicsContext restoreGraphicsState]; [image unlockFocus]; @@ -221,7 +223,11 @@ - (NSImage *)badgeOverlayImageForString:(NSString *)string insetX:(float)dx y:(f //draw large icon in the upper right corner of the overlay image [overlayImage lockFocus]; NSSize badgeSize = [badgeImage size]; - [badgeImage compositeToPoint:NSMakePoint(128-dx-badgeSize.width,128-dy-badgeSize.height) operation:NSCompositeSourceOver]; + + [badgeImage drawAtPoint:NSMakePoint(128-dx-badgeSize.width,128-dy-badgeSize.height) + fromRect:NSMakeRect(0, 0, badgeImage.size.width, badgeImage.size.height) + operation:NSCompositingOperationSourceOver fraction:1]; + [overlayImage unlockFocus]; return [overlayImage autorelease]; @@ -234,7 +240,9 @@ - (void)badgeApplicationDockIconWithString:(NSString *)string insetX:(float)dx y //Put the appIcon underneath the badgeOverlay [badgeOverlay lockFocus]; - [appIcon compositeToPoint:NSZeroPoint operation:NSCompositeDestinationOver]; + + [appIcon drawAtPoint:NSZeroPoint fromRect:NSMakeRect(0,0,appIcon.size.width, appIcon.size.height) operation:NSCompositingOperationDestinationOver fraction:1]; + [badgeOverlay unlockFocus]; [NSApp setApplicationIconImage:badgeOverlay]; @@ -272,7 +280,7 @@ - (NSAttributedString *)labelForString:(NSString *)label size:(unsigned)size else labelFont = [NSFont fontWithName:@"Helvetica-Bold" size:size]; - NSMutableParagraphStyle *pStyle = [[NSMutableParagraphStyle alloc] init];[pStyle setAlignment:NSCenterTextAlignment]; + NSMutableParagraphStyle *pStyle = [[NSMutableParagraphStyle alloc] init];[pStyle setAlignment:NSTextAlignmentCenter]; NSDictionary *attributes = [[NSDictionary alloc] initWithObjectsAndKeys:[self labelColor], NSForegroundColorAttributeName, labelFont , NSFontAttributeName , nil]; [pStyle release]; @@ -311,7 +319,6 @@ - (NSImage *)badgeMaskOfSize:(float)size length:(NSUInteger)length; if(size > 0 && size != [badgeMask size].height) { [badgeMask setName:nil]; - [badgeMask setScalesWhenResized:YES]; [badgeMask setSize:NSMakeSize([badgeMask size].width*(size/[badgeMask size].height), size)]; } diff --git a/CTBadge.xcodeproj/project.pbxproj b/CTBadge.xcodeproj/project.pbxproj index 97fc950..8f6353b 100644 --- a/CTBadge.xcodeproj/project.pbxproj +++ b/CTBadge.xcodeproj/project.pbxproj @@ -21,13 +21,13 @@ /* End PBXBuildFile section */ /* Begin PBXFileReference section */ - 089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 29B97319FDCFA39411CA2CEA /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/MainMenu.nib; sourceTree = ""; }; 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; + 63608AFD228B0D090062CD4C /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + 63608AFF228B0D0D0062CD4C /* Base */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = Base; path = Base.lproj/MainMenu.nib; sourceTree = ""; }; 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; 8D1107320486CEB800E47090 /* CTBadge.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CTBadge.app; sourceTree = BUILT_PRODUCTS_DIR; }; A83817A9097E940700EAAB56 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = ""; }; @@ -170,6 +170,7 @@ 29B97313FDCFA39411CA2CEA /* Project object */ = { isa = PBXProject; attributes = { + LastUpgradeCheck = 1020; }; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "CTBadge" */; compatibilityVersion = "Xcode 2.4"; @@ -177,7 +178,7 @@ hasScannedForEncodings = 1; knownRegions = ( en, - English, + Base, ); mainGroup = 29B97314FDCFA39411CA2CEA /* CTBadge */; projectDirPath = ""; @@ -221,7 +222,7 @@ 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = { isa = PBXVariantGroup; children = ( - 089C165DFE840E0CC02AAC07 /* English */, + 63608AFD228B0D090062CD4C /* en */, ); name = InfoPlist.strings; sourceTree = ""; @@ -229,7 +230,7 @@ 29B97318FDCFA39411CA2CEA /* MainMenu.nib */ = { isa = PBXVariantGroup; children = ( - 29B97319FDCFA39411CA2CEA /* English */, + 63608AFF228B0D0D0062CD4C /* Base */, ); name = MainMenu.nib; sourceTree = ""; @@ -240,13 +241,14 @@ C01FCF4B08A954540054247B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_OBJC_WEAK = YES; COPY_PHASE_STRIP = NO; GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_MODEL_TUNING = G5; GCC_OPTIMIZATION_LEVEL = 0; INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Applications"; + PRODUCT_BUNDLE_IDENTIFIER = com.cotingent.CTBadge; PRODUCT_NAME = CTBadge; WRAPPER_EXTENSION = app; ZERO_LINK = YES; @@ -256,10 +258,12 @@ C01FCF4C08A954540054247B /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_OBJC_WEAK = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_MODEL_TUNING = G5; INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Applications"; + PRODUCT_BUNDLE_IDENTIFIER = com.cotingent.CTBadge; PRODUCT_NAME = CTBadge; WRAPPER_EXTENSION = app; }; @@ -268,10 +272,35 @@ C01FCF4F08A954540054247B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD)"; + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - PREBINDING = NO; + ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; }; name = Debug; @@ -279,10 +308,33 @@ C01FCF5008A954540054247B /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD)"; + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - PREBINDING = NO; SDKROOT = macosx; }; name = Release; diff --git a/CTBadge.xcodeproj/project.xcworkspace/xcuserdata/shamyl.xcuserdatad/UserInterfaceState.xcuserstate b/CTBadge.xcodeproj/project.xcworkspace/xcuserdata/shamyl.xcuserdatad/UserInterfaceState.xcuserstate index e68a8687f816653817c1770d1e217a4847df59da..98ff6c122ae5e000359d01153d37667287b90c60 100644 GIT binary patch literal 32873 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 V_77oBoA%F*MgL8jQBh(0{{i6f^@jie diff --git a/English.lproj/MainMenu.nib/classes.nib b/English.lproj/MainMenu.nib/classes.nib deleted file mode 100644 index 4f27d00..0000000 --- a/English.lproj/MainMenu.nib/classes.nib +++ /dev/null @@ -1,18 +0,0 @@ -{ - IBClasses = ( - {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, - { - ACTIONS = { - setApplicationIcon = id; - setBadgeColor = id; - setBadgeValue = id; - setLabelColor = id; - }; - CLASS = MainController; - LANGUAGE = ObjC; - OUTLETS = {largeBadgeView = id; scroller = id; smallBadgeView = id; }; - SUPERCLASS = NSObject; - } - ); - IBVersion = 1; -} \ No newline at end of file diff --git a/English.lproj/MainMenu.nib/info.nib b/English.lproj/MainMenu.nib/info.nib deleted file mode 100644 index aa3e27c..0000000 --- a/English.lproj/MainMenu.nib/info.nib +++ /dev/null @@ -1,23 +0,0 @@ - - - - - IBDocumentLocation - 180 221 356 240 0 0 1440 878 - IBEditorPositions - - 29 - 110 299 291 44 0 0 1440 878 - - IBFramework Version - 446.1 - IBOpenObjects - - 226 - 29 - 21 - - IBSystem Version - 8I1119 - - diff --git a/English.lproj/MainMenu.nib/keyedobjects.nib b/English.lproj/MainMenu.nib/keyedobjects.nib deleted file mode 100644 index 10138c4c2db09dc840c94658aba286caa1e32e3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18438 zcmbt*2YeJo+~~~i-tMJuF1hqeF6B}$*9%2@4UmwK0-=Q?xr9I($%Pi9vxrDXKswTU z6;TmER6qq$kfNv*5wRlDk^Y3+LcW6~vX^qQZIEgT#5RDil zLoDKuXMUWcx^P(OC}(xQIQXh5t*pq2b5&OLi>n+u+*#P1@c1P$cU_{C2Eg4p{}SGDnd?Fj7rdORE*Xjmo`q-Qg?JHOfmh;9cpKi1-^TCZ5Aj}n3?IkA_#1o*pT_6VQT!u1hR;(TlphsE zX{dNAfznc`l#Vh{Hp))5qS{a$s4i45DxJ!ta;O1R0X2kjP({=*s*N7Mo8FdThJeMKFozNdbmPE$Wp zzfylvm#Dv}E7T3@9(A93Ks}~u+LQL8y=gx>fDWU>=?FTCj-`|76k1E`X*1o5ZcV>H zx1&4JJ?IR&H=Rjm(|zf|bOAktE~HE73c8Z6qFrG9zCC4 zKrf+J)9dLC^hSCUy^Vg4-U&zV(|hRs^Z_{fls-fsqmRSU3HlU$j{cE8Pya;!LjOfy zrvIj|&^PIS=sWaX`T>I(is2YJ`=sGRxqzoY~6kVm@X*VfHbHnUiqs8|DY*4D%y%p1HtWVs0|Gm`8B+u?)-nWI?iE zS%@r}Stg5-#mN$7NivhHrL2{#wXCD8ldQ9>r>vJOS2h^#7swp4D%n`sc-d4qnI;OH&c+p=A>740J6XE64z8?cH?W)7 zt?YL8ZG0Ba-ez~O@3FhMRBi>gl3T^C=GJg)xpmxnZUeWG+r(|=ws2d~x7;@FEp9va zHn)R&hkKWMkK4(;&+Xzq;C6F+xDT;6x0m~f`~pCNg!Lt&w_rlxdgX<4ajY^TbK3J7SG)$WkismxJRJc!fYh{Hi-BIBvaaQL8Jm(k}49v^O?o(Om z5^#w?`3iWEfENpRn1B}w6ffW7fP;2x8YSYinsbzF%$qIQFUklGqoWqIRGk&e!&MFG#Jb?j7G zSm|hzg-Aj-xZ54|1a&s#rJ9u}4fP;$l1hTlpmdahdZSE~h5Ddul!J0n9!%(q`k{Q( z9}PeQ(I7M!6`&!=frg^O0^UC(+pWNC*Vr;=x}#=<#De=;M@QiZ5Cn)My|f~`bet1J z;=Yqp>MDD3CP@+u#C@+1*dUx_7gjr+72=6F-!Vp<-!vw#)Hxb1_s!{A<|q*@QoJC6 z;eC0EBoj~KMLb9nNg+Opsxb%=E%7ekL+a{mR*P0`wVLX+>N-}l0XvOa<4(7Rw5UwC4MA=#D5R)#sI{zXdFPTLocFw5bF>`kbuUcSI`9X zDiVOR?Aj`4wTK7!?NT8cMiEdsN@5(WxRbN23`TXXc9i6dtpb~ZQAMSa0TCbg7vkZM zgGe|DCA^25j7g~HS~M9=K~vE*G#$+#{zO3nNFY&?AQB8dELyEoo!Pmoy2?@Gat^I@ zR2QjT0K9-VW;pxhsJm1YI;v`F%N#Cekvg-o#s#`6t#YYH8Fi*-=R`_#a?-kXRgbdh z49^Y-Ye1ORDd*XnN)TmfnN#$UnoNllko8&wqVNe%7LJA5YDAmMRupVt# zjW(c-p#63*Gp!tAlsILerrC*m=w`HK4cdaXqHXA{Cxb=X1hasM>8h?Q18Wd30Hh{E ze4dfL14i~97}@)17ZM~pi32+c20PIZRfC=E5$)tdv=@DZK1QFQeI$}Z5jBY>F(g*B zlVA{`<^NTNauVid=n(p175V}lmLgb#emYcFJI0El6n_i&KtP~Xw|v@D-LsFNZL8d( zDBzWKbq1~4ASu#ffx{Md&}9EQlhG_{wPk$)A6949Sq!EYCTEHnRNd^P-VN^rI=K>^ z6yq->riKvZEUywR{P{ugTQH7O=sWa1`T?CrXV6)64uax&K7foMdSW0tGMtnVQ@~^R zyXuZX#wRhzVzxZt%wVjq?+1qIf^b>mjy)Gq3lK%7qrzDx25vE|LpW+4iT;2{bP0_l zW(YE+jX~ybG-@5Xg07-#=sLQAZlYVnLfVjYl1=)O0b~e?KlQJ`a~24{2lns)Jw%U) z3I18Z7GlT?#3l*X3Ocr#C0a$7F#)OPFvb+7F@t58#T=Gn4-|wwv6tvH*cxSMHWn%#rT2 zmr5%d5A&SWE=bj7JdOqbl>SHyVkZ`PZ2SF_+~=+33P$!AoEMaVgHel2&;|~};cym# zRX7qyVKq3Rn5p1LEDa!17fZn)rbBy3LM=%vp3m>@EF0w%kx90PV{zO{9EaM$6tPrs zUyR2It8oHO6hniU49iL(tw^x}cq|m9CZ4#*CgYSfIHfT*hy{Z*`akrH^+>=*Y{F(q z&uu}^i1Z?0_M)$edY0m$S@dd4ef@XXhV5=OyW=5lfm`BMxHYR*Y6w3$kPD?_(us5@9Y}jHz@7?541PR_Ay1Ndt0$uCh&zGky2NxafQ&kl zR{q`*1AEmLmKHg>RXZS`euKN?G~5IC1VQ)0={N)T#+jhTMtst*C~h(2iZoh$uQ5P$Rq|>|BkVZcR(I zlQ^Smsk5x;iH1w?u(fy?E^X9tgN&t7VzOwOBE@?=0_bZjEM5ffJ_}l}#8r~+t8ooT zDXpesWi?oovq&@q50XVPJxCvtAyo*t7WG_#N0Htn*lp@##d0#ZLAL)+w}g?brzHel zi&RxvAZVKm_4SPm*Gmi=n;0foSc8RTtVkN@3+DV^77Im?WU-SZi_P%>bIolsSBq5) zOExik{}1Lm16_BUYlAuFK`iV!u$N<~vrH}FZuMV?=Qbc-AR+E2BF>lMq0tI?#f{l6 zW|;p0^HOxH65$e?CA5;XzI z&}0S${96?}B=dd;Vsj>xKz+J(>}pgS)S?ys7w=FMfY5j2JreH@4>F7lm0-7k;@Rj< zwI(~rR6hTc=?#OgjmsS>)7N$X7sD_!~ zk>Yc9w}%1f+^4u#M@26q6!|ONC?zA1bBiiR0TpCMEnq;#A0?K7(1=&N65{ z)SW8}N2t@lmvuVbzXO(9j8#p^prOIT-{J4q;P3GdO|jcepXkhkz*V1|xx>jBe0B{! z+vp7tyxjvDs~_XjHA23-XKC32>K16_@K0#eHa;F-z(3=Q_!s;u{tf?*|G6EWV*AW7L=Y|;ViGLC@t(&>25+BZ7IF7NNhp@fz)C` zG10q1GA79OjbkAGrI(Iz7D?AhmEvWn&lIr4g2+fxL#oMWGWH}DAf|OnO+`~NR4f$- z5m&^V28p9azzzWyfrkiqXg??+O3NYPXO*9z5+O^Ps3aClXMR1*lISWUWLn$QL0;Q)6t0)6yY^X!seSISs$hBZTPhV?9X%AY?o>+M)v?{GK(v#%SCn^uG(tgs8xeSQ*EhstEhHV zdyyn+qeWxgW z@br%23W^%4Ikl@&-L+b(i=gVFGDKqi9MB+ClsMBWq&q-pBgQPim`z>(&MJ@8GfI3$* zv`#=e`A- zXbXEe##YugM_CIfN0XU=a@w;f$4Z=zYm)7BGNVzpPb`~I0&x3^fZGeWqr`BB{+-I4 zj%u}NA8raJisDulidSJJ2EsJN!`gDOA_wkIQj^_IjSSROAZI%GWoKs%^f2xfFN(|s z@@73t-b{(S*Fhq)C5g-?bAY@zo_4%>)O;Xsp@3rrY>~)|8<QXl>)ntuyllUfT z(I0X_xrkM?+2&NO0IF6IiYx>==AV+H%ahn5Qn9v4M6=0)MiC9_Fcf6nh{ug(izo<{ zR5M972aZ)y1nVNwP^n4#7wYYRdIz9h3aA(Vw+P;&c7h0YxkaFWHC;rO01a=7av0DZ z3VwBO*D%;|${Ggi6~o|MI&HS5SktOGv!4LQ{eW>5U|jy+7(=Pg0OP?1p|1dBD@9}j zC1ee9%@r{{1^6fcJ_dl-0pK;y1AMZXB-b`dvS0SF%F&`10|T`cB49Xvih)MQJp(w- zku88>!?PI9OZM^;kp8no`bM$|Fl-h{Z*<(>z*hbcaHeD^Sr8^&S!3Lqy9{f1g-^N8 zRls$fybZXvJrCC{!1Yf9uD1Z!b`e)@rnnrIHOdY5p%@3m3s2$zjVK?QB0B-{JI{ek z%cyXgYk>SNKz>hzoYTiyRGHOZ0!;g$7P(NES2lyo16&2!18{de53Um61~f~R4kn?;DM6C3@U~2TLl5Q4E~Anz664> zyR@UTq>NJohTIKyO==o_y}@wl9H1kQ90NLzJdciipkqJ-9Y=wVuSGfrOSxa2T?KU^ zq`IuuZcZH#@(abPpz%gCmWu#YG5H2iop>Iq(k3rFL{0*#hIAVCG%~fLMx9?-t9GxX zM!G6XO3IvKPA{#ft*ot)P)jp_uvU$Xjs)yAKW{mlv?Rgz~~r>(edOv!2Z3+ zXl|#n${J_Z=s^t?hIHBl^<{u6kaGa_%(GA>zo#cO@wAbgZR9Brs(Yu)*|$jgX#zJ5 zz|9~R0NnX!!AZp=J*x>^75S+VTu%SW%JP8?6pF`95ElZ(#pHK@c=7vxm#6fb^is*v zmI31{M8>f1O-WNZd9wvx+0#-Gn8V>^(sLnH&`0|A$SfWJfn@gaiRg0LioQ()h0)lVJ13+;18SOS`;(GvpS_BWk?*Z`p zB5)|3d(@U!iKS!{_^jcO&&7(yS>1Fkt)gL1vO~4g(Iol{fc2t)F`#|)3|dOG(f8=z z0PPDmTP%;6t0*38HY2T5)P2d7EI34CR)Zk^#>cM4>>Jq24svxfaOXWU&kG{W(zV9yD z1Euo3cP;F>!Ma>S&HkixsHGoC=pqCxccU9zQ|>4$Yl7G`l)k|*^mUX56baZ9#u9ly z(F04M^lBP}t}vbwJgC~d-SGO=6hgZIq&5u#NRZUf6$z3rh}JT=#_4in6t}0JNCQR& z!N_aUNFGL}izB7>(Y<)n9A*TJyeW-Tz{mkjFrOV6L-{aq(#T*^C*Z(mH7mt5CV>iP zk|fQJ7qC)PZIGzizP+oQ;+jBKCG<`}PqU&%TrGHtd?OHbOF|V2L=9<9uMMPWkZy&G z(xjxWo@vFrx{dEam7pF>8>TJY5v4I5s9dHK9YgPCx-#A9rA!)ijJ`q5WYTE`)fo+; zg3&eVI$eXVGjZq!(~rrg^Pr_4$P7X^nF4w-<6wp|glSL^n2i8I6W{_JWsUo4wHuowD^A;s_T+nET!@{1_ZX-cj1@2s0 zBkd?d=ayEJ?W}TCJK*^bG8;&(@o>}Y@vLV^(3sue86QfX0qiA+o{=beMw!$!i_fz; zp?P*fiYtWg8c1{61~LBcv^`D0e@frY5?J_=Ch4CLZR*WA)Si$*Oc@vzcR04r1t5Zs0W`?kza6u*+;? ze*Ry@Fc4@Ft;Q)5@}Dwku*h8IPLoVvT}~zXsO^bN>^b6wx|`)kO)SeOFgT_y6US6Q zfT;oZ?+PJf6jefj7q$Y&1qT!z{FLNu;OpS3y&xP2B>q_gkwT};p9+@+G=|RBqJg|1 z8VEdsGdio{KN)b>k%YzNf93B#HPT>G z=VkpGG0FysCbdz(8I5QK+&f2n=ESXw!B2EC6ph*pIg4UOQs-zBPqYV>xk7G2a%v3E|B0%zY+)0s zrGV;?fcrl|HK1Q(ODKgX86=2RbVo?@#gK}RKtlX)*bNE{mThQ)y;W3Tm4FML03VXq z?6D`=wkMqIfSgGA(leM&u##Iz&WqW;z6sU8Tu5rL{-vL)=K2{74(UczBRb*$IDL|W zA+pLoMTb|4&xE*H{M=m!^N51Rt#q1w-dil`22NAu75Dx`(Bq+unl7G+?r})MlqwE~&qnz6 zfh#8X6|uoQh}6ZB2-!eUgr?@Dq*O@m2BC?CWDLEOzCkO{HM)kn-cUTcOUGt~BM4x+ zSTsVxc#auK7fYog6pBzLLXjvIh~Uamo6&;6$dN3X8z->*HU_%-B zbPWhx%#zAK(nhTN`habVCEuT7!hv#6s`bP=?+n@B#AlksC)w!JPv5IM|_VAzQ>c*^K&Bh2a7oA>c9rmkYQ8cGd+9&IJEQ3b{?1w2u}uL*dPfF}!hih!pI z7;0WffHMR{NahIm4FS&;@H_!SJ-9#;1g!6|FQFD$R>HtqB|JFfPVxR7!8EUF~VQ-`yxe8V2fqC^o)$D84in^%DL{~Co;Af2(~q{3_&r={1o-}W|NI> zcYB9HV>)M$bc_FQklVwqjum6qC-L)q|kNhI_&=b&QxIN^za`P2Yb8^ zm{Ab-X#5xD3p>KUf`g}llYR^PyXUC=OewwsUE&bvCzsMDW-Piv$Kc!0;}uiWnL=g| zMKSsKIs}K^_%1q&AH&Y_-}o0O1|86a- zp?srY+xeoHZ#qMBQ{fH=8_7HH=*BkKpa!dNLyn8Fa*?>Z{3E#|1_wx(ey~?v2|L$Q zA=JnrM%;z{XQ(kiDQfb**nawm8SED^awL(yP=uU@cJTxOr!q?|72LLx&&5Lb3hZq| zwB=wkd>)L%V*LIaA`f_N4s41afn<1tSYV%93{PGp9U2hW9|s3@$6rn-sh!hv z2F}QtI5TJAtelOrb1k@*Tq~|M_X5|3Ys2a2_Y(Iq2T#0n33#=D!35R{c%6XP3mBsLMgeaU@MZyT5ik@Y+XVcUfVT_yZ2|8P z@H+y2SHSNHc&C6tT~HE!AmH5s-Xq`-1-w_l9|`zl0e>RkeF6p@9uV-S0{%?Ept6Gk z1_Ss)z=s9=rGUQ@@DXTs1^l&uj|muz<%EDw3iulVe=A_H!tVt9y?}oZ@M!^`5%5_7 zpA+zp0zNO`p9FkCz&{K4qJV!9@UH^?O~Ahk_zwYtnlB0XF9BZ`@ZSQyBH*h6z9!)7 z0=^;On*zQi;M)TJN5Ei`V14%ld|$v11pH9I-~o>X3JDYzDA;@jM`8p@CQz(E!TSbs zf$|V2Pl56hC~txC0UP2o`96F)|241T=kX`_WBd~SUH(h{3cr9)<1g?>_;>hAd-kUk-}tZim-vPJBK}jpCqIkV@GJPO{04pt{|CQ`PvB?pFY+JrtN7Xc z4gNF!FyDjU#sAH3U_ z{}DflpUVsUWj>qV!}sP_@;~z@`8@t@zAs&5!AJiN)IWJB0+Hj-7dF>D+g&+6IMY#X*6yy4V`9RlUT z2q*_$W+$=>*cI$XcrWRF_H*`Y_Gk7N_HXts`-npv#WCRGY2cbpa5n**XED65^ftVM zbP(P&`V!tU`WoIaItgzVeFtwA{Rr<9{mear_kjF>PnA4MZjiT@r^|EYedYP`0rEle zV)+Ppxx7+7Qa(?EY zC=bSi^^kkSdGzxb>oLz`tH&1}Cp>=e_|4<8C+ivOnc`{oZ0p(8vyW$i=Mc}Ko<*Le zo)w;>J&ETu&xM{VJ-2x7^4#zFh3B`P_dOqaKK8<1l$Xql^YZZW^78gldc}CfdBuAr zdL?^ly>wm%uO40{UcGk&_Z!|zyq9{f^WNb7f%hKoz1|;t@AE$F{e$-z?{nVg zy)SrQ^#0ZRcke%aI3EumFCQNtUmt&;03W4Ks!y>`ozG;SIX+8$Hv8=J`O)W3pX)vk zedWHMz5%{U-(cTR-!R`;UyX0PZ;G$Q*XnEc?e5##H_x}gx5&5HcbM;RUzcya?|9$I zzO#K7`>ywW*LSb)A>ZS^SA4Je-tfKUd)xP}?|t8get~{gzcjyGzrKF?egpgl`4#v% z{EGcX_*MJ8;y1}}ir+N9nSM+Bw)^e!`_%8a-+8|aei!|I_50oLPrqw^k9aRWfREy% z`B+}d8~Lu_P(Aow;2aLVf*;A(fIGg*&j)wg0*?3@IP@L<9{+%U$UpYS{**uC&-(lM zEBpifgZ!iXTl%;5@8e(KKh(d-zubR}{{;UP{;T}g_^0$T)j2<#NtE3j{1QDAjo zUEsvPnSpBq-wNENlq)@z-b!C3uT&@ll|jl7WtcKT8L3n&W0Y~qcx9q8S*ca(lm?|q zX;IpgEtIX4FDTn8+bcUMyDHO^y_CI`eU!P%e#!yL!O9`Za%HXZB_&agS58o_QEpa# zpgf}dR(W1|NqI+kPx&~A31WlfL7qY0LB2szK`BAHAY+gv$R5-_sAEv?pus^yf`$ea z1(gN86!coqjGz@k?*{D)IuP_((7~Y7K^KGm2)Y^cFgPGs85|j`32qbID>y%RK=7d8 zf?yInK6pa##NbK6Q-Y@juL#~4yeD{X@ZsREf{z9t3%(wFGx&D!o#1=H4}u?sc!l_e z_=g0BM2EzNXhX~)){u@NokO~YbPp*F84*$*QW-Kbq$Z>`WLn6Kkoh5NL)M498?rNG zSIF*=Ga=_f&WBtGxft?m$nPO{Lmq@Y4y8h6p?qj)s4>(W+BvjOXijKeXur_@p>?74 zp)ZFDp|6C#8v0u3g3!gGOG8(Lt`6NEx+8Q?=;xt_LVpN76M8Q6eCUPH$6+{(4wHp( zVIE;#VWD9$VI9LdhvkO#4a*N35H=|6r7#lqYS?RGlf$NlO%IzHwm9s~u=m0~4?7fg zIP9yiqhVLWu7}+WyB&5X>|WS|aF1}maCLZ0cwBgVcw%^3c+c?k@ZRBB;o0H2;e*3R zhffHf7(OX{O8BPmE#ce3w}Z$*_<``x!@mgsD*RaZiSRSwKZXAsel`4h_|5R! z5y26m5#bT4h^UC@h}ejvh?EFRMC*t)5j`S$MPx)|MvRQ8iKvYj9WgedE}}kSe8hx^ z=@D}x=0>cHSRJu8VtvG+h{F+IMI4Pd7I7ltn~3uf7a}f2+>W@TlBqbAhssN(Rq0d) zl}Tk$*;Fl5ZB*@4-BlT?Ow}M&fy$vOR83G#R83M%QB70LP`$32tD3J`u3D>FuX&L3L5}tLk^vE!7>>ebu8#|Hy#Ih)7+eA+k+myT}faog#}OizA0c z4v#F0tca|Nd^u8xoD#V(a&hGP$c>SkBezB#jXV~4BJ!KaQ<2|Co{qc|6&e*El^B&A zrHx9D>K&C8l^vBE)i)|Xsvyb{RT=eS)Jst$YJAkHs5MdRqBcZrirNyjE$Y3fy-|mw zzKS{;bu8+7)Xk{dQFo&5MLmdmq^8xpTBVLsN2_Di-PIZDOm!c1jyg}>Pu*W#q8_d; zS68X))b;B5>ecGC>hZ9so>J#d3)Th+nt52(cQU9jCslKhgqrMj%6&)QN8?A{> zh)#-5iEbI)I=XvwkLX^}8PPS-wb7%a$41vh*GIn`EkrMhUJ|__dQ_+(#w>_g z9J4fLUCf4<%`v-UzKA&y^Fz$FSXjT0_G0X<*gLWJV;{z$ zxahdpxcIolxRkimIDMQwu4P>BxFKdTP=&nVLSDTuon1zGi@CkfuQ6&=hK%nqivZnsQB* zrds3DjMj|Pyr_9uBWNaQUeip`Ow-KJysnw8nX6f#S)^H_S*lsCS*2N{S*O{k*{s>B zc}w%Q=3UKB%`VLz%}1Jjngg28GzT?bXui}O(R{5rt~seWrTJZRN%Obnn&zhFVLTh} z7q5s{#)rg*$E)JI#%IRo#}AAj9PfxPjCaPD#FxgG#n;78iJud{F@AIWw)nT>-;IAi zes}zb@gK#15`Q56v-pGY*Ww=~cqjNK@Ck~9fCObia6)K8SVHTBHVN$$Iwo{U=$4R{ zFf^ekVS2*Mgjor565dFdm#`pVQNrSc0|}oc97^~y;Yh;Q3C9yoCY(w*pKvYVX2L%S z_Yxi^vWfCU|3pP%U}AitKGBjmD6t^Xkyw~mlvtcNEOB_^h{QJ%=Or#kT$H#t@y*0# zi7OIUCT>goF7b5Y*~IgS7ZNWf{+jrE;-$o^iFXt4CoxIkNs&p>NpVRDNl8iCBz=-8 z$(m$OYMInJX<*XeBu7$VQgPC-q~S>wNmWS;lNKkvnY27iTGk{p&Co~%laN{&vBN$!-~CAoWYkL2{^-pN_XdCC2f$0pY$ zzm!apUrBy7`L*N)$%~SAChtn#le{ty9{jbV})!l9AFkr7ER5#g#HTWo$}aN`1=9DMHFCDHBsBr%X$k zk+L&oSIX{`4^#H0e4Mf`q_gO3x)!=tx)*fqbRBe^bX|1abZNR?x(r>W zu8%HP*H@RX8=xDc8=@PkE7BF~hUtdu%5;^wYMo0rN;g(lr>oZy-FV#u-9+6a-BjIl z-Avsq-5lLK-2&Yr-4fkW-E!SZ-D=%h-Fn?7-4@+8-FDp$-MhM-x?Q^6x({_9=|0iz z*L|w{Tz5!!Sa(EsO!tGngT9l#i@v+Qr#@ZZTc4%R(dX&==?CZs>xbxv>Ye%$eW`wg zzFc3auhzTtqxEC;b^4d|ME{EZRsAIWRQ+`QO#LkV8~SB(Xhqv zmSKnCJ;N@;9>Yh5eTKt^uM9^G-x$sr&Kv$PTrylX+%-~0#>g8(jq%1rSp6~^t;V*- z_QsCJ4C4UfAY-v{m~psqlyQP_j&YfBv+*tC4&%qhL&h(SM~o+o=Z%+*|Cnf#x5?KO zYzj4no8nCIrbLs))ZUb4>S0PZ<(c}L`kM;P-OWAC8RkrLA9Jp`uerZ@pt->8Fc+GO z&BM&Y&E@7wbG6xJ9%UY59%rsM6Z0$PSIw`PC!435r<-S*XPM`i=bGo67nzrsmztNG zSDDwC*O@n%H<`DXx0&BIzhmBM-euln-fRBYyx;t(`Jnj=^Oxo$=C94i%_q&@n!huj zHlH>BXue>+X#UOohxsq_-{!048|GW)f6RBy_stK@k1do%W|3RGEIt(bC1z&CB>()8e zdDey2CDvuumDV-Z_0~<+t=8?vz`E)^paM ztQW1nS^u-bwLY*uwox{jO>XnD`P%$#fwo{0&#kMzX%WNxbt88m*>ueirn`~Qb+icryJ8bXTcG`B?cH2I* zePsK@w%_)t?Q`29+hN;RwxhOVwiC8*Y^QAB+fLig+J3bCWc%6ni|setAGS-j%eE`F zYqlGRJ-18w43c#yWQT>-rC;A-p<~^-pSs@-p!t7?`coB_qJ!*v+cR|zV>|k0Q(?& zf!$#*v^(u3_EP%@d%3;RKE^)QUT2?Rf7L$8KFdDaKG(j~z6wcy6ujai{>j7Kzm4Da GxBn0DO<=14 diff --git a/Info.plist b/Info.plist index 39009f6..598afa8 100644 --- a/Info.plist +++ b/Info.plist @@ -1,5 +1,5 @@ - + CFBundleDevelopmentRegion @@ -24,7 +24,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - com.cotingent.CTBadge + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/MainController.h b/MainController.h index 2fc6f58..671832e 100644 --- a/MainController.h +++ b/MainController.h @@ -9,9 +9,9 @@ CTBadge *myBadge; IBOutlet id scroller; - IBOutlet id largeBadgeView; IBOutlet id smallBadgeView; + IBOutlet NSWindow* settingsWindow; } - (IBAction)setBadgeValue:(id)sender; diff --git a/MainController.m b/MainController.m index 92a625b..f3bcd80 100644 --- a/MainController.m +++ b/MainController.m @@ -21,8 +21,6 @@ - (IBAction)setBadgeValue:(id)sender [largeBadgeView setImage:[myBadge largeBadgeForValue:value]]; [smallBadgeView setImage:[myBadge smallBadgeForValue:value]]; [myBadge badgeApplicationDockIconWithValue:value insetX:3 y:0]; - - //[[[myBadge largeBadgeForValue:value] TIFFRepresentation] writeToFile:@"/tmp/badge.tif" atomically:NO]; } - (IBAction)setBadgeColor:(id)sender @@ -42,13 +40,14 @@ - (IBAction)setLabelColor:(id)sender - (IBAction)setApplicationIcon:(id)sender { NSOpenPanel *openPanel = [NSOpenPanel openPanel]; - - int result = [openPanel runModalForDirectory:NSHomeDirectory() file:nil types:[NSArray arrayWithObject:@"icns"]]; - - if(result == NSOKButton) - { - [self application:nil openFile:[openPanel filename]]; - } + openPanel.directoryURL = [NSURL URLWithString:NSHomeDirectory()]; + openPanel.allowedFileTypes = @[@"icns"]; + [openPanel beginSheetModalForWindow: settingsWindow completionHandler:^(NSModalResponse result) { + if (result == NSModalResponseOK) + { + [self application:nil openFile:[openPanel URL].path]; + } + }]; } - (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename diff --git a/English.lproj/InfoPlist.strings b/en.lproj/InfoPlist.strings similarity index 100% rename from English.lproj/InfoPlist.strings rename to en.lproj/InfoPlist.strings From a2f102db7f136fd15b94c440e468f84fe5a9a9f4 Mon Sep 17 00:00:00 2001 From: Shamyl Zakariya Date: Tue, 14 May 2019 07:57:27 -0700 Subject: [PATCH 3/4] Migrate to ARC --- CTBadge.m | 57 ++++++------------ CTBadge.xcodeproj/project.pbxproj | 2 + .../UserInterfaceState.xcuserstate | Bin 32873 -> 39672 bytes MainController.h | 8 +-- 4 files changed, 23 insertions(+), 44 deletions(-) diff --git a/CTBadge.m b/CTBadge.m index 801e699..64834e3 100644 --- a/CTBadge.m +++ b/CTBadge.m @@ -40,31 +40,20 @@ - (id)init return self; } -- (void)dealloc -{ - if(badgeColor != nil) - [badgeColor release]; - if(labelColor != nil) - [labelColor release]; - - [super dealloc]; -} - + (CTBadge *)systemBadge { - id newInstance = [[[self class] alloc] init]; - - return [newInstance autorelease]; + CTBadge* newInstance = [[[self class] alloc] init]; + return newInstance; } + (CTBadge *)badgeWithColor:(NSColor *)badgeColor labelColor:(NSColor *)labelColor; { - id newInstance = [[[self class] alloc] init]; + CTBadge* newInstance = [[[self class] alloc] init]; [newInstance setBadgeColor:badgeColor]; [newInstance setLabelColor:labelColor]; - return [newInstance autorelease]; + return newInstance; } #pragma mark - @@ -72,19 +61,11 @@ + (CTBadge *)badgeWithColor:(NSColor *)badgeColor labelColor:(NSColor *)labelCol #pragma mark Appearance - (void)setBadgeColor:(NSColor *)theColor; { - if(badgeColor != nil) - [badgeColor release]; - badgeColor = theColor; - [badgeColor retain]; } - (void)setLabelColor:(NSColor *)theColor; { - if(labelColor != nil) - [labelColor release]; - labelColor = theColor; - [labelColor retain]; } - (NSColor *)badgeColor @@ -201,17 +182,13 @@ - (NSImage *)badgeOfSize:(float)size forString:(NSString *)string [theShadow setShadowBlurRadius:shadowBlurRadius]; [theShadow setShadowColor:[[NSColor blackColor] colorWithAlphaComponent:shadowOpacity]]; [theShadow set]; - [theShadow release]; - + [badgeImage drawAtPoint:NSZeroPoint fromRect:NSMakeRect(0,0,badgeImage.size.width, badgeImage.size.height) operation:NSCompositingOperationSourceOver fraction:1]; - + [NSGraphicsContext restoreGraphicsState]; [image unlockFocus]; - - [label release]; - [badgeImage release]; - - return [image autorelease]; + + return image; } @@ -230,7 +207,7 @@ - (NSImage *)badgeOverlayImageForString:(NSString *)string insetX:(float)dx y:(f [overlayImage unlockFocus]; - return [overlayImage autorelease]; + return overlayImage; } - (void)badgeApplicationDockIconWithString:(NSString *)string insetX:(float)dx y:(float)dy; @@ -240,9 +217,9 @@ - (void)badgeApplicationDockIconWithString:(NSString *)string insetX:(float)dx y //Put the appIcon underneath the badgeOverlay [badgeOverlay lockFocus]; - + [appIcon drawAtPoint:NSZeroPoint fromRect:NSMakeRect(0,0,appIcon.size.width, appIcon.size.height) operation:NSCompositingOperationDestinationOver fraction:1]; - + [badgeOverlay unlockFocus]; [NSApp setApplicationIconImage:badgeOverlay]; @@ -267,7 +244,7 @@ - (NSGradient *)badgeGradient [self badgeColor], 1/3., [[self badgeColor] shadowWithLevel:1/3.], 1.0, nil]; - return [aGradient autorelease]; + return aGradient; } - (NSAttributedString *)labelForString:(NSString *)label size:(unsigned)size @@ -281,17 +258,17 @@ - (NSAttributedString *)labelForString:(NSString *)label size:(unsigned)size labelFont = [NSFont fontWithName:@"Helvetica-Bold" size:size]; NSMutableParagraphStyle *pStyle = [[NSMutableParagraphStyle alloc] init];[pStyle setAlignment:NSTextAlignmentCenter]; - NSDictionary *attributes = [[NSDictionary alloc] initWithObjectsAndKeys:[self labelColor], NSForegroundColorAttributeName, - labelFont , NSFontAttributeName , nil]; - [pStyle release]; + + NSDictionary *attributes = @{ + NSForegroundColorAttributeName :[self labelColor], + NSFontAttributeName: labelFont + }; //Label stuff if([label length] >= 6) //replace with summarized string - ellipses at end and a zero-width space to trick us into using the 5-wide badge label = [NSString stringWithFormat:@"%@%@", [label substringToIndex:3], [NSString stringWithUTF8String:"\xe2\x80\xa6\xe2\x80\x8b"]]; NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:label attributes:attributes]; - [attributes release]; - return attributedString; } diff --git a/CTBadge.xcodeproj/project.pbxproj b/CTBadge.xcodeproj/project.pbxproj index 8f6353b..b008125 100644 --- a/CTBadge.xcodeproj/project.pbxproj +++ b/CTBadge.xcodeproj/project.pbxproj @@ -274,6 +274,7 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_ENABLE_OBJC_ARC = YES; CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; @@ -310,6 +311,7 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_ENABLE_OBJC_ARC = YES; CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; diff --git a/CTBadge.xcodeproj/project.xcworkspace/xcuserdata/shamyl.xcuserdatad/UserInterfaceState.xcuserstate b/CTBadge.xcodeproj/project.xcworkspace/xcuserdata/shamyl.xcuserdatad/UserInterfaceState.xcuserstate index 98ff6c122ae5e000359d01153d37667287b90c60..8e9dda9d1731492d62e4cb22774492ef6fc2195a 100644 GIT binary patch delta 21039 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 sp<{E$o{oJT2RaTf+VCrTN}}roaCG0d&Yxwg3PC delta 14639 zcmajF2S8KT`#yfpxsyE-2qX|iW)dKTFhYh31W@*f6J>~qN&p4iBloz)Q8jMsU}#-! z9d++IYU^mNR%^A^+GW*lZPi-+ol8V*{e1s_V*=c~=bq;s=Q;2D-t%x5{E>$Xd?+X2 z1Q+@%fNf#wT3Zn40)jyZ2nAsv9H@W>!~!ia03$GguAm!81wBAdkO^{u1@r>FL4Pm+ z3<5*Ia8M1bU<4Qm>cLnr0oVW!5SRz%gEzneun?>UYrtBt4m5)nupVpyTfug402~B| zz+rF%90ebNGvF+NY~W+?8Mq9tgD=4?a1ZU^t9`(NGQJVFFBnsn875U=}QZePA)Hff(+;7)h|9)ySBarhy;2rt3U;8*Y_{2Jbc_ux

Vl;f*ed%l0(Vy(Ph1^c=ArFwp$oI*U z&@`7!w!d5!#z{Dpi(KBEZAkMgIal#B|X0x3DwiRw%RQC+AAN=d zY74cM+D5%c?WOinhp5BU5$Y&)f;vroNL`>lr7lv}sO!}C)E(*x^$+btJJT+-EA2*m z(SEc)Ev032FdagN(h;7iXLsF zr_fXBY4mh@2Hiw2q!-b4dKLX9y_#;NH_>m?@6bEw-Si&%0DX`?L?5G1(x>Q8>5KFw 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 X#9EW1F$kgKrxX3WQTY5vZMXjib@c2{ diff --git a/MainController.h b/MainController.h index 671832e..aa6dc59 100644 --- a/MainController.h +++ b/MainController.h @@ -8,10 +8,10 @@ { CTBadge *myBadge; - IBOutlet id scroller; - IBOutlet id largeBadgeView; - IBOutlet id smallBadgeView; - IBOutlet NSWindow* settingsWindow; + __weak IBOutlet id scroller; + __weak IBOutlet id largeBadgeView; + __weak IBOutlet id smallBadgeView; + __weak IBOutlet NSWindow* settingsWindow; } - (IBAction)setBadgeValue:(id)sender; From db600a4c80fe71302a471b0c1a7ddb37858307a3 Mon Sep 17 00:00:00 2001 From: Shamyl Zakariya Date: Wed, 15 May 2019 06:48:14 -0700 Subject: [PATCH 4/4] Fix app icon compositing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - also add control for badge gradient, since it’s a little dated looking in 2019 --- Base.lproj/MainMenu.nib/designable.nib | 2563 +++-------------- Base.lproj/MainMenu.nib/keyedobjects.nib | Bin 22913 -> 23035 bytes CTBadge.h | 12 +- CTBadge.m | 51 +- .../UserInterfaceState.xcuserstate | Bin 39672 -> 42511 bytes MainController.h | 1 + MainController.m | 9 +- 7 files changed, 397 insertions(+), 2239 deletions(-) diff --git a/Base.lproj/MainMenu.nib/designable.nib b/Base.lproj/MainMenu.nib/designable.nib index c3ba1c3..6a2dc79 100644 --- a/Base.lproj/MainMenu.nib/designable.nib +++ b/Base.lproj/MainMenu.nib/designable.nib @@ -1,2194 +1,371 @@ - - - 101400 - 14490.70 - 1671.40.119 - 918.40 - - com.apple.InterfaceBuilder.CocoaPlugin - 14490.70 - - - NSButton - NSButtonCell - NSColorWell - NSCustomObject - NSImageCell - NSImageView - NSMenu - NSMenuItem - NSSlider - NSSliderCell - NSTextField - NSTextFieldCell - NSView - NSWindowTemplate - - - com.apple.InterfaceBuilder.CocoaPlugin - - - - - - NSApplication - - - - FirstResponder - - - NSApplication - - - 15 - 2 - {{654, 552}, {292, 162}} - 1886912512 - CTBadge - NSWindow - - View - - - - - - 256 - - - - - 278 - - - Apple PDF pasteboard type - Apple PICT pasteboard type - Apple PNG pasteboard type - NSFilenamesPboardType - NeXT Encapsulated PostScript v1.2 pasteboard type - NeXT TIFF v4.0 pasteboard type - com.apple.NSFilePromiseItemMetaData - com.apple.pasteboard.promised-file-content-type - dyn.ah62d4rv4gu8yc6durvwwa3xmrvw1gkdusm1044pxqyuha2pxsvw0e55bsmwca7d3sbwu - - {{17, 17}, {128, 128}} - - - YES - - 134217728 - 33554432 - 0 - 2 - 2 - NO - - NO - YES - - - - - - 279 - - - Apple PDF pasteboard type - Apple PICT pasteboard type - Apple PNG pasteboard type - NSFilenamesPboardType - NeXT Encapsulated PostScript v1.2 pasteboard type - NeXT TIFF v4.0 pasteboard type - com.apple.NSFilePromiseItemMetaData - com.apple.pasteboard.promised-file-content-type - dyn.ah62d4rv4gu8yc6durvwwa3xmrvw1gkdusm1044pxqyuha2pxsvw0e55bsmwca7d3sbwu - - {{147, 17}, {128, 128}} - - - YES - - 134217728 - 33554432 - 0 - 2 - 2 - NO - - NO - YES - - - - {292, 162} - - - - {{0, 0}, {1680, 1027}} - {213, 129} - {3.4028200000000001e+38, 3.4028200000000001e+38} - YES - - - MainMenu - - - - NewApplication - - 1048576 - 2147483647 - - NSImage - NSMenuCheckmark - - - NSImage - NSMenuMixedState - - submenuAction: - - - NewApplication - - - - About CTBadge - - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Preferences… - , - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Services - - 1048576 - 2147483647 - - - submenuAction: - - - - Services - - - _NSServicesMenu - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Hide CTBadge - h - 1048576 - 2147483647 - - - - - - Hide Others - h - 1572864 - 2147483647 - - - - - - Show All - - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Quit CTBadge - q - 1048576 - 2147483647 - - - - - _NSAppleMenu - - - - - File - - 1048576 - 2147483647 - - - submenuAction: - - - - File - - - - - New - n - 1048576 - 2147483647 - - - - - - Open... - o - 1048576 - 2147483647 - - - - - - Open Recent - - 1048576 - 2147483647 - - - submenuAction: - - - - Open Recent - - - - - Clear Menu - - 1048576 - 2147483647 - - - - - _NSRecentDocumentsMenu - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Close - w - 1048576 - 2147483647 - - - - - - Save - s - 1048576 - 2147483647 - - - - - - Save As… - S - 1048576 - 2147483647 - - - - - - Revert - - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Page Setup… - P - 1048576 - 2147483647 - - - - - - Print… - p - 1048576 - 2147483647 - - - - - - - - - Edit - - 1048576 - 2147483647 - - - submenuAction: - - - - Edit - - - - - Undo - z - 1048576 - 2147483647 - - - - - - Redo - Z - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Cut - x - 1048576 - 2147483647 - - - - - - Copy - c - 1048576 - 2147483647 - - - - - - Paste - v - 1048576 - 2147483647 - - - - - - Paste and Match Style - V - 1572864 - 2147483647 - - - - - - Delete - - 1048576 - 2147483647 - - - - - - Select All - a - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Find - - 1048576 - 2147483647 - - - submenuAction: - - - - Find - - - - - Find… - f - 1048576 - 2147483647 - - - 1 - - - - Find Next - g - 1048576 - 2147483647 - - - 2 - - - - Find Previous - G - 1048576 - 2147483647 - - - 3 - - - - Use Selection for Find - e - 1048576 - 2147483647 - - - 7 - - - - Jump to Selection - j - 1048576 - 2147483647 - - - - - - - - - Spelling - - 1048576 - 2147483647 - - - submenuAction: - - - Spelling - - - - Spelling… - : - 1048576 - 2147483647 - - - - - - Check Spelling - ; - 1048576 - 2147483647 - - - - - - Check Spelling as You Type - - 1048576 - 2147483647 - - - - - - - - - - - - Window - - 1048576 - 2147483647 - - - submenuAction: - - - - Window - - - - - Minimize - m - 1048576 - 2147483647 - - - - - - Zoom - - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Bring All to Front - - 1048576 - 2147483647 - - - - - _NSWindowsMenu - - - - _NSMainMenu - - - MainController - - - 19 - 2 - {{654, 434}, {292, 101}} - -260571136 - Settings - - NSPanel - - - View - - - - - - 256 - - - - - 290 - - {{57, 63}, {217, 21}} - - - YES - - 67371264 - 0 - - - - - Helvetica - 12 - 16 - - - 10000 - 0.0 - 0.0 - 0.0 - 0 - 1 - NO - NO - - NO - - - - - 256 - {{17, 67}, {37, 14}} - - - YES - - 67108864 - 272629760 - Value: - - YES - 11 - 3100 - - - - 6 - System - controlColor - - 3 - MC42MDI3MTUzNzMAA - - 9 - 0 - - AAARaGFwcGwCAAAAbW50ckdSQVlYWVogB9wACAAXAA8ALgAPYWNzcEFQUEwAAAAAbm9uZQAAAAAAAAAA -AAAAAAAAAAAAAPbWAAEAAAAA0y1hcHBsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAFZGVzYwAAAMAAAAB5ZHNjbQAAATwAAAfoY3BydAAACSQAAAAjd3RwdAAACUgAAAAU -a1RSQwAACVwAAAgMZGVzYwAAAAAAAAAfR2VuZXJpYyBHcmF5IEdhbW1hIDIuMiBQcm9maWxlAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAG1sdWMAAAAAAAAAHwAAAAxza1NLAAAALgAAAYRkYURLAAAAOAAAAbJjYUVT -AAAAOAAAAep2aVZOAAAAQAAAAiJwdEJSAAAASgAAAmJ1a1VBAAAALAAAAqxmckZVAAAAPgAAAthodUhV -AAAANAAAAxZ6aFRXAAAAHgAAA0puYk5PAAAAOgAAA2hjc0NaAAAAKAAAA6JoZUlMAAAAJAAAA8ppdElU -AAAATgAAA+5yb1JPAAAAKgAABDxkZURFAAAATgAABGZrb0tSAAAAIgAABLRzdlNFAAAAOAAAAbJ6aENO -AAAAHgAABNZqYUpQAAAAJgAABPRlbEdSAAAAKgAABRpwdFBPAAAAUgAABURubE5MAAAAQAAABZZlc0VT -AAAATAAABdZ0aFRIAAAAMgAABiJ0clRSAAAAJAAABlRmaUZJAAAARgAABnhockhSAAAAPgAABr5wbFBM -AAAASgAABvxydVJVAAAAOgAAB0ZlblVTAAAAPAAAB4BhckVHAAAALAAAB7wAVgFhAGUAbwBiAGUAYwBu -AOEAIABzAGkAdgDhACAAZwBhAG0AYQAgADIALAAyAEcAZQBuAGUAcgBpAHMAawAgAGcAcgDlACAAMgAs -ADIAIABnAGEAbQBtAGEAcAByAG8AZgBpAGwARwBhAG0AbQBhACAAZABlACAAZwByAGkAcwBvAHMAIABn -AGUAbgDoAHIAaQBjAGEAIAAyAC4AMgBDHqUAdQAgAGgA7ABuAGgAIABNAOAAdQAgAHgA4QBtACAAQwBo -AHUAbgBnACAARwBhAG0AbQBhACAAMgAuADIAUABlAHIAZgBpAGwAIABHAGUAbgDpAHIAaQBjAG8AIABk -AGEAIABHAGEAbQBhACAAZABlACAAQwBpAG4AegBhAHMAIAAyACwAMgQXBDAEMwQwBDsETAQ9BDAAIABH -AHIAYQB5AC0EMwQwBDwEMAAgADIALgAyAFAAcgBvAGYAaQBsACAAZwDpAG4A6QByAGkAcQB1AGUAIABn -AHIAaQBzACAAZwBhAG0AbQBhACAAMgAsADIAwQBsAHQAYQBsAOEAbgBvAHMAIABzAHoA/AByAGsAZQAg -AGcAYQBtAG0AYQAgADIALgAykBp1KHBwlo5RSV6mACAAMgAuADIAIIJyX2ljz4/wAEcAZQBuAGUAcgBp -AHMAawAgAGcAcgDlACAAZwBhAG0AbQBhACAAMgAsADIALQBwAHIAbwBmAGkAbABPAGIAZQBjAG4A4QAg -AWEAZQBkAOEAIABnAGEAbQBhACAAMgAuADIF0gXQBd4F1AAgBdAF5AXVBegAIAXbBdwF3AXZACAAMgAu -ADIAUAByAG8AZgBpAGwAbwAgAGcAcgBpAGcAaQBvACAAZwBlAG4AZQByAGkAYwBvACAAZABlAGwAbABh -ACAAZwBhAG0AbQBhACAAMgAsADIARwBhAG0AYQAgAGcAcgBpACAAZwBlAG4AZQByAGkAYwEDACAAMgAs -ADIAQQBsAGwAZwBlAG0AZQBpAG4AZQBzACAARwByAGEAdQBzAHQAdQBmAGUAbgAtAFAAcgBvAGYAaQBs -ACAARwBhAG0AbQBhACAAMgAsADLHfLwYACDWjMDJACCsELnIACAAMgAuADIAINUEuFzTDMd8Zm6QGnBw -XqZ8+2VwACAAMgAuADIAIGPPj/Blh072TgCCLDCwMOwwpDCsMPMw3gAgADIALgAyACAw1zDtMNUwoTCk -MOsDkwO1A70DuQO6A8wAIAOTA7oDwQO5ACADkwOsA7wDvAOxACAAMgAuADIAUABlAHIAZgBpAGwAIABn -AGUAbgDpAHIAaQBjAG8AIABkAGUAIABjAGkAbgB6AGUAbgB0AG8AcwAgAGQAYQAgAEcAYQBtAG0AYQAg -ADIALAAyAEEAbABnAGUAbQBlAGUAbgAgAGcAcgBpAGoAcwAgAGcAYQBtAG0AYQAgADIALAAyAC0AcABy -AG8AZgBpAGUAbABQAGUAcgBmAGkAbAAgAGcAZQBuAOkAcgBpAGMAbwAgAGQAZQAgAGcAYQBtAG0AYQAg -AGQAZQAgAGcAcgBpAHMAZQBzACAAMgAsADIOIw4xDgcOKg41DkEOAQ4hDiEOMg5ADgEOIw4iDkwOFw4x -DkgOJw5EDhsAIAAyAC4AMgBHAGUAbgBlAGwAIABHAHIAaQAgAEcAYQBtAGEAIAAyACwAMgBZAGwAZQBp -AG4AZQBuACAAaABhAHIAbQBhAGEAbgAgAGcAYQBtAG0AYQAgADIALAAyACAALQBwAHIAbwBmAGkAaQBs -AGkARwBlAG4AZQByAGkBDQBrAGkAIABHAHIAYQB5ACAARwBhAG0AbQBhACAAMgAuADIAIABwAHIAbwBm -AGkAbABVAG4AaQB3AGUAcgBzAGEAbABuAHkAIABwAHIAbwBmAGkAbAAgAHMAegBhAHIAbwFbAGMAaQAg -AGcAYQBtAG0AYQAgADIALAAyBB4EMQRJBDAETwAgBEEENQRABDAETwAgBDMEMAQ8BDwEMAAgADIALAAy -AC0EPwRABD4ERAQ4BDsETABHAGUAbgBlAHIAaQBjACAARwByAGEAeQAgAEcAYQBtAG0AYQAgADIALgAy -ACAAUAByAG8AZgBpAGwAZQY6BicGRQYnACAAMgAuADIAIAZEBkgGRgAgBjEGRQYnBi8GSgAgBjkGJwZF -dGV4dAAAAABDb3B5cmlnaHQgQXBwbGUgSW5jLiwgMjAxMgAAWFlaIAAAAAAAAPNRAAEAAAABFsxjdXJ2 -AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8 -AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZ -AR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHy -AfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMW -AyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSM -BJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZ -BmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiC -CJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsL -CyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34 -DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFP -EW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUS -FTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlF -GWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3s -HhYeQB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMK -IzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSii -KNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63 -Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVN -NYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8Jzxl -PKQ84z0iPWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQD -REdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwq -THJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJUj1Tb -VShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4a -XmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fp -aD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJL -cqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1B -faF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASIaYjO -iTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6kuOTTZO2lCCUipT0 -lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2 -oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8W -r4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70V -vY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2 -zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr7 -24DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl -63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3 -/Af8mP0p/br+S/7c/23//w - - - 0.6666666667 1 - - - - 6 - System - controlTextColor - - 3 - MAA - - 0 1 - - - - NO - 2 - - - - - 256 - - - NSColor pasteboard type - - - {{90, 42}, {41, 20}} - - - YES - NO - YES - - 3 - MQA - - - - - - 256 - {{17, 45}, {68, 14}} - - - YES - - 67108864 - 272629760 - Label Color: - - - - - - NO - 2 - - - - - 256 - {{153, 45}, {73, 14}} - - - YES - - 67108864 - 272629760 - Badge Color: - - - - - - NO - 2 - - - - - 256 - - - NSColor pasteboard type - - - {{231, 42}, {41, 20}} - - - YES - NO - YES - - 1 - MSAwIDAAA - - - - - - 256 - - {{54, 9}, {183, 28}} - - - YES - - 67108864 - 134348800 - Select Dock Icon... - - - -2038284256 - 1 - - LucidaGrande - 11 - 16 - - - - - - 200 - 25 - - NO - - - {292, 101} - - - - {{0, 0}, {1680, 1027}} - {292, 98} - {3.4028200000000001e+38, 3.4028200000000001e+38} - YES - - - - - - - terminate: - - - - 139 - - - - orderFrontStandardAboutPanel: - - - - 142 - - - - hideOtherApplications: - - - - 146 - - - - hide: - - - - 152 - - - - unhideAllApplications: - - - - 153 - - - - delegate - - - - 243 - - - - performMiniaturize: - - - - 37 - - - - arrangeInFront: - - - - 39 - - - - print: - - - - 86 - - - - runPageLayout: - - - - 87 - - - - clearRecentDocuments: - - - - 127 - - - - cut: - - - - 175 - - - - paste: - - - - 176 - - - - redo: - - - - 178 - - - - selectAll: - - - - 179 - - - - undo: - - - - 180 - - - - copy: - - - - 181 - - - - showGuessPanel: - - - - 188 - - - - checkSpelling: - - - - 190 - - - - toggleContinuousSpellChecking: - - - - 192 - - - - performClose: - - - - 193 - - - - delete: - - - - 195 - - - - performZoom: - - - - 198 - - - - performFindPanelAction: - - - - 199 - - - - performFindPanelAction: - - - - 200 - - - - performFindPanelAction: - - - - 201 - - - - performFindPanelAction: - - - - 202 - - - - centerSelectionInVisibleArea: - - - - 203 - - - - pasteAsPlainText: - - - - 205 - - - - delegate - - - - 215 - - - - largeBadgeView - - - - 211 - - - - smallBadgeView - - - - 212 - - - - scroller - - - - 236 - - - - setBadgeValue: - - - - 237 - - - - setLabelColor: - - - - 238 - - - - setBadgeColor: - - - - 239 - - - - setApplicationIcon: - - - - 240 - - - - setApplicationIcon: - - - - 242 - - - - settingsWindow - - - - 252 - - - - - - 0 - - - - - - -2 - - - File's Owner - - - -1 - - - First Responder - - - 21 - - - - - - Window - - - 2 - - - - - - - - - 208 - - - - - - - - 209 - - - - - - - - 29 - - - - - - - - - MainMenu - - - 19 - - - - - - - - 24 - - - - - - - - - - - 5 - - - - - 23 - - - - - 92 - - - - - 197 - - - - - 56 - - - - - - - - 57 - - - - - - - - - - - - - - - - - - 58 - - - - - 129 - - - - - 131 - - - - - - - - 130 - - - - - 134 - - - - - 136 - - - - - 143 - - - - - 144 - - - - - 145 - - - - - 149 - - - - - 150 - - - - - 196 - - - - - 83 - - - - - - - - 81 - - - - - - - - - - - - - - - - - - 72 - - - - - 73 - - - - - 74 - - - - - 75 - - - - - 77 - - - - - 78 - - - - - 79 - - - - - 80 - - - - - 82 - - - - - 112 - - - - - 124 - - - - - - - - 125 - - - - - - - - 126 - - - - - 163 - - - - - - - - 169 - - - - - - - - - - - - - - - - - - - 156 - - - - - 157 - - - - - 158 - - - - - 160 - - - - - 164 - - - - - 168 - - - - - - - - 159 - - - - - - - - - - - - 154 - - - - - 155 - - - - - 161 - - - - - 162 - - - - - 167 - - - - - 171 - - - - - 172 - - - - - 173 - - - - - 174 - - - - - 184 - - - - - - - - 185 - - - - - - - - - - 187 - - - - - 189 - - - - - 191 - - - - - 204 - - - - - 206 - - - MainController - - - 226 - - - - - - Panel - - - 227 - - - - - - - - - - - - - - 228 - - - - - - - - 231 - - - - - - - - 232 - - - - - 233 - - - - - - - - 234 - - - - - - - - 235 - - - - - 241 - - - - - - - - 245 - - - - - 246 - - - - - 247 - - - - - 248 - - - - - 249 - - - - - 250 - - - - - 251 - - - - - -3 - - - Application - - - - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - {139, 149.5} - com.apple.InterfaceBuilder.CocoaPlugin - - - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - - com.apple.InterfaceBuilder.CocoaPlugin - - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - - - - - 252 - - - - - MainController - NSObject - - id - id - id - id - - - - setApplicationIcon: - id - - - setBadgeColor: - id - - - setBadgeValue: - id - - - setLabelColor: - id - - - - id - id - NSWindow - id - - - - largeBadgeView - id - - - scroller - id - - - settingsWindow - NSWindow - - - smallBadgeView - id - - - - IBProjectSource - ../MainController.h - - - - MainController - - id - id - id - id - - - - setApplicationIcon: - id - - - setBadgeColor: - id - - - setBadgeValue: - id - - - setLabelColor: - id - - - - IBProjectSource - ../MainController.m - - - - - 0 - IBCocoaFramework - - com.apple.InterfaceBuilder.CocoaPlugin.macosx - - - - com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 - - - YES - 3 - - {12, 12} - {10, 2} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Base.lproj/MainMenu.nib/keyedobjects.nib b/Base.lproj/MainMenu.nib/keyedobjects.nib index 7be296e4d939d5be7ddf9360402fc7575b9ad506..24967d531d1b16f113d85983c5c34d638673af58 100644 GIT binary patch delta 15171 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 F{}=Pj5}yD7 delta 14977 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 BJx~Au diff --git a/CTBadge.h b/CTBadge.h index f085e7a..9f520b3 100644 --- a/CTBadge.h +++ b/CTBadge.h @@ -18,12 +18,10 @@ extern const float CTSmallLabelSize; @interface CTBadge : NSObject { - NSColor *badgeColor; - NSColor *labelColor; } + (CTBadge *)systemBadge; //Classic white on red badge -+ (CTBadge *)badgeWithColor:(NSColor *)badgeColor labelColor:(NSColor *)labelColor; //Badge of any color scheme ++ (CTBadge *)badgeWithColor:(NSColor *)badgeColor labelColor:(NSColor *)labelColor gradientIntensity:(CGFloat) intensity; //Badge of any color scheme - (NSImage *)smallBadgeForValue:(unsigned)value; //Image to use during drag operations - (NSImage *)smallBadgeForString:(NSString *)string; @@ -39,10 +37,8 @@ extern const float CTSmallLabelSize; - (void)badgeApplicationDockIconWithValue:(unsigned)value insetX:(float)dx y:(float)dy; //Badges the Application's icon with - (void)badgeApplicationDockIconWithString:(NSString *)string insetX:(float)dx y:(float)dy; // and puts it on the dock -- (void)setBadgeColor:(NSColor *)theColor; //Sets the color used on badge -- (void)setLabelColor:(NSColor *)theColor; //Sets the color of the label - -- (NSColor *)badgeColor; //Color currently being used on the badge -- (NSColor *)labelColor; //Color currently being used on the label +@property (readwrite) NSColor* badgeColor; +@property (readwrite) NSColor* labelColor; +@property (readwrite) CGFloat badgeGradientIntensity; @end diff --git a/CTBadge.m b/CTBadge.m index 64834e3..1d8b542 100644 --- a/CTBadge.m +++ b/CTBadge.m @@ -25,17 +25,17 @@ - (NSGradient *)badgeGradient; //gradient used to fill badge mask @implementation CTBadge +@synthesize badgeColor, labelColor, badgeGradientIntensity; + - (id)init { self = [super init]; if (self != nil) { - badgeColor = nil; - labelColor = nil; - - [self setBadgeColor:[NSColor redColor]]; - [self setLabelColor:[NSColor whiteColor]]; + self.badgeColor = [NSColor redColor]; + self.labelColor = [NSColor whiteColor]; + self.badgeGradientIntensity = 1; } return self; } @@ -46,39 +46,18 @@ + (CTBadge *)systemBadge return newInstance; } -+ (CTBadge *)badgeWithColor:(NSColor *)badgeColor labelColor:(NSColor *)labelColor; ++ (CTBadge *)badgeWithColor:(NSColor *)badgeColor labelColor:(NSColor *)labelColor gradientIntensity:(CGFloat) intensity { CTBadge* newInstance = [[[self class] alloc] init]; - [newInstance setBadgeColor:badgeColor]; - [newInstance setLabelColor:labelColor]; + newInstance.badgeColor = badgeColor; + newInstance.labelColor = labelColor; + newInstance.badgeGradientIntensity = intensity; return newInstance; } #pragma mark - - -#pragma mark Appearance -- (void)setBadgeColor:(NSColor *)theColor; -{ - badgeColor = theColor; -} -- (void)setLabelColor:(NSColor *)theColor; -{ - labelColor = theColor; -} - -- (NSColor *)badgeColor -{ - return badgeColor; -} -- (NSColor *)labelColor -{ - return labelColor; -} -#pragma mark - - - #pragma mark Drawing - (NSImage *)smallBadgeForValue:(unsigned)value //does drawing in it's own special way { @@ -218,7 +197,7 @@ - (void)badgeApplicationDockIconWithString:(NSString *)string insetX:(float)dx y //Put the appIcon underneath the badgeOverlay [badgeOverlay lockFocus]; - [appIcon drawAtPoint:NSZeroPoint fromRect:NSMakeRect(0,0,appIcon.size.width, appIcon.size.height) operation:NSCompositingOperationDestinationOver fraction:1]; + [appIcon drawInRect:NSMakeRect(0,0,badgeOverlay.size.width, badgeOverlay.size.height) fromRect:NSMakeRect(0,0,appIcon.size.width, appIcon.size.height) operation:NSCompositingOperationDestinationOver fraction:1]; [badgeOverlay unlockFocus]; @@ -240,11 +219,11 @@ - (void)badgeApplicationDockIconWithValue:(unsigned)value insetX:(float)dx y:(fl #pragma mark Misc. - (NSGradient *)badgeGradient { - NSGradient *aGradient = [[NSGradient alloc] initWithColorsAndLocations:[self badgeColor], 0.0, - [self badgeColor], 1/3., - [[self badgeColor] shadowWithLevel:1/3.], 1.0, nil]; - - return aGradient; + CGFloat i = MIN(MAX(self.badgeGradientIntensity, 0.0), 1.0) / 3.0; + return [[NSGradient alloc] initWithColorsAndLocations: + [self.badgeColor highlightWithLevel:i], 0.0, + self.badgeColor, 1/3., + [self.badgeColor shadowWithLevel:i], 1.0, nil]; } - (NSAttributedString *)labelForString:(NSString *)label size:(unsigned)size diff --git a/CTBadge.xcodeproj/project.xcworkspace/xcuserdata/shamyl.xcuserdatad/UserInterfaceState.xcuserstate b/CTBadge.xcodeproj/project.xcworkspace/xcuserdata/shamyl.xcuserdatad/UserInterfaceState.xcuserstate index 8e9dda9d1731492d62e4cb22774492ef6fc2195a..155bd1acdd155cf04d9aea077d45734f7cad0c44 100644 GIT binary patch delta 21195 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 He)xX?+IwXQ diff --git a/MainController.h b/MainController.h index aa6dc59..2c3f492 100644 --- a/MainController.h +++ b/MainController.h @@ -17,6 +17,7 @@ - (IBAction)setBadgeValue:(id)sender; - (IBAction)setBadgeColor:(id)sender; - (IBAction)setLabelColor:(id)sender; +- (IBAction)setBadgeGradientIntensity:(id)sender; - (IBAction)setApplicationIcon:(id)sender; diff --git a/MainController.m b/MainController.m index f3bcd80..d190e01 100644 --- a/MainController.m +++ b/MainController.m @@ -25,17 +25,22 @@ - (IBAction)setBadgeValue:(id)sender - (IBAction)setBadgeColor:(id)sender { - [myBadge setBadgeColor:[sender color]]; + myBadge.badgeColor = [sender color]; [self setBadgeValue:scroller]; } - (IBAction)setLabelColor:(id)sender { - [myBadge setLabelColor:[sender color]]; + myBadge.labelColor = [sender color]; [self setBadgeValue:scroller]; } +- (IBAction)setBadgeGradientIntensity:(id)sender +{ + myBadge.badgeGradientIntensity = [sender state] == NSControlStateValueOn ? 1 : 0; + [self setBadgeValue:scroller]; +} - (IBAction)setApplicationIcon:(id)sender {