From aa55a82d02383cb30621f98c882b3eb69b56b463 Mon Sep 17 00:00:00 2001 From: Dirk Holtwick Date: Sat, 8 Dec 2012 23:46:14 +0100 Subject: [PATCH 01/49] Mark strings and rename plugin --- ...{OMColorFrameView.h => HOColorFrameView.h} | 2 +- ...{OMColorFrameView.m => HOColorFrameView.m} | 4 +- ...{OMPlainColorWell.h => HOPlainColorWell.h} | 2 +- ...{OMPlainColorWell.m => HOPlainColorWell.m} | 4 +- Classes/{OMColorHelper.h => HOStringHelper.h} | 13 +- Classes/{OMColorHelper.m => HOStringHelper.m} | 237 +++++++++--------- .../project.pbxproj | 59 ++--- Info.plist | 8 +- 8 files changed, 159 insertions(+), 170 deletions(-) rename Classes/{OMColorFrameView.h => HOColorFrameView.h} (82%) rename Classes/{OMColorFrameView.m => HOColorFrameView.m} (87%) rename Classes/{OMPlainColorWell.h => HOPlainColorWell.h} (82%) rename Classes/{OMPlainColorWell.m => HOPlainColorWell.m} (94%) rename Classes/{OMColorHelper.h => HOStringHelper.h} (87%) rename Classes/{OMColorHelper.m => HOStringHelper.m} (74%) rename {OMColorSense.xcodeproj => HOStringSense.xcodeproj}/project.pbxproj (71%) diff --git a/Classes/OMColorFrameView.h b/Classes/HOColorFrameView.h similarity index 82% rename from Classes/OMColorFrameView.h rename to Classes/HOColorFrameView.h index ddceb72..521c101 100644 --- a/Classes/OMColorFrameView.h +++ b/Classes/HOColorFrameView.h @@ -8,7 +8,7 @@ #import -@interface OMColorFrameView : NSView { +@interface HOColorFrameView : NSView { NSColor *_color; } diff --git a/Classes/OMColorFrameView.m b/Classes/HOColorFrameView.m similarity index 87% rename from Classes/OMColorFrameView.m rename to Classes/HOColorFrameView.m index db14d0c..710bcb4 100644 --- a/Classes/OMColorFrameView.m +++ b/Classes/HOColorFrameView.m @@ -6,9 +6,9 @@ // // -#import "OMColorFrameView.h" +#import "HOColorFrameView.h" -@implementation OMColorFrameView +@implementation HOColorFrameView @synthesize color=_color; diff --git a/Classes/OMPlainColorWell.h b/Classes/HOPlainColorWell.h similarity index 82% rename from Classes/OMPlainColorWell.h rename to Classes/HOPlainColorWell.h index 888177a..c9ae124 100644 --- a/Classes/OMPlainColorWell.h +++ b/Classes/HOPlainColorWell.h @@ -8,7 +8,7 @@ #import -@interface OMPlainColorWell : NSColorWell { +@interface HOPlainColorWell : NSColorWell { NSColor *_strokeColor; } diff --git a/Classes/OMPlainColorWell.m b/Classes/HOPlainColorWell.m similarity index 94% rename from Classes/OMPlainColorWell.m rename to Classes/HOPlainColorWell.m index 765b9f2..bb891d5 100644 --- a/Classes/OMPlainColorWell.m +++ b/Classes/HOPlainColorWell.m @@ -6,9 +6,9 @@ // // -#import "OMPlainColorWell.h" +#import "HOPlainColorWell.h" -@implementation OMPlainColorWell +@implementation HOPlainColorWell @synthesize strokeColor=_strokeColor; diff --git a/Classes/OMColorHelper.h b/Classes/HOStringHelper.h similarity index 87% rename from Classes/OMColorHelper.h rename to Classes/HOStringHelper.h index 43beb84..d6c54a7 100644 --- a/Classes/OMColorHelper.h +++ b/Classes/HOStringHelper.h @@ -30,12 +30,12 @@ BOOL OMColorTypeIsNSColor(OMColorType colorType) { return colorType >= OMColorTy //TODO: Maybe support HSB and CMYK color types... -@class OMColorFrameView, OMPlainColorWell; +@class HOColorFrameView, HOPlainColorWell; -@interface OMColorHelper : NSObject { +@interface HOStringHelper : NSObject { - OMPlainColorWell *_colorWell; - OMColorFrameView *_colorFrameView; + HOPlainColorWell *_colorWell; + HOColorFrameView *_colorFrameView; NSRange _selectedColorRange; OMColorType _selectedColorType; NSTextView *_textView; @@ -46,10 +46,11 @@ BOOL OMColorTypeIsNSColor(OMColorType colorType) { return colorType >= OMColorTy NSRegularExpression *_whiteNSColorRegex; NSRegularExpression *_whiteUIColorRegex; NSRegularExpression *_constantColorRegex; + NSRegularExpression *_stringRegex; } -@property (nonatomic, retain) OMPlainColorWell *colorWell; -@property (nonatomic, retain) OMColorFrameView *colorFrameView; +@property (nonatomic, retain) HOPlainColorWell *colorWell; +@property (nonatomic, retain) HOColorFrameView *colorFrameView; @property (nonatomic, retain) NSTextView *textView; @property (nonatomic, assign) NSRange selectedColorRange; @property (nonatomic, assign) OMColorType selectedColorType; diff --git a/Classes/OMColorHelper.m b/Classes/HOStringHelper.m similarity index 74% rename from Classes/OMColorHelper.m rename to Classes/HOStringHelper.m index 713ed68..23eee72 100755 --- a/Classes/OMColorHelper.m +++ b/Classes/HOStringHelper.m @@ -6,14 +6,14 @@ // // -#import "OMColorHelper.h" -#import "OMPlainColorWell.h" -#import "OMColorFrameView.h" +#import "HOStringHelper.h" +#import "HOPlainColorWell.h" +#import "HOColorFrameView.h" #define kOMColorHelperHighlightingDisabled @"OMColorHelperHighlightingDisabled" #define kOMColorHelperInsertionMode @"OMColorHelperInsertionMode" -@implementation OMColorHelper +@implementation HOStringHelper @synthesize colorWell=_colorWell, colorFrameView=_colorFrameView, textView=_textView, selectedColorRange=_selectedColorRange, selectedColorType=_selectedColorType; @@ -55,6 +55,7 @@ - (id)init _rgbaNSColorRegex = [[NSRegularExpression regularExpressionWithPattern:@"\\[\\s*NSColor\\s+colorWith(Calibrated|Device)Red:\\s*([0-9]*\\.?[0-9]*f?)\\s*(\\/\\s*[0-9]*\\.?[0-9]*f?)?\\s+green:\\s*([0-9]*\\.?[0-9]*f?)\\s*(\\/\\s*[0-9]*\\.?[0-9]*f?)?\\s+blue:\\s*([0-9]*\\.?[0-9]*f?)\\s*(\\/\\s*[0-9]*\\.?[0-9]*f?)?\\s+alpha:\\s*([0-9]*\\.?[0-9]*f?)\\s*(\\/\\s*[0-9]*\\.?[0-9]*f?)?\\s*\\]" options:0 error:NULL] retain]; _whiteNSColorRegex = [[NSRegularExpression regularExpressionWithPattern:@"\\[\\s*NSColor\\s+colorWith(Calibrated|Device)White:\\s*([0-9]*\\.?[0-9]*f?)\\s*(\\/\\s*[0-9]*\\.?[0-9]*f?)?\\s+alpha:\\s*([0-9]*\\.?[0-9]*f?)\\s*(\\/\\s*[0-9]*\\.?[0-9]*f?)?\\s*\\]" options:0 error:NULL] retain]; _constantColorRegex = [[NSRegularExpression regularExpressionWithPattern:@"\\[\\s*(UI|NS)Color\\s+(black|darkGray|lightGray|white|gray|red|green|blue|cyan|yellow|magenta|orange|purple|brown|clear)Color\\s*\\]" options:0 error:NULL] retain]; + _stringRegex = [[NSRegularExpression regularExpressionWithPattern:@"@\"(.*?)\"" options:0 error:NULL] retain]; } return self; } @@ -271,20 +272,20 @@ - (void)colorDidChange:(id)sender #pragma mark - View Initialization -- (OMPlainColorWell *)colorWell +- (HOPlainColorWell *)colorWell { if (!_colorWell) { - _colorWell = [[OMPlainColorWell alloc] initWithFrame:NSMakeRect(0, 0, 50, 30)]; + _colorWell = [[HOPlainColorWell alloc] initWithFrame:NSMakeRect(0, 0, 50, 30)]; [_colorWell setTarget:self]; [_colorWell setAction:@selector(colorDidChange:)]; } return _colorWell; } -- (OMColorFrameView *)colorFrameView +- (HOColorFrameView *)colorFrameView { if (!_colorFrameView) { - _colorFrameView = [[OMColorFrameView alloc] initWithFrame:NSZeroRect]; + _colorFrameView = [[HOColorFrameView alloc] initWithFrame:NSZeroRect]; } return _colorFrameView; } @@ -297,7 +298,7 @@ - (NSColor *)colorInText:(NSString *)text selectedRange:(NSRange)selectedRange t __block NSRange foundColorRange = NSMakeRange(NSNotFound, 0); __block OMColorType foundColorType = OMColorTypeNone; - [_rgbaUIColorRegex enumerateMatchesInString:text options:0 range:NSMakeRange(0, text.length) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) { + [_stringRegex enumerateMatchesInString:text options:0 range:NSMakeRange(0, text.length) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) { NSRange colorRange = [result range]; if (selectedRange.location >= colorRange.location && NSMaxRange(selectedRange) <= NSMaxRange(colorRange)) { NSString *typeIndicator = [text substringWithRange:[result rangeAtIndex:1]]; @@ -305,126 +306,111 @@ - (NSColor *)colorInText:(NSString *)text selectedRange:(NSRange)selectedRange t foundColorType = OMColorTypeUIRGBAInit; } else { foundColorType = OMColorTypeUIRGBA; - } - - // [UIColor colorWithRed:128 / 255.0 green:10 / 255 blue:123/255 alpha:128 /255] - - double red = [[text substringWithRange:[result rangeAtIndex:2]] doubleValue]; - red = [self dividedValue:red withDivisorRange:[result rangeAtIndex:3] inString:text]; - - double green = [[text substringWithRange:[result rangeAtIndex:4]] doubleValue]; - green = [self dividedValue:green withDivisorRange:[result rangeAtIndex:5] inString:text]; - - double blue = [[text substringWithRange:[result rangeAtIndex:6]] doubleValue]; - blue = [self dividedValue:blue withDivisorRange:[result rangeAtIndex:7] inString:text]; - - double alpha = [[text substringWithRange:[result rangeAtIndex:8]] doubleValue]; - alpha = [self dividedValue:alpha withDivisorRange:[result rangeAtIndex:9] inString:text]; - - foundColor = [NSColor colorWithCalibratedRed:red green:green blue:blue alpha:alpha]; + } + foundColor = [NSColor redColor]; foundColorRange = colorRange; *stop = YES; } }]; - - if (!foundColor) { - [_whiteUIColorRegex enumerateMatchesInString:text options:0 range:NSMakeRange(0, text.length) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) { - NSRange colorRange = [result range]; - if (selectedRange.location >= colorRange.location && NSMaxRange(selectedRange) <= NSMaxRange(colorRange)) { - NSString *typeIndicator = [text substringWithRange:[result rangeAtIndex:1]]; - if ([typeIndicator rangeOfString:@"init"].location != NSNotFound) { - foundColorType = OMColorTypeUIWhiteInit; - } else { - foundColorType = OMColorTypeUIWhite; - } - double white = [[text substringWithRange:[result rangeAtIndex:2]] doubleValue]; - white = [self dividedValue:white withDivisorRange:[result rangeAtIndex:3] inString:text]; - - double alpha = [[text substringWithRange:[result rangeAtIndex:4]] doubleValue]; - alpha = [self dividedValue:alpha withDivisorRange:[result rangeAtIndex:5] inString:text]; - - foundColor = [NSColor colorWithCalibratedWhite:white alpha:alpha]; - foundColorRange = colorRange; - *stop = YES; - } - }]; - } - - if (!foundColor) { - [_constantColorRegex enumerateMatchesInString:text options:0 range:NSMakeRange(0, text.length) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) { - NSRange colorRange = [result range]; - if (selectedRange.location >= colorRange.location && NSMaxRange(selectedRange) <= NSMaxRange(colorRange)) { - NSString *NS_UI = [text substringWithRange:[result rangeAtIndex:1]]; - NSString *colorName = [text substringWithRange:[result rangeAtIndex:2]]; - foundColor = [_constantColorsByName objectForKey:colorName]; - foundColorRange = colorRange; - if ([NS_UI isEqualToString:@"UI"]) { - foundColorType = OMColorTypeUIConstant; - } else { - foundColorType = OMColorTypeNSConstant; - } - *stop = YES; - } - }]; - } - - if (!foundColor) { - [_rgbaNSColorRegex enumerateMatchesInString:text options:0 range:NSMakeRange(0, text.length) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) { - NSRange colorRange = [result range]; - if (selectedRange.location >= colorRange.location && NSMaxRange(selectedRange) <= NSMaxRange(colorRange)) { - NSString *deviceOrCalibrated = [text substringWithRange:[result rangeAtIndex:1]]; - if ([deviceOrCalibrated isEqualToString:@"Device"]) { - foundColorType = OMColorTypeNSRGBADevice; - } else { - foundColorType = OMColorTypeNSRGBACalibrated; - } - double red = [[text substringWithRange:[result rangeAtIndex:2]] doubleValue]; - red = [self dividedValue:red withDivisorRange:[result rangeAtIndex:3] inString:text]; - - double green = [[text substringWithRange:[result rangeAtIndex:4]] doubleValue]; - green = [self dividedValue:green withDivisorRange:[result rangeAtIndex:5] inString:text]; - - double blue = [[text substringWithRange:[result rangeAtIndex:6]] doubleValue]; - blue = [self dividedValue:blue withDivisorRange:[result rangeAtIndex:7] inString:text]; - - double alpha = [[text substringWithRange:[result rangeAtIndex:8]] doubleValue]; - alpha = [self dividedValue:alpha withDivisorRange:[result rangeAtIndex:9] inString:text]; - - if (foundColorType == OMColorTypeNSRGBACalibrated) { - foundColor = [NSColor colorWithCalibratedRed:red green:green blue:blue alpha:alpha]; - } else { - foundColor = [NSColor colorWithDeviceRed:red green:green blue:blue alpha:alpha]; - } - foundColorRange = colorRange; - *stop = YES; - } - }]; - } - - if (!foundColor) { - [_whiteNSColorRegex enumerateMatchesInString:text options:0 range:NSMakeRange(0, text.length) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) { - NSRange colorRange = [result range]; - if (selectedRange.location >= colorRange.location && NSMaxRange(selectedRange) <= NSMaxRange(colorRange)) { - NSString *deviceOrCalibrated = [text substringWithRange:[result rangeAtIndex:1]]; - double white = [[text substringWithRange:[result rangeAtIndex:2]] doubleValue]; - white = [self dividedValue:white withDivisorRange:[result rangeAtIndex:3] inString:text]; - - double alpha = [[text substringWithRange:[result rangeAtIndex:4]] doubleValue]; - alpha = [self dividedValue:alpha withDivisorRange:[result rangeAtIndex:5] inString:text]; - - if ([deviceOrCalibrated isEqualToString:@"Device"]) { - foundColor = [NSColor colorWithDeviceWhite:white alpha:alpha]; - foundColorType = OMColorTypeNSWhiteDevice; - } else { - foundColor = [NSColor colorWithCalibratedWhite:white alpha:alpha]; - foundColorType = OMColorTypeNSWhiteCalibrated; - } - foundColorRange = colorRange; - *stop = YES; - } - }]; - } - + // + // if (!foundColor) { + // [_whiteUIColorRegex enumerateMatchesInString:text options:0 range:NSMakeRange(0, text.length) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) { + // NSRange colorRange = [result range]; + // if (selectedRange.location >= colorRange.location && NSMaxRange(selectedRange) <= NSMaxRange(colorRange)) { + // NSString *typeIndicator = [text substringWithRange:[result rangeAtIndex:1]]; + // if ([typeIndicator rangeOfString:@"init"].location != NSNotFound) { + // foundColorType = OMColorTypeUIWhiteInit; + // } else { + // foundColorType = OMColorTypeUIWhite; + // } + // double white = [[text substringWithRange:[result rangeAtIndex:2]] doubleValue]; + // white = [self dividedValue:white withDivisorRange:[result rangeAtIndex:3] inString:text]; + // + // double alpha = [[text substringWithRange:[result rangeAtIndex:4]] doubleValue]; + // alpha = [self dividedValue:alpha withDivisorRange:[result rangeAtIndex:5] inString:text]; + // + // foundColor = [NSColor colorWithCalibratedWhite:white alpha:alpha]; + // foundColorRange = colorRange; + // *stop = YES; + // } + // }]; + // } + // + // if (!foundColor) { + // [_constantColorRegex enumerateMatchesInString:text options:0 range:NSMakeRange(0, text.length) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) { + // NSRange colorRange = [result range]; + // if (selectedRange.location >= colorRange.location && NSMaxRange(selectedRange) <= NSMaxRange(colorRange)) { + // NSString *NS_UI = [text substringWithRange:[result rangeAtIndex:1]]; + // NSString *colorName = [text substringWithRange:[result rangeAtIndex:2]]; + // foundColor = [_constantColorsByName objectForKey:colorName]; + // foundColorRange = colorRange; + // if ([NS_UI isEqualToString:@"UI"]) { + // foundColorType = OMColorTypeUIConstant; + // } else { + // foundColorType = OMColorTypeNSConstant; + // } + // *stop = YES; + // } + // }]; + // } + // + // if (!foundColor) { + // [_rgbaNSColorRegex enumerateMatchesInString:text options:0 range:NSMakeRange(0, text.length) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) { + // NSRange colorRange = [result range]; + // if (selectedRange.location >= colorRange.location && NSMaxRange(selectedRange) <= NSMaxRange(colorRange)) { + // NSString *deviceOrCalibrated = [text substringWithRange:[result rangeAtIndex:1]]; + // if ([deviceOrCalibrated isEqualToString:@"Device"]) { + // foundColorType = OMColorTypeNSRGBADevice; + // } else { + // foundColorType = OMColorTypeNSRGBACalibrated; + // } + // double red = [[text substringWithRange:[result rangeAtIndex:2]] doubleValue]; + // red = [self dividedValue:red withDivisorRange:[result rangeAtIndex:3] inString:text]; + // + // double green = [[text substringWithRange:[result rangeAtIndex:4]] doubleValue]; + // green = [self dividedValue:green withDivisorRange:[result rangeAtIndex:5] inString:text]; + // + // double blue = [[text substringWithRange:[result rangeAtIndex:6]] doubleValue]; + // blue = [self dividedValue:blue withDivisorRange:[result rangeAtIndex:7] inString:text]; + // + // double alpha = [[text substringWithRange:[result rangeAtIndex:8]] doubleValue]; + // alpha = [self dividedValue:alpha withDivisorRange:[result rangeAtIndex:9] inString:text]; + // + // if (foundColorType == OMColorTypeNSRGBACalibrated) { + // foundColor = [NSColor colorWithCalibratedRed:red green:green blue:blue alpha:alpha]; + // } else { + // foundColor = [NSColor colorWithDeviceRed:red green:green blue:blue alpha:alpha]; + // } + // foundColorRange = colorRange; + // *stop = YES; + // } + // }]; + // } + // + // if (!foundColor) { + // [_whiteNSColorRegex enumerateMatchesInString:text options:0 range:NSMakeRange(0, text.length) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) { + // NSRange colorRange = [result range]; + // if (selectedRange.location >= colorRange.location && NSMaxRange(selectedRange) <= NSMaxRange(colorRange)) { + // NSString *deviceOrCalibrated = [text substringWithRange:[result rangeAtIndex:1]]; + // double white = [[text substringWithRange:[result rangeAtIndex:2]] doubleValue]; + // white = [self dividedValue:white withDivisorRange:[result rangeAtIndex:3] inString:text]; + // + // double alpha = [[text substringWithRange:[result rangeAtIndex:4]] doubleValue]; + // alpha = [self dividedValue:alpha withDivisorRange:[result rangeAtIndex:5] inString:text]; + // + // if ([deviceOrCalibrated isEqualToString:@"Device"]) { + // foundColor = [NSColor colorWithDeviceWhite:white alpha:alpha]; + // foundColorType = OMColorTypeNSWhiteDevice; + // } else { + // foundColor = [NSColor colorWithCalibratedWhite:white alpha:alpha]; + // foundColorType = OMColorTypeNSWhiteCalibrated; + // } + // foundColorRange = colorRange; + // *stop = YES; + // } + // }]; + // } + if (foundColor) { if (matchedRange != NULL) { *matchedRange = foundColorRange; @@ -511,6 +497,7 @@ - (void)dealloc [_constantColorsByName release]; [_whiteNSColorRegex release]; [_rgbaNSColorRegex release]; + [_stringRegex release]; [super dealloc]; } diff --git a/OMColorSense.xcodeproj/project.pbxproj b/HOStringSense.xcodeproj/project.pbxproj similarity index 71% rename from OMColorSense.xcodeproj/project.pbxproj rename to HOStringSense.xcodeproj/project.pbxproj index 2843686..2abd2a6 100755 --- a/OMColorSense.xcodeproj/project.pbxproj +++ b/HOStringSense.xcodeproj/project.pbxproj @@ -8,23 +8,23 @@ /* Begin PBXBuildFile section */ 7F2EB89C145057F200E97A87 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7F2EB899145057EA00E97A87 /* AppKit.framework */; }; - 7F6EE2BF15FA6F3B00BA114A /* OMColorFrameView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F6EE2BE15FA6F3B00BA114A /* OMColorFrameView.m */; }; - 7FDADE3A15FA6CA400A847E3 /* OMPlainColorWell.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FDADE3915FA6CA400A847E3 /* OMPlainColorWell.m */; }; + 7F6EE2BF15FA6F3B00BA114A /* HOColorFrameView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F6EE2BE15FA6F3B00BA114A /* HOColorFrameView.m */; }; + 7FDADE3A15FA6CA400A847E3 /* HOPlainColorWell.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FDADE3915FA6CA400A847E3 /* HOPlainColorWell.m */; }; DA1B5D020E64686800921439 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 089C1672FE841209C02AAC07 /* Foundation.framework */; }; - DA37E2DC0E6291C8001BDFEF /* OMColorHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = DA37E2DB0E6291C8001BDFEF /* OMColorHelper.m */; }; + DA37E2DC0E6291C8001BDFEF /* HOStringHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = DA37E2DB0E6291C8001BDFEF /* HOStringHelper.m */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ 089C1672FE841209C02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; - 7F2B355F15FA59D000DB3249 /* OMColorHelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OMColorHelper.h; sourceTree = ""; }; + 7F2B355F15FA59D000DB3249 /* HOStringHelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HOStringHelper.h; sourceTree = ""; }; 7F2EB899145057EA00E97A87 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; - 7F6EE2BD15FA6F3B00BA114A /* OMColorFrameView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OMColorFrameView.h; sourceTree = ""; }; - 7F6EE2BE15FA6F3B00BA114A /* OMColorFrameView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OMColorFrameView.m; sourceTree = ""; }; - 7FDADE3815FA6CA400A847E3 /* OMPlainColorWell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OMPlainColorWell.h; sourceTree = ""; }; - 7FDADE3915FA6CA400A847E3 /* OMPlainColorWell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OMPlainColorWell.m; sourceTree = ""; }; - 8D5B49B6048680CD000E48DA /* OMColorSense.xcplugin */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = OMColorSense.xcplugin; sourceTree = BUILT_PRODUCTS_DIR; }; + 7F6EE2BD15FA6F3B00BA114A /* HOColorFrameView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HOColorFrameView.h; sourceTree = ""; }; + 7F6EE2BE15FA6F3B00BA114A /* HOColorFrameView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HOColorFrameView.m; sourceTree = ""; }; + 7FDADE3815FA6CA400A847E3 /* HOPlainColorWell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HOPlainColorWell.h; sourceTree = ""; }; + 7FDADE3915FA6CA400A847E3 /* HOPlainColorWell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HOPlainColorWell.m; sourceTree = ""; }; + 8D5B49B6048680CD000E48DA /* HOStringSense.xcplugin */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = HOStringSense.xcplugin; sourceTree = BUILT_PRODUCTS_DIR; }; 8D5B49B7048680CD000E48DA /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - DA37E2DB0E6291C8001BDFEF /* OMColorHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OMColorHelper.m; sourceTree = ""; }; + DA37E2DB0E6291C8001BDFEF /* HOStringHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HOStringHelper.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -48,6 +48,7 @@ 089C1671FE841209C02AAC07 /* Frameworks and Libraries */, 19C28FB8FE9D52D311CA2CBB /* Products */, ); + indentWidth = 4; name = QuietXcode; sourceTree = ""; }; @@ -71,7 +72,7 @@ 19C28FB8FE9D52D311CA2CBB /* Products */ = { isa = PBXGroup; children = ( - 8D5B49B6048680CD000E48DA /* OMColorSense.xcplugin */, + 8D5B49B6048680CD000E48DA /* HOStringSense.xcplugin */, ); name = Products; sourceTree = ""; @@ -79,12 +80,12 @@ 7F411B0C15FABAC6002F77B6 /* Classes */ = { isa = PBXGroup; children = ( - 7F2B355F15FA59D000DB3249 /* OMColorHelper.h */, - DA37E2DB0E6291C8001BDFEF /* OMColorHelper.m */, - 7F6EE2BD15FA6F3B00BA114A /* OMColorFrameView.h */, - 7F6EE2BE15FA6F3B00BA114A /* OMColorFrameView.m */, - 7FDADE3815FA6CA400A847E3 /* OMPlainColorWell.h */, - 7FDADE3915FA6CA400A847E3 /* OMPlainColorWell.m */, + 7F2B355F15FA59D000DB3249 /* HOStringHelper.h */, + DA37E2DB0E6291C8001BDFEF /* HOStringHelper.m */, + 7F6EE2BD15FA6F3B00BA114A /* HOColorFrameView.h */, + 7F6EE2BE15FA6F3B00BA114A /* HOColorFrameView.m */, + 7FDADE3815FA6CA400A847E3 /* HOPlainColorWell.h */, + 7FDADE3915FA6CA400A847E3 /* HOPlainColorWell.m */, ); path = Classes; sourceTree = ""; @@ -92,9 +93,9 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - 8D5B49AC048680CD000E48DA /* OMColorSense */ = { + 8D5B49AC048680CD000E48DA /* HOStringSense */ = { isa = PBXNativeTarget; - buildConfigurationList = 1DEB913A08733D840010E9CD /* Build configuration list for PBXNativeTarget "OMColorSense" */; + buildConfigurationList = 1DEB913A08733D840010E9CD /* Build configuration list for PBXNativeTarget "HOStringSense" */; buildPhases = ( 8D5B49B1048680CD000E48DA /* Sources */, 8D5B49B3048680CD000E48DA /* Frameworks */, @@ -103,10 +104,10 @@ ); dependencies = ( ); - name = OMColorSense; + name = HOStringSense; productInstallPath = "$(HOME)/Library/Bundles"; productName = QuietXcode; - productReference = 8D5B49B6048680CD000E48DA /* OMColorSense.xcplugin */; + productReference = 8D5B49B6048680CD000E48DA /* HOStringSense.xcplugin */; productType = "com.apple.product-type.bundle"; }; /* End PBXNativeTarget section */ @@ -117,7 +118,7 @@ attributes = { LastUpgradeCheck = 0440; }; - buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "OMColorSense" */; + buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "HOStringSense" */; compatibilityVersion = "Xcode 3.2"; developmentRegion = English; hasScannedForEncodings = 1; @@ -131,7 +132,7 @@ projectDirPath = ""; projectRoot = ""; targets = ( - 8D5B49AC048680CD000E48DA /* OMColorSense */, + 8D5B49AC048680CD000E48DA /* HOStringSense */, ); }; /* End PBXProject section */ @@ -141,9 +142,9 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - DA37E2DC0E6291C8001BDFEF /* OMColorHelper.m in Sources */, - 7FDADE3A15FA6CA400A847E3 /* OMPlainColorWell.m in Sources */, - 7F6EE2BF15FA6F3B00BA114A /* OMColorFrameView.m in Sources */, + DA37E2DC0E6291C8001BDFEF /* HOStringHelper.m in Sources */, + 7FDADE3A15FA6CA400A847E3 /* HOPlainColorWell.m in Sources */, + 7F6EE2BF15FA6F3B00BA114A /* HOColorFrameView.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -166,7 +167,7 @@ INFOPLIST_FILE = Info.plist; INSTALL_PATH = "/Library/Application Support/Developer/Shared/Xcode/Plug-ins"; LD_RUNPATH_SEARCH_PATHS = /Developer; - PRODUCT_NAME = OMColorSense; + PRODUCT_NAME = HOStringSense; STRIP_INSTALLED_PRODUCT = NO; WRAPPER_EXTENSION = xcplugin; }; @@ -190,7 +191,7 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 1DEB913A08733D840010E9CD /* Build configuration list for PBXNativeTarget "OMColorSense" */ = { + 1DEB913A08733D840010E9CD /* Build configuration list for PBXNativeTarget "HOStringSense" */ = { isa = XCConfigurationList; buildConfigurations = ( 1DEB913B08733D840010E9CD /* Debug */, @@ -198,7 +199,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; - 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "OMColorSense" */ = { + 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "HOStringSense" */ = { isa = XCConfigurationList; buildConfigurations = ( 1DEB913F08733D840010E9CD /* Debug */, diff --git a/Info.plist b/Info.plist index 1bfa565..529b71c 100755 --- a/Info.plist +++ b/Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - com.omz-software.${PRODUCT_NAME:identifier} + it.holtwick.${PRODUCT_NAME:identifier} CFBundleInfoDictionaryVersion 6.0 CFBundleName @@ -19,12 +19,12 @@ CFBundleVersion ${CURRENT_PROJECT_VERSION} NSPrincipalClass - OMColorHelper + HOStringHelper + XC4Compatible + XCGCReady XCPluginHasUI - XC4Compatible - From a6cd25853e4223e9d0f1de54260d992ebef3e96b Mon Sep 17 00:00:00 2001 From: Dirk Holtwick Date: Sat, 8 Dec 2012 23:54:55 +0100 Subject: [PATCH 02/49] Pattern for strings seems to work --- Classes/HOStringHelper.h | 7 -- Classes/HOStringHelper.m | 176 +-------------------------------------- 2 files changed, 4 insertions(+), 179 deletions(-) diff --git a/Classes/HOStringHelper.h b/Classes/HOStringHelper.h index d6c54a7..acefc1f 100644 --- a/Classes/HOStringHelper.h +++ b/Classes/HOStringHelper.h @@ -39,13 +39,6 @@ BOOL OMColorTypeIsNSColor(OMColorType colorType) { return colorType >= OMColorTy NSRange _selectedColorRange; OMColorType _selectedColorType; NSTextView *_textView; - NSDictionary *_constantColorsByName; - - NSRegularExpression *_rgbaUIColorRegex; - NSRegularExpression *_rgbaNSColorRegex; - NSRegularExpression *_whiteNSColorRegex; - NSRegularExpression *_whiteUIColorRegex; - NSRegularExpression *_constantColorRegex; NSRegularExpression *_stringRegex; } diff --git a/Classes/HOStringHelper.m b/Classes/HOStringHelper.m index 23eee72..0889851 100755 --- a/Classes/HOStringHelper.m +++ b/Classes/HOStringHelper.m @@ -33,29 +33,9 @@ - (id)init if (self = [super init]) { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidFinishLaunching:) name:NSApplicationDidFinishLaunchingNotification object:nil]; _selectedColorRange = NSMakeRange(NSNotFound, 0); - _constantColorsByName = [[NSDictionary alloc] initWithObjectsAndKeys: - [[NSColor blackColor] colorUsingColorSpace:[NSColorSpace genericRGBColorSpace]], @"black", - [NSColor darkGrayColor], @"darkGray", - [NSColor lightGrayColor], @"lightGray", - [[NSColor whiteColor] colorUsingColorSpace:[NSColorSpace genericRGBColorSpace]], @"white", - [NSColor grayColor], @"gray", - [NSColor redColor], @"red", - [NSColor greenColor], @"green", - [NSColor blueColor], @"blue", - [NSColor cyanColor], @"cyan", - [NSColor yellowColor], @"yellow", - [NSColor magentaColor], @"magenta", - [NSColor orangeColor], @"orange", - [NSColor purpleColor], @"purple", - [NSColor brownColor], @"brown", - [[NSColor clearColor] colorUsingColorSpace:[NSColorSpace genericRGBColorSpace]], @"clear", nil]; - - _rgbaUIColorRegex = [[NSRegularExpression regularExpressionWithPattern:@"(\\[\\s*UIColor\\s+colorWith|\\[\\s*\\[\\s*UIColor\\s+alloc\\]\\s*initWith)Red:\\s*([0-9]*\\.?[0-9]*f?)\\s*(\\/\\s*[0-9]*\\.?[0-9]*f?)?\\s+green:\\s*([0-9]*\\.?[0-9]*f?)\\s*(\\/\\s*[0-9]*\\.?[0-9]*f?)?\\s+blue:\\s*([0-9]*\\.?[0-9]*f?)\\s*(\\/\\s*[0-9]*\\.?[0-9]*f?)?\\s*alpha:\\s*([0-9]*\\.?[0-9]*f?)\\s*(\\/\\s*[0-9]*\\.?[0-9]*f?)?\\s*\\]" options:0 error:NULL] retain]; - _whiteUIColorRegex = [[NSRegularExpression regularExpressionWithPattern:@"(\\[\\s*UIColor\\s+colorWith|\\[\\s*\\[\\s*UIColor\\s+alloc\\]\\s*initWith)White:\\s*([0-9]*\\.?[0-9]*f?)\\s*(\\/\\s*[0-9]*\\.?[0-9]*f?)?\\s+alpha:\\s*([0-9]*\\.?[0-9]*f?)\\s*(\\/\\s*[0-9]*\\.?[0-9]*f?)?\\s*\\]" options:0 error:NULL] retain]; - _rgbaNSColorRegex = [[NSRegularExpression regularExpressionWithPattern:@"\\[\\s*NSColor\\s+colorWith(Calibrated|Device)Red:\\s*([0-9]*\\.?[0-9]*f?)\\s*(\\/\\s*[0-9]*\\.?[0-9]*f?)?\\s+green:\\s*([0-9]*\\.?[0-9]*f?)\\s*(\\/\\s*[0-9]*\\.?[0-9]*f?)?\\s+blue:\\s*([0-9]*\\.?[0-9]*f?)\\s*(\\/\\s*[0-9]*\\.?[0-9]*f?)?\\s+alpha:\\s*([0-9]*\\.?[0-9]*f?)\\s*(\\/\\s*[0-9]*\\.?[0-9]*f?)?\\s*\\]" options:0 error:NULL] retain]; - _whiteNSColorRegex = [[NSRegularExpression regularExpressionWithPattern:@"\\[\\s*NSColor\\s+colorWith(Calibrated|Device)White:\\s*([0-9]*\\.?[0-9]*f?)\\s*(\\/\\s*[0-9]*\\.?[0-9]*f?)?\\s+alpha:\\s*([0-9]*\\.?[0-9]*f?)\\s*(\\/\\s*[0-9]*\\.?[0-9]*f?)?\\s*\\]" options:0 error:NULL] retain]; - _constantColorRegex = [[NSRegularExpression regularExpressionWithPattern:@"\\[\\s*(UI|NS)Color\\s+(black|darkGray|lightGray|white|gray|red|green|blue|cyan|yellow|magenta|orange|purple|brown|clear)Color\\s*\\]" options:0 error:NULL] retain]; - _stringRegex = [[NSRegularExpression regularExpressionWithPattern:@"@\"(.*?)\"" options:0 error:NULL] retain]; + _stringRegex = [[NSRegularExpression regularExpressionWithPattern:@"@\"(\\\\\"|.)*?\"" + options:0 + error:NULL] retain]; } return self; } @@ -312,105 +292,6 @@ - (NSColor *)colorInText:(NSString *)text selectedRange:(NSRange)selectedRange t *stop = YES; } }]; - // - // if (!foundColor) { - // [_whiteUIColorRegex enumerateMatchesInString:text options:0 range:NSMakeRange(0, text.length) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) { - // NSRange colorRange = [result range]; - // if (selectedRange.location >= colorRange.location && NSMaxRange(selectedRange) <= NSMaxRange(colorRange)) { - // NSString *typeIndicator = [text substringWithRange:[result rangeAtIndex:1]]; - // if ([typeIndicator rangeOfString:@"init"].location != NSNotFound) { - // foundColorType = OMColorTypeUIWhiteInit; - // } else { - // foundColorType = OMColorTypeUIWhite; - // } - // double white = [[text substringWithRange:[result rangeAtIndex:2]] doubleValue]; - // white = [self dividedValue:white withDivisorRange:[result rangeAtIndex:3] inString:text]; - // - // double alpha = [[text substringWithRange:[result rangeAtIndex:4]] doubleValue]; - // alpha = [self dividedValue:alpha withDivisorRange:[result rangeAtIndex:5] inString:text]; - // - // foundColor = [NSColor colorWithCalibratedWhite:white alpha:alpha]; - // foundColorRange = colorRange; - // *stop = YES; - // } - // }]; - // } - // - // if (!foundColor) { - // [_constantColorRegex enumerateMatchesInString:text options:0 range:NSMakeRange(0, text.length) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) { - // NSRange colorRange = [result range]; - // if (selectedRange.location >= colorRange.location && NSMaxRange(selectedRange) <= NSMaxRange(colorRange)) { - // NSString *NS_UI = [text substringWithRange:[result rangeAtIndex:1]]; - // NSString *colorName = [text substringWithRange:[result rangeAtIndex:2]]; - // foundColor = [_constantColorsByName objectForKey:colorName]; - // foundColorRange = colorRange; - // if ([NS_UI isEqualToString:@"UI"]) { - // foundColorType = OMColorTypeUIConstant; - // } else { - // foundColorType = OMColorTypeNSConstant; - // } - // *stop = YES; - // } - // }]; - // } - // - // if (!foundColor) { - // [_rgbaNSColorRegex enumerateMatchesInString:text options:0 range:NSMakeRange(0, text.length) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) { - // NSRange colorRange = [result range]; - // if (selectedRange.location >= colorRange.location && NSMaxRange(selectedRange) <= NSMaxRange(colorRange)) { - // NSString *deviceOrCalibrated = [text substringWithRange:[result rangeAtIndex:1]]; - // if ([deviceOrCalibrated isEqualToString:@"Device"]) { - // foundColorType = OMColorTypeNSRGBADevice; - // } else { - // foundColorType = OMColorTypeNSRGBACalibrated; - // } - // double red = [[text substringWithRange:[result rangeAtIndex:2]] doubleValue]; - // red = [self dividedValue:red withDivisorRange:[result rangeAtIndex:3] inString:text]; - // - // double green = [[text substringWithRange:[result rangeAtIndex:4]] doubleValue]; - // green = [self dividedValue:green withDivisorRange:[result rangeAtIndex:5] inString:text]; - // - // double blue = [[text substringWithRange:[result rangeAtIndex:6]] doubleValue]; - // blue = [self dividedValue:blue withDivisorRange:[result rangeAtIndex:7] inString:text]; - // - // double alpha = [[text substringWithRange:[result rangeAtIndex:8]] doubleValue]; - // alpha = [self dividedValue:alpha withDivisorRange:[result rangeAtIndex:9] inString:text]; - // - // if (foundColorType == OMColorTypeNSRGBACalibrated) { - // foundColor = [NSColor colorWithCalibratedRed:red green:green blue:blue alpha:alpha]; - // } else { - // foundColor = [NSColor colorWithDeviceRed:red green:green blue:blue alpha:alpha]; - // } - // foundColorRange = colorRange; - // *stop = YES; - // } - // }]; - // } - // - // if (!foundColor) { - // [_whiteNSColorRegex enumerateMatchesInString:text options:0 range:NSMakeRange(0, text.length) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) { - // NSRange colorRange = [result range]; - // if (selectedRange.location >= colorRange.location && NSMaxRange(selectedRange) <= NSMaxRange(colorRange)) { - // NSString *deviceOrCalibrated = [text substringWithRange:[result rangeAtIndex:1]]; - // double white = [[text substringWithRange:[result rangeAtIndex:2]] doubleValue]; - // white = [self dividedValue:white withDivisorRange:[result rangeAtIndex:3] inString:text]; - // - // double alpha = [[text substringWithRange:[result rangeAtIndex:4]] doubleValue]; - // alpha = [self dividedValue:alpha withDivisorRange:[result rangeAtIndex:5] inString:text]; - // - // if ([deviceOrCalibrated isEqualToString:@"Device"]) { - // foundColor = [NSColor colorWithDeviceWhite:white alpha:alpha]; - // foundColorType = OMColorTypeNSWhiteDevice; - // } else { - // foundColor = [NSColor colorWithCalibratedWhite:white alpha:alpha]; - // foundColorType = OMColorTypeNSWhiteCalibrated; - // } - // foundColorRange = colorRange; - // *stop = YES; - // } - // }]; - // } - if (foundColor) { if (matchedRange != NULL) { *matchedRange = foundColorRange; @@ -437,50 +318,7 @@ - (double)dividedValue:(double)value withDivisorRange:(NSRange)divisorRange inSt - (NSString *)colorStringForColor:(NSColor *)color withType:(OMColorType)colorType { - NSString *colorString = nil; - CGFloat red = -1.0; CGFloat green = -1.0; CGFloat blue = -1.0; CGFloat alpha = -1.0; - color = [color colorUsingColorSpace:[NSColorSpace genericRGBColorSpace]]; - [color getRed:&red green:&green blue:&blue alpha:&alpha]; - - if (red >= 0) { - for (NSString *colorName in _constantColorsByName) { - NSColor *constantColor = [_constantColorsByName objectForKey:colorName]; - if ([constantColor isEqual:color]) { - if (OMColorTypeIsNSColor(colorType)) { - colorString = [NSString stringWithFormat:@"[NSColor %@Color]", colorName]; - } else { - colorString = [NSString stringWithFormat:@"[UIColor %@Color]", colorName]; - } - break; - } - } - if (!colorString) { - if (fabs(red - green) < 0.001 && fabs(green - blue) < 0.001) { - if (colorType == OMColorTypeUIRGBA || colorType == OMColorTypeUIWhite || colorType == OMColorTypeUIConstant) { - colorString = [NSString stringWithFormat:@"[UIColor colorWithWhite:%.3f alpha:%.3f]", red, alpha]; - } else if (colorType == OMColorTypeUIRGBAInit || colorType == OMColorTypeUIWhiteInit) { - colorString = [NSString stringWithFormat:@"[[UIColor alloc] initWithWhite:%.3f alpha:%.3f]", red, alpha]; - } - else if (colorType == OMColorTypeNSConstant || colorType == OMColorTypeNSRGBACalibrated || colorType == OMColorTypeNSWhiteCalibrated) { - colorString = [NSString stringWithFormat:@"[NSColor colorWithCalibratedWhite:%.3f alpha:%.3f]", red, alpha]; - } else if (colorType == OMColorTypeNSRGBADevice || colorType == OMColorTypeNSWhiteDevice) { - colorString = [NSString stringWithFormat:@"[NSColor colorWithDeviceWhite:%.3f alpha:%.3f]", red, alpha]; - } - } else { - if (colorType == OMColorTypeUIRGBA || colorType == OMColorTypeUIWhite || colorType == OMColorTypeUIConstant) { - colorString = [NSString stringWithFormat:@"[UIColor colorWithRed:%.3f green:%.3f blue:%.3f alpha:%.3f]", red, green, blue, alpha]; - } else if (colorType == OMColorTypeUIRGBAInit || colorType == OMColorTypeUIWhiteInit) { - colorString = [NSString stringWithFormat:@"[[UIColor alloc] initWithRed:%.3f green:%.3f blue:%.3f alpha:%.3f]", red, green, blue, alpha]; - } - else if (colorType == OMColorTypeNSConstant || colorType == OMColorTypeNSRGBACalibrated || colorType == OMColorTypeNSWhiteCalibrated) { - colorString = [NSString stringWithFormat:@"[NSColor colorWithCalibratedRed:%.3f green:%.3f blue:%.3f alpha:%.3f]", red, green, blue, alpha]; - } else if (colorType == OMColorTypeNSRGBADevice || colorType == OMColorTypeNSWhiteDevice) { - colorString = [NSString stringWithFormat:@"[NSColor colorWithDeviceRed:%.3f green:%.3f blue:%.3f alpha:%.3f]", red, green, blue, alpha]; - } - } - } - } - return colorString; + return @"xxx"; } #pragma mark - @@ -491,12 +329,6 @@ - (void)dealloc [_colorWell release]; [_colorFrameView release]; [_textView release]; - [_constantColorsByName release]; - [_rgbaUIColorRegex release]; - [_whiteUIColorRegex release]; - [_constantColorsByName release]; - [_whiteNSColorRegex release]; - [_rgbaNSColorRegex release]; [_stringRegex release]; [super dealloc]; } From 9da1e3c1c5da13e1697724087e9a1baa1cd6286d Mon Sep 17 00:00:00 2001 From: Dirk Holtwick Date: Sun, 9 Dec 2012 10:39:37 +0100 Subject: [PATCH 03/49] Popover pops --- Classes/HOPlainColorWell.h | 13 +---- Classes/HOPlainColorWell.m | 78 ++++++++++++------------- Classes/HOPopoverViewController.h | 9 +++ Classes/HOPopoverViewController.m | 25 ++++++++ Classes/HOStringHelper.h | 4 +- Classes/HOStringHelper.m | 63 +++++++++++--------- HOStringSense.xcodeproj/project.pbxproj | 30 ++++++++++ 7 files changed, 140 insertions(+), 82 deletions(-) create mode 100644 Classes/HOPopoverViewController.h create mode 100644 Classes/HOPopoverViewController.m diff --git a/Classes/HOPlainColorWell.h b/Classes/HOPlainColorWell.h index c9ae124..fe1da8b 100644 --- a/Classes/HOPlainColorWell.h +++ b/Classes/HOPlainColorWell.h @@ -1,18 +1,9 @@ // -// OMPlainColorWell.h -// OMColorHelper -// -// Created by Ole Zorn on 09/07/12. -// +// Copyright 2012 Dirk Holtwick, holtwick.it. All rights reserved. // #import -@interface HOPlainColorWell : NSColorWell { - - NSColor *_strokeColor; -} - -@property (nonatomic, retain) NSColor *strokeColor; +@interface HOPlainColorWell : NSButton @end diff --git a/Classes/HOPlainColorWell.m b/Classes/HOPlainColorWell.m index bb891d5..06ac539 100644 --- a/Classes/HOPlainColorWell.m +++ b/Classes/HOPlainColorWell.m @@ -1,51 +1,45 @@ // -// OMPlainColorWell.m -// OMColorHelper -// -// Created by Ole Zorn on 09/07/12. -// +// Copyright 2012 Dirk Holtwick, holtwick.it. All rights reserved. // #import "HOPlainColorWell.h" @implementation HOPlainColorWell -@synthesize strokeColor=_strokeColor; - -- (void)drawRect:(NSRect)dirtyRect -{ - [NSGraphicsContext saveGraphicsState]; - NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:NSMakeRect(0, -5, self.bounds.size.width, self.bounds.size.height + 5) xRadius:5.0 yRadius:5.0]; - [path addClip]; - [self drawWellInside:self.bounds]; - [NSGraphicsContext restoreGraphicsState]; - - if (self.strokeColor) { - NSBezierPath *strokePath = [NSBezierPath bezierPathWithRoundedRect:NSInsetRect(NSMakeRect(0, -5, self.bounds.size.width, self.bounds.size.height + 5), 0.5, 0.5) xRadius:5.0 yRadius:5.0]; - [self.strokeColor setStroke]; - [strokePath stroke]; - } -} - -- (void)deactivate -{ - [super deactivate]; - [[NSColorPanel sharedColorPanel] orderOut:nil]; -} - -- (void)setStrokeColor:(NSColor *)strokeColor -{ - if (strokeColor != _strokeColor) { - [_strokeColor release]; - _strokeColor = [strokeColor retain]; - [self setNeedsDisplay:YES]; - } -} - -- (void)dealloc -{ - [_strokeColor release]; - [super dealloc]; -} +//- (void)drawRect:(NSRect)dirtyRect +//{ +// [NSGraphicsContext saveGraphicsState]; +// NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:NSMakeRect(0, -5, self.bounds.size.width, self.bounds.size.height + 5) xRadius:5.0 yRadius:5.0]; +// [path addClip]; +// [self drawWellInside:self.bounds]; +// [NSGraphicsContext restoreGraphicsState]; +// +// if (self.strokeColor) { +// NSBezierPath *strokePath = [NSBezierPath bezierPathWithRoundedRect:NSInsetRect(NSMakeRect(0, -5, self.bounds.size.width, self.bounds.size.height + 5), 0.5, 0.5) xRadius:5.0 yRadius:5.0]; +// [self.strokeColor setStroke]; +// [strokePath stroke]; +// } +//} +// +//- (void)deactivate +//{ +// [super deactivate]; +// [[NSColorPanel sharedColorPanel] orderOut:nil]; +//} +// +//- (void)setStrokeColor:(NSColor *)strokeColor +//{ +// if (strokeColor != _strokeColor) { +// [_strokeColor release]; +// _strokeColor = [strokeColor retain]; +// [self setNeedsDisplay:YES]; +// } +//} +// +//- (void)dealloc +//{ +// [_strokeColor release]; +// [super dealloc]; +//} @end diff --git a/Classes/HOPopoverViewController.h b/Classes/HOPopoverViewController.h new file mode 100644 index 0000000..94de037 --- /dev/null +++ b/Classes/HOPopoverViewController.h @@ -0,0 +1,9 @@ +// +// Copyright 2012 Dirk Holtwick, holtwick.it. All rights reserved. +// + +#import + +@interface HOPopoverViewController : NSViewController + +@end diff --git a/Classes/HOPopoverViewController.m b/Classes/HOPopoverViewController.m new file mode 100644 index 0000000..df97a46 --- /dev/null +++ b/Classes/HOPopoverViewController.m @@ -0,0 +1,25 @@ +// +// Copyright 2012 Dirk Holtwick, holtwick.it. All rights reserved. +// + +#import "HOPopoverViewController.h" + +@implementation HOPopoverViewController + +- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil +{ + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + if (self) { + // Initialization code here. + } + + return self; +} + +- (NSView *)view { + NSTextField *textfield = [[[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 200, 200)] autorelease]; + [super setView:textfield]; + return [super view]; +} + +@end diff --git a/Classes/HOStringHelper.h b/Classes/HOStringHelper.h index acefc1f..a5e7b4d 100644 --- a/Classes/HOStringHelper.h +++ b/Classes/HOStringHelper.h @@ -30,10 +30,10 @@ BOOL OMColorTypeIsNSColor(OMColorType colorType) { return colorType >= OMColorTy //TODO: Maybe support HSB and CMYK color types... -@class HOColorFrameView, HOPlainColorWell; +@class HOColorFrameView, HOPlainColorWell, HOStringViewController; @interface HOStringHelper : NSObject { - + HOStringViewController *_stringViewController; HOPlainColorWell *_colorWell; HOColorFrameView *_colorFrameView; NSRange _selectedColorRange; diff --git a/Classes/HOStringHelper.m b/Classes/HOStringHelper.m index 0889851..b2e583c 100755 --- a/Classes/HOStringHelper.m +++ b/Classes/HOStringHelper.m @@ -9,6 +9,7 @@ #import "HOStringHelper.h" #import "HOPlainColorWell.h" #import "HOColorFrameView.h" +#import "HOPopoverViewController.h" #define kOMColorHelperHighlightingDisabled @"OMColorHelperHighlightingDisabled" #define kOMColorHelperInsertionMode @"OMColorHelperInsertionMode" @@ -45,28 +46,28 @@ - (void)applicationDidFinishLaunching:(NSNotification *)notification NSMenuItem *editMenuItem = [[NSApp mainMenu] itemWithTitle:@"Edit"]; if (editMenuItem) { [[editMenuItem submenu] addItem:[NSMenuItem separatorItem]]; - + NSMenuItem *toggleColorHighlightingMenuItem = [[[NSMenuItem alloc] initWithTitle:@"Show Colors Under Caret" action:@selector(toggleColorHighlightingEnabled:) keyEquivalent:@""] autorelease]; [toggleColorHighlightingMenuItem setTarget:self]; [[editMenuItem submenu] addItem:toggleColorHighlightingMenuItem]; - + NSMenuItem *colorInsertionModeItem = [[[NSMenuItem alloc] initWithTitle:@"Color Insertion Mode" action:nil keyEquivalent:@""] autorelease]; NSMenuItem *colorInsertionModeNSItem = [[[NSMenuItem alloc] initWithTitle:@"NSColor" action:@selector(selectNSColorInsertionMode:) keyEquivalent:@""] autorelease]; [colorInsertionModeNSItem setTarget:self]; NSMenuItem *colorInsertionModeUIItem = [[[NSMenuItem alloc] initWithTitle:@"UIColor" action:@selector(selectUIColorInsertionMode:) keyEquivalent:@""] autorelease]; [colorInsertionModeUIItem setTarget:self]; - + NSMenu *colorInsertionModeMenu = [[[NSMenu alloc] initWithTitle:@"Color Insertion Mode"] autorelease]; [colorInsertionModeItem setSubmenu:colorInsertionModeMenu]; [[colorInsertionModeItem submenu] addItem:colorInsertionModeUIItem]; [[colorInsertionModeItem submenu] addItem:colorInsertionModeNSItem]; [[editMenuItem submenu] addItem:colorInsertionModeItem]; - + NSMenuItem *insertColorMenuItem = [[[NSMenuItem alloc] initWithTitle:@"Insert Color..." action:@selector(insertColor:) keyEquivalent:@""] autorelease]; [insertColorMenuItem setTarget:self]; [[editMenuItem submenu] addItem:insertColorMenuItem]; } - + BOOL highlightingEnabled = ![[NSUserDefaults standardUserDefaults] boolForKey:kOMColorHelperHighlightingDisabled]; if (highlightingEnabled) { [self activateColorHighlighting]; @@ -125,7 +126,7 @@ - (void)activateColorHighlighting if (self.textView) { NSNotification *notification = [NSNotification notificationWithName:NSTextViewDidChangeSelectionNotification object:self.textView]; [self selectionDidChange:notification]; - + } } @@ -167,7 +168,7 @@ - (void)insertColor:(id)sender - (void)activateColorWell { - [self.colorWell activate:YES]; + // [self.colorWell activate:YES]; } #pragma mark - Text Selection Handling @@ -176,10 +177,10 @@ - (void)selectionDidChange:(NSNotification *)notification { if ([[notification object] isKindOfClass:NSClassFromString(@"DVTSourceTextView")] && [[notification object] isKindOfClass:[NSTextView class]]) { self.textView = (NSTextView *)[notification object]; - + BOOL disabled = [[NSUserDefaults standardUserDefaults] boolForKey:kOMColorHelperHighlightingDisabled]; if (disabled) return; - + NSArray *selectedRanges = [self.textView selectedRanges]; if (selectedRanges.count >= 1) { NSRange selectedRange = [[selectedRanges objectAtIndex:0] rangeValue]; @@ -187,23 +188,25 @@ - (void)selectionDidChange:(NSNotification *)notification NSRange lineRange = [text lineRangeForRange:selectedRange]; NSRange selectedRangeInLine = NSMakeRange(selectedRange.location - lineRange.location, selectedRange.length); NSString *line = [text substringWithRange:lineRange]; - + NSRange colorRange = NSMakeRange(NSNotFound, 0); OMColorType colorType = OMColorTypeNone; NSColor *matchedColor = [self colorInText:line selectedRange:selectedRangeInLine type:&colorType matchedRange:&colorRange]; - + if (matchedColor) { NSColor *backgroundColor = [self.textView.backgroundColor colorUsingColorSpace:[NSColorSpace genericRGBColorSpace]]; CGFloat r = 1.0; CGFloat g = 1.0; CGFloat b = 1.0; [backgroundColor getRed:&r green:&g blue:&b alpha:NULL]; CGFloat backgroundLuminance = (r + g + b) / 3.0; - + NSColor *strokeColor = (backgroundLuminance > 0.5) ? [NSColor colorWithCalibratedWhite:0.2 alpha:1.0] : [NSColor whiteColor]; - + self.selectedColorType = colorType; - self.colorWell.color = matchedColor; - self.colorWell.strokeColor = strokeColor; - + + + // self.colorWell.color = matchedColor; + // self.colorWell.strokeColor = strokeColor; + self.selectedColorRange = NSMakeRange(colorRange.location + lineRange.location, colorRange.length); NSRect selectionRectOnScreen = [self.textView firstRectForCharacterRange:self.selectedColorRange]; NSRect selectionRectInWindow = [self.textView.window convertRectFromScreen:selectionRectOnScreen]; @@ -212,9 +215,9 @@ - (void)selectionDidChange:(NSNotification *)notification self.colorWell.frame = NSIntegralRect(colorWellRect); [self.textView addSubview:self.colorWell]; self.colorFrameView.frame = NSInsetRect(NSIntegralRect(selectionRectInView), -1, -1); - + self.colorFrameView.color = strokeColor; - + [self.textView addSubview:self.colorFrameView]; } else { [self dismissColorWell]; @@ -227,10 +230,10 @@ - (void)selectionDidChange:(NSNotification *)notification - (void)dismissColorWell { - if (self.colorWell.isActive) { - [self.colorWell deactivate]; - [[NSColorPanel sharedColorPanel] orderOut:nil]; - } +// if (self.colorWell.isActive) { +// [self.colorWell deactivate]; +// [[NSColorPanel sharedColorPanel] orderOut:nil]; +// } [self.colorWell removeFromSuperview]; [self.colorFrameView removeFromSuperview]; self.selectedColorRange = NSMakeRange(NSNotFound, 0); @@ -242,7 +245,7 @@ - (void)colorDidChange:(id)sender if (self.selectedColorRange.location == NSNotFound) { return; } - NSString *colorString = [self colorStringForColor:self.colorWell.color withType:self.selectedColorType]; + NSString *colorString = [self colorStringForColor:nil withType:self.selectedColorType]; if (colorString) { [self.textView.undoManager beginUndoGrouping]; [self.textView insertText:colorString replacementRange:self.selectedColorRange]; @@ -250,6 +253,12 @@ - (void)colorDidChange:(id)sender } } +- (void)showPopover:(id)sender { + NSPopover *popover = [[NSPopover alloc] init]; + popover.contentViewController = [[HOPopoverViewController alloc] init]; + [popover showRelativeToRect:self.colorWell.bounds ofView:self.colorWell preferredEdge:NSMaxXEdge]; +} + #pragma mark - View Initialization - (HOPlainColorWell *)colorWell @@ -257,7 +266,7 @@ - (HOPlainColorWell *)colorWell if (!_colorWell) { _colorWell = [[HOPlainColorWell alloc] initWithFrame:NSMakeRect(0, 0, 50, 30)]; [_colorWell setTarget:self]; - [_colorWell setAction:@selector(colorDidChange:)]; + [_colorWell setAction:@selector(showPopover:)]; } return _colorWell; } @@ -277,7 +286,7 @@ - (NSColor *)colorInText:(NSString *)text selectedRange:(NSRange)selectedRange t __block NSColor *foundColor = nil; __block NSRange foundColorRange = NSMakeRange(NSNotFound, 0); __block OMColorType foundColorType = OMColorTypeNone; - + [_stringRegex enumerateMatchesInString:text options:0 range:NSMakeRange(0, text.length) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) { NSRange colorRange = [result range]; if (selectedRange.location >= colorRange.location && NSMaxRange(selectedRange) <= NSMaxRange(colorRange)) { @@ -286,7 +295,7 @@ - (NSColor *)colorInText:(NSString *)text selectedRange:(NSRange)selectedRange t foundColorType = OMColorTypeUIRGBAInit; } else { foundColorType = OMColorTypeUIRGBA; - } + } foundColor = [NSColor redColor]; foundColorRange = colorRange; *stop = YES; @@ -301,7 +310,7 @@ - (NSColor *)colorInText:(NSString *)text selectedRange:(NSRange)selectedRange t } return foundColor; } - + return nil; } diff --git a/HOStringSense.xcodeproj/project.pbxproj b/HOStringSense.xcodeproj/project.pbxproj index 2abd2a6..dafa573 100755 --- a/HOStringSense.xcodeproj/project.pbxproj +++ b/HOStringSense.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 43BA8625167490550002C238 /* HOPopoverViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 43BA8624167490550002C238 /* HOPopoverViewController.m */; }; 7F2EB89C145057F200E97A87 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7F2EB899145057EA00E97A87 /* AppKit.framework */; }; 7F6EE2BF15FA6F3B00BA114A /* HOColorFrameView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F6EE2BE15FA6F3B00BA114A /* HOColorFrameView.m */; }; 7FDADE3A15FA6CA400A847E3 /* HOPlainColorWell.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FDADE3915FA6CA400A847E3 /* HOPlainColorWell.m */; }; @@ -14,8 +15,22 @@ DA37E2DC0E6291C8001BDFEF /* HOStringHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = DA37E2DB0E6291C8001BDFEF /* HOStringHelper.m */; }; /* End PBXBuildFile section */ +/* Begin PBXBuildRule section */ + 4302EDD316748CAD001E6539 /* PBXBuildRule */ = { + isa = PBXBuildRule; + compilerSpec = com.apple.compilers.proxy.script; + fileType = file.xib; + isEditable = 1; + outputFiles = ( + ); + script = "# ibtool\n"; + }; +/* End PBXBuildRule section */ + /* Begin PBXFileReference section */ 089C1672FE841209C02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; + 43BA8623167490550002C238 /* HOPopoverViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HOPopoverViewController.h; sourceTree = ""; }; + 43BA8624167490550002C238 /* HOPopoverViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HOPopoverViewController.m; sourceTree = ""; }; 7F2B355F15FA59D000DB3249 /* HOStringHelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HOStringHelper.h; sourceTree = ""; }; 7F2EB899145057EA00E97A87 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; 7F6EE2BD15FA6F3B00BA114A /* HOColorFrameView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HOColorFrameView.h; sourceTree = ""; }; @@ -86,6 +101,8 @@ 7F6EE2BE15FA6F3B00BA114A /* HOColorFrameView.m */, 7FDADE3815FA6CA400A847E3 /* HOPlainColorWell.h */, 7FDADE3915FA6CA400A847E3 /* HOPlainColorWell.m */, + 43BA8623167490550002C238 /* HOPopoverViewController.h */, + 43BA8624167490550002C238 /* HOPopoverViewController.m */, ); path = Classes; sourceTree = ""; @@ -98,9 +115,11 @@ buildConfigurationList = 1DEB913A08733D840010E9CD /* Build configuration list for PBXNativeTarget "HOStringSense" */; buildPhases = ( 8D5B49B1048680CD000E48DA /* Sources */, + 4302EDD516748D08001E6539 /* Resources */, 8D5B49B3048680CD000E48DA /* Frameworks */, ); buildRules = ( + 4302EDD316748CAD001E6539 /* PBXBuildRule */, ); dependencies = ( ); @@ -137,6 +156,16 @@ }; /* End PBXProject section */ +/* Begin PBXResourcesBuildPhase section */ + 4302EDD516748D08001E6539 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ 8D5B49B1048680CD000E48DA /* Sources */ = { isa = PBXSourcesBuildPhase; @@ -145,6 +174,7 @@ DA37E2DC0E6291C8001BDFEF /* HOStringHelper.m in Sources */, 7FDADE3A15FA6CA400A847E3 /* HOPlainColorWell.m in Sources */, 7F6EE2BF15FA6F3B00BA114A /* HOColorFrameView.m in Sources */, + 43BA8625167490550002C238 /* HOPopoverViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; From 183dad37fd4f9269796f7e6f9884d9398c61dcab Mon Sep 17 00:00:00 2001 From: Dirk Holtwick Date: Sun, 9 Dec 2012 10:48:19 +0100 Subject: [PATCH 04/49] Refactoring --- Classes/HOPlainColorWell.m | 45 ---------------- Classes/HOPopoverViewController.m | 12 +---- ...HOColorFrameView.h => HOStringFrameView.h} | 2 +- ...HOColorFrameView.m => HOStringFrameView.m} | 4 +- Classes/HOStringHelper.h | 10 ++-- Classes/HOStringHelper.m | 12 ++--- ...OPlainColorWell.h => HOStringInfoButton.h} | 2 +- Classes/HOStringInfoButton.m | 54 +++++++++++++++++++ HOStringSense.xcodeproj/project.pbxproj | 24 ++++----- 9 files changed, 83 insertions(+), 82 deletions(-) delete mode 100644 Classes/HOPlainColorWell.m rename Classes/{HOColorFrameView.h => HOStringFrameView.h} (82%) rename Classes/{HOColorFrameView.m => HOStringFrameView.m} (87%) rename Classes/{HOPlainColorWell.h => HOStringInfoButton.h} (72%) create mode 100644 Classes/HOStringInfoButton.m diff --git a/Classes/HOPlainColorWell.m b/Classes/HOPlainColorWell.m deleted file mode 100644 index 06ac539..0000000 --- a/Classes/HOPlainColorWell.m +++ /dev/null @@ -1,45 +0,0 @@ -// -// Copyright 2012 Dirk Holtwick, holtwick.it. All rights reserved. -// - -#import "HOPlainColorWell.h" - -@implementation HOPlainColorWell - -//- (void)drawRect:(NSRect)dirtyRect -//{ -// [NSGraphicsContext saveGraphicsState]; -// NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:NSMakeRect(0, -5, self.bounds.size.width, self.bounds.size.height + 5) xRadius:5.0 yRadius:5.0]; -// [path addClip]; -// [self drawWellInside:self.bounds]; -// [NSGraphicsContext restoreGraphicsState]; -// -// if (self.strokeColor) { -// NSBezierPath *strokePath = [NSBezierPath bezierPathWithRoundedRect:NSInsetRect(NSMakeRect(0, -5, self.bounds.size.width, self.bounds.size.height + 5), 0.5, 0.5) xRadius:5.0 yRadius:5.0]; -// [self.strokeColor setStroke]; -// [strokePath stroke]; -// } -//} -// -//- (void)deactivate -//{ -// [super deactivate]; -// [[NSColorPanel sharedColorPanel] orderOut:nil]; -//} -// -//- (void)setStrokeColor:(NSColor *)strokeColor -//{ -// if (strokeColor != _strokeColor) { -// [_strokeColor release]; -// _strokeColor = [strokeColor retain]; -// [self setNeedsDisplay:YES]; -// } -//} -// -//- (void)dealloc -//{ -// [_strokeColor release]; -// [super dealloc]; -//} - -@end diff --git a/Classes/HOPopoverViewController.m b/Classes/HOPopoverViewController.m index df97a46..0d4f047 100644 --- a/Classes/HOPopoverViewController.m +++ b/Classes/HOPopoverViewController.m @@ -6,18 +6,10 @@ @implementation HOPopoverViewController -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - if (self) { - // Initialization code here. - } - - return self; -} - - (NSView *)view { NSTextField *textfield = [[[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 200, 200)] autorelease]; + textfield.focusRingType = NSFocusRingTypeNone; + textfield.bordered = NO; [super setView:textfield]; return [super view]; } diff --git a/Classes/HOColorFrameView.h b/Classes/HOStringFrameView.h similarity index 82% rename from Classes/HOColorFrameView.h rename to Classes/HOStringFrameView.h index 521c101..0d8956f 100644 --- a/Classes/HOColorFrameView.h +++ b/Classes/HOStringFrameView.h @@ -8,7 +8,7 @@ #import -@interface HOColorFrameView : NSView { +@interface HOStringFrameView : NSView { NSColor *_color; } diff --git a/Classes/HOColorFrameView.m b/Classes/HOStringFrameView.m similarity index 87% rename from Classes/HOColorFrameView.m rename to Classes/HOStringFrameView.m index 710bcb4..aa4e044 100644 --- a/Classes/HOColorFrameView.m +++ b/Classes/HOStringFrameView.m @@ -6,9 +6,9 @@ // // -#import "HOColorFrameView.h" +#import "HOStringFrameView.h" -@implementation HOColorFrameView +@implementation HOStringFrameView @synthesize color=_color; diff --git a/Classes/HOStringHelper.h b/Classes/HOStringHelper.h index a5e7b4d..3675638 100644 --- a/Classes/HOStringHelper.h +++ b/Classes/HOStringHelper.h @@ -30,20 +30,20 @@ BOOL OMColorTypeIsNSColor(OMColorType colorType) { return colorType >= OMColorTy //TODO: Maybe support HSB and CMYK color types... -@class HOColorFrameView, HOPlainColorWell, HOStringViewController; +@class HOStringFrameView, HOStringInfoButton, HOStringViewController; @interface HOStringHelper : NSObject { HOStringViewController *_stringViewController; - HOPlainColorWell *_colorWell; - HOColorFrameView *_colorFrameView; + HOStringInfoButton *_colorWell; + HOStringFrameView *_colorFrameView; NSRange _selectedColorRange; OMColorType _selectedColorType; NSTextView *_textView; NSRegularExpression *_stringRegex; } -@property (nonatomic, retain) HOPlainColorWell *colorWell; -@property (nonatomic, retain) HOColorFrameView *colorFrameView; +@property (nonatomic, retain) HOStringInfoButton *colorWell; +@property (nonatomic, retain) HOStringFrameView *colorFrameView; @property (nonatomic, retain) NSTextView *textView; @property (nonatomic, assign) NSRange selectedColorRange; @property (nonatomic, assign) OMColorType selectedColorType; diff --git a/Classes/HOStringHelper.m b/Classes/HOStringHelper.m index b2e583c..3e11f8f 100755 --- a/Classes/HOStringHelper.m +++ b/Classes/HOStringHelper.m @@ -7,8 +7,8 @@ // #import "HOStringHelper.h" -#import "HOPlainColorWell.h" -#import "HOColorFrameView.h" +#import "HOStringInfoButton.h" +#import "HOStringFrameView.h" #import "HOPopoverViewController.h" #define kOMColorHelperHighlightingDisabled @"OMColorHelperHighlightingDisabled" @@ -261,20 +261,20 @@ - (void)showPopover:(id)sender { #pragma mark - View Initialization -- (HOPlainColorWell *)colorWell +- (HOStringInfoButton *)colorWell { if (!_colorWell) { - _colorWell = [[HOPlainColorWell alloc] initWithFrame:NSMakeRect(0, 0, 50, 30)]; + _colorWell = [[HOStringInfoButton alloc] initWithFrame:NSMakeRect(0, 0, 50, 30)]; [_colorWell setTarget:self]; [_colorWell setAction:@selector(showPopover:)]; } return _colorWell; } -- (HOColorFrameView *)colorFrameView +- (HOStringFrameView *)colorFrameView { if (!_colorFrameView) { - _colorFrameView = [[HOColorFrameView alloc] initWithFrame:NSZeroRect]; + _colorFrameView = [[HOStringFrameView alloc] initWithFrame:NSZeroRect]; } return _colorFrameView; } diff --git a/Classes/HOPlainColorWell.h b/Classes/HOStringInfoButton.h similarity index 72% rename from Classes/HOPlainColorWell.h rename to Classes/HOStringInfoButton.h index fe1da8b..d4bb6df 100644 --- a/Classes/HOPlainColorWell.h +++ b/Classes/HOStringInfoButton.h @@ -4,6 +4,6 @@ #import -@interface HOPlainColorWell : NSButton +@interface HOStringInfoButton : NSButton @end diff --git a/Classes/HOStringInfoButton.m b/Classes/HOStringInfoButton.m new file mode 100644 index 0000000..2b86e1f --- /dev/null +++ b/Classes/HOStringInfoButton.m @@ -0,0 +1,54 @@ +// +// Copyright 2012 Dirk Holtwick, holtwick.it. All rights reserved. +// + +#import "HOStringInfoButton.h" + +@implementation HOStringInfoButton + +- (id)initWithFrame:(NSRect)frameRect { + if(self = [super initWithFrame:frameRect]) { + self.title = @"open"; + self.bordered = NO; + } + return self; +} + +- (void)drawRect:(NSRect)dirtyRect +{ + [NSGraphicsContext saveGraphicsState]; + NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:NSMakeRect(0, -5, self.bounds.size.width, self.bounds.size.height + 5) xRadius:5.0 yRadius:5.0]; + [path addClip]; + [super drawRect:dirtyRect]; + // [self drawWellInside:self.bounds]; + [NSGraphicsContext restoreGraphicsState]; + + // if (self.strokeColor) { + // NSBezierPath *strokePath = [NSBezierPath bezierPathWithRoundedRect:NSInsetRect(NSMakeRect(0, -5, self.bounds.size.width, self.bounds.size.height + 5), 0.5, 0.5) xRadius:5.0 yRadius:5.0]; + // [self.strokeColor setStroke]; + // [strokePath stroke]; + // } +} +// +//- (void)deactivate +//{ +// [super deactivate]; +// [[NSColorPanel sharedColorPanel] orderOut:nil]; +//} +// +//- (void)setStrokeColor:(NSColor *)strokeColor +//{ +// if (strokeColor != _strokeColor) { +// [_strokeColor release]; +// _strokeColor = [strokeColor retain]; +// [self setNeedsDisplay:YES]; +// } +//} +// +//- (void)dealloc +//{ +// [_strokeColor release]; +// [super dealloc]; +//} + +@end diff --git a/HOStringSense.xcodeproj/project.pbxproj b/HOStringSense.xcodeproj/project.pbxproj index dafa573..a72a731 100755 --- a/HOStringSense.xcodeproj/project.pbxproj +++ b/HOStringSense.xcodeproj/project.pbxproj @@ -9,8 +9,8 @@ /* Begin PBXBuildFile section */ 43BA8625167490550002C238 /* HOPopoverViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 43BA8624167490550002C238 /* HOPopoverViewController.m */; }; 7F2EB89C145057F200E97A87 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7F2EB899145057EA00E97A87 /* AppKit.framework */; }; - 7F6EE2BF15FA6F3B00BA114A /* HOColorFrameView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F6EE2BE15FA6F3B00BA114A /* HOColorFrameView.m */; }; - 7FDADE3A15FA6CA400A847E3 /* HOPlainColorWell.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FDADE3915FA6CA400A847E3 /* HOPlainColorWell.m */; }; + 7F6EE2BF15FA6F3B00BA114A /* HOStringFrameView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F6EE2BE15FA6F3B00BA114A /* HOStringFrameView.m */; }; + 7FDADE3A15FA6CA400A847E3 /* HOStringInfoButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FDADE3915FA6CA400A847E3 /* HOStringInfoButton.m */; }; DA1B5D020E64686800921439 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 089C1672FE841209C02AAC07 /* Foundation.framework */; }; DA37E2DC0E6291C8001BDFEF /* HOStringHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = DA37E2DB0E6291C8001BDFEF /* HOStringHelper.m */; }; /* End PBXBuildFile section */ @@ -33,10 +33,10 @@ 43BA8624167490550002C238 /* HOPopoverViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HOPopoverViewController.m; sourceTree = ""; }; 7F2B355F15FA59D000DB3249 /* HOStringHelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HOStringHelper.h; sourceTree = ""; }; 7F2EB899145057EA00E97A87 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; - 7F6EE2BD15FA6F3B00BA114A /* HOColorFrameView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HOColorFrameView.h; sourceTree = ""; }; - 7F6EE2BE15FA6F3B00BA114A /* HOColorFrameView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HOColorFrameView.m; sourceTree = ""; }; - 7FDADE3815FA6CA400A847E3 /* HOPlainColorWell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HOPlainColorWell.h; sourceTree = ""; }; - 7FDADE3915FA6CA400A847E3 /* HOPlainColorWell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HOPlainColorWell.m; sourceTree = ""; }; + 7F6EE2BD15FA6F3B00BA114A /* HOStringFrameView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HOStringFrameView.h; sourceTree = ""; }; + 7F6EE2BE15FA6F3B00BA114A /* HOStringFrameView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HOStringFrameView.m; sourceTree = ""; }; + 7FDADE3815FA6CA400A847E3 /* HOStringInfoButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HOStringInfoButton.h; sourceTree = ""; }; + 7FDADE3915FA6CA400A847E3 /* HOStringInfoButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HOStringInfoButton.m; sourceTree = ""; }; 8D5B49B6048680CD000E48DA /* HOStringSense.xcplugin */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = HOStringSense.xcplugin; sourceTree = BUILT_PRODUCTS_DIR; }; 8D5B49B7048680CD000E48DA /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; DA37E2DB0E6291C8001BDFEF /* HOStringHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HOStringHelper.m; sourceTree = ""; }; @@ -97,10 +97,10 @@ children = ( 7F2B355F15FA59D000DB3249 /* HOStringHelper.h */, DA37E2DB0E6291C8001BDFEF /* HOStringHelper.m */, - 7F6EE2BD15FA6F3B00BA114A /* HOColorFrameView.h */, - 7F6EE2BE15FA6F3B00BA114A /* HOColorFrameView.m */, - 7FDADE3815FA6CA400A847E3 /* HOPlainColorWell.h */, - 7FDADE3915FA6CA400A847E3 /* HOPlainColorWell.m */, + 7F6EE2BD15FA6F3B00BA114A /* HOStringFrameView.h */, + 7F6EE2BE15FA6F3B00BA114A /* HOStringFrameView.m */, + 7FDADE3815FA6CA400A847E3 /* HOStringInfoButton.h */, + 7FDADE3915FA6CA400A847E3 /* HOStringInfoButton.m */, 43BA8623167490550002C238 /* HOPopoverViewController.h */, 43BA8624167490550002C238 /* HOPopoverViewController.m */, ); @@ -172,8 +172,8 @@ buildActionMask = 2147483647; files = ( DA37E2DC0E6291C8001BDFEF /* HOStringHelper.m in Sources */, - 7FDADE3A15FA6CA400A847E3 /* HOPlainColorWell.m in Sources */, - 7F6EE2BF15FA6F3B00BA114A /* HOColorFrameView.m in Sources */, + 7FDADE3A15FA6CA400A847E3 /* HOStringInfoButton.m in Sources */, + 7F6EE2BF15FA6F3B00BA114A /* HOStringFrameView.m in Sources */, 43BA8625167490550002C238 /* HOPopoverViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; From 854e0cf67c101972d023a0841df01a8725c235c8 Mon Sep 17 00:00:00 2001 From: Dirk Holtwick Date: Sun, 9 Dec 2012 11:30:59 +0100 Subject: [PATCH 05/49] Huge refactoring --- Classes/HOStringFrameView.h | 6 +- Classes/HOStringFrameView.m | 6 +- Classes/HOStringHelper.h | 46 ++----- Classes/HOStringHelper.m | 256 +++++++++++++++++------------------ Classes/HOStringInfoButton.m | 8 +- 5 files changed, 143 insertions(+), 179 deletions(-) diff --git a/Classes/HOStringFrameView.h b/Classes/HOStringFrameView.h index 0d8956f..973b73f 100644 --- a/Classes/HOStringFrameView.h +++ b/Classes/HOStringFrameView.h @@ -1,9 +1,5 @@ // -// OMColorFrameView.h -// OMColorHelper -// -// Created by Ole Zorn on 09/07/12. -// +// Copyright 2012 Dirk Holtwick, holtwick.it. All rights reserved. // #import diff --git a/Classes/HOStringFrameView.m b/Classes/HOStringFrameView.m index aa4e044..d3e6391 100644 --- a/Classes/HOStringFrameView.m +++ b/Classes/HOStringFrameView.m @@ -1,9 +1,5 @@ // -// OMColorFrameView.m -// OMColorHelper -// -// Created by Ole Zorn on 09/07/12. -// +// Copyright 2012 Dirk Holtwick, holtwick.it. All rights reserved. // #import "HOStringFrameView.h" diff --git a/Classes/HOStringHelper.h b/Classes/HOStringHelper.h index 3675638..c36078b 100644 --- a/Classes/HOStringHelper.h +++ b/Classes/HOStringHelper.h @@ -1,58 +1,32 @@ // -// OMColorHelper.h -// OMColorHelper -// -// Created by Ole Zorn on 09/07/12. -// +// Copyright 2012 Dirk Holtwick, holtwick.it. All rights reserved. // #import #import -typedef enum OMColorType { - OMColorTypeNone = 0, - - OMColorTypeUIRGBA, //[UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:1.0] - OMColorTypeUIRGBAInit, //[[UIColor alloc] initWithRed:1.0 green:0.0 blue:0.0 alpha:1.0] - OMColorTypeUIWhite, //[UIColor colorWithWhite:0.5 alpha:1.0] - OMColorTypeUIWhiteInit, //[[UIColor alloc] initWithWhite:0.5 alpha:1.0] - OMColorTypeUIConstant, //[UIColor redColor] - - OMColorTypeNSRGBACalibrated, //[NSColor colorWithCalibratedRed:1.0 green:0.0 blue:0.0 alpha:1.0] - OMColorTypeNSRGBADevice, //[NSColor colorWithDeviceRed:1.0 green:0.0 blue:0.0 alpha:1.0] - OMColorTypeNSWhiteCalibrated, //[NSColor colorWithCalibratedWhite:0.5 alpha:1.0] - OMColorTypeNSWhiteDevice, //[NSColor colorWithDeviceWhite:0.5 alpha:1.0] - OMColorTypeNSConstant, //[NSColor redColor] - -} OMColorType; - -BOOL OMColorTypeIsNSColor(OMColorType colorType) { return colorType >= OMColorTypeNSRGBACalibrated; } - -//TODO: Maybe support HSB and CMYK color types... - @class HOStringFrameView, HOStringInfoButton, HOStringViewController; @interface HOStringHelper : NSObject { HOStringViewController *_stringViewController; - HOStringInfoButton *_colorWell; - HOStringFrameView *_colorFrameView; - NSRange _selectedColorRange; - OMColorType _selectedColorType; + HOStringInfoButton *_stringButton; + HOStringFrameView *_stringFrameView; + NSRange _selectedStringRange; + NSString *_selectedStringContent; NSTextView *_textView; NSRegularExpression *_stringRegex; } -@property (nonatomic, retain) HOStringInfoButton *colorWell; -@property (nonatomic, retain) HOStringFrameView *colorFrameView; +@property (nonatomic, retain) HOStringInfoButton *stringButton; +@property (nonatomic, retain) HOStringFrameView *stringFrameView; @property (nonatomic, retain) NSTextView *textView; -@property (nonatomic, assign) NSRange selectedColorRange; -@property (nonatomic, assign) OMColorType selectedColorType; +@property (nonatomic, assign) NSRange selectedStringRange; +@property (nonatomic, copy) NSString *selectedStringContent; - (void)dismissColorWell; - (void)activateColorHighlighting; - (void)deactivateColorHighlighting; -- (NSColor *)colorInText:(NSString *)text selectedRange:(NSRange)selectedRange type:(OMColorType *)type matchedRange:(NSRangePointer)matchedRange; -- (NSString *)colorStringForColor:(NSColor *)color withType:(OMColorType)colorType; +- (NSString *)stringInText:(NSString *)text selectedRange:(NSRange)selectedRange matchedRange:(NSRangePointer)matchedRange; - (double)dividedValue:(double)value withDivisorRange:(NSRange)divisorRange inString:(NSString *)text; @end diff --git a/Classes/HOStringHelper.m b/Classes/HOStringHelper.m index 3e11f8f..f5ba64f 100755 --- a/Classes/HOStringHelper.m +++ b/Classes/HOStringHelper.m @@ -16,7 +16,11 @@ @implementation HOStringHelper -@synthesize colorWell=_colorWell, colorFrameView=_colorFrameView, textView=_textView, selectedColorRange=_selectedColorRange, selectedColorType=_selectedColorType; +@synthesize stringButton = _stringButton; +@synthesize stringFrameView = _stringFrameView; +@synthesize textView = _textView; +@synthesize selectedStringRange = _selectedStringRange; +@synthesize selectedStringContent=_selectedStringContent; #pragma mark - Plugin Initialization @@ -33,8 +37,8 @@ - (id)init { if (self = [super init]) { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidFinishLaunching:) name:NSApplicationDidFinishLaunchingNotification object:nil]; - _selectedColorRange = NSMakeRange(NSNotFound, 0); - _stringRegex = [[NSRegularExpression regularExpressionWithPattern:@"@\"(\\\\\"|.)*?\"" + _selectedStringRange = NSMakeRange(NSNotFound, 0); + _stringRegex = [[NSRegularExpression regularExpressionWithPattern:@"@\"((\\\\\"|.)*?)\"" options:0 error:NULL] retain]; } @@ -43,76 +47,76 @@ - (id)init - (void)applicationDidFinishLaunching:(NSNotification *)notification { - NSMenuItem *editMenuItem = [[NSApp mainMenu] itemWithTitle:@"Edit"]; - if (editMenuItem) { - [[editMenuItem submenu] addItem:[NSMenuItem separatorItem]]; - - NSMenuItem *toggleColorHighlightingMenuItem = [[[NSMenuItem alloc] initWithTitle:@"Show Colors Under Caret" action:@selector(toggleColorHighlightingEnabled:) keyEquivalent:@""] autorelease]; - [toggleColorHighlightingMenuItem setTarget:self]; - [[editMenuItem submenu] addItem:toggleColorHighlightingMenuItem]; - - NSMenuItem *colorInsertionModeItem = [[[NSMenuItem alloc] initWithTitle:@"Color Insertion Mode" action:nil keyEquivalent:@""] autorelease]; - NSMenuItem *colorInsertionModeNSItem = [[[NSMenuItem alloc] initWithTitle:@"NSColor" action:@selector(selectNSColorInsertionMode:) keyEquivalent:@""] autorelease]; - [colorInsertionModeNSItem setTarget:self]; - NSMenuItem *colorInsertionModeUIItem = [[[NSMenuItem alloc] initWithTitle:@"UIColor" action:@selector(selectUIColorInsertionMode:) keyEquivalent:@""] autorelease]; - [colorInsertionModeUIItem setTarget:self]; - - NSMenu *colorInsertionModeMenu = [[[NSMenu alloc] initWithTitle:@"Color Insertion Mode"] autorelease]; - [colorInsertionModeItem setSubmenu:colorInsertionModeMenu]; - [[colorInsertionModeItem submenu] addItem:colorInsertionModeUIItem]; - [[colorInsertionModeItem submenu] addItem:colorInsertionModeNSItem]; - [[editMenuItem submenu] addItem:colorInsertionModeItem]; - - NSMenuItem *insertColorMenuItem = [[[NSMenuItem alloc] initWithTitle:@"Insert Color..." action:@selector(insertColor:) keyEquivalent:@""] autorelease]; - [insertColorMenuItem setTarget:self]; - [[editMenuItem submenu] addItem:insertColorMenuItem]; - } - - BOOL highlightingEnabled = ![[NSUserDefaults standardUserDefaults] boolForKey:kOMColorHelperHighlightingDisabled]; - if (highlightingEnabled) { - [self activateColorHighlighting]; - } + // NSMenuItem *editMenuItem = [[NSApp mainMenu] itemWithTitle:@"Edit"]; + // if (editMenuItem) { + // [[editMenuItem submenu] addItem:[NSMenuItem separatorItem]]; + // + // NSMenuItem *toggleColorHighlightingMenuItem = [[[NSMenuItem alloc] initWithTitle:@"Show Colors Under Caret" action:@selector(toggleColorHighlightingEnabled:) keyEquivalent:@""] autorelease]; + // [toggleColorHighlightingMenuItem setTarget:self]; + // [[editMenuItem submenu] addItem:toggleColorHighlightingMenuItem]; + // + // NSMenuItem *colorInsertionModeItem = [[[NSMenuItem alloc] initWithTitle:@"Color Insertion Mode" action:nil keyEquivalent:@""] autorelease]; + // NSMenuItem *colorInsertionModeNSItem = [[[NSMenuItem alloc] initWithTitle:@"NSColor" action:@selector(selectNSColorInsertionMode:) keyEquivalent:@""] autorelease]; + // [colorInsertionModeNSItem setTarget:self]; + // NSMenuItem *colorInsertionModeUIItem = [[[NSMenuItem alloc] initWithTitle:@"UIColor" action:@selector(selectUIColorInsertionMode:) keyEquivalent:@""] autorelease]; + // [colorInsertionModeUIItem setTarget:self]; + // + // NSMenu *colorInsertionModeMenu = [[[NSMenu alloc] initWithTitle:@"Color Insertion Mode"] autorelease]; + // [colorInsertionModeItem setSubmenu:colorInsertionModeMenu]; + // [[colorInsertionModeItem submenu] addItem:colorInsertionModeUIItem]; + // [[colorInsertionModeItem submenu] addItem:colorInsertionModeNSItem]; + // [[editMenuItem submenu] addItem:colorInsertionModeItem]; + // + // NSMenuItem *insertColorMenuItem = [[[NSMenuItem alloc] initWithTitle:@"Insert Color..." action:@selector(insertColor:) keyEquivalent:@""] autorelease]; + // [insertColorMenuItem setTarget:self]; + // [[editMenuItem submenu] addItem:insertColorMenuItem]; + // } + // + // BOOL highlightingEnabled = ![[NSUserDefaults standardUserDefaults] boolForKey:kOMColorHelperHighlightingDisabled]; + // if (highlightingEnabled) { + [self activateColorHighlighting]; + // } } #pragma mark - Preferences -- (BOOL)validateMenuItem:(NSMenuItem *)menuItem -{ - if ([menuItem action] == @selector(insertColor:)) { - NSResponder *firstResponder = [[NSApp keyWindow] firstResponder]; - return ([firstResponder isKindOfClass:NSClassFromString(@"DVTSourceTextView")] && [firstResponder isKindOfClass:[NSTextView class]]); - } else if ([menuItem action] == @selector(toggleColorHighlightingEnabled:)) { - BOOL enabled = [[NSUserDefaults standardUserDefaults] boolForKey:kOMColorHelperHighlightingDisabled]; - [menuItem setState:enabled ? NSOffState : NSOnState]; - return YES; - } else if ([menuItem action] == @selector(selectNSColorInsertionMode:)) { - [menuItem setState:[[NSUserDefaults standardUserDefaults] integerForKey:kOMColorHelperInsertionMode] == 1 ? NSOnState : NSOffState]; - } else if ([menuItem action] == @selector(selectUIColorInsertionMode:)) { - [menuItem setState:[[NSUserDefaults standardUserDefaults] integerForKey:kOMColorHelperInsertionMode] == 0 ? NSOnState : NSOffState]; - } - return YES; -} - -- (void)selectNSColorInsertionMode:(id)sender -{ - [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:kOMColorHelperInsertionMode]; -} - -- (void)selectUIColorInsertionMode:(id)sender -{ - [[NSUserDefaults standardUserDefaults] setInteger:0 forKey:kOMColorHelperInsertionMode]; -} - -- (void)toggleColorHighlightingEnabled:(id)sender -{ - BOOL enabled = [[NSUserDefaults standardUserDefaults] boolForKey:kOMColorHelperHighlightingDisabled]; - [[NSUserDefaults standardUserDefaults] setBool:!enabled forKey:kOMColorHelperHighlightingDisabled]; - if (enabled) { - [self activateColorHighlighting]; - } else { - [self deactivateColorHighlighting]; - } -} +//- (BOOL)validateMenuItem:(NSMenuItem *)menuItem +//{ +// if ([menuItem action] == @selector(insertColor:)) { +// NSResponder *firstResponder = [[NSApp keyWindow] firstResponder]; +// return ([firstResponder isKindOfClass:NSClassFromString(@"DVTSourceTextView")] && [firstResponder isKindOfClass:[NSTextView class]]); +// } else if ([menuItem action] == @selector(toggleColorHighlightingEnabled:)) { +// BOOL enabled = [[NSUserDefaults standardUserDefaults] boolForKey:kOMColorHelperHighlightingDisabled]; +// [menuItem setState:enabled ? NSOffState : NSOnState]; +// return YES; +// } else if ([menuItem action] == @selector(selectNSColorInsertionMode:)) { +// [menuItem setState:[[NSUserDefaults standardUserDefaults] integerForKey:kOMColorHelperInsertionMode] == 1 ? NSOnState : NSOffState]; +// } else if ([menuItem action] == @selector(selectUIColorInsertionMode:)) { +// [menuItem setState:[[NSUserDefaults standardUserDefaults] integerForKey:kOMColorHelperInsertionMode] == 0 ? NSOnState : NSOffState]; +// } +// return YES; +//} + +//- (void)selectNSColorInsertionMode:(id)sender +//{ +// [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:kOMColorHelperInsertionMode]; +//} + +//- (void)selectUIColorInsertionMode:(id)sender +//{ +// [[NSUserDefaults standardUserDefaults] setInteger:0 forKey:kOMColorHelperInsertionMode]; +//} + +//- (void)toggleColorHighlightingEnabled:(id)sender +//{ +// BOOL enabled = [[NSUserDefaults standardUserDefaults] boolForKey:kOMColorHelperHighlightingDisabled]; +// [[NSUserDefaults standardUserDefaults] setBool:!enabled forKey:kOMColorHelperHighlightingDisabled]; +// if (enabled) { +// [self activateColorHighlighting]; +// } else { +// [self deactivateColorHighlighting]; +// } +//} - (void)activateColorHighlighting { @@ -134,7 +138,7 @@ - (void)deactivateColorHighlighting { [[NSNotificationCenter defaultCenter] removeObserver:self name:NSTextViewDidChangeSelectionNotification object:nil]; [self dismissColorWell]; - //self.textView = nil; + // self.textView = nil; } #pragma mark - Color Insertion @@ -180,7 +184,7 @@ - (void)selectionDidChange:(NSNotification *)notification BOOL disabled = [[NSUserDefaults standardUserDefaults] boolForKey:kOMColorHelperHighlightingDisabled]; if (disabled) return; - + NSLog(@"1"); NSArray *selectedRanges = [self.textView selectedRanges]; if (selectedRanges.count >= 1) { NSRange selectedRange = [[selectedRanges objectAtIndex:0] rangeValue]; @@ -188,37 +192,33 @@ - (void)selectionDidChange:(NSNotification *)notification NSRange lineRange = [text lineRangeForRange:selectedRange]; NSRange selectedRangeInLine = NSMakeRange(selectedRange.location - lineRange.location, selectedRange.length); NSString *line = [text substringWithRange:lineRange]; + NSLog(@"2"); NSRange colorRange = NSMakeRange(NSNotFound, 0); - OMColorType colorType = OMColorTypeNone; - NSColor *matchedColor = [self colorInText:line selectedRange:selectedRangeInLine type:&colorType matchedRange:&colorRange]; - - if (matchedColor) { + self.selectedStringContent = [self stringInText:line selectedRange:selectedRangeInLine matchedRange:&colorRange]; + if (_selectedStringContent) { NSColor *backgroundColor = [self.textView.backgroundColor colorUsingColorSpace:[NSColorSpace genericRGBColorSpace]]; CGFloat r = 1.0; CGFloat g = 1.0; CGFloat b = 1.0; [backgroundColor getRed:&r green:&g blue:&b alpha:NULL]; CGFloat backgroundLuminance = (r + g + b) / 3.0; + NSLog(@"3"); NSColor *strokeColor = (backgroundLuminance > 0.5) ? [NSColor colorWithCalibratedWhite:0.2 alpha:1.0] : [NSColor whiteColor]; - self.selectedColorType = colorType; - - - // self.colorWell.color = matchedColor; - // self.colorWell.strokeColor = strokeColor; - - self.selectedColorRange = NSMakeRange(colorRange.location + lineRange.location, colorRange.length); - NSRect selectionRectOnScreen = [self.textView firstRectForCharacterRange:self.selectedColorRange]; + self.selectedStringRange = NSMakeRange(colorRange.location + lineRange.location, colorRange.length); + NSRect selectionRectOnScreen = [self.textView firstRectForCharacterRange:self.selectedStringRange]; NSRect selectionRectInWindow = [self.textView.window convertRectFromScreen:selectionRectOnScreen]; NSRect selectionRectInView = [self.textView convertRect:selectionRectInWindow fromView:nil]; NSRect colorWellRect = NSMakeRect(NSMaxX(selectionRectInView) - 49, NSMinY(selectionRectInView) - selectionRectInView.size.height - 2, 50, selectionRectInView.size.height + 2); - self.colorWell.frame = NSIntegralRect(colorWellRect); - [self.textView addSubview:self.colorWell]; - self.colorFrameView.frame = NSInsetRect(NSIntegralRect(selectionRectInView), -1, -1); - self.colorFrameView.color = strokeColor; + NSLog(@"4 %@ %@", self.stringButton, self.stringFrameView); - [self.textView addSubview:self.colorFrameView]; + self.stringButton.frame = NSIntegralRect(colorWellRect); + [self.textView addSubview:self.stringButton]; + + self.stringFrameView.frame = NSInsetRect(NSIntegralRect(selectionRectInView), -1, -1); + self.stringFrameView.color = strokeColor; + [self.textView addSubview:self.stringFrameView]; } else { [self dismissColorWell]; } @@ -234,84 +234,81 @@ - (void)dismissColorWell // [self.colorWell deactivate]; // [[NSColorPanel sharedColorPanel] orderOut:nil]; // } - [self.colorWell removeFromSuperview]; - [self.colorFrameView removeFromSuperview]; - self.selectedColorRange = NSMakeRange(NSNotFound, 0); - self.selectedColorType = OMColorTypeNone; + [self.stringButton removeFromSuperview]; + [self.stringFrameView removeFromSuperview]; + self.selectedStringRange = NSMakeRange(NSNotFound, 0); + self.selectedStringContent = nil; } - (void)colorDidChange:(id)sender { - if (self.selectedColorRange.location == NSNotFound) { + if (self.selectedStringRange.location == NSNotFound) { return; } - NSString *colorString = [self colorStringForColor:nil withType:self.selectedColorType]; + // FIXME:dholtwick:2012-12-09 - + NSString *colorString = self.selectedStringContent; if (colorString) { [self.textView.undoManager beginUndoGrouping]; - [self.textView insertText:colorString replacementRange:self.selectedColorRange]; + [self.textView insertText:colorString replacementRange:self.selectedStringRange]; [self.textView.undoManager endUndoGrouping]; } } - (void)showPopover:(id)sender { + HOPopoverViewController *vc = [[[HOPopoverViewController alloc] init] autorelease]; + NSTextField *textfield = (id)vc.view; + textfield.stringValue = self.selectedStringContent; + NSSize size = NSMakeSize(self.textView.bounds.size.width * 0.75, 120); NSPopover *popover = [[NSPopover alloc] init]; - popover.contentViewController = [[HOPopoverViewController alloc] init]; - [popover showRelativeToRect:self.colorWell.bounds ofView:self.colorWell preferredEdge:NSMaxXEdge]; + popover.contentViewController = vc; + popover.contentSize = size; + [popover showRelativeToRect:self.stringButton.bounds + ofView:self.stringButton + preferredEdge:NSMinYEdge]; } #pragma mark - View Initialization -- (HOStringInfoButton *)colorWell +- (HOStringInfoButton *)stringButton { - if (!_colorWell) { - _colorWell = [[HOStringInfoButton alloc] initWithFrame:NSMakeRect(0, 0, 50, 30)]; - [_colorWell setTarget:self]; - [_colorWell setAction:@selector(showPopover:)]; + if (!_stringButton) { + _stringButton = [[HOStringInfoButton alloc] initWithFrame:NSMakeRect(0, 0, 50, 30)]; + [_stringButton setTarget:self]; + [_stringButton setAction:@selector(showPopover:)]; } - return _colorWell; + return _stringButton; } -- (HOStringFrameView *)colorFrameView +- (HOStringFrameView *)stringFrameView { - if (!_colorFrameView) { - _colorFrameView = [[HOStringFrameView alloc] initWithFrame:NSZeroRect]; + if (!_stringFrameView) { + _stringFrameView = [[HOStringFrameView alloc] initWithFrame:NSZeroRect]; } - return _colorFrameView; + return _stringFrameView; } #pragma mark - Color String Parsing -- (NSColor *)colorInText:(NSString *)text selectedRange:(NSRange)selectedRange type:(OMColorType *)type matchedRange:(NSRangePointer)matchedRange +- (NSString *)stringInText:(NSString *)text selectedRange:(NSRange)selectedRange matchedRange:(NSRangePointer)matchedRange { - __block NSColor *foundColor = nil; + __block NSString *foundStringContent = nil; __block NSRange foundColorRange = NSMakeRange(NSNotFound, 0); - __block OMColorType foundColorType = OMColorTypeNone; - [_stringRegex enumerateMatchesInString:text options:0 range:NSMakeRange(0, text.length) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) { NSRange colorRange = [result range]; if (selectedRange.location >= colorRange.location && NSMaxRange(selectedRange) <= NSMaxRange(colorRange)) { - NSString *typeIndicator = [text substringWithRange:[result rangeAtIndex:1]]; - if ([typeIndicator rangeOfString:@"init"].location != NSNotFound) { - foundColorType = OMColorTypeUIRGBAInit; - } else { - foundColorType = OMColorTypeUIRGBA; - } - foundColor = [NSColor redColor]; + foundStringContent = [text substringWithRange:[result rangeAtIndex:1]]; foundColorRange = colorRange; *stop = YES; } }]; - if (foundColor) { + NSLog(@"Found %@", foundStringContent); + if (foundStringContent) { if (matchedRange != NULL) { *matchedRange = foundColorRange; } - if (type != NULL) { - *type = foundColorType; - } - return foundColor; + return foundStringContent; } - - return nil; + return nil; } - (double)dividedValue:(double)value withDivisorRange:(NSRange)divisorRange inString:(NSString *)text @@ -325,18 +322,13 @@ - (double)dividedValue:(double)value withDivisorRange:(NSRange)divisorRange inSt return value; } -- (NSString *)colorStringForColor:(NSColor *)color withType:(OMColorType)colorType -{ - return @"xxx"; -} - #pragma mark - - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; - [_colorWell release]; - [_colorFrameView release]; + [_stringButton release]; + [_stringFrameView release]; [_textView release]; [_stringRegex release]; [super dealloc]; diff --git a/Classes/HOStringInfoButton.m b/Classes/HOStringInfoButton.m index 2b86e1f..46a2da9 100644 --- a/Classes/HOStringInfoButton.m +++ b/Classes/HOStringInfoButton.m @@ -19,7 +19,13 @@ - (void)drawRect:(NSRect)dirtyRect [NSGraphicsContext saveGraphicsState]; NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:NSMakeRect(0, -5, self.bounds.size.width, self.bounds.size.height + 5) xRadius:5.0 yRadius:5.0]; [path addClip]; - [super drawRect:dirtyRect]; + + { + [[NSColor grayColor] setFill]; + NSRectFill(self.bounds); + [super drawRect:dirtyRect]; + } + // [self drawWellInside:self.bounds]; [NSGraphicsContext restoreGraphicsState]; From 621d656fb85bc3530c7cdc1365e5969d38b7616f Mon Sep 17 00:00:00 2001 From: Dirk Holtwick Date: Sun, 9 Dec 2012 18:42:26 +0100 Subject: [PATCH 06/49] Unescape works --- Classes/HOPopoverViewController.h | 4 +- Classes/HOPopoverViewController.m | 16 ++-- Classes/HOStringHelper.h | 1 - Classes/HOStringHelper.m | 142 ++++++++++++++++++------------ Classes/HOStringInfoButton.m | 4 +- 5 files changed, 104 insertions(+), 63 deletions(-) diff --git a/Classes/HOPopoverViewController.h b/Classes/HOPopoverViewController.h index 94de037..386cd4f 100644 --- a/Classes/HOPopoverViewController.h +++ b/Classes/HOPopoverViewController.h @@ -4,6 +4,8 @@ #import -@interface HOPopoverViewController : NSViewController +@interface HOPopoverViewController : NSViewController { + NSTextField *_textField; +} @end diff --git a/Classes/HOPopoverViewController.m b/Classes/HOPopoverViewController.m index 0d4f047..37d291b 100644 --- a/Classes/HOPopoverViewController.m +++ b/Classes/HOPopoverViewController.m @@ -7,11 +7,17 @@ @implementation HOPopoverViewController - (NSView *)view { - NSTextField *textfield = [[[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 200, 200)] autorelease]; - textfield.focusRingType = NSFocusRingTypeNone; - textfield.bordered = NO; - [super setView:textfield]; - return [super view]; + if(!_textField) { + _textField = [[[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 200, 200)] autorelease]; + _textField.focusRingType = NSFocusRingTypeNone; + _textField.bordered = NO; + } + return _textField; +} + +- (void)dealloc { + [_textField release]; + [super dealloc]; } @end diff --git a/Classes/HOStringHelper.h b/Classes/HOStringHelper.h index c36078b..9c3b585 100644 --- a/Classes/HOStringHelper.h +++ b/Classes/HOStringHelper.h @@ -27,6 +27,5 @@ - (void)activateColorHighlighting; - (void)deactivateColorHighlighting; - (NSString *)stringInText:(NSString *)text selectedRange:(NSRange)selectedRange matchedRange:(NSRangePointer)matchedRange; -- (double)dividedValue:(double)value withDivisorRange:(NSRange)divisorRange inString:(NSString *)text; @end diff --git a/Classes/HOStringHelper.m b/Classes/HOStringHelper.m index f5ba64f..6707936 100755 --- a/Classes/HOStringHelper.m +++ b/Classes/HOStringHelper.m @@ -1,9 +1,5 @@ // -// OMColorHelper.m -// OMColorHelper -// -// Created by Ole Zorn on 09/07/12. -// +// Copyright 2012 Dirk Holtwick, holtwick.it. All rights reserved. // #import "HOStringHelper.h" @@ -143,37 +139,37 @@ - (void)deactivateColorHighlighting #pragma mark - Color Insertion -- (void)insertColor:(id)sender -{ - if (!self.textView) { - NSResponder *firstResponder = [[NSApp keyWindow] firstResponder]; - if ([firstResponder isKindOfClass:NSClassFromString(@"DVTSourceTextView")] && [firstResponder isKindOfClass:[NSTextView class]]) { - self.textView = (NSTextView *)firstResponder; - } else { - NSBeep(); - return; - } - } - if ([[NSUserDefaults standardUserDefaults] boolForKey:kOMColorHelperHighlightingDisabled]) { - //Inserting a color implicitly activates color highlighting: - [[NSUserDefaults standardUserDefaults] setBool:NO forKey:kOMColorHelperHighlightingDisabled]; - [self activateColorHighlighting]; - } - [self.textView.undoManager beginUndoGrouping]; - NSInteger insertionMode = [[NSUserDefaults standardUserDefaults] integerForKey:kOMColorHelperInsertionMode]; - if (insertionMode == 0) { - [self.textView insertText:@"[UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:1.0]" replacementRange:self.textView.selectedRange]; - } else { - [self.textView insertText:@"[NSColor colorWithCalibratedRed:1.0 green:0.0 blue:0.0 alpha:1.0]" replacementRange:self.textView.selectedRange]; - } - [self.textView.undoManager endUndoGrouping]; - [self performSelector:@selector(activateColorWell) withObject:nil afterDelay:0.0]; -} +//- (void)insertColor:(id)sender +//{ +// if (!self.textView) { +// NSResponder *firstResponder = [[NSApp keyWindow] firstResponder]; +// if ([firstResponder isKindOfClass:NSClassFromString(@"DVTSourceTextView")] && [firstResponder isKindOfClass:[NSTextView class]]) { +// self.textView = (NSTextView *)firstResponder; +// } else { +// NSBeep(); +// return; +// } +// } +// if ([[NSUserDefaults standardUserDefaults] boolForKey:kOMColorHelperHighlightingDisabled]) { +// //Inserting a color implicitly activates color highlighting: +// [[NSUserDefaults standardUserDefaults] setBool:NO forKey:kOMColorHelperHighlightingDisabled]; +// [self activateColorHighlighting]; +// } +// [self.textView.undoManager beginUndoGrouping]; +// NSInteger insertionMode = [[NSUserDefaults standardUserDefaults] integerForKey:kOMColorHelperInsertionMode]; +// if (insertionMode == 0) { +// [self.textView insertText:@"[UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:1.0]" replacementRange:self.textView.selectedRange]; +// } else { +// [self.textView insertText:@"[NSColor colorWithCalibratedRed:1.0 green:0.0 blue:0.0 alpha:1.0]" replacementRange:self.textView.selectedRange]; +// } +// [self.textView.undoManager endUndoGrouping]; +// [self performSelector:@selector(activateColorWell) withObject:nil afterDelay:0.0]; +//} -- (void)activateColorWell -{ - // [self.colorWell activate:YES]; -} +//- (void)activateColorWell +//{ +// // [self.colorWell activate:YES]; +//} #pragma mark - Text Selection Handling @@ -184,7 +180,6 @@ - (void)selectionDidChange:(NSNotification *)notification BOOL disabled = [[NSUserDefaults standardUserDefaults] boolForKey:kOMColorHelperHighlightingDisabled]; if (disabled) return; - NSLog(@"1"); NSArray *selectedRanges = [self.textView selectedRanges]; if (selectedRanges.count >= 1) { NSRange selectedRange = [[selectedRanges objectAtIndex:0] rangeValue]; @@ -192,16 +187,15 @@ - (void)selectionDidChange:(NSNotification *)notification NSRange lineRange = [text lineRangeForRange:selectedRange]; NSRange selectedRangeInLine = NSMakeRange(selectedRange.location - lineRange.location, selectedRange.length); NSString *line = [text substringWithRange:lineRange]; - NSLog(@"2"); NSRange colorRange = NSMakeRange(NSNotFound, 0); self.selectedStringContent = [self stringInText:line selectedRange:selectedRangeInLine matchedRange:&colorRange]; if (_selectedStringContent) { + self.selectedStringContent = [_selectedStringContent substringWithRange:NSMakeRange(2, _selectedStringContent.length - 3)]; NSColor *backgroundColor = [self.textView.backgroundColor colorUsingColorSpace:[NSColorSpace genericRGBColorSpace]]; CGFloat r = 1.0; CGFloat g = 1.0; CGFloat b = 1.0; [backgroundColor getRed:&r green:&g blue:&b alpha:NULL]; CGFloat backgroundLuminance = (r + g + b) / 3.0; - NSLog(@"3"); NSColor *strokeColor = (backgroundLuminance > 0.5) ? [NSColor colorWithCalibratedWhite:0.2 alpha:1.0] : [NSColor whiteColor]; @@ -211,8 +205,6 @@ - (void)selectionDidChange:(NSNotification *)notification NSRect selectionRectInView = [self.textView convertRect:selectionRectInWindow fromView:nil]; NSRect colorWellRect = NSMakeRect(NSMaxX(selectionRectInView) - 49, NSMinY(selectionRectInView) - selectionRectInView.size.height - 2, 50, selectionRectInView.size.height + 2); - NSLog(@"4 %@ %@", self.stringButton, self.stringFrameView); - self.stringButton.frame = NSIntegralRect(colorWellRect); [self.textView addSubview:self.stringButton]; @@ -240,6 +232,52 @@ - (void)dismissColorWell self.selectedStringContent = nil; } +//- (NSString *)escapeString:(NSString *) { +// NSMutableString *json = [NSMutableString string]; +// [json appendString:@"\""]; +// +// if(!kEscapeChars) { +// kEscapeChars = [NSMutableCharacterSet characterSetWithRange:NSMakeRange(0,32)]; +// [kEscapeChars addCharactersInString: @"\"\\"]; +// } +// +// NSRange esc = [self rangeOfCharacterFromSet:kEscapeChars]; +// if ( !esc.length ) { +// // No special chars -- can just add the raw string: +// [json appendString:self]; +// +// } +// else { +// NSUInteger length = [self length]; +// for (NSUInteger i = 0; i < length; i++) { +// unichar uc = [self characterAtIndex:i]; +// switch (uc) { +// case '"': [json appendString:@"\\\""]; break; +// case '\'': [json appendString:@"\\\'"]; break; +// // case '%': [json appendString:@"\\%"]; break; +// case '\\': [json appendString:@"\\\\"]; break; +// case '\t': [json appendString:@"\\t"]; break; +// case '\n': [json appendString:@"\\n"]; break; +// case '\r': [json appendString:@"\\r"]; break; +// case '\b': [json appendString:@"\\b"]; break; +// case '\f': [json appendString:@"\\f"]; break; +// default: { +// if (uc < 0x20) { +// [json appendFormat:@"\\u%04x", uc]; +// } +// else { +// CFStringAppendCharacters((__bridge CFMutableStringRef)json, &uc, 1); +// } +// } +// break; +// } +// } +// } +// +// [json appendString:@"\""]; +// return (NSString *)json; +//} + - (void)colorDidChange:(id)sender { if (self.selectedStringRange.location == NSNotFound) { @@ -255,9 +293,15 @@ - (void)colorDidChange:(id)sender } - (void)showPopover:(id)sender { + NSString *s = [NSString stringWithFormat:@"\"%@\"", _selectedStringContent]; + id value = + [NSJSONSerialization JSONObjectWithData:[s dataUsingEncoding:NSUTF8StringEncoding] + options:NSJSONReadingAllowFragments + error:NULL]; HOPopoverViewController *vc = [[[HOPopoverViewController alloc] init] autorelease]; NSTextField *textfield = (id)vc.view; - textfield.stringValue = self.selectedStringContent; + textfield.stringValue = value; + textfield.font = self.textView.font; NSSize size = NSMakeSize(self.textView.bounds.size.width * 0.75, 120); NSPopover *popover = [[NSPopover alloc] init]; popover.contentViewController = vc; @@ -272,7 +316,7 @@ - (void)showPopover:(id)sender { - (HOStringInfoButton *)stringButton { if (!_stringButton) { - _stringButton = [[HOStringInfoButton alloc] initWithFrame:NSMakeRect(0, 0, 50, 30)]; + _stringButton = [[HOStringInfoButton alloc] initWithFrame:NSMakeRect(0, 0, 100, 30)]; [_stringButton setTarget:self]; [_stringButton setAction:@selector(showPopover:)]; } @@ -296,7 +340,7 @@ - (NSString *)stringInText:(NSString *)text selectedRange:(NSRange)selectedRange [_stringRegex enumerateMatchesInString:text options:0 range:NSMakeRange(0, text.length) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) { NSRange colorRange = [result range]; if (selectedRange.location >= colorRange.location && NSMaxRange(selectedRange) <= NSMaxRange(colorRange)) { - foundStringContent = [text substringWithRange:[result rangeAtIndex:1]]; + foundStringContent = [text substringWithRange:[result rangeAtIndex:0]]; foundColorRange = colorRange; *stop = YES; } @@ -311,22 +355,12 @@ - (NSString *)stringInText:(NSString *)text selectedRange:(NSRange)selectedRange return nil; } -- (double)dividedValue:(double)value withDivisorRange:(NSRange)divisorRange inString:(NSString *)text -{ - if (divisorRange.location != NSNotFound) { - double divisor = [[[text substringWithRange:divisorRange] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"/ "]] doubleValue]; - if (divisor != 0) { - value /= divisor; - } - } - return value; -} - #pragma mark - - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; + [_selectedStringContent release]; [_stringButton release]; [_stringFrameView release]; [_textView release]; diff --git a/Classes/HOStringInfoButton.m b/Classes/HOStringInfoButton.m index 46a2da9..d49889e 100644 --- a/Classes/HOStringInfoButton.m +++ b/Classes/HOStringInfoButton.m @@ -8,7 +8,7 @@ @implementation HOStringInfoButton - (id)initWithFrame:(NSRect)frameRect { if(self = [super initWithFrame:frameRect]) { - self.title = @"open"; + self.title = @"view plain"; self.bordered = NO; } return self; @@ -17,7 +17,7 @@ - (id)initWithFrame:(NSRect)frameRect { - (void)drawRect:(NSRect)dirtyRect { [NSGraphicsContext saveGraphicsState]; - NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:NSMakeRect(0, -5, self.bounds.size.width, self.bounds.size.height + 5) xRadius:5.0 yRadius:5.0]; + NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:NSMakeRect(0, -5, self.bounds.size.width, self.bounds.size.height + 5) xRadius:0.0 yRadius:0.0]; [path addClip]; { From 43fecec04ee4f499f19dfc46706b9e5f65d57c95 Mon Sep 17 00:00:00 2001 From: Dirk Holtwick Date: Sun, 9 Dec 2012 18:58:23 +0100 Subject: [PATCH 07/49] Done, works as expected --- Classes/HOStringHelper.h | 6 ++--- Classes/HOStringHelper.m | 52 +++++++++++++++++++++++++++--------- Classes/HOStringInfoButton.m | 2 +- 3 files changed, 43 insertions(+), 17 deletions(-) diff --git a/Classes/HOStringHelper.h b/Classes/HOStringHelper.h index 9c3b585..cf0d752 100644 --- a/Classes/HOStringHelper.h +++ b/Classes/HOStringHelper.h @@ -5,12 +5,12 @@ #import #import -@class HOStringFrameView, HOStringInfoButton, HOStringViewController; +@class HOStringFrameView, HOStringInfoButton, HOPopoverViewController; -@interface HOStringHelper : NSObject { - HOStringViewController *_stringViewController; +@interface HOStringHelper : NSObject { HOStringInfoButton *_stringButton; HOStringFrameView *_stringFrameView; + HOPopoverViewController *_stringPopoverViewController; NSRange _selectedStringRange; NSString *_selectedStringContent; NSTextView *_textView; diff --git a/Classes/HOStringHelper.m b/Classes/HOStringHelper.m index 6707936..7b59087 100755 --- a/Classes/HOStringHelper.m +++ b/Classes/HOStringHelper.m @@ -278,18 +278,40 @@ - (void)dismissColorWell // return (NSString *)json; //} -- (void)colorDidChange:(id)sender -{ - if (self.selectedStringRange.location == NSNotFound) { +//- (void)colorDidChange:(id)sender +//{ +// if (self.selectedStringRange.location == NSNotFound) { +// return; +// } +// // FIXME:dholtwick:2012-12-09 - +// NSString *colorString = self.selectedStringContent; +// if (colorString) { +// [self.textView.undoManager beginUndoGrouping]; +// [self.textView insertText:colorString replacementRange:self.selectedStringRange]; +// [self.textView.undoManager endUndoGrouping]; +// } +//} + +- (void)popoverWillClose:(NSNotification *)notification { + if (self.selectedStringRange.location == NSNotFound) { return; } - // FIXME:dholtwick:2012-12-09 - - NSString *colorString = self.selectedStringContent; - if (colorString) { - [self.textView.undoManager beginUndoGrouping]; - [self.textView insertText:colorString replacementRange:self.selectedStringRange]; + + NSTextField *textfield = (id)_stringPopoverViewController.view; + + + id data = [NSJSONSerialization dataWithJSONObject:@[textfield.stringValue] + options:0 + error:NULL]; + NSString *back = [[NSString alloc] initWithData:data + encoding:NSUTF8StringEncoding]; + back = [back substringWithRange:NSMakeRange(2, back.length - 4)]; + if(back && ![back isEqualToString:_selectedStringContent]) { + [self.textView.undoManager beginUndoGrouping]; + [self.textView insertText:[NSString stringWithFormat:@"@\"%@\"", back] + replacementRange:self.selectedStringRange]; [self.textView.undoManager endUndoGrouping]; - } + } } - (void)showPopover:(id)sender { @@ -297,15 +319,18 @@ - (void)showPopover:(id)sender { id value = [NSJSONSerialization JSONObjectWithData:[s dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingAllowFragments - error:NULL]; - HOPopoverViewController *vc = [[[HOPopoverViewController alloc] init] autorelease]; - NSTextField *textfield = (id)vc.view; + error:NULL]; + if(!_stringPopoverViewController) { + _stringPopoverViewController = [[[HOPopoverViewController alloc] init] autorelease]; + } + NSTextField *textfield = (id)_stringPopoverViewController.view; textfield.stringValue = value; textfield.font = self.textView.font; NSSize size = NSMakeSize(self.textView.bounds.size.width * 0.75, 120); NSPopover *popover = [[NSPopover alloc] init]; - popover.contentViewController = vc; + popover.contentViewController = _stringPopoverViewController; popover.contentSize = size; + popover.delegate = self; [popover showRelativeToRect:self.stringButton.bounds ofView:self.stringButton preferredEdge:NSMinYEdge]; @@ -360,6 +385,7 @@ - (NSString *)stringInText:(NSString *)text selectedRange:(NSRange)selectedRange - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; + [_stringPopoverViewController release]; [_selectedStringContent release]; [_stringButton release]; [_stringFrameView release]; diff --git a/Classes/HOStringInfoButton.m b/Classes/HOStringInfoButton.m index d49889e..8d28578 100644 --- a/Classes/HOStringInfoButton.m +++ b/Classes/HOStringInfoButton.m @@ -8,7 +8,7 @@ @implementation HOStringInfoButton - (id)initWithFrame:(NSRect)frameRect { if(self = [super initWithFrame:frameRect]) { - self.title = @"view plain"; + self.title = @"plain"; self.bordered = NO; } return self; From 2f66f5a1085b574636190f898fcec3468a4dcbb7 Mon Sep 17 00:00:00 2001 From: Dirk Holtwick Date: Sun, 9 Dec 2012 19:01:41 +0100 Subject: [PATCH 08/49] Readded the credits to Ole Zorn, removed them before just to have shorter headers :) --- Classes/HOPopoverViewController.h | 4 +++- Classes/HOPopoverViewController.m | 4 +++- Classes/HOStringFrameView.h | 4 +++- Classes/HOStringFrameView.m | 4 +++- Classes/HOStringHelper.h | 4 +++- Classes/HOStringHelper.m | 4 +++- Classes/HOStringInfoButton.h | 4 +++- Classes/HOStringInfoButton.m | 4 +++- 8 files changed, 24 insertions(+), 8 deletions(-) diff --git a/Classes/HOPopoverViewController.h b/Classes/HOPopoverViewController.h index 386cd4f..7bd5f89 100644 --- a/Classes/HOPopoverViewController.h +++ b/Classes/HOPopoverViewController.h @@ -1,5 +1,7 @@ // -// Copyright 2012 Dirk Holtwick, holtwick.it. All rights reserved. +// HOStringSense by Dirk Holtwick 2012, holtwick.it +// Based on OMColorSense by by Ole Zorn, 2012 +// Licensed under BSD style license // #import diff --git a/Classes/HOPopoverViewController.m b/Classes/HOPopoverViewController.m index 37d291b..ac48693 100644 --- a/Classes/HOPopoverViewController.m +++ b/Classes/HOPopoverViewController.m @@ -1,5 +1,7 @@ // -// Copyright 2012 Dirk Holtwick, holtwick.it. All rights reserved. +// HOStringSense by Dirk Holtwick 2012, holtwick.it +// Based on OMColorSense by by Ole Zorn, 2012 +// Licensed under BSD style license // #import "HOPopoverViewController.h" diff --git a/Classes/HOStringFrameView.h b/Classes/HOStringFrameView.h index 973b73f..fbe35e8 100644 --- a/Classes/HOStringFrameView.h +++ b/Classes/HOStringFrameView.h @@ -1,5 +1,7 @@ // -// Copyright 2012 Dirk Holtwick, holtwick.it. All rights reserved. +// HOStringSense by Dirk Holtwick 2012, holtwick.it +// Based on OMColorSense by by Ole Zorn, 2012 +// Licensed under BSD style license // #import diff --git a/Classes/HOStringFrameView.m b/Classes/HOStringFrameView.m index d3e6391..57b95aa 100644 --- a/Classes/HOStringFrameView.m +++ b/Classes/HOStringFrameView.m @@ -1,5 +1,7 @@ // -// Copyright 2012 Dirk Holtwick, holtwick.it. All rights reserved. +// HOStringSense by Dirk Holtwick 2012, holtwick.it +// Based on OMColorSense by by Ole Zorn, 2012 +// Licensed under BSD style license // #import "HOStringFrameView.h" diff --git a/Classes/HOStringHelper.h b/Classes/HOStringHelper.h index cf0d752..48adfdc 100644 --- a/Classes/HOStringHelper.h +++ b/Classes/HOStringHelper.h @@ -1,5 +1,7 @@ // -// Copyright 2012 Dirk Holtwick, holtwick.it. All rights reserved. +// HOStringSense by Dirk Holtwick 2012, holtwick.it +// Based on OMColorSense by by Ole Zorn, 2012 +// Licensed under BSD style license // #import diff --git a/Classes/HOStringHelper.m b/Classes/HOStringHelper.m index 7b59087..9d086db 100755 --- a/Classes/HOStringHelper.m +++ b/Classes/HOStringHelper.m @@ -1,5 +1,7 @@ // -// Copyright 2012 Dirk Holtwick, holtwick.it. All rights reserved. +// HOStringSense by Dirk Holtwick 2012, holtwick.it +// Based on OMColorSense by by Ole Zorn, 2012 +// Licensed under BSD style license // #import "HOStringHelper.h" diff --git a/Classes/HOStringInfoButton.h b/Classes/HOStringInfoButton.h index d4bb6df..3e5905a 100644 --- a/Classes/HOStringInfoButton.h +++ b/Classes/HOStringInfoButton.h @@ -1,5 +1,7 @@ // -// Copyright 2012 Dirk Holtwick, holtwick.it. All rights reserved. +// HOStringSense by Dirk Holtwick 2012, holtwick.it +// Based on OMColorSense by by Ole Zorn, 2012 +// Licensed under BSD style license // #import diff --git a/Classes/HOStringInfoButton.m b/Classes/HOStringInfoButton.m index 8d28578..1a0f85b 100644 --- a/Classes/HOStringInfoButton.m +++ b/Classes/HOStringInfoButton.m @@ -1,5 +1,7 @@ // -// Copyright 2012 Dirk Holtwick, holtwick.it. All rights reserved. +// HOStringSense by Dirk Holtwick 2012, holtwick.it +// Based on OMColorSense by by Ole Zorn, 2012 +// Licensed under BSD style license // #import "HOStringInfoButton.h" From f1b478d49d6ae979b9c5b79de6f660f704816c25 Mon Sep 17 00:00:00 2001 From: Dirk Holtwick Date: Sun, 9 Dec 2012 19:11:05 +0100 Subject: [PATCH 09/49] Readme --- HOStringSense.xcodeproj/project.pbxproj | 2 ++ README.md | 28 ++++++------------------ Xcode.png | Bin 0 -> 84926 bytes 3 files changed, 9 insertions(+), 21 deletions(-) create mode 100644 Xcode.png diff --git a/HOStringSense.xcodeproj/project.pbxproj b/HOStringSense.xcodeproj/project.pbxproj index a72a731..49abe03 100755 --- a/HOStringSense.xcodeproj/project.pbxproj +++ b/HOStringSense.xcodeproj/project.pbxproj @@ -31,6 +31,7 @@ 089C1672FE841209C02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; 43BA8623167490550002C238 /* HOPopoverViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HOPopoverViewController.h; sourceTree = ""; }; 43BA8624167490550002C238 /* HOPopoverViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HOPopoverViewController.m; sourceTree = ""; }; + 43ED5411167509CC00AE1269 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = text; path = README.md; sourceTree = ""; }; 7F2B355F15FA59D000DB3249 /* HOStringHelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HOStringHelper.h; sourceTree = ""; }; 7F2EB899145057EA00E97A87 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; 7F6EE2BD15FA6F3B00BA114A /* HOStringFrameView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HOStringFrameView.h; sourceTree = ""; }; @@ -58,6 +59,7 @@ 089C166AFE841209C02AAC07 /* QuietXcode */ = { isa = PBXGroup; children = ( + 43ED5411167509CC00AE1269 /* README.md */, 7F411B0C15FABAC6002F77B6 /* Classes */, 089C167CFE841241C02AAC07 /* Resources */, 089C1671FE841209C02AAC07 /* Frameworks and Libraries */, diff --git a/README.md b/README.md index aabd8c0..62bcf12 100644 --- a/README.md +++ b/README.md @@ -1,39 +1,25 @@ -# ColorSense for Xcode +# HOStringSense for Xcode ## Overview -ColorSense is an Xcode plugin that makes working with `UIColor` (and `NSColor`) more visual. +Edit strings like @"Hello\nWorld!" unescaped. -There are [many](http://www.colorchooserapp.com) [tools](http://iconfactory.com/software/xscope) that allow you to insert a `UIColor`/`NSColor` from a color picker or by picking a color from the screen. But once you've inserted it, it can be hard to remember which color you're actually looking at in your code because you basically just have a series of numbers. +![Screenshot](https://github.com/holtwick/ColorSense-for-Xcode/raw/master/Xcode.png "Example") -This is where ColorSense comes in: When you put the caret on one of your colors, it automatically shows the actual color as an overlay, and you can even adjust it on-the-fly with the standard Mac OS X color picker. - -The plugin also adds some items to the _Edit_ menu to insert colors and to disable color highlighting temporarily. These menu items have no keyboard shortcuts by default, but you can set them via the system's keyboard preferences (Xcode's own preferences won't show them). - -**[Watch Demo Video (YouTube)](http://www.youtube.com/watch?v=eblRfDQM0Go)** - -I'm [@olemoritz](http://twitter.com/olemoritz) on Twitter. - - -Flattr this ## Installation -Simply build the Xcode project and restart Xcode. The plugin will automatically be installed in `~/Library/Application Support/Developer/Shared/Xcode/Plug-ins`. To uninstall, just remove the plugin from there (and restart Xcode). +Simply build the Xcode project and restart Xcode. The plugin will automatically be installed in `~/Library/Application Support/Developer/Shared/Xcode/Plug-ins`. @"Hello\nWorld!"st remove the plugin from there (and restart Xcode). If you get a "Permission Denied" error while building, please see [this issue](https://github.com/omz/ColorSense-for-Xcode/issues/1). -This is tested on OS X 10.8 with Xcode 4.4.1 and 4.5. - -## Limitations - -* It only works for constant colors, something like `[UIColor colorWithWhite:foo * bar + 1 alpha:baz]` won't work. +## Credits -* Only RGB (`colorWithRed:green:blue:alpha:`), grayscale (`colorWithWhite:alpha:`), and named colors (`redColor`...) are supported at the moment (no HSB or CMYK). +This work is derived from the awesome [Color Sense](https://github.com/omz/ColorSense-for-Xcode) plugin of Ole Zorn. Thanks Ole! ## License - Copyright (c) 2012, Ole Zorn + Copyright (c) 2012, Dirk Holtwick All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/Xcode.png b/Xcode.png new file mode 100644 index 0000000000000000000000000000000000000000..328062e4d4cbb79fbd0693609453f38b64ad944e GIT binary patch literal 84926 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 Date: Sun, 9 Dec 2012 19:13:51 +0100 Subject: [PATCH 10/49] Rename project; public release --- README.md | 4 ++-- Xcode.png | Bin 84926 -> 38913 bytes 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 62bcf12..19650c5 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,9 @@ ## Overview -Edit strings like @"Hello\nWorld!" unescaped. +Edit strings like `@"Hello\nWorld!"` unescaped. -![Screenshot](https://github.com/holtwick/ColorSense-for-Xcode/raw/master/Xcode.png "Example") +![Screenshot](https://github.com/holtwick/HOStringSense-for-Xcode/raw/master/Xcode.png "Example") ## Installation diff --git a/Xcode.png b/Xcode.png index 328062e4d4cbb79fbd0693609453f38b64ad944e..ce94a1295970a520f2ec7a163ea614aa36bc072b 100644 GIT binary patch delta 36540 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 efh!6E{~yM_@d$Je+>-bJ0000K4NQ literal 84926 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 Date: Sun, 9 Dec 2012 19:25:38 +0100 Subject: [PATCH 11/49] Fixed Readme; removed NSLog --- Classes/HOStringHelper.m | 1 - README.md | 7 +++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Classes/HOStringHelper.m b/Classes/HOStringHelper.m index 9d086db..a9ed3b6 100755 --- a/Classes/HOStringHelper.m +++ b/Classes/HOStringHelper.m @@ -372,7 +372,6 @@ - (NSString *)stringInText:(NSString *)text selectedRange:(NSRange)selectedRange *stop = YES; } }]; - NSLog(@"Found %@", foundStringContent); if (foundStringContent) { if (matchedRange != NULL) { *matchedRange = foundColorRange; diff --git a/README.md b/README.md index 19650c5..1ad2d51 100644 --- a/README.md +++ b/README.md @@ -6,13 +6,16 @@ Edit strings like `@"Hello\nWorld!"` unescaped. ![Screenshot](https://github.com/holtwick/HOStringSense-for-Xcode/raw/master/Xcode.png "Example") - ## Installation -Simply build the Xcode project and restart Xcode. The plugin will automatically be installed in `~/Library/Application Support/Developer/Shared/Xcode/Plug-ins`. @"Hello\nWorld!"st remove the plugin from there (and restart Xcode). +Simply build the Xcode project and restart Xcode. The plugin will automatically be installed in `~/Library/Application Support/Developer/Shared/Xcode/Plug-ins`. First remove the plugin from there (and restart Xcode). If you get a "Permission Denied" error while building, please see [this issue](https://github.com/omz/ColorSense-for-Xcode/issues/1). +## Author + +I'm a Mac and iOS developer, follow me on Twitter [@holtwick](https://twitter.com/holtwick) or ADN [@ho](https://alpha.app.net/ho). + ## Credits This work is derived from the awesome [Color Sense](https://github.com/omz/ColorSense-for-Xcode) plugin of Ole Zorn. Thanks Ole! From 43a5d568878dc611c99c049249fbf61d426e0664 Mon Sep 17 00:00:00 2001 From: Dirk Holtwick Date: Sun, 9 Dec 2012 22:26:27 +0100 Subject: [PATCH 12/49] Plugin can now be turned off in Edit menu; some fixes; smaller popover; popover closes correctly; code cleanup --- Classes/HOStringHelper.h | 3 +- Classes/HOStringHelper.m | 251 +++++++++++---------------------------- 2 files changed, 70 insertions(+), 184 deletions(-) diff --git a/Classes/HOStringHelper.h b/Classes/HOStringHelper.h index 48adfdc..223f3e0 100644 --- a/Classes/HOStringHelper.h +++ b/Classes/HOStringHelper.h @@ -13,6 +13,7 @@ HOStringInfoButton *_stringButton; HOStringFrameView *_stringFrameView; HOPopoverViewController *_stringPopoverViewController; + NSPopover *_stringPopover; NSRange _selectedStringRange; NSString *_selectedStringContent; NSTextView *_textView; @@ -25,7 +26,7 @@ @property (nonatomic, assign) NSRange selectedStringRange; @property (nonatomic, copy) NSString *selectedStringContent; -- (void)dismissColorWell; +- (void)dismissPopover; - (void)activateColorHighlighting; - (void)deactivateColorHighlighting; - (NSString *)stringInText:(NSString *)text selectedRange:(NSRange)selectedRange matchedRange:(NSRangePointer)matchedRange; diff --git a/Classes/HOStringHelper.m b/Classes/HOStringHelper.m index a9ed3b6..d06778a 100755 --- a/Classes/HOStringHelper.m +++ b/Classes/HOStringHelper.m @@ -9,8 +9,7 @@ #import "HOStringFrameView.h" #import "HOPopoverViewController.h" -#define kOMColorHelperHighlightingDisabled @"OMColorHelperHighlightingDisabled" -#define kOMColorHelperInsertionMode @"OMColorHelperInsertionMode" +#define kHOStringHelperHighlightingDisabled @"HOStringHelperHighlightingDisabled" @implementation HOStringHelper @@ -45,76 +44,51 @@ - (id)init - (void)applicationDidFinishLaunching:(NSNotification *)notification { - // NSMenuItem *editMenuItem = [[NSApp mainMenu] itemWithTitle:@"Edit"]; - // if (editMenuItem) { - // [[editMenuItem submenu] addItem:[NSMenuItem separatorItem]]; - // - // NSMenuItem *toggleColorHighlightingMenuItem = [[[NSMenuItem alloc] initWithTitle:@"Show Colors Under Caret" action:@selector(toggleColorHighlightingEnabled:) keyEquivalent:@""] autorelease]; - // [toggleColorHighlightingMenuItem setTarget:self]; - // [[editMenuItem submenu] addItem:toggleColorHighlightingMenuItem]; - // - // NSMenuItem *colorInsertionModeItem = [[[NSMenuItem alloc] initWithTitle:@"Color Insertion Mode" action:nil keyEquivalent:@""] autorelease]; - // NSMenuItem *colorInsertionModeNSItem = [[[NSMenuItem alloc] initWithTitle:@"NSColor" action:@selector(selectNSColorInsertionMode:) keyEquivalent:@""] autorelease]; - // [colorInsertionModeNSItem setTarget:self]; - // NSMenuItem *colorInsertionModeUIItem = [[[NSMenuItem alloc] initWithTitle:@"UIColor" action:@selector(selectUIColorInsertionMode:) keyEquivalent:@""] autorelease]; - // [colorInsertionModeUIItem setTarget:self]; - // - // NSMenu *colorInsertionModeMenu = [[[NSMenu alloc] initWithTitle:@"Color Insertion Mode"] autorelease]; - // [colorInsertionModeItem setSubmenu:colorInsertionModeMenu]; - // [[colorInsertionModeItem submenu] addItem:colorInsertionModeUIItem]; - // [[colorInsertionModeItem submenu] addItem:colorInsertionModeNSItem]; - // [[editMenuItem submenu] addItem:colorInsertionModeItem]; - // - // NSMenuItem *insertColorMenuItem = [[[NSMenuItem alloc] initWithTitle:@"Insert Color..." action:@selector(insertColor:) keyEquivalent:@""] autorelease]; - // [insertColorMenuItem setTarget:self]; - // [[editMenuItem submenu] addItem:insertColorMenuItem]; - // } - // - // BOOL highlightingEnabled = ![[NSUserDefaults standardUserDefaults] boolForKey:kOMColorHelperHighlightingDisabled]; - // if (highlightingEnabled) { - [self activateColorHighlighting]; - // } + NSMenuItem *editMenuItem = [[NSApp mainMenu] itemWithTitle:@"Edit"]; + if (editMenuItem) { + [[editMenuItem submenu] addItem:[NSMenuItem separatorItem]]; + + NSMenuItem *toggleColorHighlightingMenuItem = [[[NSMenuItem alloc] initWithTitle:@"Show Strings Under Caret" action:@selector(toggleColorHighlightingEnabled:) keyEquivalent:@""] autorelease]; + [toggleColorHighlightingMenuItem setTarget:self]; + [[editMenuItem submenu] addItem:toggleColorHighlightingMenuItem]; + + + // NSMenuItem *insertColorMenuItem = [[[NSMenuItem alloc] initWithTitle:@"Insert Color..." action:@selector(insertColor:) keyEquivalent:@""] autorelease]; + // [insertColorMenuItem setTarget:self]; + // [[editMenuItem submenu] addItem:insertColorMenuItem]; + } + + BOOL highlightingEnabled = ![[NSUserDefaults standardUserDefaults] boolForKey:kHOStringHelperHighlightingDisabled]; + if (highlightingEnabled) { + [self activateColorHighlighting]; + } } #pragma mark - Preferences -//- (BOOL)validateMenuItem:(NSMenuItem *)menuItem -//{ -// if ([menuItem action] == @selector(insertColor:)) { -// NSResponder *firstResponder = [[NSApp keyWindow] firstResponder]; -// return ([firstResponder isKindOfClass:NSClassFromString(@"DVTSourceTextView")] && [firstResponder isKindOfClass:[NSTextView class]]); -// } else if ([menuItem action] == @selector(toggleColorHighlightingEnabled:)) { -// BOOL enabled = [[NSUserDefaults standardUserDefaults] boolForKey:kOMColorHelperHighlightingDisabled]; -// [menuItem setState:enabled ? NSOffState : NSOnState]; -// return YES; -// } else if ([menuItem action] == @selector(selectNSColorInsertionMode:)) { -// [menuItem setState:[[NSUserDefaults standardUserDefaults] integerForKey:kOMColorHelperInsertionMode] == 1 ? NSOnState : NSOffState]; -// } else if ([menuItem action] == @selector(selectUIColorInsertionMode:)) { -// [menuItem setState:[[NSUserDefaults standardUserDefaults] integerForKey:kOMColorHelperInsertionMode] == 0 ? NSOnState : NSOffState]; -// } -// return YES; -//} - -//- (void)selectNSColorInsertionMode:(id)sender -//{ -// [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:kOMColorHelperInsertionMode]; -//} - -//- (void)selectUIColorInsertionMode:(id)sender -//{ -// [[NSUserDefaults standardUserDefaults] setInteger:0 forKey:kOMColorHelperInsertionMode]; -//} - -//- (void)toggleColorHighlightingEnabled:(id)sender -//{ -// BOOL enabled = [[NSUserDefaults standardUserDefaults] boolForKey:kOMColorHelperHighlightingDisabled]; -// [[NSUserDefaults standardUserDefaults] setBool:!enabled forKey:kOMColorHelperHighlightingDisabled]; -// if (enabled) { -// [self activateColorHighlighting]; -// } else { -// [self deactivateColorHighlighting]; -// } -//} +- (BOOL)validateMenuItem:(NSMenuItem *)menuItem +{ + if ([menuItem action] == @selector(insertColor:)) { + NSResponder *firstResponder = [[NSApp keyWindow] firstResponder]; + return ([firstResponder isKindOfClass:NSClassFromString(@"DVTSourceTextView")] && [firstResponder isKindOfClass:[NSTextView class]]); + } else if ([menuItem action] == @selector(toggleColorHighlightingEnabled:)) { + BOOL enabled = [[NSUserDefaults standardUserDefaults] boolForKey:kHOStringHelperHighlightingDisabled]; + [menuItem setState:enabled ? NSOffState : NSOnState]; + return YES; + } + return YES; +} + +- (void)toggleColorHighlightingEnabled:(id)sender +{ + BOOL enabled = [[NSUserDefaults standardUserDefaults] boolForKey:kHOStringHelperHighlightingDisabled]; + [[NSUserDefaults standardUserDefaults] setBool:!enabled forKey:kHOStringHelperHighlightingDisabled]; + if (enabled) { + [self activateColorHighlighting]; + } else { + [self deactivateColorHighlighting]; + } +} - (void)activateColorHighlighting { @@ -135,44 +109,10 @@ - (void)activateColorHighlighting - (void)deactivateColorHighlighting { [[NSNotificationCenter defaultCenter] removeObserver:self name:NSTextViewDidChangeSelectionNotification object:nil]; - [self dismissColorWell]; - // self.textView = nil; + [self dismissPopover]; + self.textView = nil; } -#pragma mark - Color Insertion - -//- (void)insertColor:(id)sender -//{ -// if (!self.textView) { -// NSResponder *firstResponder = [[NSApp keyWindow] firstResponder]; -// if ([firstResponder isKindOfClass:NSClassFromString(@"DVTSourceTextView")] && [firstResponder isKindOfClass:[NSTextView class]]) { -// self.textView = (NSTextView *)firstResponder; -// } else { -// NSBeep(); -// return; -// } -// } -// if ([[NSUserDefaults standardUserDefaults] boolForKey:kOMColorHelperHighlightingDisabled]) { -// //Inserting a color implicitly activates color highlighting: -// [[NSUserDefaults standardUserDefaults] setBool:NO forKey:kOMColorHelperHighlightingDisabled]; -// [self activateColorHighlighting]; -// } -// [self.textView.undoManager beginUndoGrouping]; -// NSInteger insertionMode = [[NSUserDefaults standardUserDefaults] integerForKey:kOMColorHelperInsertionMode]; -// if (insertionMode == 0) { -// [self.textView insertText:@"[UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:1.0]" replacementRange:self.textView.selectedRange]; -// } else { -// [self.textView insertText:@"[NSColor colorWithCalibratedRed:1.0 green:0.0 blue:0.0 alpha:1.0]" replacementRange:self.textView.selectedRange]; -// } -// [self.textView.undoManager endUndoGrouping]; -// [self performSelector:@selector(activateColorWell) withObject:nil afterDelay:0.0]; -//} - -//- (void)activateColorWell -//{ -// // [self.colorWell activate:YES]; -//} - #pragma mark - Text Selection Handling - (void)selectionDidChange:(NSNotification *)notification @@ -180,7 +120,7 @@ - (void)selectionDidChange:(NSNotification *)notification if ([[notification object] isKindOfClass:NSClassFromString(@"DVTSourceTextView")] && [[notification object] isKindOfClass:[NSTextView class]]) { self.textView = (NSTextView *)[notification object]; - BOOL disabled = [[NSUserDefaults standardUserDefaults] boolForKey:kOMColorHelperHighlightingDisabled]; + BOOL disabled = [[NSUserDefaults standardUserDefaults] boolForKey:kHOStringHelperHighlightingDisabled]; if (disabled) return; NSArray *selectedRanges = [self.textView selectedRanges]; if (selectedRanges.count >= 1) { @@ -214,99 +154,39 @@ - (void)selectionDidChange:(NSNotification *)notification self.stringFrameView.color = strokeColor; [self.textView addSubview:self.stringFrameView]; } else { - [self dismissColorWell]; + [self dismissPopover]; } } else { - [self dismissColorWell]; + [self dismissPopover]; } } } -- (void)dismissColorWell +- (void)dismissPopover { -// if (self.colorWell.isActive) { -// [self.colorWell deactivate]; -// [[NSColorPanel sharedColorPanel] orderOut:nil]; -// } + if(_stringPopover) { + [_stringPopover close]; + [_stringPopover autorelease]; + } [self.stringButton removeFromSuperview]; [self.stringFrameView removeFromSuperview]; self.selectedStringRange = NSMakeRange(NSNotFound, 0); self.selectedStringContent = nil; } -//- (NSString *)escapeString:(NSString *) { -// NSMutableString *json = [NSMutableString string]; -// [json appendString:@"\""]; -// -// if(!kEscapeChars) { -// kEscapeChars = [NSMutableCharacterSet characterSetWithRange:NSMakeRange(0,32)]; -// [kEscapeChars addCharactersInString: @"\"\\"]; -// } -// -// NSRange esc = [self rangeOfCharacterFromSet:kEscapeChars]; -// if ( !esc.length ) { -// // No special chars -- can just add the raw string: -// [json appendString:self]; -// -// } -// else { -// NSUInteger length = [self length]; -// for (NSUInteger i = 0; i < length; i++) { -// unichar uc = [self characterAtIndex:i]; -// switch (uc) { -// case '"': [json appendString:@"\\\""]; break; -// case '\'': [json appendString:@"\\\'"]; break; -// // case '%': [json appendString:@"\\%"]; break; -// case '\\': [json appendString:@"\\\\"]; break; -// case '\t': [json appendString:@"\\t"]; break; -// case '\n': [json appendString:@"\\n"]; break; -// case '\r': [json appendString:@"\\r"]; break; -// case '\b': [json appendString:@"\\b"]; break; -// case '\f': [json appendString:@"\\f"]; break; -// default: { -// if (uc < 0x20) { -// [json appendFormat:@"\\u%04x", uc]; -// } -// else { -// CFStringAppendCharacters((__bridge CFMutableStringRef)json, &uc, 1); -// } -// } -// break; -// } -// } -// } -// -// [json appendString:@"\""]; -// return (NSString *)json; -//} - -//- (void)colorDidChange:(id)sender -//{ -// if (self.selectedStringRange.location == NSNotFound) { -// return; -// } -// // FIXME:dholtwick:2012-12-09 - -// NSString *colorString = self.selectedStringContent; -// if (colorString) { -// [self.textView.undoManager beginUndoGrouping]; -// [self.textView insertText:colorString replacementRange:self.selectedStringRange]; -// [self.textView.undoManager endUndoGrouping]; -// } -//} - - (void)popoverWillClose:(NSNotification *)notification { if (self.selectedStringRange.location == NSNotFound) { return; } NSTextField *textfield = (id)_stringPopoverViewController.view; - + id data = [NSJSONSerialization dataWithJSONObject:@[textfield.stringValue] options:0 error:NULL]; - NSString *back = [[NSString alloc] initWithData:data - encoding:NSUTF8StringEncoding]; + NSString *back = [[[NSString alloc] initWithData:data + encoding:NSUTF8StringEncoding] autorelease]; back = [back substringWithRange:NSMakeRange(2, back.length - 4)]; if(back && ![back isEqualToString:_selectedStringContent]) { [self.textView.undoManager beginUndoGrouping]; @@ -317,6 +197,10 @@ - (void)popoverWillClose:(NSNotification *)notification { } - (void)showPopover:(id)sender { + if(_stringPopover) { + [_stringPopover close]; + [_stringPopover autorelease]; + } NSString *s = [NSString stringWithFormat:@"\"%@\"", _selectedStringContent]; id value = [NSJSONSerialization JSONObjectWithData:[s dataUsingEncoding:NSUTF8StringEncoding] @@ -328,14 +212,14 @@ - (void)showPopover:(id)sender { NSTextField *textfield = (id)_stringPopoverViewController.view; textfield.stringValue = value; textfield.font = self.textView.font; - NSSize size = NSMakeSize(self.textView.bounds.size.width * 0.75, 120); - NSPopover *popover = [[NSPopover alloc] init]; - popover.contentViewController = _stringPopoverViewController; - popover.contentSize = size; - popover.delegate = self; - [popover showRelativeToRect:self.stringButton.bounds - ofView:self.stringButton - preferredEdge:NSMinYEdge]; + NSSize size = NSMakeSize(self.textView.bounds.size.width * 0.50, 120); + _stringPopover = [[NSPopover alloc] init]; + _stringPopover.contentViewController = _stringPopoverViewController; + _stringPopover.contentSize = size; + _stringPopover.delegate = self; + [_stringPopover showRelativeToRect:self.stringButton.bounds + ofView:self.stringButton + preferredEdge:NSMinYEdge]; } #pragma mark - View Initialization @@ -386,6 +270,7 @@ - (NSString *)stringInText:(NSString *)text selectedRange:(NSRange)selectedRange - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; + [self dismissPopover]; [_stringPopoverViewController release]; [_selectedStringContent release]; [_stringButton release]; From d77df6940219b9f13b7bd31dfdb8314b3a4c9db0 Mon Sep 17 00:00:00 2001 From: Dirk Holtwick Date: Mon, 10 Dec 2012 16:31:00 +0100 Subject: [PATCH 13/49] Escaping fixed; shows length of sting in button; some UI changes; refactoring --- Classes/HOStringHelper.m | 89 +++++++++++++++++++++++++++--------- Classes/HOStringInfoButton.h | 6 ++- Classes/HOStringInfoButton.m | 39 ++++++++-------- 3 files changed, 93 insertions(+), 41 deletions(-) diff --git a/Classes/HOStringHelper.m b/Classes/HOStringHelper.m index d06778a..ba8c2a0 100755 --- a/Classes/HOStringHelper.m +++ b/Classes/HOStringHelper.m @@ -19,6 +19,58 @@ @implementation HOStringHelper @synthesize selectedStringRange = _selectedStringRange; @synthesize selectedStringContent=_selectedStringContent; +#pragma mark - String Helper + +static NSMutableCharacterSet *staticEscapeChars; + +- (NSString *)escapeString:(NSString *)string { + NSMutableString *result = [NSMutableString string]; + if(!staticEscapeChars) { + staticEscapeChars = [NSMutableCharacterSet characterSetWithRange:NSMakeRange(0,32)]; + [staticEscapeChars addCharactersInString: @"\"\\"]; + } + NSRange esc = [string rangeOfCharacterFromSet:staticEscapeChars]; + if (!esc.length) { + [result appendString:string]; + } + else { + NSUInteger length = [string length]; + for (NSUInteger i = 0; i < length; i++) { + unichar uc = [string characterAtIndex:i]; + switch (uc) { + case '"': [result appendString:@"\\\""]; break; + case '\'': [result appendString:@"\\\'"]; break; + case '\\': [result appendString:@"\\\\"]; break; + case '\t': [result appendString:@"\\t"]; break; + case '\n': [result appendString:@"\\n"]; break; + case '\r': [result appendString:@"\\r"]; break; + case '\b': [result appendString:@"\\b"]; break; + case '\f': [result appendString:@"\\f"]; break; + default: { + if (uc < 0x20) { + [result appendFormat:@"\\u%04x", uc]; + } + else { + CFStringAppendCharacters((CFMutableStringRef)result, &uc, 1); + } + } break; + } + } + } + return (NSString *)result; +} + +- (NSString *)unescapeString:(NSString *)string { + @try { + NSString *s = [NSString stringWithFormat:@"\"%@\"", string]; + return [NSJSONSerialization JSONObjectWithData:[s dataUsingEncoding:NSUTF8StringEncoding] + options:NSJSONReadingAllowFragments + error:NULL]; + } + @catch (NSException *exception) { ; } + return nil; +} + #pragma mark - Plugin Initialization + (void)pluginDidLoad:(NSBundle *)plugin @@ -145,9 +197,11 @@ - (void)selectionDidChange:(NSNotification *)notification NSRect selectionRectOnScreen = [self.textView firstRectForCharacterRange:self.selectedStringRange]; NSRect selectionRectInWindow = [self.textView.window convertRectFromScreen:selectionRectOnScreen]; NSRect selectionRectInView = [self.textView convertRect:selectionRectInWindow fromView:nil]; - NSRect colorWellRect = NSMakeRect(NSMaxX(selectionRectInView) - 49, NSMinY(selectionRectInView) - selectionRectInView.size.height - 2, 50, selectionRectInView.size.height + 2); - self.stringButton.frame = NSIntegralRect(colorWellRect); + NSRect buttonRect = NSMakeRect(NSMaxX(selectionRectInView) - 49, NSMinY(selectionRectInView) - selectionRectInView.size.height - 2, 50, selectionRectInView.size.height + 2); + self.stringButton.frame = NSIntegralRect(buttonRect); + self.stringButton.title = [NSString stringWithFormat:@"%d", (int)[[self unescapeString:_selectedStringContent] length]]; + self.stringButton.strokeColor = strokeColor; [self.textView addSubview:self.stringButton]; self.stringFrameView.frame = NSInsetRect(NSIntegralRect(selectionRectInView), -1, -1); @@ -180,19 +234,15 @@ - (void)popoverWillClose:(NSNotification *)notification { } NSTextField *textfield = (id)_stringPopoverViewController.view; - - - id data = [NSJSONSerialization dataWithJSONObject:@[textfield.stringValue] - options:0 - error:NULL]; - NSString *back = [[[NSString alloc] initWithData:data - encoding:NSUTF8StringEncoding] autorelease]; - back = [back substringWithRange:NSMakeRange(2, back.length - 4)]; - if(back && ![back isEqualToString:_selectedStringContent]) { - [self.textView.undoManager beginUndoGrouping]; - [self.textView insertText:[NSString stringWithFormat:@"@\"%@\"", back] - replacementRange:self.selectedStringRange]; - [self.textView.undoManager endUndoGrouping]; + NSString *result = textfield.stringValue; + if(result) { + result = [self escapeString:result]; + if(![result isEqualToString:_selectedStringContent]) { + [self.textView.undoManager beginUndoGrouping]; + [self.textView insertText:[NSString stringWithFormat:@"@\"%@\"", result] + replacementRange:self.selectedStringRange]; + [self.textView.undoManager endUndoGrouping]; + } } } @@ -200,17 +250,12 @@ - (void)showPopover:(id)sender { if(_stringPopover) { [_stringPopover close]; [_stringPopover autorelease]; - } - NSString *s = [NSString stringWithFormat:@"\"%@\"", _selectedStringContent]; - id value = - [NSJSONSerialization JSONObjectWithData:[s dataUsingEncoding:NSUTF8StringEncoding] - options:NSJSONReadingAllowFragments - error:NULL]; + } if(!_stringPopoverViewController) { _stringPopoverViewController = [[[HOPopoverViewController alloc] init] autorelease]; } NSTextField *textfield = (id)_stringPopoverViewController.view; - textfield.stringValue = value; + textfield.stringValue = [self unescapeString:_selectedStringContent]; textfield.font = self.textView.font; NSSize size = NSMakeSize(self.textView.bounds.size.width * 0.50, 120); _stringPopover = [[NSPopover alloc] init]; diff --git a/Classes/HOStringInfoButton.h b/Classes/HOStringInfoButton.h index 3e5905a..0d56223 100644 --- a/Classes/HOStringInfoButton.h +++ b/Classes/HOStringInfoButton.h @@ -6,6 +6,10 @@ #import -@interface HOStringInfoButton : NSButton +@interface HOStringInfoButton : NSButton { + NSColor *_strokeColor; +} + +@property (copy, nonatomic) NSColor *strokeColor; @end diff --git a/Classes/HOStringInfoButton.m b/Classes/HOStringInfoButton.m index 1a0f85b..c124f3b 100644 --- a/Classes/HOStringInfoButton.m +++ b/Classes/HOStringInfoButton.m @@ -8,9 +8,12 @@ @implementation HOStringInfoButton +@synthesize strokeColor = _strokeColor; + - (id)initWithFrame:(NSRect)frameRect { if(self = [super initWithFrame:frameRect]) { - self.title = @"plain"; + self.font = [NSFont boldSystemFontOfSize:11.]; + self.title = @""; self.bordered = NO; } return self; @@ -19,11 +22,11 @@ - (id)initWithFrame:(NSRect)frameRect { - (void)drawRect:(NSRect)dirtyRect { [NSGraphicsContext saveGraphicsState]; - NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:NSMakeRect(0, -5, self.bounds.size.width, self.bounds.size.height + 5) xRadius:0.0 yRadius:0.0]; + NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:NSMakeRect(0, 0, self.bounds.size.width, self.bounds.size.height ) xRadius:5.0 yRadius:5.0]; [path addClip]; { - [[NSColor grayColor] setFill]; + [[NSColor colorWithCalibratedWhite:0.902 alpha:1.000] setFill]; NSRectFill(self.bounds); [super drawRect:dirtyRect]; } @@ -31,11 +34,11 @@ - (void)drawRect:(NSRect)dirtyRect // [self drawWellInside:self.bounds]; [NSGraphicsContext restoreGraphicsState]; - // if (self.strokeColor) { - // NSBezierPath *strokePath = [NSBezierPath bezierPathWithRoundedRect:NSInsetRect(NSMakeRect(0, -5, self.bounds.size.width, self.bounds.size.height + 5), 0.5, 0.5) xRadius:5.0 yRadius:5.0]; - // [self.strokeColor setStroke]; - // [strokePath stroke]; - // } + if (self.strokeColor) { + NSBezierPath *strokePath = [NSBezierPath bezierPathWithRoundedRect:NSInsetRect(NSMakeRect(0, 0, self.bounds.size.width, self.bounds.size.height), 0.5, 0.5) xRadius:5.0 yRadius:5.0]; + [self.strokeColor setStroke]; + [strokePath stroke]; + } } // //- (void)deactivate @@ -43,16 +46,16 @@ - (void)drawRect:(NSRect)dirtyRect // [super deactivate]; // [[NSColorPanel sharedColorPanel] orderOut:nil]; //} -// -//- (void)setStrokeColor:(NSColor *)strokeColor -//{ -// if (strokeColor != _strokeColor) { -// [_strokeColor release]; -// _strokeColor = [strokeColor retain]; -// [self setNeedsDisplay:YES]; -// } -//} -// + +- (void)setStrokeColor:(NSColor *)strokeColor +{ + if (strokeColor != _strokeColor) { + [_strokeColor release]; + _strokeColor = [strokeColor retain]; + [self setNeedsDisplay:YES]; + } +} + //- (void)dealloc //{ // [_strokeColor release]; From 7496262d149e3e8e32afc6152174bf20861a8f72 Mon Sep 17 00:00:00 2001 From: Dirk Holtwick Date: Mon, 10 Dec 2012 16:53:16 +0100 Subject: [PATCH 14/49] Leave text field with ESC or ENTER; updates string while typing; length button at start now, so popover stays in place --- Classes/HOPopoverViewController.h | 5 ++++- Classes/HOPopoverViewController.m | 24 ++++++++++++++++++++++++ Classes/HOStringHelper.m | 15 ++++++++++----- Classes/HOStringInfoButton.m | 2 +- 4 files changed, 39 insertions(+), 7 deletions(-) diff --git a/Classes/HOPopoverViewController.h b/Classes/HOPopoverViewController.h index 7bd5f89..0372118 100644 --- a/Classes/HOPopoverViewController.h +++ b/Classes/HOPopoverViewController.h @@ -6,8 +6,11 @@ #import -@interface HOPopoverViewController : NSViewController { +@interface HOPopoverViewController : NSViewController { NSTextField *_textField; + id _delegate; } +@property (assign, nonatomic) id delegate; + @end diff --git a/Classes/HOPopoverViewController.m b/Classes/HOPopoverViewController.m index ac48693..90f2887 100644 --- a/Classes/HOPopoverViewController.m +++ b/Classes/HOPopoverViewController.m @@ -8,18 +8,42 @@ @implementation HOPopoverViewController +@synthesize delegate = _delegate; + - (NSView *)view { if(!_textField) { _textField = [[[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 200, 200)] autorelease]; _textField.focusRingType = NSFocusRingTypeNone; _textField.bordered = NO; + _textField.backgroundColor = [NSColor colorWithCalibratedWhite:0.974 alpha:1.000]; + _textField.textColor = [NSColor colorWithCalibratedWhite:0.107 alpha:1.000]; + _textField.delegate = self; } return _textField; } - (void)dealloc { + _delegate = nil; [_textField release]; [super dealloc]; } +- (void)controlTextDidChange:(NSNotification *)obj { + // NSLog(@"Test: %@", [_textField stringValue]); + if([_delegate respondsToSelector:@selector(stringDidChange:)]) { + [_delegate performSelector:@selector(stringDidChange:) withObject:nil]; + } +} + +- (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)commandSelector { + // NSLog(@"Textview Command: %@", NSStringFromSelector(commandSelector)); + if(commandSelector == @selector(cancelOperation:) || commandSelector == @selector(insertNewline:)) { + if([_delegate respondsToSelector:@selector(dismissPopover)]) { + [_delegate performSelector:@selector(dismissPopover)]; + } + return YES; + } + return NO; +} + @end diff --git a/Classes/HOStringHelper.m b/Classes/HOStringHelper.m index ba8c2a0..1635266 100755 --- a/Classes/HOStringHelper.m +++ b/Classes/HOStringHelper.m @@ -191,14 +191,15 @@ - (void)selectionDidChange:(NSNotification *)notification [backgroundColor getRed:&r green:&g blue:&b alpha:NULL]; CGFloat backgroundLuminance = (r + g + b) / 3.0; - NSColor *strokeColor = (backgroundLuminance > 0.5) ? [NSColor colorWithCalibratedWhite:0.2 alpha:1.0] : [NSColor whiteColor]; + NSColor *strokeColor = (backgroundLuminance > 0.5) ? [NSColor colorWithCalibratedWhite:0.2 alpha:1.0] : [NSColor colorWithCalibratedWhite:1.000 alpha:0.900]; self.selectedStringRange = NSMakeRange(colorRange.location + lineRange.location, colorRange.length); NSRect selectionRectOnScreen = [self.textView firstRectForCharacterRange:self.selectedStringRange]; NSRect selectionRectInWindow = [self.textView.window convertRectFromScreen:selectionRectOnScreen]; NSRect selectionRectInView = [self.textView convertRect:selectionRectInWindow fromView:nil]; - NSRect buttonRect = NSMakeRect(NSMaxX(selectionRectInView) - 49, NSMinY(selectionRectInView) - selectionRectInView.size.height - 2, 50, selectionRectInView.size.height + 2); + // NSRect buttonRect = NSMakeRect(NSMaxX(selectionRectInView) - 49, NSMinY(selectionRectInView) - selectionRectInView.size.height - 2, 50, selectionRectInView.size.height + 2); + NSRect buttonRect = NSMakeRect(NSMinX(selectionRectInView), NSMinY(selectionRectInView) - selectionRectInView.size.height - 2, 50, selectionRectInView.size.height + 2); self.stringButton.frame = NSIntegralRect(buttonRect); self.stringButton.title = [NSString stringWithFormat:@"%d", (int)[[self unescapeString:_selectedStringContent] length]]; self.stringButton.strokeColor = strokeColor; @@ -228,11 +229,10 @@ - (void)dismissPopover self.selectedStringContent = nil; } -- (void)popoverWillClose:(NSNotification *)notification { - if (self.selectedStringRange.location == NSNotFound) { +- (void)stringDidChange:(id)sender { + if (self.selectedStringRange.location == NSNotFound) { return; } - NSTextField *textfield = (id)_stringPopoverViewController.view; NSString *result = textfield.stringValue; if(result) { @@ -246,6 +246,10 @@ - (void)popoverWillClose:(NSNotification *)notification { } } +- (void)popoverWillClose:(NSNotification *)notification { + [self stringDidChange:nil]; +} + - (void)showPopover:(id)sender { if(_stringPopover) { [_stringPopover close]; @@ -253,6 +257,7 @@ - (void)showPopover:(id)sender { } if(!_stringPopoverViewController) { _stringPopoverViewController = [[[HOPopoverViewController alloc] init] autorelease]; + _stringPopoverViewController.delegate = self; } NSTextField *textfield = (id)_stringPopoverViewController.view; textfield.stringValue = [self unescapeString:_selectedStringContent]; diff --git a/Classes/HOStringInfoButton.m b/Classes/HOStringInfoButton.m index c124f3b..1b7628d 100644 --- a/Classes/HOStringInfoButton.m +++ b/Classes/HOStringInfoButton.m @@ -26,7 +26,7 @@ - (void)drawRect:(NSRect)dirtyRect [path addClip]; { - [[NSColor colorWithCalibratedWhite:0.902 alpha:1.000] setFill]; + [self.strokeColor setFill]; NSRectFill(self.bounds); [super drawRect:dirtyRect]; } From 79bcbe67684cc75bb39ee62e9b6da69092becb18 Mon Sep 17 00:00:00 2001 From: Dirk Holtwick Date: Mon, 10 Dec 2012 16:56:35 +0100 Subject: [PATCH 15/49] Updated preview image --- Xcode.png | Bin 38913 -> 29290 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Xcode.png b/Xcode.png index ce94a1295970a520f2ec7a163ea614aa36bc072b..eb68b14226ea3eb93877b0e7d4b616942f96ccc5 100644 GIT binary patch delta 26840 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 From 3f28ad041af35c25fa52cfab73a5f87466f4fa20 Mon Sep 17 00:00:00 2001 From: Dirk Holtwick Date: Mon, 10 Dec 2012 17:06:06 +0100 Subject: [PATCH 16/49] Adjusted colors --- Classes/HOStringInfoButton.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Classes/HOStringInfoButton.m b/Classes/HOStringInfoButton.m index 1b7628d..8a80743 100644 --- a/Classes/HOStringInfoButton.m +++ b/Classes/HOStringInfoButton.m @@ -26,7 +26,7 @@ - (void)drawRect:(NSRect)dirtyRect [path addClip]; { - [self.strokeColor setFill]; + [[NSColor colorWithCalibratedWhite:0.800 alpha:1.000] setFill]; NSRectFill(self.bounds); [super drawRect:dirtyRect]; } From 09aceca88da7d67bed477895e1531644ed2d28d5 Mon Sep 17 00:00:00 2001 From: Stefan Date: Mon, 10 Dec 2012 17:30:36 +0100 Subject: [PATCH 17/49] Improved Colors --- Classes/HOStringHelper.m | 18 ++++++++++++++++-- Classes/HOStringInfoButton.m | 2 +- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/Classes/HOStringHelper.m b/Classes/HOStringHelper.m index 1635266..c22b0c7 100755 --- a/Classes/HOStringHelper.m +++ b/Classes/HOStringHelper.m @@ -191,7 +191,7 @@ - (void)selectionDidChange:(NSNotification *)notification [backgroundColor getRed:&r green:&g blue:&b alpha:NULL]; CGFloat backgroundLuminance = (r + g + b) / 3.0; - NSColor *strokeColor = (backgroundLuminance > 0.5) ? [NSColor colorWithCalibratedWhite:0.2 alpha:1.0] : [NSColor colorWithCalibratedWhite:1.000 alpha:0.900]; + NSColor *strokeColor = (backgroundLuminance > 0.5) ? [NSColor colorWithCalibratedWhite:0.5 alpha:1.000] : [NSColor colorWithCalibratedWhite:1.000 alpha:0.900]; self.selectedStringRange = NSMakeRange(colorRange.location + lineRange.location, colorRange.length); NSRect selectionRectOnScreen = [self.textView firstRectForCharacterRange:self.selectedStringRange]; @@ -201,7 +201,21 @@ - (void)selectionDidChange:(NSNotification *)notification // NSRect buttonRect = NSMakeRect(NSMaxX(selectionRectInView) - 49, NSMinY(selectionRectInView) - selectionRectInView.size.height - 2, 50, selectionRectInView.size.height + 2); NSRect buttonRect = NSMakeRect(NSMinX(selectionRectInView), NSMinY(selectionRectInView) - selectionRectInView.size.height - 2, 50, selectionRectInView.size.height + 2); self.stringButton.frame = NSIntegralRect(buttonRect); - self.stringButton.title = [NSString stringWithFormat:@"%d", (int)[[self unescapeString:_selectedStringContent] length]]; + + NSString * aString = [NSString stringWithFormat:@"%d", (int)[[self unescapeString:_selectedStringContent] length]]; + + NSMutableDictionary * aAttributes = [NSMutableDictionary dictionary]; + NSMutableParagraphStyle * aStyle = [[[NSParagraphStyle defaultParagraphStyle] mutableCopy] autorelease]; + aStyle.alignment = NSCenterTextAlignment; + [aAttributes setValue:[NSColor whiteColor] forKey:NSForegroundColorAttributeName]; + [aAttributes setValue:[NSFont boldSystemFontOfSize:11] forKey:NSFontAttributeName]; + [aAttributes setValue:aStyle forKey:NSParagraphStyleAttributeName]; + + + NSAttributedString * aAttributedString = [[[NSAttributedString alloc] initWithString:aString attributes:aAttributes] autorelease]; + self.stringButton.attributedTitle = aAttributedString; + + self.stringButton.strokeColor = strokeColor; [self.textView addSubview:self.stringButton]; diff --git a/Classes/HOStringInfoButton.m b/Classes/HOStringInfoButton.m index 8a80743..3716bc5 100644 --- a/Classes/HOStringInfoButton.m +++ b/Classes/HOStringInfoButton.m @@ -26,7 +26,7 @@ - (void)drawRect:(NSRect)dirtyRect [path addClip]; { - [[NSColor colorWithCalibratedWhite:0.800 alpha:1.000] setFill]; + [[NSColor colorWithCalibratedWhite:0.500 alpha:1.000] setFill]; NSRectFill(self.bounds); [super drawRect:dirtyRect]; } From 9dc3661acc71e0305bcf3122268781ad58aa2159 Mon Sep 17 00:00:00 2001 From: Stefan Date: Mon, 10 Dec 2012 18:01:32 +0100 Subject: [PATCH 18/49] Added multiline support --- Classes/HOPopoverViewController.m | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/Classes/HOPopoverViewController.m b/Classes/HOPopoverViewController.m index 90f2887..fe0cfe3 100644 --- a/Classes/HOPopoverViewController.m +++ b/Classes/HOPopoverViewController.m @@ -37,12 +37,23 @@ - (void)controlTextDidChange:(NSNotification *)obj { - (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)commandSelector { // NSLog(@"Textview Command: %@", NSStringFromSelector(commandSelector)); - if(commandSelector == @selector(cancelOperation:) || commandSelector == @selector(insertNewline:)) { + if(commandSelector == @selector(cancelOperation:)) { if([_delegate respondsToSelector:@selector(dismissPopover)]) { [_delegate performSelector:@selector(dismissPopover)]; } return YES; } + + + if (commandSelector == @selector(insertNewline:)) + { + // new line action: + // always insert a line-break character and don’t cause the receiver + // to end editing + [textView insertNewlineIgnoringFieldEditor:self]; + return YES; + } + return NO; } From 3f67ce165f8f1384bb1aafb959512a30e36096be Mon Sep 17 00:00:00 2001 From: Dirk Holtwick Date: Mon, 10 Dec 2012 21:45:17 +0100 Subject: [PATCH 19/49] Very minor fixes --- Classes/HOPopoverViewController.m | 6 ++-- Classes/HOStringHelper.m | 47 +++++++++++-------------------- Classes/HOStringInfoButton.m | 24 ++++------------ 3 files changed, 25 insertions(+), 52 deletions(-) diff --git a/Classes/HOPopoverViewController.m b/Classes/HOPopoverViewController.m index fe0cfe3..6109d33 100644 --- a/Classes/HOPopoverViewController.m +++ b/Classes/HOPopoverViewController.m @@ -43,10 +43,8 @@ - (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBy } return YES; } - - - if (commandSelector == @selector(insertNewline:)) - { + + if (commandSelector == @selector(insertNewline:)) { // new line action: // always insert a line-break character and don’t cause the receiver // to end editing diff --git a/Classes/HOStringHelper.m b/Classes/HOStringHelper.m index c22b0c7..92c821d 100755 --- a/Classes/HOStringHelper.m +++ b/Classes/HOStringHelper.m @@ -73,8 +73,7 @@ - (NSString *)unescapeString:(NSString *)string { #pragma mark - Plugin Initialization -+ (void)pluginDidLoad:(NSBundle *)plugin -{ ++ (void)pluginDidLoad:(NSBundle *)plugin { static id sharedPlugin = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ @@ -82,8 +81,7 @@ + (void)pluginDidLoad:(NSBundle *)plugin }); } -- (id)init -{ +- (id)init { if (self = [super init]) { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidFinishLaunching:) name:NSApplicationDidFinishLaunchingNotification object:nil]; _selectedStringRange = NSMakeRange(NSNotFound, 0); @@ -94,8 +92,7 @@ - (id)init return self; } -- (void)applicationDidFinishLaunching:(NSNotification *)notification -{ +- (void)applicationDidFinishLaunching:(NSNotification *)notification { NSMenuItem *editMenuItem = [[NSApp mainMenu] itemWithTitle:@"Edit"]; if (editMenuItem) { [[editMenuItem submenu] addItem:[NSMenuItem separatorItem]]; @@ -118,8 +115,7 @@ - (void)applicationDidFinishLaunching:(NSNotification *)notification #pragma mark - Preferences -- (BOOL)validateMenuItem:(NSMenuItem *)menuItem -{ +- (BOOL)validateMenuItem:(NSMenuItem *)menuItem { if ([menuItem action] == @selector(insertColor:)) { NSResponder *firstResponder = [[NSApp keyWindow] firstResponder]; return ([firstResponder isKindOfClass:NSClassFromString(@"DVTSourceTextView")] && [firstResponder isKindOfClass:[NSTextView class]]); @@ -131,8 +127,7 @@ - (BOOL)validateMenuItem:(NSMenuItem *)menuItem return YES; } -- (void)toggleColorHighlightingEnabled:(id)sender -{ +- (void)toggleColorHighlightingEnabled:(id)sender { BOOL enabled = [[NSUserDefaults standardUserDefaults] boolForKey:kHOStringHelperHighlightingDisabled]; [[NSUserDefaults standardUserDefaults] setBool:!enabled forKey:kHOStringHelperHighlightingDisabled]; if (enabled) { @@ -142,8 +137,7 @@ - (void)toggleColorHighlightingEnabled:(id)sender } } -- (void)activateColorHighlighting -{ +- (void)activateColorHighlighting { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(selectionDidChange:) name:NSTextViewDidChangeSelectionNotification object:nil]; if (!self.textView) { NSResponder *firstResponder = [[NSApp keyWindow] firstResponder]; @@ -158,8 +152,7 @@ - (void)activateColorHighlighting } } -- (void)deactivateColorHighlighting -{ +- (void)deactivateColorHighlighting { [[NSNotificationCenter defaultCenter] removeObserver:self name:NSTextViewDidChangeSelectionNotification object:nil]; [self dismissPopover]; self.textView = nil; @@ -167,8 +160,7 @@ - (void)deactivateColorHighlighting #pragma mark - Text Selection Handling -- (void)selectionDidChange:(NSNotification *)notification -{ +- (void)selectionDidChange:(NSNotification *)notification { if ([[notification object] isKindOfClass:NSClassFromString(@"DVTSourceTextView")] && [[notification object] isKindOfClass:[NSTextView class]]) { self.textView = (NSTextView *)[notification object]; @@ -211,28 +203,27 @@ - (void)selectionDidChange:(NSNotification *)notification [aAttributes setValue:[NSFont boldSystemFontOfSize:11] forKey:NSFontAttributeName]; [aAttributes setValue:aStyle forKey:NSParagraphStyleAttributeName]; - NSAttributedString * aAttributedString = [[[NSAttributedString alloc] initWithString:aString attributes:aAttributes] autorelease]; self.stringButton.attributedTitle = aAttributedString; - self.stringButton.strokeColor = strokeColor; [self.textView addSubview:self.stringButton]; self.stringFrameView.frame = NSInsetRect(NSIntegralRect(selectionRectInView), -1, -1); self.stringFrameView.color = strokeColor; [self.textView addSubview:self.stringFrameView]; - } else { + } + else { [self dismissPopover]; } - } else { + } + else { [self dismissPopover]; } } } -- (void)dismissPopover -{ +- (void)dismissPopover { if(_stringPopover) { [_stringPopover close]; [_stringPopover autorelease]; @@ -288,8 +279,7 @@ - (void)showPopover:(id)sender { #pragma mark - View Initialization -- (HOStringInfoButton *)stringButton -{ +- (HOStringInfoButton *)stringButton { if (!_stringButton) { _stringButton = [[HOStringInfoButton alloc] initWithFrame:NSMakeRect(0, 0, 100, 30)]; [_stringButton setTarget:self]; @@ -298,8 +288,7 @@ - (HOStringInfoButton *)stringButton return _stringButton; } -- (HOStringFrameView *)stringFrameView -{ +- (HOStringFrameView *)stringFrameView { if (!_stringFrameView) { _stringFrameView = [[HOStringFrameView alloc] initWithFrame:NSZeroRect]; } @@ -308,8 +297,7 @@ - (HOStringFrameView *)stringFrameView #pragma mark - Color String Parsing -- (NSString *)stringInText:(NSString *)text selectedRange:(NSRange)selectedRange matchedRange:(NSRangePointer)matchedRange -{ +- (NSString *)stringInText:(NSString *)text selectedRange:(NSRange)selectedRange matchedRange:(NSRangePointer)matchedRange { __block NSString *foundStringContent = nil; __block NSRange foundColorRange = NSMakeRange(NSNotFound, 0); [_stringRegex enumerateMatchesInString:text options:0 range:NSMakeRange(0, text.length) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) { @@ -331,8 +319,7 @@ - (NSString *)stringInText:(NSString *)text selectedRange:(NSRange)selectedRange #pragma mark - -- (void)dealloc -{ +- (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; [self dismissPopover]; [_stringPopoverViewController release]; diff --git a/Classes/HOStringInfoButton.m b/Classes/HOStringInfoButton.m index 3716bc5..25afaf8 100644 --- a/Classes/HOStringInfoButton.m +++ b/Classes/HOStringInfoButton.m @@ -13,23 +13,19 @@ @implementation HOStringInfoButton - (id)initWithFrame:(NSRect)frameRect { if(self = [super initWithFrame:frameRect]) { self.font = [NSFont boldSystemFontOfSize:11.]; - self.title = @""; self.bordered = NO; } return self; } -- (void)drawRect:(NSRect)dirtyRect -{ +- (void)drawRect:(NSRect)dirtyRect { [NSGraphicsContext saveGraphicsState]; NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:NSMakeRect(0, 0, self.bounds.size.width, self.bounds.size.height ) xRadius:5.0 yRadius:5.0]; [path addClip]; - { [[NSColor colorWithCalibratedWhite:0.500 alpha:1.000] setFill]; NSRectFill(self.bounds); [super drawRect:dirtyRect]; - } // [self drawWellInside:self.bounds]; [NSGraphicsContext restoreGraphicsState]; @@ -40,15 +36,8 @@ - (void)drawRect:(NSRect)dirtyRect [strokePath stroke]; } } -// -//- (void)deactivate -//{ -// [super deactivate]; -// [[NSColorPanel sharedColorPanel] orderOut:nil]; -//} -- (void)setStrokeColor:(NSColor *)strokeColor -{ +- (void)setStrokeColor:(NSColor *)strokeColor { if (strokeColor != _strokeColor) { [_strokeColor release]; _strokeColor = [strokeColor retain]; @@ -56,10 +45,9 @@ - (void)setStrokeColor:(NSColor *)strokeColor } } -//- (void)dealloc -//{ -// [_strokeColor release]; -// [super dealloc]; -//} +- (void)dealloc { + [_strokeColor release]; + [super dealloc]; +} @end From 9fa2698a35eadf865805b38e4e7e283855607271 Mon Sep 17 00:00:00 2001 From: Dirk Holtwick Date: Tue, 11 Dec 2012 22:55:54 +0100 Subject: [PATCH 20/49] Unescaping did not always work, added a test suite to consolidate the escape tools; added a new unescape parser; this one will not support \uXXXX and \xXX for now. --- Classes/HOStringHelper.h | 3 + Classes/HOStringHelper.m | 76 ++++++-- HOStringSense.xcodeproj/project.pbxproj | 178 ++++++++++++++++++ .../HOStringSenseUnitTests-Info.plist | 22 +++ .../HOStringSenseUnitTests-Prefix.pch | 7 + .../HOStringSenseUnitTests.h | 13 ++ .../HOStringSenseUnitTests.m | 48 +++++ .../en.lproj/InfoPlist.strings | 2 + 8 files changed, 333 insertions(+), 16 deletions(-) create mode 100644 HOStringSenseUnitTests/HOStringSenseUnitTests-Info.plist create mode 100644 HOStringSenseUnitTests/HOStringSenseUnitTests-Prefix.pch create mode 100644 HOStringSenseUnitTests/HOStringSenseUnitTests.h create mode 100644 HOStringSenseUnitTests/HOStringSenseUnitTests.m create mode 100644 HOStringSenseUnitTests/en.lproj/InfoPlist.strings diff --git a/Classes/HOStringHelper.h b/Classes/HOStringHelper.h index 223f3e0..c5cd276 100644 --- a/Classes/HOStringHelper.h +++ b/Classes/HOStringHelper.h @@ -31,4 +31,7 @@ - (void)deactivateColorHighlighting; - (NSString *)stringInText:(NSString *)text selectedRange:(NSRange)selectedRange matchedRange:(NSRangePointer)matchedRange; +- (NSString *)escapeString:(NSString *)string; +- (NSString *)unescapeString:(NSString *)string; + @end diff --git a/Classes/HOStringHelper.m b/Classes/HOStringHelper.m index 92c821d..99a1048 100755 --- a/Classes/HOStringHelper.m +++ b/Classes/HOStringHelper.m @@ -38,14 +38,14 @@ - (NSString *)escapeString:(NSString *)string { for (NSUInteger i = 0; i < length; i++) { unichar uc = [string characterAtIndex:i]; switch (uc) { - case '"': [result appendString:@"\\\""]; break; - case '\'': [result appendString:@"\\\'"]; break; - case '\\': [result appendString:@"\\\\"]; break; - case '\t': [result appendString:@"\\t"]; break; - case '\n': [result appendString:@"\\n"]; break; - case '\r': [result appendString:@"\\r"]; break; - case '\b': [result appendString:@"\\b"]; break; - case '\f': [result appendString:@"\\f"]; break; + case '\"': [result appendString:@"\\\""]; break; + case '\'': [result appendString:@"\\\'"]; break; + case '\\': [result appendString:@"\\\\"]; break; + case '\t': [result appendString:@"\\t"]; break; + case '\n': [result appendString:@"\\n"]; break; + case '\r': [result appendString:@"\\r"]; break; + case '\b': [result appendString:@"\\b"]; break; + case '\f': [result appendString:@"\\f"]; break; default: { if (uc < 0x20) { [result appendFormat:@"\\u%04x", uc]; @@ -59,18 +59,62 @@ - (NSString *)escapeString:(NSString *)string { } return (NSString *)result; } - + +#define nextUC ++i; if(i>=length) { break; }; uc = [string characterAtIndex:i]; - (NSString *)unescapeString:(NSString *)string { - @try { - NSString *s = [NSString stringWithFormat:@"\"%@\"", string]; - return [NSJSONSerialization JSONObjectWithData:[s dataUsingEncoding:NSUTF8StringEncoding] - options:NSJSONReadingAllowFragments - error:NULL]; + // NSScanner *scanner = [[NSScanner alloc] initWithString:string]; + NSMutableString *result = [NSMutableString string]; + NSUInteger length = [string length]; + for (NSUInteger i = 0; i < length; i++) { + unichar uc = [string characterAtIndex:i]; + if(uc == '\\') { + nextUC; + switch (uc) { + case '\"': [result appendString:@"\""]; break; + case '\'': [result appendString:@"\'"]; break; + case '\\': [result appendString:@"\\"]; break; + case 't': [result appendString:@"\t"]; break; + case 'n': [result appendString:@"\n"]; break; + case 'r': [result appendString:@"\r"]; break; + case 'b': [result appendString:@"\b"]; break; + case 'f': [result appendString:@"\f"]; break; + case 'u': { + unichar hex[5]; hex[4] = 0; + nextUC; hex[0] = uc; + nextUC; hex[1] = uc; + nextUC; hex[2] = uc; + nextUC; hex[3] = uc; + + } break; + default: { + CFStringAppendCharacters((CFMutableStringRef)result, &uc, 1); + } break; + } + } + else { + CFStringAppendCharacters((CFMutableStringRef)result, &uc, 1); + } } - @catch (NSException *exception) { ; } - return nil; + return result; } +//- (NSString *)unescapeString:(NSString *)string { +// @try { +// NSError *error = nil; +// NSString *s = [NSString stringWithFormat:@"\"%@\"", string]; +// NSString *result = [NSJSONSerialization JSONObjectWithData:[s dataUsingEncoding:NSUTF8StringEncoding] +// options:NSJSONReadingAllowFragments +// error:&error]; +// if(!result) { +// NSLog(@"Error while unescaping: %@", error); +// return nil; +// } +// return result; +// } +// @catch (NSException *exception) { ; } +// return nil; +//} + #pragma mark - Plugin Initialization + (void)pluginDidLoad:(NSBundle *)plugin { diff --git a/HOStringSense.xcodeproj/project.pbxproj b/HOStringSense.xcodeproj/project.pbxproj index 49abe03..5545474 100755 --- a/HOStringSense.xcodeproj/project.pbxproj +++ b/HOStringSense.xcodeproj/project.pbxproj @@ -7,7 +7,15 @@ objects = { /* Begin PBXBuildFile section */ + 435286B71677D87200A7E837 /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 435286B61677D87200A7E837 /* SenTestingKit.framework */; }; + 435286B91677D87200A7E837 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 435286B81677D87200A7E837 /* Cocoa.framework */; }; + 435286C31677D87200A7E837 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 435286C11677D87200A7E837 /* InfoPlist.strings */; }; + 435286C61677D87200A7E837 /* HOStringSenseUnitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 435286C51677D87200A7E837 /* HOStringSenseUnitTests.m */; }; 43BA8625167490550002C238 /* HOPopoverViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 43BA8624167490550002C238 /* HOPopoverViewController.m */; }; + 43F5A61C1677DA71009C8ABE /* HOStringHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = DA37E2DB0E6291C8001BDFEF /* HOStringHelper.m */; }; + 43F5A61D1677DA71009C8ABE /* HOStringFrameView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F6EE2BE15FA6F3B00BA114A /* HOStringFrameView.m */; }; + 43F5A61E1677DA71009C8ABE /* HOStringInfoButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FDADE3915FA6CA400A847E3 /* HOStringInfoButton.m */; }; + 43F5A61F1677DA71009C8ABE /* HOPopoverViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 43BA8624167490550002C238 /* HOPopoverViewController.m */; }; 7F2EB89C145057F200E97A87 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7F2EB899145057EA00E97A87 /* AppKit.framework */; }; 7F6EE2BF15FA6F3B00BA114A /* HOStringFrameView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F6EE2BE15FA6F3B00BA114A /* HOStringFrameView.m */; }; 7FDADE3A15FA6CA400A847E3 /* HOStringInfoButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FDADE3915FA6CA400A847E3 /* HOStringInfoButton.m */; }; @@ -29,6 +37,17 @@ /* Begin PBXFileReference section */ 089C1672FE841209C02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; + 435286B41677D87200A7E837 /* HOStringSenseUnitTests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = HOStringSenseUnitTests.octest; sourceTree = BUILT_PRODUCTS_DIR; }; + 435286B61677D87200A7E837 /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = Library/Frameworks/SenTestingKit.framework; sourceTree = DEVELOPER_DIR; }; + 435286B81677D87200A7E837 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = Library/Frameworks/Cocoa.framework; sourceTree = DEVELOPER_DIR; }; + 435286BB1677D87200A7E837 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; + 435286BC1677D87200A7E837 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; + 435286BD1677D87200A7E837 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 435286C01677D87200A7E837 /* HOStringSenseUnitTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "HOStringSenseUnitTests-Info.plist"; sourceTree = ""; }; + 435286C21677D87200A7E837 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + 435286C41677D87200A7E837 /* HOStringSenseUnitTests.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HOStringSenseUnitTests.h; sourceTree = ""; }; + 435286C51677D87200A7E837 /* HOStringSenseUnitTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HOStringSenseUnitTests.m; sourceTree = ""; }; + 435286C71677D87200A7E837 /* HOStringSenseUnitTests-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "HOStringSenseUnitTests-Prefix.pch"; sourceTree = ""; }; 43BA8623167490550002C238 /* HOPopoverViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HOPopoverViewController.h; sourceTree = ""; }; 43BA8624167490550002C238 /* HOPopoverViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HOPopoverViewController.m; sourceTree = ""; }; 43ED5411167509CC00AE1269 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = text; path = README.md; sourceTree = ""; }; @@ -44,6 +63,15 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 435286B01677D87200A7E837 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 435286B71677D87200A7E837 /* SenTestingKit.framework in Frameworks */, + 435286B91677D87200A7E837 /* Cocoa.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 8D5B49B3048680CD000E48DA /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -63,6 +91,8 @@ 7F411B0C15FABAC6002F77B6 /* Classes */, 089C167CFE841241C02AAC07 /* Resources */, 089C1671FE841209C02AAC07 /* Frameworks and Libraries */, + 435286BE1677D87200A7E837 /* HOStringSenseUnitTests */, + 435286B51677D87200A7E837 /* Frameworks */, 19C28FB8FE9D52D311CA2CBB /* Products */, ); indentWidth = 4; @@ -90,10 +120,51 @@ isa = PBXGroup; children = ( 8D5B49B6048680CD000E48DA /* HOStringSense.xcplugin */, + 435286B41677D87200A7E837 /* HOStringSenseUnitTests.octest */, ); name = Products; sourceTree = ""; }; + 435286B51677D87200A7E837 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 435286B61677D87200A7E837 /* SenTestingKit.framework */, + 435286B81677D87200A7E837 /* Cocoa.framework */, + 435286BA1677D87200A7E837 /* Other Frameworks */, + ); + name = Frameworks; + sourceTree = ""; + }; + 435286BA1677D87200A7E837 /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + 435286BB1677D87200A7E837 /* AppKit.framework */, + 435286BC1677D87200A7E837 /* CoreData.framework */, + 435286BD1677D87200A7E837 /* Foundation.framework */, + ); + name = "Other Frameworks"; + sourceTree = ""; + }; + 435286BE1677D87200A7E837 /* HOStringSenseUnitTests */ = { + isa = PBXGroup; + children = ( + 435286C41677D87200A7E837 /* HOStringSenseUnitTests.h */, + 435286C51677D87200A7E837 /* HOStringSenseUnitTests.m */, + 435286BF1677D87200A7E837 /* Supporting Files */, + ); + path = HOStringSenseUnitTests; + sourceTree = ""; + }; + 435286BF1677D87200A7E837 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 435286C01677D87200A7E837 /* HOStringSenseUnitTests-Info.plist */, + 435286C11677D87200A7E837 /* InfoPlist.strings */, + 435286C71677D87200A7E837 /* HOStringSenseUnitTests-Prefix.pch */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; 7F411B0C15FABAC6002F77B6 /* Classes */ = { isa = PBXGroup; children = ( @@ -112,6 +183,24 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ + 435286B31677D87200A7E837 /* HOStringSenseUnitTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 435286C91677D87200A7E837 /* Build configuration list for PBXNativeTarget "HOStringSenseUnitTests" */; + buildPhases = ( + 435286AF1677D87200A7E837 /* Sources */, + 435286B01677D87200A7E837 /* Frameworks */, + 435286B11677D87200A7E837 /* Resources */, + 435286B21677D87200A7E837 /* ShellScript */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = HOStringSenseUnitTests; + productName = HOStringSenseUnitTests; + productReference = 435286B41677D87200A7E837 /* HOStringSenseUnitTests.octest */; + productType = "com.apple.product-type.bundle"; + }; 8D5B49AC048680CD000E48DA /* HOStringSense */ = { isa = PBXNativeTarget; buildConfigurationList = 1DEB913A08733D840010E9CD /* Build configuration list for PBXNativeTarget "HOStringSense" */; @@ -148,12 +237,14 @@ Japanese, French, German, + en, ); mainGroup = 089C166AFE841209C02AAC07 /* QuietXcode */; projectDirPath = ""; projectRoot = ""; targets = ( 8D5B49AC048680CD000E48DA /* HOStringSense */, + 435286B31677D87200A7E837 /* HOStringSenseUnitTests */, ); }; /* End PBXProject section */ @@ -166,9 +257,45 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 435286B11677D87200A7E837 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 435286C31677D87200A7E837 /* InfoPlist.strings in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ +/* Begin PBXShellScriptBuildPhase section */ + 435286B21677D87200A7E837 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n"; + }; +/* End PBXShellScriptBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ + 435286AF1677D87200A7E837 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 435286C61677D87200A7E837 /* HOStringSenseUnitTests.m in Sources */, + 43F5A61C1677DA71009C8ABE /* HOStringHelper.m in Sources */, + 43F5A61D1677DA71009C8ABE /* HOStringFrameView.m in Sources */, + 43F5A61E1677DA71009C8ABE /* HOStringInfoButton.m in Sources */, + 43F5A61F1677DA71009C8ABE /* HOPopoverViewController.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 8D5B49B1048680CD000E48DA /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -182,6 +309,17 @@ }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXVariantGroup section */ + 435286C11677D87200A7E837 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 435286C21677D87200A7E837 /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + /* Begin XCBuildConfiguration section */ 1DEB913B08733D840010E9CD /* Debug */ = { isa = XCBuildConfiguration; @@ -220,6 +358,38 @@ }; name = Debug; }; + 435286C81677D87200A7E837 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = NO; + FRAMEWORK_SEARCH_PATHS = "\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\""; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "HOStringSenseUnitTests/HOStringSenseUnitTests-Prefix.pch"; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + INFOPLIST_FILE = "HOStringSenseUnitTests/HOStringSenseUnitTests-Info.plist"; + MACOSX_DEPLOYMENT_TARGET = 10.8; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = octest; + }; + name = Debug; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -239,6 +409,14 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; + 435286C91677D87200A7E837 /* Build configuration list for PBXNativeTarget "HOStringSenseUnitTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 435286C81677D87200A7E837 /* Debug */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; /* End XCConfigurationList section */ }; rootObject = 089C1669FE841209C02AAC07 /* Project object */; diff --git a/HOStringSenseUnitTests/HOStringSenseUnitTests-Info.plist b/HOStringSenseUnitTests/HOStringSenseUnitTests-Info.plist new file mode 100644 index 0000000..b6bf4f3 --- /dev/null +++ b/HOStringSenseUnitTests/HOStringSenseUnitTests-Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + it.holtwick.mac.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/HOStringSenseUnitTests/HOStringSenseUnitTests-Prefix.pch b/HOStringSenseUnitTests/HOStringSenseUnitTests-Prefix.pch new file mode 100644 index 0000000..79e8684 --- /dev/null +++ b/HOStringSenseUnitTests/HOStringSenseUnitTests-Prefix.pch @@ -0,0 +1,7 @@ +// +// Prefix header for all source files of the 'HOStringSenseUnitTests' target in the 'HOStringSenseUnitTests' project +// + +#ifdef __OBJC__ + #import +#endif diff --git a/HOStringSenseUnitTests/HOStringSenseUnitTests.h b/HOStringSenseUnitTests/HOStringSenseUnitTests.h new file mode 100644 index 0000000..effc5c1 --- /dev/null +++ b/HOStringSenseUnitTests/HOStringSenseUnitTests.h @@ -0,0 +1,13 @@ +// +// HOStringSenseUnitTests.h +// HOStringSenseUnitTests +// +// Created by Dirk on 11.12.12. +// +// + +#import + +@interface HOStringSenseUnitTests : SenTestCase + +@end diff --git a/HOStringSenseUnitTests/HOStringSenseUnitTests.m b/HOStringSenseUnitTests/HOStringSenseUnitTests.m new file mode 100644 index 0000000..6df4762 --- /dev/null +++ b/HOStringSenseUnitTests/HOStringSenseUnitTests.m @@ -0,0 +1,48 @@ +// +// HOStringSenseUnitTests.m +// HOStringSenseUnitTests +// +// Created by Dirk on 11.12.12. +// +// + +#import "HOStringSenseUnitTests.h" +#import "HOStringHelper.h" + +@implementation HOStringSenseUnitTests { + HOStringHelper *helper; +} + +- (void)setUp +{ + [super setUp]; + helper = [HOStringHelper new]; +} + +- (void)tearDown +{ + [helper release]; + [super tearDown]; +} + +- (void)doTestEscapedString:(NSString *)s +{ + NSLog(@"s|%@", s); + STAssertTrue(!!s, nil); + id a = [helper unescapeString:s]; + NSLog(@"a|%@", a); + STAssertTrue(!!a, nil); + id b = [helper escapeString:a]; + NSLog(@"b|%@", b); + STAssertTrue(!!b, nil); + STAssertEqualObjects(s, b, nil); +} + +- (void)testEscapedStrings +{ + [self doTestEscapedString:@"abc"]; + [self doTestEscapedString:@"(? Date: Wed, 26 Dec 2012 15:52:37 +0100 Subject: [PATCH 21/49] Highlight regular strings like "...", not only @"..." --- Classes/HOStringHelper.m | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Classes/HOStringHelper.m b/Classes/HOStringHelper.m index 99a1048..06ad181 100755 --- a/Classes/HOStringHelper.m +++ b/Classes/HOStringHelper.m @@ -129,7 +129,7 @@ - (id)init { if (self = [super init]) { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidFinishLaunching:) name:NSApplicationDidFinishLaunchingNotification object:nil]; _selectedStringRange = NSMakeRange(NSNotFound, 0); - _stringRegex = [[NSRegularExpression regularExpressionWithPattern:@"@\"((\\\\\"|.)*?)\"" + _stringRegex = [[NSRegularExpression regularExpressionWithPattern:@"\"((\\\\\"|.)*?)\"" options:0 error:NULL] retain]; } @@ -220,8 +220,8 @@ - (void)selectionDidChange:(NSNotification *)notification { NSRange colorRange = NSMakeRange(NSNotFound, 0); self.selectedStringContent = [self stringInText:line selectedRange:selectedRangeInLine matchedRange:&colorRange]; - if (_selectedStringContent) { - self.selectedStringContent = [_selectedStringContent substringWithRange:NSMakeRange(2, _selectedStringContent.length - 3)]; + if (_selectedStringContent && [_selectedStringContent length] >= 2) { + self.selectedStringContent = [_selectedStringContent substringWithRange:NSMakeRange(1, _selectedStringContent.length - 2)]; NSColor *backgroundColor = [self.textView.backgroundColor colorUsingColorSpace:[NSColorSpace genericRGBColorSpace]]; CGFloat r = 1.0; CGFloat g = 1.0; CGFloat b = 1.0; [backgroundColor getRed:&r green:&g blue:&b alpha:NULL]; @@ -288,7 +288,7 @@ - (void)stringDidChange:(id)sender { result = [self escapeString:result]; if(![result isEqualToString:_selectedStringContent]) { [self.textView.undoManager beginUndoGrouping]; - [self.textView insertText:[NSString stringWithFormat:@"@\"%@\"", result] + [self.textView insertText:[NSString stringWithFormat:@"\"%@\"", result] replacementRange:self.selectedStringRange]; [self.textView.undoManager endUndoGrouping]; } From bee573ff646b23b6ade938b61e77640f0f3fb32e Mon Sep 17 00:00:00 2001 From: Dirk Holtwick Date: Wed, 26 Dec 2012 16:33:50 +0100 Subject: [PATCH 22/49] Menu entry to open popover; fixed bug when changing selection of string while popover shown --- Classes/HOStringHelper.m | 83 ++++++++++++++++++++++++---------------- 1 file changed, 50 insertions(+), 33 deletions(-) diff --git a/Classes/HOStringHelper.m b/Classes/HOStringHelper.m index 06ad181..19fd9ef 100755 --- a/Classes/HOStringHelper.m +++ b/Classes/HOStringHelper.m @@ -11,6 +11,8 @@ #define kHOStringHelperHighlightingDisabled @"HOStringHelperHighlightingDisabled" +#define NSNullRange NSMakeRange(NSNotFound, 0) + @implementation HOStringHelper @synthesize stringButton = _stringButton; @@ -141,11 +143,18 @@ - (void)applicationDidFinishLaunching:(NSNotification *)notification { if (editMenuItem) { [[editMenuItem submenu] addItem:[NSMenuItem separatorItem]]; - NSMenuItem *toggleColorHighlightingMenuItem = [[[NSMenuItem alloc] initWithTitle:@"Show Strings Under Caret" action:@selector(toggleColorHighlightingEnabled:) keyEquivalent:@""] autorelease]; - [toggleColorHighlightingMenuItem setTarget:self]; - [[editMenuItem submenu] addItem:toggleColorHighlightingMenuItem]; - + { + NSMenuItem *item = [[[NSMenuItem alloc] initWithTitle:@"Show Strings Under Caret" action:@selector(toggleColorHighlightingEnabled:) keyEquivalent:@""] autorelease]; + [item setTarget:self]; + [[editMenuItem submenu] addItem:item]; + } + { + NSMenuItem *item = [[[NSMenuItem alloc] initWithTitle:@"Show Strings Popover" action:@selector(showPopover:) keyEquivalent:@""] autorelease]; + [item setTarget:self]; + [[editMenuItem submenu] addItem:item]; + } + // NSMenuItem *insertColorMenuItem = [[[NSMenuItem alloc] initWithTitle:@"Insert Color..." action:@selector(insertColor:) keyEquivalent:@""] autorelease]; // [insertColorMenuItem setTarget:self]; // [[editMenuItem submenu] addItem:insertColorMenuItem]; @@ -160,10 +169,10 @@ - (void)applicationDidFinishLaunching:(NSNotification *)notification { #pragma mark - Preferences - (BOOL)validateMenuItem:(NSMenuItem *)menuItem { - if ([menuItem action] == @selector(insertColor:)) { - NSResponder *firstResponder = [[NSApp keyWindow] firstResponder]; - return ([firstResponder isKindOfClass:NSClassFromString(@"DVTSourceTextView")] && [firstResponder isKindOfClass:[NSTextView class]]); - } else if ([menuItem action] == @selector(toggleColorHighlightingEnabled:)) { + if ([menuItem action] == @selector(showPopover:)) { + return ![_stringPopover isShown]; + } + else if ([menuItem action] == @selector(toggleColorHighlightingEnabled:)) { BOOL enabled = [[NSUserDefaults standardUserDefaults] boolForKey:kHOStringHelperHighlightingDisabled]; [menuItem setState:enabled ? NSOffState : NSOnState]; return YES; @@ -207,9 +216,10 @@ - (void)deactivateColorHighlighting { - (void)selectionDidChange:(NSNotification *)notification { if ([[notification object] isKindOfClass:NSClassFromString(@"DVTSourceTextView")] && [[notification object] isKindOfClass:[NSTextView class]]) { self.textView = (NSTextView *)[notification object]; - BOOL disabled = [[NSUserDefaults standardUserDefaults] boolForKey:kHOStringHelperHighlightingDisabled]; - if (disabled) return; + if (disabled) { + return; + } NSArray *selectedRanges = [self.textView selectedRanges]; if (selectedRanges.count >= 1) { NSRange selectedRange = [[selectedRanges objectAtIndex:0] rangeValue]; @@ -217,53 +227,55 @@ - (void)selectionDidChange:(NSNotification *)notification { NSRange lineRange = [text lineRangeForRange:selectedRange]; NSRange selectedRangeInLine = NSMakeRange(selectedRange.location - lineRange.location, selectedRange.length); NSString *line = [text substringWithRange:lineRange]; + NSRange stringRange = NSNullRange; - NSRange colorRange = NSMakeRange(NSNotFound, 0); - self.selectedStringContent = [self stringInText:line selectedRange:selectedRangeInLine matchedRange:&colorRange]; + self.selectedStringContent = [self stringInText:line selectedRange:selectedRangeInLine matchedRange:&stringRange]; if (_selectedStringContent && [_selectedStringContent length] >= 2) { + + // String's content + NSInteger oldLocation = _selectedStringRange.location; self.selectedStringContent = [_selectedStringContent substringWithRange:NSMakeRange(1, _selectedStringContent.length - 2)]; + self.selectedStringRange = NSMakeRange(stringRange.location + lineRange.location, stringRange.length); + if(oldLocation != _selectedStringRange.location) { + [self dismissPopover]; + } + + // Color calculations based ion Xcode theme NSColor *backgroundColor = [self.textView.backgroundColor colorUsingColorSpace:[NSColorSpace genericRGBColorSpace]]; CGFloat r = 1.0; CGFloat g = 1.0; CGFloat b = 1.0; [backgroundColor getRed:&r green:&g blue:&b alpha:NULL]; CGFloat backgroundLuminance = (r + g + b) / 3.0; - NSColor *strokeColor = (backgroundLuminance > 0.5) ? [NSColor colorWithCalibratedWhite:0.5 alpha:1.000] : [NSColor colorWithCalibratedWhite:1.000 alpha:0.900]; - self.selectedStringRange = NSMakeRange(colorRange.location + lineRange.location, colorRange.length); + // Place button NSRect selectionRectOnScreen = [self.textView firstRectForCharacterRange:self.selectedStringRange]; NSRect selectionRectInWindow = [self.textView.window convertRectFromScreen:selectionRectOnScreen]; NSRect selectionRectInView = [self.textView convertRect:selectionRectInWindow fromView:nil]; - - // NSRect buttonRect = NSMakeRect(NSMaxX(selectionRectInView) - 49, NSMinY(selectionRectInView) - selectionRectInView.size.height - 2, 50, selectionRectInView.size.height + 2); NSRect buttonRect = NSMakeRect(NSMinX(selectionRectInView), NSMinY(selectionRectInView) - selectionRectInView.size.height - 2, 50, selectionRectInView.size.height + 2); self.stringButton.frame = NSIntegralRect(buttonRect); - + + // Button's label NSString * aString = [NSString stringWithFormat:@"%d", (int)[[self unescapeString:_selectedStringContent] length]]; - NSMutableDictionary * aAttributes = [NSMutableDictionary dictionary]; NSMutableParagraphStyle * aStyle = [[[NSParagraphStyle defaultParagraphStyle] mutableCopy] autorelease]; aStyle.alignment = NSCenterTextAlignment; [aAttributes setValue:[NSColor whiteColor] forKey:NSForegroundColorAttributeName]; [aAttributes setValue:[NSFont boldSystemFontOfSize:11] forKey:NSFontAttributeName]; [aAttributes setValue:aStyle forKey:NSParagraphStyleAttributeName]; - NSAttributedString * aAttributedString = [[[NSAttributedString alloc] initWithString:aString attributes:aAttributes] autorelease]; self.stringButton.attributedTitle = aAttributedString; - self.stringButton.strokeColor = strokeColor; [self.textView addSubview:self.stringButton]; + // Draw the frame around the string self.stringFrameView.frame = NSInsetRect(NSIntegralRect(selectionRectInView), -1, -1); self.stringFrameView.color = strokeColor; [self.textView addSubview:self.stringFrameView]; - } - else { - [self dismissPopover]; + + return; } } - else { - [self dismissPopover]; - } + [self removeSelection]; } } @@ -271,10 +283,15 @@ - (void)dismissPopover { if(_stringPopover) { [_stringPopover close]; [_stringPopover autorelease]; - } + _stringPopover = nil; + } +} + +- (void)removeSelection { + [self dismissPopover]; [self.stringButton removeFromSuperview]; [self.stringFrameView removeFromSuperview]; - self.selectedStringRange = NSMakeRange(NSNotFound, 0); + self.selectedStringRange = NSNullRange; self.selectedStringContent = nil; } @@ -296,14 +313,14 @@ - (void)stringDidChange:(id)sender { } - (void)popoverWillClose:(NSNotification *)notification { - [self stringDidChange:nil]; + // [self stringDidChange:nil]; } - (void)showPopover:(id)sender { - if(_stringPopover) { - [_stringPopover close]; - [_stringPopover autorelease]; - } + if(_selectedStringRange.location == NSNotFound) { + return; + } + [self dismissPopover]; if(!_stringPopoverViewController) { _stringPopoverViewController = [[[HOPopoverViewController alloc] init] autorelease]; _stringPopoverViewController.delegate = self; From 7728738695cf9bbbac3ea3d33df76daafba13d30 Mon Sep 17 00:00:00 2001 From: Dirk Holtwick Date: Wed, 26 Dec 2012 16:40:44 +0100 Subject: [PATCH 23/49] Updated README with details for keyboard shortcuts --- README.md | 6 ++++++ Shortcut.png | Bin 0 -> 166850 bytes 2 files changed, 6 insertions(+) create mode 100644 Shortcut.png diff --git a/README.md b/README.md index 1ad2d51..ff70dc8 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,12 @@ Simply build the Xcode project and restart Xcode. The plugin will automatically If you get a "Permission Denied" error while building, please see [this issue](https://github.com/omz/ColorSense-for-Xcode/issues/1). +## Keyboard Shortcut + +With a little trick you can enable keyboard shortcut for showing the popover. Open `System Preferences` app, then section `Keyboard` and add a custom application shortcut for Xcode as in the following image: + +![Screenshot](https://github.com/holtwick/HOStringSense-for-Xcode/raw/master/Shortcut.png "Keyboard Shortcur") + ## Author I'm a Mac and iOS developer, follow me on Twitter [@holtwick](https://twitter.com/holtwick) or ADN [@ho](https://alpha.app.net/ho). diff --git a/Shortcut.png b/Shortcut.png new file mode 100644 index 0000000000000000000000000000000000000000..1cb5f427c7b37df91c21d520d3d19063a629e4bb GIT binary patch literal 166850 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π=CkqBUg6+gsX973+?hKGR*zwqJs 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%0Db@%Hr*k=I`guh26 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

HYy+KBU##46`V#v9bF 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 literal 0 HcmV?d00001 From 25d673e2879a9dbe5761fdc79ca9969a788b9e13 Mon Sep 17 00:00:00 2001 From: Dirk Holtwick Date: Thu, 27 Dec 2012 14:26:28 +0100 Subject: [PATCH 24/49] Updated README and illustration --- README.md | 8 +++++--- Xcode.png | Bin 29290 -> 18788 bytes 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ff70dc8..bf7e9ed 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,10 @@ -# HOStringSense for Xcode +# HOStringSense for Xcode [![Flattr this git repo](http://api.flattr.com/button/flattr-badge-large.png)](https://flattr.com/submit/auto?user_id=holtwick&url=https://github.com/holtwick/HOStringSense-for-Xcode&title=HOStringSense-for-Xcode&language=&tags=github&category=software) -## Overview +Perfect for editing regular expressions, multi line texts, inline HTML and many more use cases. -Edit strings like `@"Hello\nWorld!"` unescaped. +## Example + +Edit strings like `@"Hello\nWorld!"` unescaped! ![Screenshot](https://github.com/holtwick/HOStringSense-for-Xcode/raw/master/Xcode.png "Example") diff --git a/Xcode.png b/Xcode.png index eb68b14226ea3eb93877b0e7d4b616942f96ccc5..d19f5d936b274f50e91a67ae7dc4ad33e7359466 100644 GIT binary patch literal 18788 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