Skip to content

Commit dd27293

Browse files
committed
Revamp icons
Add support for highlighted icons Add non-retina versions for all icons Add new icons for tag, fetch, pull, push, detail and tree Add icons for collapsed and expanded folder items Refine colors for file icons Rename Images.pxm to Icons.pxm
1 parent f4eec52 commit dd27293

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+283
-96
lines changed

Classes/Controllers/PBGitSidebarController.m

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,16 @@ - (void)awakeFromNib
6464
[self selectStage];
6565
else
6666
[self selectCurrentBranch];
67+
68+
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(expandCollapseItem:) name:NSOutlineViewItemWillExpandNotification object:sourceView];
69+
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(expandCollapseItem:) name:NSOutlineViewItemWillCollapseNotification object:sourceView];
70+
71+
}
72+
73+
- (void)dealloc
74+
{
75+
[[NSNotificationCenter defaultCenter] removeObserver:self name:NSOutlineViewItemWillExpandNotification object:sourceView];
76+
[[NSNotificationCenter defaultCenter] removeObserver:self name:NSOutlineViewItemWillCollapseNotification object:sourceView];
6777
}
6878

6979
- (void)closeView
@@ -250,7 +260,8 @@ - (void)outlineView:(NSOutlineView *)outlineView willDisplayCell:(PBSourceViewCe
250260
{
251261
cell.isCheckedOut = [item.revSpecifier isEqual:[repository headRef]];
252262

253-
[cell setImage:[item icon]];
263+
NSImage* iconImage = ([cell isHighlighted]) ? [item highlightedIcon] : [item icon];
264+
[cell setImage:iconImage];
254265
}
255266

256267
- (BOOL)outlineView:(NSOutlineView *)outlineView shouldSelectItem:(id)item
@@ -303,6 +314,14 @@ - (void)populateList
303314
[sourceView reloadItem:nil reloadChildren:YES];
304315
}
305316

317+
- (void)expandCollapseItem:(NSNotification*)aNotification
318+
{
319+
NSObject* child = [[aNotification userInfo] valueForKey:@"NSObject"];
320+
if ([child isKindOfClass:[PBSourceViewItem class]]) {
321+
((PBSourceViewItem*)child).isExpanded = [aNotification.name isEqualToString:NSOutlineViewItemWillExpandNotification];
322+
}
323+
}
324+
306325
#pragma mark NSOutlineView Datasource methods
307326

308327
- (id)outlineView:(NSOutlineView *)outlineView child:(NSInteger)index ofItem:(id)item

Classes/Views/PBSourceViewItem.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
- (void)addChild:(PBSourceViewItem *)child;
2929
- (void)removeChild:(PBSourceViewItem *)child;
30+
- (NSImage*)iconNamed:(NSString*)name;
3031

3132
// This adds the ref to the path, which should match the item's title,
3233
// so "refs/heads/pu/pb/sidebar" would have the path [@"pu", @"pb", @"sidebare"]
@@ -38,9 +39,11 @@
3839

3940
@property NSString *title;
4041
@property(nonatomic, readonly) NSArray *sortedChildren;
41-
@property(assign) BOOL isGroupItem, isUncollapsible;
42+
@property(assign) BOOL isGroupItem, isUncollapsible, isExpanded;
4243
@property PBGitRevSpecifier *revSpecifier;
4344
@property (assign)PBSourceViewItem *parent;
45+
@property(readonly) NSString *iconName;
4446
@property(readonly) NSImage *icon;
47+
@property(readonly) NSImage *highlightedIcon;
4548

4649
@end

Classes/Views/PBSourceViewItem.m

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ @interface PBSourceViewItem ()
1818

1919
@implementation PBSourceViewItem
2020

21-
@synthesize parent, isGroupItem, revSpecifier, isUncollapsible;
22-
@dynamic icon;
21+
@synthesize parent, isGroupItem, revSpecifier, isUncollapsible, isExpanded;
22+
@dynamic icon, highlightedIcon;
2323

2424
- (id)init
2525
{
@@ -107,8 +107,10 @@ - (void)addRev:(PBGitRevSpecifier *)theRevSpecifier toPath:(NSArray *)path
107107
if (!node) {
108108
if ([firstTitle isEqualToString:[[theRevSpecifier ref] remoteName]])
109109
node = [PBGitSVRemoteItem remoteItemWithTitle:firstTitle];
110-
else
110+
else {
111111
node = [PBGitSVFolderItem folderItemWithTitle:firstTitle];
112+
node.isExpanded = [[self title] isEqualToString:@"BRANCHES"];
113+
}
112114
[self addChild:node];
113115
}
114116

@@ -130,7 +132,20 @@ - (PBSourceViewItem *)findRev:(PBGitRevSpecifier *)rev
130132

131133
- (NSImage *) icon
132134
{
133-
return nil;
135+
return [self iconNamed:[self iconName]];
136+
}
137+
138+
- (NSImage *) highlightedIcon
139+
{
140+
return [self iconNamed:[[self iconName] stringByAppendingString:@"Highlighted"]];
141+
}
142+
143+
- (NSImage *)iconNamed:(NSString*)name
144+
{
145+
NSImage* iconImage = [NSImage imageNamed:name];
146+
[iconImage setSize:NSMakeSize(16,16)];
147+
[iconImage setCacheMode:NSImageCacheAlways];
148+
return iconImage;
134149
}
135150

136151
- (NSString *)title

Classes/git/PBGitSVBranchItem.m

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,9 @@ + (id)branchItemWithRevSpec:(PBGitRevSpecifier *)revSpecifier
2121
}
2222

2323

24-
- (NSImage *) icon
24+
- (NSString*) iconName
2525
{
26-
static NSImage *branchImage = nil;
27-
if (!branchImage)
28-
branchImage = [NSImage imageNamed:@"Branch"];
29-
30-
return branchImage;
26+
return @"Branch";
3127
}
3228

3329
@end

Classes/git/PBGitSVFolderItem.m

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,25 +11,16 @@
1111

1212
@implementation PBGitSVFolderItem
1313

14-
1514
+ (id)folderItemWithTitle:(NSString *)title
1615
{
1716
PBGitSVFolderItem *item = [self itemWithTitle:title];
1817

1918
return item;
2019
}
2120

22-
23-
- (NSImage *) icon
21+
- (NSString*) iconName
2422
{
25-
static NSImage *folderImage = nil;
26-
if (!folderImage) {
27-
//folderImage = [[NSWorkspace sharedWorkspace] iconForFileType:NSFileTypeForHFSTypeCode(kGenericFolderIcon)];
28-
folderImage = [NSImage imageNamed:@"Folder"];
29-
[folderImage setSize:NSMakeSize(16,16)];
30-
}
31-
32-
return folderImage;
23+
return (self.isExpanded) ? @"Folder" : @"FolderClosed";
3324
}
3425

3526
@end

Classes/git/PBGitSVOtherRevItem.m

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,9 @@ + (id)otherItemWithRevSpec:(PBGitRevSpecifier *)revSpecifier
2121
return item;
2222
}
2323

24-
25-
- (NSImage *) icon
24+
- (NSString*) iconName
2625
{
27-
static NSImage *otherRevImage = nil;
28-
if (!otherRevImage)
29-
otherRevImage = [NSImage imageNamed:@"Branch"];
30-
31-
return otherRevImage;
26+
return @"Branch";
3227
}
3328

3429
@end

Classes/git/PBGitSVRemoteBranchItem.m

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,9 @@ + (id)remoteBranchItemWithRevSpec:(PBGitRevSpecifier *)revSpecifier
2020
return item;
2121
}
2222

23-
24-
- (NSImage *) icon
23+
- (NSString*) iconName
2524
{
26-
static NSImage *remoteBranchImage = nil;
27-
if (!remoteBranchImage)
28-
remoteBranchImage = [NSImage imageNamed:@"RemoteBranch"];
29-
30-
return remoteBranchImage;
25+
return @"RemoteBranch";
3126
}
3227

3328
@end

Classes/git/PBGitSVRemoteItem.m

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,11 @@ + (id)remoteItemWithTitle:(NSString *)title
2020
return item;
2121
}
2222

23-
24-
- (NSImage *) icon
23+
- (NSString*) iconName
2524
{
26-
static NSImage *networkImage = nil;
27-
if (!networkImage) {
28-
networkImage = [NSImage imageNamed:@"Remote"];
29-
[networkImage setSize:NSMakeSize(16,16)];
30-
}
31-
32-
return networkImage;
25+
return @"Remote";
3326
}
3427

35-
3628
- (PBGitRef *) ref
3729
{
3830
return [PBGitRef refFromString:[kGitXRemoteRefPrefix stringByAppendingString:self.title]];

Classes/git/PBGitSVStageItem.m

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,9 @@ + (id) stageItem
2020
}
2121

2222

23-
- (NSImage *) icon
23+
- (NSString*) iconName
2424
{
25-
static NSImage *stageImage = nil;
26-
if (!stageImage)
27-
stageImage = [NSImage imageNamed:@"StageView"];
28-
29-
return stageImage;
25+
return @"StageView";
3026
}
3127

3228
@end

Classes/git/PBGitSVTagItem.m

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,9 @@ + (id)tagItemWithRevSpec:(PBGitRevSpecifier *)revSpecifier
2020
return item;
2121
}
2222

23-
24-
- (NSImage *) icon
23+
- (NSString*) iconName
2524
{
26-
static NSImage *tagImage = nil;
27-
if (!tagImage)
28-
tagImage = [NSImage imageNamed:@"Tag.png"];
29-
30-
return tagImage;
25+
return @"Tag";
3126
}
3227

3328
@end

0 commit comments

Comments
 (0)