From 27696e74d5de3a3ecaa31d953e572f9efb956a7d Mon Sep 17 00:00:00 2001 From: Eric Quesada Date: Sun, 11 Jan 2015 11:23:15 +0100 Subject: [PATCH 1/4] Added the ability to set a Default Language from the Localization Editor --- .../ccBuilder/LocalizationEditorHandler.h | 1 + .../ccBuilder/LocalizationEditorHandler.m | 29 +- .../ccBuilder/LocalizationEditorLanguage.h | 1 + .../ccBuilder/LocalizationEditorLanguage.m | 2 + .../ccBuilder/LocalizationEditorWindow.h | 2 + .../ccBuilder/LocalizationEditorWindow.m | 39 ++ .../ccBuilder/LocalizationEditorWindow.xib | 489 ++++++++++++++++-- 7 files changed, 523 insertions(+), 40 deletions(-) diff --git a/SpriteBuilder/ccBuilder/LocalizationEditorHandler.h b/SpriteBuilder/ccBuilder/LocalizationEditorHandler.h index 638269434..07aa6f3b0 100644 --- a/SpriteBuilder/ccBuilder/LocalizationEditorHandler.h +++ b/SpriteBuilder/ccBuilder/LocalizationEditorHandler.h @@ -37,6 +37,7 @@ - (LocalizationEditorLanguage*) getLanguageByIsoLangCode:(NSString*)code; - (void) addActiveLanguage:(LocalizationEditorLanguage*) lang; - (void) removeActiveLangage:(LocalizationEditorLanguage*) lang; +- (void) setDefaultLanguage:(LocalizationEditorLanguage*) lang; - (void) setEdited; - (NSString*) translationForKey:(NSString*)key; diff --git a/SpriteBuilder/ccBuilder/LocalizationEditorHandler.m b/SpriteBuilder/ccBuilder/LocalizationEditorHandler.m index ad4df92c3..cd3dfe2d9 100644 --- a/SpriteBuilder/ccBuilder/LocalizationEditorHandler.m +++ b/SpriteBuilder/ccBuilder/LocalizationEditorHandler.m @@ -64,12 +64,19 @@ - (void) store [ser setObject:[NSNumber numberWithInt:kCCBTranslationFileFormatVersion] forKey:@"fileVersion"]; // Languages + NSString* defaultLanguage = nil; NSMutableArray* serLangs = [NSMutableArray array]; for (LocalizationEditorLanguage* lang in activeLanguages) { [serLangs addObject:lang.isoLangCode]; + if (lang.defaultLanguage) { + defaultLanguage = lang.isoLangCode; + } } [ser setObject:serLangs forKey:@"activeLanguages"]; + if (defaultLanguage) { + [ser setObject:defaultLanguage forKey:@"defaultLanguage"]; + } // Translations NSMutableArray* serTransls = [NSMutableArray array]; @@ -101,12 +108,20 @@ - (BOOL) load // Read data // Languages + NSString* defaultLang = [ser objectForKey:@"defaultLanguage"]; NSArray* serLangs = [ser objectForKey:@"activeLanguages"]; for (NSString* isoCode in serLangs) { // Find language for code and add active language LocalizationEditorLanguage* lang = [self getLanguageByIsoLangCode:isoCode]; - if (lang) [activeLanguages addObject:lang]; + if (lang) + { + if ([lang.isoLangCode isEqualToString:defaultLang]) + { + lang.defaultLanguage = YES; + } + [activeLanguages addObject:lang]; + } } // Translations @@ -280,6 +295,18 @@ - (void) removeActiveLangage:(LocalizationEditorLanguage*) lang [self setCurrentLanguage:currentLanguage]; } +- (void) setDefaultLanguage:(LocalizationEditorLanguage*) lang +{ + for (LocalizationEditorLanguage* oneLanguage in activeLanguages) + { + oneLanguage.defaultLanguage = NO; + if (lang && [oneLanguage.isoLangCode isEqualToString:lang.isoLangCode]) + { + oneLanguage.defaultLanguage = YES; + } + } +} + - (IBAction)openEditor:(id)sender { if (!windowController) diff --git a/SpriteBuilder/ccBuilder/LocalizationEditorLanguage.h b/SpriteBuilder/ccBuilder/LocalizationEditorLanguage.h index aa3052501..2403bc925 100644 --- a/SpriteBuilder/ccBuilder/LocalizationEditorLanguage.h +++ b/SpriteBuilder/ccBuilder/LocalizationEditorLanguage.h @@ -13,6 +13,7 @@ @property (nonatomic,copy) NSString* isoLangCode; @property (nonatomic,copy) NSString* name; @property (nonatomic,readwrite) BOOL quickEdit; +@property (nonatomic,readwrite) BOOL defaultLanguage; - (id) initWithIsoLangCode:(NSString*)code; diff --git a/SpriteBuilder/ccBuilder/LocalizationEditorLanguage.m b/SpriteBuilder/ccBuilder/LocalizationEditorLanguage.m index 18e46666b..a07178574 100644 --- a/SpriteBuilder/ccBuilder/LocalizationEditorLanguage.m +++ b/SpriteBuilder/ccBuilder/LocalizationEditorLanguage.m @@ -39,6 +39,8 @@ - (id) initWithIsoLangCode:(NSString*)code self.quickEdit = YES; + self.defaultLanguage = NO; + return self; } diff --git a/SpriteBuilder/ccBuilder/LocalizationEditorWindow.h b/SpriteBuilder/ccBuilder/LocalizationEditorWindow.h index 8c4a7c6d2..f583a32df 100644 --- a/SpriteBuilder/ccBuilder/LocalizationEditorWindow.h +++ b/SpriteBuilder/ccBuilder/LocalizationEditorWindow.h @@ -13,6 +13,7 @@ IBOutlet NSTableView* tableTranslations; IBOutlet NSTableView* tableLanguages; IBOutlet NSPopUpButton* popLanguageAdd; + IBOutlet NSPopUpButton* popLanguageSetDefault; IBOutlet NSPopUpButton* popCurrentLanguage; IBOutlet NSTextView* textInspectorKey; } @@ -29,6 +30,7 @@ - (IBAction)pressedAddGroup:(id)sender; - (IBAction)selectedAddLanguage:(id)sender; +- (IBAction)selectedSetDefaultLanguage:(id)sender; - (void)removeLanguagesAtIndexes:(NSIndexSet*)idxs; - (IBAction)selectedCurrentLanguage:(id)sender; diff --git a/SpriteBuilder/ccBuilder/LocalizationEditorWindow.m b/SpriteBuilder/ccBuilder/LocalizationEditorWindow.m index 47900b9e3..a123d7b77 100644 --- a/SpriteBuilder/ccBuilder/LocalizationEditorWindow.m +++ b/SpriteBuilder/ccBuilder/LocalizationEditorWindow.m @@ -22,6 +22,7 @@ - (void) awakeFromNib { [tableTranslations registerForDraggedTypes:[NSArray arrayWithObject:@"com.cocosbuilder.LocalizationEditorTranslation"]]; [self populateLanguageAddMenu]; + [self populateLanguageSetDefaultMenu]; [tableLanguages reloadData]; [self updateLanguageSelectionMenu]; [self addLanguageColumns]; @@ -40,6 +41,28 @@ - (void) populateLanguageAddMenu [popLanguageAdd addItemsWithTitles:langTitles]; } +- (void) populateLanguageSetDefaultMenu +{ + [popLanguageSetDefault removeAllItems]; + + NSArray* langs = [AppDelegate appDelegate].localizationEditorHandler.activeLanguages; + + NSString* firstItem = @"Set Default Language"; + + NSMutableArray* langTitles = [NSMutableArray array]; + for (LocalizationEditorLanguage* lang in langs) + { + [langTitles addObject:lang.name]; + if (lang.defaultLanguage) + { + firstItem = [NSString stringWithFormat:@"Default: %@", lang.name]; + } + } + [langTitles addObject:@"None"]; + [langTitles insertObject:firstItem atIndex:0]; + [popLanguageSetDefault addItemsWithTitles:langTitles]; +} + - (void) updateLanguageSelectionMenu { NSArray* langs = [AppDelegate appDelegate].localizationEditorHandler.activeLanguages; @@ -208,10 +231,25 @@ - (IBAction)selectedAddLanguage:(id)sender [self updateLanguageSelectionMenu]; [self updateQuickEditLangs]; [self updateInspector]; + [self populateLanguageSetDefaultMenu]; [handler setEdited]; } +- (IBAction)selectedSetDefaultLanguage:(id)sender +{ + NSString* name = popLanguageSetDefault.selectedItem.title; + LocalizationEditorHandler* handler = [AppDelegate appDelegate].localizationEditorHandler; + LocalizationEditorLanguage* lang = nil; + if (![@"None" isEqualToString:name]) + { + lang = [handler getLanguageByName:name]; + } + [handler setDefaultLanguage:lang]; + [self populateLanguageSetDefaultMenu]; + [handler setEdited]; +} + - (void)removeLanguagesAtIndexes:(NSIndexSet*)idxs { LocalizationEditorHandler* handler = [AppDelegate appDelegate].localizationEditorHandler; @@ -227,6 +265,7 @@ - (void)removeLanguagesAtIndexes:(NSIndexSet*)idxs [self updateLanguageSelectionMenu]; [self updateQuickEditLangs]; [self updateInspector]; + [self populateLanguageSetDefaultMenu]; [handler setEdited]; } diff --git a/SpriteBuilder/ccBuilder/LocalizationEditorWindow.xib b/SpriteBuilder/ccBuilder/LocalizationEditorWindow.xib index 069bae88d..28df60a62 100644 --- a/SpriteBuilder/ccBuilder/LocalizationEditorWindow.xib +++ b/SpriteBuilder/ccBuilder/LocalizationEditorWindow.xib @@ -1,14 +1,14 @@ - 1080 - 12E55 - 3084 - 1187.39 - 626.00 + 1090 + 14B25 + 6254 + 1343.16 + 755.00 com.apple.InterfaceBuilder.CocoaPlugin - 3084 + 6254 NSBox @@ -71,7 +71,7 @@ - 2304 + 2322 @@ -79,7 +79,7 @@ {565, 531} - + _NS:13 YES NO @@ -274,7 +274,7 @@ - 2304 + 2338 @@ -284,14 +284,12 @@ _NS:15 - - 4 {{0, 21}, {565, 548}} - + _NS:9 133680 @@ -444,7 +442,7 @@ - 2304 + 2322 @@ -471,7 +469,7 @@ {280, 54} - + _NS:13 @@ -510,7 +508,7 @@ - + 1 @@ -592,7 +590,7 @@ {{7, 8}, {282, 56}} - + _NS:9 133138 @@ -614,7 +612,7 @@ 68157504 272761856 - Key (default value) + Key _NS:1535 @@ -629,7 +627,7 @@ - 2304 + 2322 @@ -656,7 +654,7 @@ {280, 240} - + _NS:13 @@ -685,7 +683,7 @@ - + @@ -758,7 +756,7 @@ {{7, 91}, {282, 242}} - + _NS:9 133138 @@ -774,7 +772,7 @@ - 2304 + 2322 @@ -801,7 +799,7 @@ {280, 54} - + _NS:13 @@ -830,7 +828,7 @@ - + @@ -903,7 +901,7 @@ {{7, 365}, {282, 56}} - + _NS:9 133138 @@ -931,7 +929,7 @@ - 2304 + 2322 @@ -1135,9 +1133,11 @@ textBackgroundColor - - 3 - MCAwLjgwMDAwMDAxMTkAA + + 6 + System + labelColor + 3 @@ -1189,10 +1189,7 @@ Box - - 3 - MCAwLjgwMDAwMDAxMTkAA - + 3 2 @@ -1205,7 +1202,6 @@ {{760, -1}, {104, 22}} - _NS:9 YES @@ -1249,6 +1245,55 @@ NO + + + 289 + {{565, -1}, {151, 22}} + + + _NS:9 + YES + + -2080374720 + 134350848 + + _NS:9 + + -2034614272 + 134 + + + 400 + 75 + + + YES + Set Default Language + + 1048576 + 2147483647 + 1 + + + + _popUpItemAction: + + + YES + + OtherViews + + + + + + YES + 1 + YES + YES + + NO + {863, 568} @@ -1265,7 +1310,7 @@ - + pressedAdd: @@ -1362,6 +1407,22 @@ 133 + + + selectedSetDefaultLanguage: + + + + 156 + + + + popLanguageSetDefault + + + + 157 + dataSource @@ -1654,6 +1715,22 @@ 143 + + + enabled: hasOpenFile + + + + + + enabled: hasOpenFile + enabled + hasOpenFile + 2 + + + 155 + @@ -1699,6 +1776,7 @@ + @@ -2075,6 +2153,35 @@ + + 150 + + + + + + + + 151 + + + + + + + + 152 + + + + + + + + 153 + + + @@ -2086,8 +2193,13 @@ CCBTextFieldCell com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -2153,7 +2265,7 @@ - 149 + 157 @@ -2205,6 +2317,7 @@ id id id + id @@ -2223,10 +2336,15 @@ selectedCurrentLanguage: id + + selectedSetDefaultLanguage: + id + NSPopUpButton NSPopUpButton + NSPopUpButton NSTableView NSTableView NSTextView @@ -2240,6 +2358,10 @@ popLanguageAdd NSPopUpButton + + popLanguageSetDefault + NSPopUpButton + tableLanguages NSTableView @@ -2258,6 +2380,295 @@ ./Classes/LocalizationEditorWindow.h + + LocalizationEditorWindow + + id + id + id + id + id + + + + pressedAdd: + id + + + pressedAddGroup: + id + + + selectedAddLanguage: + id + + + selectedCurrentLanguage: + id + + + selectedSetDefaultLanguage: + id + + + + IBProjectSource + ./Classes/LocalizationEditorWindow.m + + + + + + NSActionCell + NSCell + + IBFrameworkSource + AppKit.framework/Headers/NSActionCell.h + + + + NSApplication + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSApplication.h + + + + NSBox + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSBox.h + + + + NSButton + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSButton.h + + + + NSButtonCell + NSActionCell + + IBFrameworkSource + AppKit.framework/Headers/NSButtonCell.h + + + + NSCell + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSCell.h + + + + NSControl + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSControl.h + + + + NSController + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSController.h + + + + NSFormatter + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFormatter.h + + + + NSImageCell + NSCell + + IBFrameworkSource + AppKit.framework/Headers/NSImageCell.h + + + + NSMenu + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSMenu.h + + + + NSMenuItem + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSMenuItem.h + + + + NSMenuItemCell + NSButtonCell + + IBFrameworkSource + AppKit.framework/Headers/NSMenuItemCell.h + + + + NSPopUpButton + NSButton + + IBFrameworkSource + AppKit.framework/Headers/NSPopUpButton.h + + + + NSPopUpButtonCell + NSMenuItemCell + + IBFrameworkSource + AppKit.framework/Headers/NSPopUpButtonCell.h + + + + NSResponder + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSResponder.h + + + + NSScrollView + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSScrollView.h + + + + NSScroller + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSScroller.h + + + + NSSplitView + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSSplitView.h + + + + NSTableColumn + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSTableColumn.h + + + + NSTableHeaderView + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSTableHeaderView.h + + + + NSTableView + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSTableView.h + + + + NSText + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSText.h + + + + NSTextField + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSTextField.h + + + + NSTextFieldCell + NSActionCell + + IBFrameworkSource + AppKit.framework/Headers/NSTextFieldCell.h + + + + NSTextView + NSText + + IBFrameworkSource + AppKit.framework/Headers/NSTextView.h + + + + NSUserDefaultsController + NSController + + IBFrameworkSource + AppKit.framework/Headers/NSUserDefaultsController.h + + + + NSView + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSView.h + + + + NSWindow + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSWindow.h + + + + NSWindowController + NSResponder + + showWindow: + id + + + showWindow: + + showWindow: + id + + + + IBFrameworkSource + AppKit.framework/Headers/NSWindowController.h + + 0 @@ -2265,9 +2676,9 @@ YES 3 - {8, 8} - {11, 11} - {10, 3} + {11, 11} + {12, 12} + {10, 2} {15, 15} From d83c6e7b7a51ddef7a381ce79392093a41f42f11 Mon Sep 17 00:00:00 2001 From: equesada Date: Tue, 13 Jan 2015 18:03:12 +0100 Subject: [PATCH 2/4] If the user set a default language, use it to set the editor current language when opening his project. If the user changed the default language, use the new value to set the editor current language. --- SpriteBuilder/ccBuilder/LocalizationEditorHandler.m | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/SpriteBuilder/ccBuilder/LocalizationEditorHandler.m b/SpriteBuilder/ccBuilder/LocalizationEditorHandler.m index cd3dfe2d9..159e74b1b 100644 --- a/SpriteBuilder/ccBuilder/LocalizationEditorHandler.m +++ b/SpriteBuilder/ccBuilder/LocalizationEditorHandler.m @@ -194,7 +194,15 @@ - (void) setManagedFile:(NSString*) file if (activeLanguages.count > 0) { - [self setCurrentLanguage:[activeLanguages objectAtIndex:0]]; + LocalizationEditorLanguage* initialLanguage = [activeLanguages objectAtIndex:0]; + for (LocalizationEditorLanguage* lang in activeLanguages) + { + if (lang.defaultLanguage) { + initialLanguage = lang; + break; + } + } + [self setCurrentLanguage:initialLanguage]; } else { @@ -303,6 +311,7 @@ - (void) setDefaultLanguage:(LocalizationEditorLanguage*) lang if (lang && [oneLanguage.isoLangCode isEqualToString:lang.isoLangCode]) { oneLanguage.defaultLanguage = YES; + [self setCurrentLanguage:oneLanguage]; } } } From 8f8ffd7f34e56a165da7798c7ce9f3d1e3772bd2 Mon Sep 17 00:00:00 2001 From: Eric Quesada Date: Tue, 13 Jan 2015 19:35:52 +0100 Subject: [PATCH 3/4] Fixed an issue, in the Default Language Selector, the selection was blank if the i18n editor was opened before to open the project. --- SpriteBuilder/ccBuilder/LocalizationEditorWindow.m | 1 + 1 file changed, 1 insertion(+) diff --git a/SpriteBuilder/ccBuilder/LocalizationEditorWindow.m b/SpriteBuilder/ccBuilder/LocalizationEditorWindow.m index a123d7b77..ff22bb41d 100644 --- a/SpriteBuilder/ccBuilder/LocalizationEditorWindow.m +++ b/SpriteBuilder/ccBuilder/LocalizationEditorWindow.m @@ -198,6 +198,7 @@ - (void) reload [self updateLanguageSelectionMenu]; [self updateQuickEditLangs]; [self updateInspector]; + [self populateLanguageSetDefaultMenu]; } #pragma mark Actions From 2220868e88728af3685b503e7eceb842d77158be Mon Sep 17 00:00:00 2001 From: equesada Date: Wed, 14 Jan 2015 17:29:36 +0100 Subject: [PATCH 4/4] The current Default Language (or "None" if there is not) is now ticked in selector. --- SpriteBuilder/ccBuilder/LocalizationEditorWindow.m | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/SpriteBuilder/ccBuilder/LocalizationEditorWindow.m b/SpriteBuilder/ccBuilder/LocalizationEditorWindow.m index ff22bb41d..9499d4eaf 100644 --- a/SpriteBuilder/ccBuilder/LocalizationEditorWindow.m +++ b/SpriteBuilder/ccBuilder/LocalizationEditorWindow.m @@ -47,20 +47,29 @@ - (void) populateLanguageSetDefaultMenu NSArray* langs = [AppDelegate appDelegate].localizationEditorHandler.activeLanguages; + int defaultLanguageIndex = -1; NSString* firstItem = @"Set Default Language"; NSMutableArray* langTitles = [NSMutableArray array]; + int currentLanguageIndex = 0; for (LocalizationEditorLanguage* lang in langs) { [langTitles addObject:lang.name]; if (lang.defaultLanguage) { firstItem = [NSString stringWithFormat:@"Default: %@", lang.name]; + defaultLanguageIndex = currentLanguageIndex; } + currentLanguageIndex++; } [langTitles addObject:@"None"]; + if (defaultLanguageIndex == -1) { + defaultLanguageIndex = currentLanguageIndex; + } [langTitles insertObject:firstItem atIndex:0]; [popLanguageSetDefault addItemsWithTitles:langTitles]; + defaultLanguageIndex++; + [[popLanguageSetDefault itemAtIndex:defaultLanguageIndex] setState:NSOnState]; } - (void) updateLanguageSelectionMenu