support for Xcode 5 GM

This commit is contained in:
Zitao
2013-09-13 17:19:57 -04:00
parent 8c521b1b47
commit d2c18940a8
6 changed files with 87 additions and 30 deletions

View File

@@ -8,6 +8,7 @@
/* Begin PBXBuildFile section */
09A343C6174068E600A713EE /* RCXcode.m in Sources */ = {isa = PBXBuildFile; fileRef = 09A343C5174068E200A713EE /* RCXcode.m */; };
09EC581817E3B6E1002261C4 /* icon.icns in Resources */ = {isa = PBXBuildFile; fileRef = 09EC581717E3B6E1002261C4 /* icon.icns */; };
09F65636174041010000486B /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 09F65635174041010000486B /* AppKit.framework */; };
09F65638174041010000486B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 09F65637174041010000486B /* Foundation.framework */; };
09F6563E174041010000486B /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 09F6563C174041010000486B /* InfoPlist.strings */; };
@@ -17,6 +18,7 @@
/* Begin PBXFileReference section */
09A343C4174068E200A713EE /* RCXcode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCXcode.h; sourceTree = "<group>"; };
09A343C5174068E200A713EE /* RCXcode.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCXcode.m; sourceTree = "<group>"; };
09EC581717E3B6E1002261C4 /* icon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = icon.icns; sourceTree = "<group>"; };
09F65632174041010000486B /* QuickLocalization.xcplugin */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = QuickLocalization.xcplugin; sourceTree = BUILT_PRODUCTS_DIR; };
09F65635174041010000486B /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
09F65637174041010000486B /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
@@ -82,6 +84,7 @@
isa = PBXGroup;
children = (
09F6563B174041010000486B /* QuickLocalization-Info.plist */,
09EC581717E3B6E1002261C4 /* icon.icns */,
09F6563C174041010000486B /* InfoPlist.strings */,
09F65642174041010000486B /* QuickLocalization-Prefix.pch */,
);
@@ -140,6 +143,7 @@
buildActionMask = 2147483647;
files = (
09F6563E174041010000486B /* InfoPlist.strings in Resources */,
09EC581817E3B6E1002261C4 /* icon.icns in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -229,10 +233,11 @@
09F65646174041010000486B /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_OBJC_ARC = YES;
COMBINE_HIDPI_IMAGES = YES;
DEPLOYMENT_LOCATION = YES;
DSTROOT = "$(HOME)";
GCC_ENABLE_OBJC_GC = required;
GCC_ENABLE_OBJC_GC = unsupported;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "QuickLocalization/QuickLocalization-Prefix.pch";
INFOPLIST_FILE = "QuickLocalization/QuickLocalization-Info.plist";
@@ -246,10 +251,11 @@
09F65647174041010000486B /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_OBJC_ARC = YES;
COMBINE_HIDPI_IMAGES = YES;
DEPLOYMENT_LOCATION = YES;
DSTROOT = "$(HOME)";
GCC_ENABLE_OBJC_GC = required;
GCC_ENABLE_OBJC_GC = unsupported;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "QuickLocalization/QuickLocalization-Prefix.pch";
INFOPLIST_FILE = "QuickLocalization/QuickLocalization-Info.plist";

View File

@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDESourceControlProjectFavoriteDictionaryKey</key>
<false/>
<key>IDESourceControlProjectIdentifier</key>
<string>1EE47844-8854-4E87-9C9D-9981C6C7EB5C</string>
<key>IDESourceControlProjectName</key>
<string>QuickLocalization</string>
<key>IDESourceControlProjectOriginsDictionary</key>
<dict>
<key>B1384B3C-CDED-4974-B523-BFBC8D94735C</key>
<string>ssh://github.com/nanaimostudio/Xcode-Quick-Localization.git</string>
</dict>
<key>IDESourceControlProjectPath</key>
<string>QuickLocalization.xcodeproj/project.xcworkspace</string>
<key>IDESourceControlProjectRelativeInstallPathDictionary</key>
<dict>
<key>B1384B3C-CDED-4974-B523-BFBC8D94735C</key>
<string>../..</string>
</dict>
<key>IDESourceControlProjectURL</key>
<string>ssh://github.com/nanaimostudio/Xcode-Quick-Localization.git</string>
<key>IDESourceControlProjectVersion</key>
<integer>110</integer>
<key>IDESourceControlProjectWCCIdentifier</key>
<string>B1384B3C-CDED-4974-B523-BFBC8D94735C</string>
<key>IDESourceControlProjectWCConfigurations</key>
<array>
<dict>
<key>IDESourceControlRepositoryExtensionIdentifierKey</key>
<string>public.vcs.git</string>
<key>IDESourceControlWCCIdentifierKey</key>
<string>B1384B3C-CDED-4974-B523-BFBC8D94735C</string>
<key>IDESourceControlWCCName</key>
<string>Xcode-Quick-Localization</string>
</dict>
</array>
</dict>
</plist>

View File

@@ -7,7 +7,7 @@
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFile</key>
<string></string>
<string>icon.icns</string>
<key>CFBundleIdentifier</key>
<string>com.nanaimostudio.${PRODUCT_NAME:rfc1034identifier}</string>
<key>CFBundleInfoDictionaryVersion</key>
@@ -22,11 +22,34 @@
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>CFPlugInDynamicRegisterFunction</key>
<string></string>
<key>CFPlugInDynamicRegistration</key>
<string>NO</string>
<key>CFPlugInFactories</key>
<dict>
<key>00000000-0000-0000-0000-000000000000</key>
<string>MyFactoryFunction</string>
</dict>
<key>CFPlugInTypes</key>
<dict>
<key>00000000-0000-0000-0000-000000000000</key>
<array>
<string>00000000-0000-0000-0000-000000000000</string>
</array>
</dict>
<key>CFPlugInUnloadFunction</key>
<string></string>
<key>XC4Compatible</key>
<true/>
<key>XCGCReady</key>
<true/>
<false/>
<key>XCPluginHasUI</key>
<false/>
<key>DVTPlugInCompatibilityUUIDs</key>
<array>
<string>63FC1C47-140D-42B0-BB4D-A10B2D225574</string>
<string>37B30044-3B14-46BA-ABAA-F01000C27B63</string>
</array>
</dict>
</plist>

View File

@@ -17,10 +17,10 @@ static NSString *localizeRegexs[] = {
};
static NSString *stringRegexs = @"@\"[^\"]*\"";
@implementation QuickLocalization
static id sharedPlugin = nil;
+ (void)pluginDidLoad:(NSBundle *)plugin {
static id sharedPlugin = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedPlugin = [[self alloc] init];
@@ -29,26 +29,18 @@ static NSString *stringRegexs = @"@\"[^\"]*\"";
- (id)init {
if (self = [super init]) {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationDidFinishLaunching:)
name:NSApplicationDidFinishLaunchingNotification
object:nil];
NSMenuItem *viewMenuItem = [[NSApp mainMenu] itemWithTitle:@"Edit"];
if (viewMenuItem) {
[[viewMenuItem submenu] addItem:[NSMenuItem separatorItem]];
NSMenuItem *sample = [[NSMenuItem alloc] initWithTitle:@"Quick Localization" action:@selector(quickLocalization) keyEquivalent:@"d"];
[sample setKeyEquivalentModifierMask:NSCommandKeyMask | NSAlternateKeyMask];
[sample setTarget:self];
[[viewMenuItem submenu] addItem:sample];
}
}
return self;
}
- (void)applicationDidFinishLaunching:(NSNotification *)notification {
NSMenuItem *viewMenuItem = [[NSApp mainMenu] itemWithTitle:@"Edit"];
if (viewMenuItem) {
[[viewMenuItem submenu] addItem:[NSMenuItem separatorItem]];
NSMenuItem *sample = [[NSMenuItem alloc] initWithTitle:@"Quick Localization" action:@selector(quickLocalization) keyEquivalent:@"c"];
[sample setKeyEquivalentModifierMask:NSCommandKeyMask | NSShiftKeyMask];
[sample setTarget:self];
[[viewMenuItem submenu] addItem:sample];
[sample release];
}
}
// Sample Action, for menu item:
- (void)quickLocalization {
IDESourceCodeDocument *document = [RCXcode currentSourceCodeDocument];
@@ -64,10 +56,10 @@ static NSString *stringRegexs = @"@\"[^\"]*\"";
NSRange lineRange = [textView.textStorage.string lineRangeForRange:range];
NSString *line = [textView.textStorage.string substringWithRange:lineRange];
NSRegularExpression *localizedRex = [[[NSRegularExpression alloc] initWithPattern:localizeRegexs[0] options:NSRegularExpressionCaseInsensitive error:nil] autorelease];
NSRegularExpression *localizedRex = [[NSRegularExpression alloc] initWithPattern:localizeRegexs[0] options:NSRegularExpressionCaseInsensitive error:nil];
NSArray *localizedMatches = [localizedRex matchesInString:line options:0 range:NSMakeRange(0, [line length])];
NSRegularExpression *regex = [[[NSRegularExpression alloc] initWithPattern:stringRegexs options:NSRegularExpressionCaseInsensitive error:nil] autorelease];
NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:stringRegexs options:NSRegularExpressionCaseInsensitive error:nil];
NSArray *matches = [regex matchesInString:line options:0 range:NSMakeRange(0, [line length])];
NSUInteger addedLength = 0;
for (int i = 0; i < [matches count]; i++) {
@@ -83,7 +75,7 @@ static NSString *stringRegexs = @"@\"[^\"]*\"";
addedLength = addedLength + outputString.length - string.length;
if ([textView shouldChangeTextInRange:matchedRangeInDocument replacementString:outputString]) {
[textView.textStorage replaceCharactersInRange:matchedRangeInDocument
withAttributedString:[[[NSAttributedString alloc] initWithString:outputString] autorelease]];
withAttributedString:[[NSAttributedString alloc] initWithString:outputString]];
[textView didChangeText];
}
@@ -105,9 +97,4 @@ static NSString *stringRegexs = @"@\"[^\"]*\"";
return NO;
}
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
[super dealloc];
}
@end

BIN
QuickLocalization/icon.icns Normal file

Binary file not shown.

View File

@@ -7,7 +7,7 @@ Xcode Plugin to Convert @"content" to NSLocalizedString(@"content", @"content")
How To Use
==========
Select any line in xcode, press command + shift + c. String will be converted to localized string.
Select any line in xcode, press option + shift + d. String will be converted to localized string.
You can also access it under Edit -> Quick Localization