You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
- /*
- Copyright 2015 Hardcoded Software (http://www.hardcoded.net)
-
- This software is licensed under the "GPLv3" License as described in the "LICENSE" file,
- which should be included with this package. The terms are also available at
- http://www.gnu.org/licenses/gpl-3.0.html
- */
-
- #import "DirectoryOutline.h"
-
- @implementation DirectoryOutline
- - (id)initWithPyRef:(PyObject *)aPyRef outlineView:(HSOutlineView *)aOutlineView
- {
- self = [super initWithPyRef:aPyRef wrapperClass:[PyDirectoryOutline class]
- callbackClassName:@"DirectoryOutlineView" view:aOutlineView];
- [[self view] registerForDraggedTypes:[NSArray arrayWithObject:NSFilenamesPboardType]];
- return self;
- }
-
- - (PyDirectoryOutline *)model
- {
- return (PyDirectoryOutline *)model;
- }
-
- /* Public */
- - (void)selectAll
- {
- [[self model] selectAll];
- }
-
- /* Delegate */
- - (NSDragOperation)outlineView:(NSOutlineView *)outlineView validateDrop:(id < NSDraggingInfo >)info proposedItem:(id)item proposedChildIndex:(NSInteger)index
- {
- NSPasteboard *pboard;
- NSDragOperation sourceDragMask;
- sourceDragMask = [info draggingSourceOperationMask];
- pboard = [info draggingPasteboard];
- if ([[pboard types] containsObject:NSFilenamesPboardType]) {
- if (sourceDragMask & NSDragOperationLink)
- return NSDragOperationLink;
- }
- return NSDragOperationNone;
- }
-
- - (BOOL)outlineView:(NSOutlineView *)outlineView acceptDrop:(id < NSDraggingInfo >)info item:(id)item childIndex:(NSInteger)index
- {
- NSPasteboard *pboard;
- NSDragOperation sourceDragMask;
- sourceDragMask = [info draggingSourceOperationMask];
- pboard = [info draggingPasteboard];
- if ([[pboard types] containsObject:NSFilenamesPboardType]) {
- NSArray *foldernames = [pboard propertyListForType:NSFilenamesPboardType];
- if (!(sourceDragMask & NSDragOperationLink))
- return NO;
- for (NSString *foldername in foldernames) {
- [[self model] addDirectory:foldername];
- }
- NSDictionary *userInfo = [NSDictionary dictionaryWithObject:foldernames forKey:@"foldernames"];
- [[NSNotificationCenter defaultCenter] postNotificationName:DGAddedFoldersNotification
- object:self userInfo:userInfo];
- }
- return YES;
- }
-
- - (void)outlineView:(NSOutlineView *)aOutlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item
- {
- if ([cell isKindOfClass:[NSTextFieldCell class]]) {
- NSTextFieldCell *textCell = cell;
- NSIndexPath *path = item;
- BOOL selected = [path isEqualTo:[[self view] selectedPath]];
- if (selected) {
- [textCell setTextColor:[NSColor blackColor]];
- return;
- }
- NSInteger state = [self intProperty:@"state" valueAtPath:path];
- if (state == 1) {
- [textCell setTextColor:[NSColor blueColor]];
- }
- else if (state == 2) {
- [textCell setTextColor:[NSColor redColor]];
- }
- else {
- [textCell setTextColor:[NSColor blackColor]];
- }
- }
- }
- @end
|