[#9 state:port] implemented drag&drop for directories on the cocoa side.

--HG--
extra : convert_revision : svn%3Ac306627e-7827-47d3-bdf0-9a457c9553a1/trunk%40222
This commit is contained in:
hsoft 2009-10-28 15:48:19 +00:00
parent d4d8917956
commit c936f9ccc6
3 changed files with 96 additions and 29 deletions

View File

@ -11,10 +11,19 @@ http://www.hardcoded.net/licenses/hs_license
#import "Outline.h" #import "Outline.h"
#import "PyDupeGuru.h" #import "PyDupeGuru.h"
@interface DirectoryOutline : OutlineView
{
}
@end
@protocol DirectoryOutlineDelegate
- (void)outlineView:(NSOutlineView *)outlineView addDirectory:(NSString *)directory;
@end
@interface DirectoryPanelBase : NSWindowController @interface DirectoryPanelBase : NSWindowController
{ {
IBOutlet NSPopUpButton *addButtonPopUp; IBOutlet NSPopUpButton *addButtonPopUp;
IBOutlet OutlineView *directories; IBOutlet DirectoryOutline *directories;
IBOutlet NSButton *removeButton; IBOutlet NSButton *removeButton;
PyDupeGuruBase *_py; PyDupeGuruBase *_py;

View File

@ -11,6 +11,48 @@ http://www.hardcoded.net/licenses/hs_license
#import "Utils.h" #import "Utils.h"
#import "AppDelegate.h" #import "AppDelegate.h"
@implementation DirectoryOutline
- (void)doInit
{
[super doInit];
[self registerForDraggedTypes:[NSArray arrayWithObject:NSFilenamesPboardType]];
}
- (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 *filenames = [pboard propertyListForType:NSFilenamesPboardType];
if (!(sourceDragMask & NSDragOperationLink))
return NO;
if (([self delegate] == nil) || (![[self delegate] respondsToSelector:@selector(outlineView:addDirectory:)]))
return NO;
for (NSString *filename in filenames)
[[self delegate] outlineView:self addDirectory:filename];
}
return YES;
}
@end
@implementation DirectoryPanelBase @implementation DirectoryPanelBase
- (id)initWithParentApp:(id)aParentApp - (id)initWithParentApp:(id)aParentApp
{ {
@ -104,10 +146,7 @@ http://www.hardcoded.net/licenses/hs_license
- (IBAction)toggleVisible:(id)sender - (IBAction)toggleVisible:(id)sender
{ {
if ([[self window] isVisible]) [[self window] makeKeyAndOrderFront:nil];
[[self window] close];
else
[[self window] makeKeyAndOrderFront:nil];
} }
/* Public */ /* Public */
@ -154,6 +193,11 @@ http://www.hardcoded.net/licenses/hs_license
/* Delegate */ /* Delegate */
- (void)outlineView:(NSOutlineView *)outlineView addDirectory:(NSString *)directory
{
[self addDirectory:directory];
}
- (void)outlineView:(NSOutlineView *)outlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item - (void)outlineView:(NSOutlineView *)outlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item
{ {
OVNode *node = item; OVNode *node = item;

View File

@ -12,7 +12,7 @@
</object> </object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<integer value="6"/> <integer value="10"/>
</object> </object>
<object class="NSArray" key="IBDocument.PluginDependencies"> <object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
@ -39,19 +39,17 @@
<string key="NSClassName">NSApplication</string> <string key="NSClassName">NSApplication</string>
</object> </object>
<object class="NSWindowTemplate" id="970147395"> <object class="NSWindowTemplate" id="970147395">
<int key="NSWindowStyleMask">27</int> <int key="NSWindowStyleMask">11</int>
<int key="NSWindowBacking">2</int> <int key="NSWindowBacking">2</int>
<string key="NSWindowRect">{{387, 290}, {369, 269}}</string> <string key="NSWindowRect">{{387, 290}, {369, 269}}</string>
<int key="NSWTFlags">-260571136</int> <int key="NSWTFlags">1886913536</int>
<string key="NSWindowTitle">Directories</string> <string key="NSWindowTitle">Directories</string>
<object class="NSMutableString" key="NSWindowClass"> <string key="NSWindowClass">NSWindow</string>
<characters key="NS.bytes">NSPanel</characters>
</object>
<object class="NSMutableString" key="NSViewClass"> <object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters> <characters key="NS.bytes">View</characters>
</object> </object>
<string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string> <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{213, 113}</string> <string key="NSWindowContentMinSize">{369, 269}</string>
<object class="NSView" key="NSWindowView" id="53314480"> <object class="NSView" key="NSWindowView" id="53314480">
<reference key="NSNextResponder"/> <reference key="NSNextResponder"/>
<int key="NSvFlags">256</int> <int key="NSvFlags">256</int>
@ -404,7 +402,7 @@
<reference key="NSSuperview"/> <reference key="NSSuperview"/>
</object> </object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string> <string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
<string key="NSMinSize">{213, 129}</string> <string key="NSMinSize">{369, 291}</string>
<string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string> <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
</object> </object>
</object> </object>
@ -731,6 +729,11 @@
<string>18.ImportedFromIB2</string> <string>18.ImportedFromIB2</string>
<string>31.IBPluginDependency</string> <string>31.IBPluginDependency</string>
<string>31.ImportedFromIB2</string> <string>31.ImportedFromIB2</string>
<string>45.IBPluginDependency</string>
<string>46.IBPluginDependency</string>
<string>47.IBPluginDependency</string>
<string>48.IBPluginDependency</string>
<string>49.IBPluginDependency</string>
<string>49.IBShouldRemoveOnLegacySave</string> <string>49.IBShouldRemoveOnLegacySave</string>
<string>5.IBEditorWindowLastContentRect</string> <string>5.IBEditorWindowLastContentRect</string>
<string>5.IBPluginDependency</string> <string>5.IBPluginDependency</string>
@ -738,8 +741,12 @@
<string>5.ImportedFromIB2</string> <string>5.ImportedFromIB2</string>
<string>5.windowTemplate.hasMinSize</string> <string>5.windowTemplate.hasMinSize</string>
<string>5.windowTemplate.minSize</string> <string>5.windowTemplate.minSize</string>
<string>50.IBPluginDependency</string>
<string>51.IBPluginDependency</string>
<string>51.IBShouldRemoveOnLegacySave</string> <string>51.IBShouldRemoveOnLegacySave</string>
<string>52.IBPluginDependency</string>
<string>52.IBShouldRemoveOnLegacySave</string> <string>52.IBShouldRemoveOnLegacySave</string>
<string>53.IBPluginDependency</string>
<string>53.IBShouldRemoveOnLegacySave</string> <string>53.IBShouldRemoveOnLegacySave</string>
<string>6.IBPluginDependency</string> <string>6.IBPluginDependency</string>
<string>6.ImportedFromIB2</string> <string>6.ImportedFromIB2</string>
@ -756,7 +763,7 @@
<boolean value="YES"/> <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES"/> <boolean value="YES"/>
<string>OutlineView</string> <string>DirectoryOutline</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES"/> <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@ -771,15 +778,24 @@
<boolean value="YES"/> <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES"/> <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES"/> <boolean value="YES"/>
<string>{{88, 571}, {369, 269}}</string> <string>{{88, 571}, {369, 269}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>{{88, 571}, {369, 269}}</string> <string>{{88, 571}, {369, 269}}</string>
<boolean value="YES"/> <boolean value="YES"/>
<boolean value="YES"/> <boolean value="YES"/>
<string>{213, 113}</string> <string>{369, 269}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES"/> <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES"/> <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES"/> <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES"/> <boolean value="YES"/>
@ -812,6 +828,14 @@
<object class="IBClassDescriber" key="IBDocument.Classes"> <object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions"> <object class="NSMutableArray" key="referencedPartialClassDescriptions">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">DirectoryOutline</string>
<string key="superclassName">OutlineView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="462913745">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">dgbase/DirectoryPanel.h</string>
</object>
</object>
<object class="IBPartialClassDescription"> <object class="IBPartialClassDescription">
<string key="className">DirectoryPanel</string> <string key="className">DirectoryPanel</string>
<string key="superclassName">DirectoryPanelBase</string> <string key="superclassName">DirectoryPanelBase</string>
@ -895,17 +919,15 @@
<object class="NSMutableArray" key="dict.values"> <object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<string>NSPopUpButton</string> <string>NSPopUpButton</string>
<string>OutlineView</string> <string>DirectoryOutline</string>
<string>NSButton</string> <string>NSButton</string>
</object> </object>
</object> </object>
<object class="IBClassDescriptionSource" key="sourceIdentifier"> <reference key="sourceIdentifier" ref="462913745"/>
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">dgbase/DirectoryPanel.h</string>
</object>
</object> </object>
<object class="IBPartialClassDescription"> <object class="IBPartialClassDescription">
<string key="className">FirstResponder</string> <string key="className">FirstResponder</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier"> <object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBUserSource</string> <string key="majorKey">IBUserSource</string>
<string key="minorKey"/> <string key="minorKey"/>
@ -1328,14 +1350,6 @@
<string key="superclassName">NSTableView</string> <string key="superclassName">NSTableView</string>
<reference key="sourceIdentifier" ref="556143282"/> <reference key="sourceIdentifier" ref="556143282"/>
</object> </object>
<object class="IBPartialClassDescription">
<string key="className">NSPanel</string>
<string key="superclassName">NSWindow</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSPanel.h</string>
</object>
</object>
<object class="IBPartialClassDescription"> <object class="IBPartialClassDescription">
<string key="className">NSPopUpButton</string> <string key="className">NSPopUpButton</string>
<string key="superclassName">NSButton</string> <string key="superclassName">NSButton</string>
@ -1485,7 +1499,7 @@
<integer value="3000" key="NS.object.0"/> <integer value="3000" key="NS.object.0"/>
</object> </object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool> <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<string key="IBDocument.LastKnownRelativeProjectPath">../dupeguru.xcodeproj</string> <string key="IBDocument.LastKnownRelativeProjectPath">../../dupeguru.xcodeproj</string>
<int key="IBDocument.defaultPropertyAccessControl">3</int> <int key="IBDocument.defaultPropertyAccessControl">3</int>
</data> </data>
</archive> </archive>