From 0a6a53a530c6fead2ed807b08838db3d095e6393 Mon Sep 17 00:00:00 2001 From: stuconnolly Date: Sat, 19 Mar 2011 18:53:25 +0000 Subject: Remove sub-menus from default favorite popup button. --- Interfaces/English.lproj/Preferences.xib | 183 ++++++++++++++----------------- Source/SPGeneralPreferencePane.h | 2 + Source/SPGeneralPreferencePane.m | 80 ++++++++++---- 3 files changed, 142 insertions(+), 123 deletions(-) diff --git a/Interfaces/English.lproj/Preferences.xib b/Interfaces/English.lproj/Preferences.xib index 871bf8a9..5180d95e 100644 --- a/Interfaces/English.lproj/Preferences.xib +++ b/Interfaces/English.lproj/Preferences.xib @@ -21,6 +21,7 @@ YES + YES @@ -498,7 +499,7 @@ {264, 296} - + 268 YES @@ -909,7 +910,7 @@ YES - -2076049856 + 71433792 2048 @@ -919,13 +920,24 @@ 400 75 - + + YES + + + 1048576 + 2147483647 + + + _popUpItemAction: + + YES OtherViews YES + YES -1 1 @@ -1345,6 +1357,7 @@ {580, 280} + NSView @@ -2349,7 +2362,7 @@ AQAAAAA NSView - + 268 YES @@ -2358,7 +2371,6 @@ AQAAAAA 268 {{17, 56}, {204, 17}} - YES 67239488 @@ -2375,7 +2387,6 @@ AQAAAAA 268 {{224, 19}, {338, 18}} - YES -2080244224 @@ -2398,7 +2409,6 @@ AQAAAAA 268 {{226, 54}, {50, 22}} - YES -1804468671 @@ -2461,7 +2471,6 @@ AQAAAAA 268 {{281, 57}, {282, 17}} - YES 67239488 @@ -2478,7 +2487,6 @@ AQAAAAA 12 {{226, 43}, {334, 5}} - {0, 0} 67239424 @@ -2498,12 +2506,10 @@ AQAAAAA {580, 93} - - NSView - + 268 YES @@ -2512,7 +2518,6 @@ AQAAAAA 268 {{437, 251}, {15, 22}} - YES 68025888 @@ -2531,7 +2536,6 @@ AQAAAAA 268 {{407, 253}, {23, 19}} - YES -1804468671 @@ -2601,7 +2605,6 @@ AQAAAAA 268 {{270, 254}, {131, 18}} - YES -2080244224 @@ -2624,7 +2627,6 @@ AQAAAAA 268 {{144, 21}, {101, 14}} - YES 68288064 @@ -2641,7 +2643,6 @@ AQAAAAA 268 {{49, 21}, {93, 14}} - YES 68288064 @@ -2668,7 +2669,6 @@ AQAAAAA 256 {220, 249} - YES @@ -2751,7 +2751,6 @@ AQAAAAA {{1, 1}, {220, 249}} - @@ -2762,7 +2761,6 @@ AQAAAAA -2147483392 {{-100, -100}, {15, 102}} - _doScroller: 0.99658703804016113 @@ -2772,7 +2770,6 @@ AQAAAAA -2147483392 {{-100, -100}, {223, 15}} - 1 _doScroller: @@ -2781,7 +2778,6 @@ AQAAAAA {{20, 47}, {222, 251}} - 2 @@ -2794,7 +2790,6 @@ AQAAAAA 268 {{20, 16}, {24, 24}} - YES 71433792 @@ -2919,7 +2914,6 @@ AQAAAAA 268 {{407, 19}, {23, 19}} - YES -1804468671 @@ -2992,7 +2986,6 @@ AQAAAAA 268 {{269, 21}, {133, 17}} - YES 68288064 @@ -3009,7 +3002,6 @@ AQAAAAA 268 {{437, 17}, {15, 22}} - YES 68025888 @@ -3028,7 +3020,6 @@ AQAAAAA 268 {{17, 322}, {182, 17}} - YES 68288064 @@ -3045,7 +3036,6 @@ AQAAAAA 268 {{433, 313}, {133, 32}} - YES 67239424 @@ -3066,7 +3056,6 @@ AQAAAAA 268 {{204, 320}, {207, 22}} - YES -2076049856 @@ -3084,7 +3073,6 @@ AQAAAAA 268 {{270, 282}, {292, 18}} - YES -2080244224 @@ -3107,7 +3095,6 @@ AQAAAAA 268 {{270, 227}, {292, 18}} - YES -2080244224 @@ -3130,7 +3117,6 @@ AQAAAAA 268 {{270, 169}, {292, 18}} - YES 67239424 @@ -3153,7 +3139,6 @@ AQAAAAA 268 {{270, 198}, {292, 18}} - YES -2080244224 @@ -3176,7 +3161,6 @@ AQAAAAA 268 {{270, 122}, {292, 18}} - YES -2080244224 @@ -3199,7 +3183,6 @@ AQAAAAA 268 {{270, 45}, {292, 18}} - YES 67239424 @@ -3222,7 +3205,6 @@ AQAAAAA 268 {{270, 94}, {292, 18}} - YES 67239424 @@ -3245,7 +3227,6 @@ AQAAAAA 268 {{370, 69}, {29, 19}} - YES -1538130368 @@ -3319,7 +3300,6 @@ AQAAAAA 268 {{269, 71}, {96, 14}} - YES 605158976 @@ -3336,7 +3316,6 @@ AQAAAAA 268 {{405, 67}, {15, 22}} - YES 604896800 @@ -3355,7 +3334,6 @@ AQAAAAA 268 {{423, 71}, {140, 14}} - YES 605158976 @@ -3372,7 +3350,6 @@ AQAAAAA -2147483380 {{270, 0}, {292, 18}} - YES -1543373312 @@ -3395,7 +3372,6 @@ AQAAAAA 268 {{370, 144}, {29, 19}} - YES -1538130368 @@ -3469,7 +3445,6 @@ AQAAAAA 268 {{269, 146}, {96, 14}} - YES 605158976 @@ -3486,7 +3461,6 @@ AQAAAAA 268 {{405, 142}, {15, 22}} - YES 604896800 @@ -3505,7 +3479,6 @@ AQAAAAA 268 {{423, 146}, {140, 14}} - YES 605158976 @@ -3522,7 +3495,6 @@ AQAAAAA 12 {{204, 309}, {356, 5}} - {0, 0} 67239424 @@ -3542,8 +3514,6 @@ AQAAAAA {580, 360} - - NSView @@ -4800,14 +4770,6 @@ AQAAAAA 2076 - - - updateDefaultFavorite: - - - - 2077 - defaultFavoritePopup @@ -5212,6 +5174,14 @@ AQAAAAA 2214 + + + updateDefaultFavorite: + + + + 2217 + @@ -7981,7 +7951,7 @@ AQAAAAA com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{549, 529}, {580, 280}} + {{93, 644}, {580, 280}} com.apple.InterfaceBuilder.CocoaPlugin YES @@ -8210,7 +8180,7 @@ AQAAAAA com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{646, 556}, {254, 6}} + {{283, 900}, {254, 6}} com.apple.InterfaceBuilder.CocoaPlugin {{381, 612}, {175, 53}} com.apple.InterfaceBuilder.CocoaPlugin @@ -8361,7 +8331,7 @@ AQAAAAA - 2215 + 2217 @@ -8765,35 +8735,14 @@ AQAAAAA - YES - - YES - defaultFavoritePopup - favoritesController - - - YES - NSPopUpButton - NSArrayController - + defaultFavoritePopup + NSPopUpButton - YES - - YES - defaultFavoritePopup - favoritesController - - - YES - - defaultFavoritePopup - NSPopUpButton - - - favoritesController - NSArrayController - + defaultFavoritePopup + + defaultFavoritePopup + NSPopUpButton @@ -8820,6 +8769,52 @@ AQAAAAA SPPreferenceController NSWindowController + + YES + + YES + changeFont: + displayEditorPreferences: + displayPreferencePane: + displayTablePreferences: + + + YES + id + id + id + id + + + + YES + + YES + changeFont: + displayEditorPreferences: + displayPreferencePane: + displayTablePreferences: + + + YES + + changeFont: + id + + + displayEditorPreferences: + id + + + displayPreferencePane: + id + + + displayTablePreferences: + id + + + YES @@ -9052,14 +9047,6 @@ AQAAAAA BWToolkitFramework.framework/Headers/NSApplication+BWAdditions.h - - NSArrayController - NSObjectController - - IBFrameworkSource - AppKit.framework/Headers/NSArrayController.h - - NSBox NSView @@ -9526,14 +9513,6 @@ AQAAAAA WebKit.framework/Headers/WebUIDelegate.h - - NSObjectController - NSController - - IBFrameworkSource - AppKit.framework/Headers/NSObjectController.h - - NSPopUpButton NSButton diff --git a/Source/SPGeneralPreferencePane.h b/Source/SPGeneralPreferencePane.h index 7d14492e..c573b84a 100644 --- a/Source/SPGeneralPreferencePane.h +++ b/Source/SPGeneralPreferencePane.h @@ -34,6 +34,8 @@ */ @interface SPGeneralPreferencePane : SPPreferencePane { + NSImage *folderImage; + IBOutlet NSPopUpButton *defaultFavoritePopup; } diff --git a/Source/SPGeneralPreferencePane.m b/Source/SPGeneralPreferencePane.m index ecc3172a..d8daa229 100644 --- a/Source/SPGeneralPreferencePane.m +++ b/Source/SPGeneralPreferencePane.m @@ -29,14 +29,27 @@ #import "SPFavoriteNode.h" #import "SPGroupNode.h" +static NSString *SPDatabaseImage = @"database-small"; + @interface SPGeneralPreferencePane () -- (NSMenuItem *)_constructMenuItemForNode:(SPTreeNode *)node; +- (NSArray *)_constructMenuItemsForNode:(SPTreeNode *)node atLevel:(NSUInteger)level; @end @implementation SPGeneralPreferencePane +#pragma mark - +#pragma mark Initialisation + +- (void)awakeFromNib +{ + // Generic folder image for use in the outline view's groups + folderImage = [[[NSWorkspace sharedWorkspace] iconForFileType:NSFileTypeForHFSTypeCode(kGenericFolderIcon)] retain]; + + [folderImage setSize:NSMakeSize(16, 16)]; +} + #pragma mark - #pragma mark IB action methods @@ -44,7 +57,15 @@ * Updates the default favorite. */ - (IBAction)updateDefaultFavorite:(id)sender -{ +{ + for (NSMenuItem *item in [defaultFavoritePopup itemArray]) + { + [item setState:NSOffState]; + } + + [sender setState:NSOnState]; + [defaultFavoritePopup setTitle:[sender title]]; + [prefs setBool:([defaultFavoritePopup indexOfSelectedItem] == 0) forKey:SPSelectLastFavoriteUsed]; [prefs setInteger:[sender tag] forKey:SPDefaultFavorite]; @@ -60,18 +81,18 @@ { [defaultFavoritePopup removeAllItems]; - // Use the last used favorite [defaultFavoritePopup addItemWithTitle:NSLocalizedString(@"Last Used", @"Last Used entry in favorites menu")]; [[defaultFavoritePopup menu] addItem:[NSMenuItem separatorItem]]; // Add all favorites to the menu for (SPTreeNode *node in [[[[[SPFavoritesController sharedFavoritesController] favoritesTree] childNodes] objectAtIndex:0] childNodes]) { - NSMenuItem *menuItem = [self _constructMenuItemForNode:node]; - - [[defaultFavoritePopup menu] addItem:menuItem]; + NSArray *items = [self _constructMenuItemsForNode:node atLevel:0]; - [menuItem release]; + for (NSMenuItem *item in items) + { + [[defaultFavoritePopup menu] addItem:item]; + } } // Select the default favorite from prefs @@ -93,40 +114,48 @@ * * @return The menu item */ -- (NSMenuItem *)_constructMenuItemForNode:(SPTreeNode *)node +- (NSArray *)_constructMenuItemsForNode:(SPTreeNode *)node atLevel:(NSUInteger)level { - NSMenuItem *menuItem = nil; + NSMutableArray *items = [NSMutableArray array]; if ([node isGroup]) { + level++; + SPGroupNode *groupNode = (SPGroupNode *)[node representedObject]; - menuItem = [[NSMenuItem alloc] initWithTitle:[groupNode nodeName] action:NULL keyEquivalent:@""]; + NSMenuItem *groupItem = [[NSMenuItem alloc] initWithTitle:[groupNode nodeName] action:NULL keyEquivalent:@""]; - NSMenu *subMenu = [[NSMenu alloc] initWithTitle:[groupNode nodeName]]; + [groupItem setEnabled:NO]; + [groupItem setImage:folderImage]; + + [items addObject:groupItem]; + + [groupItem release]; for (SPTreeNode *childNode in [node childNodes]) { - NSMenuItem *innerItem = [self _constructMenuItemForNode:childNode]; - - [subMenu addItem:innerItem]; - - [innerItem release]; + NSArray *innerItems = [self _constructMenuItemsForNode:childNode atLevel:level]; + + [items addObjectsFromArray:innerItems]; } - - [menuItem setSubmenu:subMenu]; } else { NSDictionary *favorite = [(SPFavoriteNode *)[node representedObject] nodeFavorite]; - menuItem = [[NSMenuItem alloc] initWithTitle:[favorite objectForKey:SPFavoriteNameKey] action:@selector(updateDefaultFavorite:) keyEquivalent:@""]; + NSMenuItem *menuItem = [[NSMenuItem alloc] initWithTitle:[favorite objectForKey:SPFavoriteNameKey] action:@selector(updateDefaultFavorite:) keyEquivalent:@""]; [menuItem setTag:[[favorite objectForKey:SPFavoriteIDKey] integerValue]]; - + [menuItem setImage:[NSImage imageNamed:SPDatabaseImage]]; + [menuItem setIndentationLevel:level]; [menuItem setTarget:self]; + + [items addObject:menuItem]; + + [menuItem release]; } - return menuItem; + return items; } #pragma mark - @@ -162,4 +191,13 @@ return NO; } +#pragma mark - + +- (void)dealloc +{ + [folderImage release], folderImage = nil; + + [super dealloc]; +} + @end -- cgit v1.2.3