diff options
| author | Teddy Wing | 2020-10-10 18:53:12 +0200 |
|---|---|---|
| committer | Teddy Wing | 2020-10-10 18:53:12 +0200 |
| commit | 660a772195dfc13168cf9c797802462eb98938c0 (patch) | |
| tree | a73532d025997533a69a7a8e2097f7484abe72da | |
| parent | 4bfa7818879c5c106a91ee087e200e4ce7e08d5a (diff) | |
| download | Drop-Serve-660a772195dfc13168cf9c797802462eb98938c0.tar.bz2 | |
Add drag and drop area
Allow dragging and dropping files.
Based on:
- https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/DragandDrop/Tasks/acceptingdrags.html#//apple_ref/doc/uid/20000993-BABHHIHC
- https://developer.apple.com/library/archive/samplecode/CocoaDragAndDrop/Introduction/Intro.html#//apple_ref/doc/uid/DTS10000384-Intro-DontLinkElementID_2
| -rw-r--r-- | Drop Serve.xcodeproj/project.pbxproj | 6 | ||||
| -rw-r--r-- | Drop Serve/AppDelegate.h | 2 | ||||
| -rw-r--r-- | Drop Serve/AppDelegate.m | 1 | ||||
| -rw-r--r-- | Drop Serve/DropZone.h | 13 | ||||
| -rw-r--r-- | Drop Serve/DropZone.m | 53 | ||||
| -rw-r--r-- | Drop Serve/en.lproj/MainMenu.xib | 162 |
6 files changed, 141 insertions, 96 deletions
diff --git a/Drop Serve.xcodeproj/project.pbxproj b/Drop Serve.xcodeproj/project.pbxproj index 0087958..e9641f7 100644 --- a/Drop Serve.xcodeproj/project.pbxproj +++ b/Drop Serve.xcodeproj/project.pbxproj @@ -13,6 +13,7 @@ D1CA9B09253211050013B767 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = D1CA9B07253211050013B767 /* Credits.rtf */; }; D1CA9B0C253211050013B767 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = D1CA9B0B253211050013B767 /* AppDelegate.m */; }; D1CA9B0F253211050013B767 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = D1CA9B0D253211050013B767 /* MainMenu.xib */; }; + D1CA9B17253215150013B767 /* DropZone.m in Sources */ = {isa = PBXBuildFile; fileRef = D1CA9B16253215150013B767 /* DropZone.m */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -29,6 +30,8 @@ D1CA9B0A253211050013B767 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; }; D1CA9B0B253211050013B767 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; }; D1CA9B0E253211050013B767 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = "<group>"; }; + D1CA9B15253215150013B767 /* DropZone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DropZone.h; sourceTree = "<group>"; }; + D1CA9B16253215150013B767 /* DropZone.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DropZone.m; sourceTree = "<group>"; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -84,6 +87,8 @@ children = ( D1CA9B0A253211050013B767 /* AppDelegate.h */, D1CA9B0B253211050013B767 /* AppDelegate.m */, + D1CA9B15253215150013B767 /* DropZone.h */, + D1CA9B16253215150013B767 /* DropZone.m */, D1CA9B0D253211050013B767 /* MainMenu.xib */, D1CA9AFF253211040013B767 /* Supporting Files */, ); @@ -168,6 +173,7 @@ files = ( D1CA9B05253211050013B767 /* main.m in Sources */, D1CA9B0C253211050013B767 /* AppDelegate.m in Sources */, + D1CA9B17253215150013B767 /* DropZone.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Drop Serve/AppDelegate.h b/Drop Serve/AppDelegate.h index 4dcd68c..8fc1f52 100644 --- a/Drop Serve/AppDelegate.h +++ b/Drop Serve/AppDelegate.h @@ -8,6 +8,8 @@ #import <Cocoa/Cocoa.h> +#import "DropZone.h" + @interface AppDelegate : NSObject <NSApplicationDelegate> @property (assign) IBOutlet NSWindow *window; diff --git a/Drop Serve/AppDelegate.m b/Drop Serve/AppDelegate.m index 1976f76..f92f421 100644 --- a/Drop Serve/AppDelegate.m +++ b/Drop Serve/AppDelegate.m @@ -17,7 +17,6 @@ - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { - // Insert code here to initialize your application } @end diff --git a/Drop Serve/DropZone.h b/Drop Serve/DropZone.h new file mode 100644 index 0000000..4b45789 --- /dev/null +++ b/Drop Serve/DropZone.h @@ -0,0 +1,13 @@ +// +// DropZone.h +// Drop Serve +// +// Created by TW on 10/10/20. +// Copyright (c) 2020 TW. All rights reserved. +// + +#import <Foundation/Foundation.h> + +@interface DropZone : NSBox <NSDraggingDestination> + +@end diff --git a/Drop Serve/DropZone.m b/Drop Serve/DropZone.m new file mode 100644 index 0000000..185ac28 --- /dev/null +++ b/Drop Serve/DropZone.m @@ -0,0 +1,53 @@ +// +// DropZone.m +// Drop Serve +// +// Created by TW on 10/10/20. +// Copyright (c) 2020 TW. All rights reserved. +// + +#import "DropZone.h" + +@implementation DropZone + +- (id)initWithCoder:(NSCoder *)coder +{ + self = [super initWithCoder:coder]; + if (self) { + [self registerForDraggedTypes:[NSArray arrayWithObjects: + NSFilenamesPboardType, nil]]; + } + return self; +} + +- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender { + NSPasteboard *pboard; + NSDragOperation sourceDragMask; + + sourceDragMask = [sender draggingSourceOperationMask]; + pboard = [sender draggingPasteboard]; + + if ([[pboard types] containsObject:NSFilenamesPboardType]) { + return NSDragOperationLink; + } + + return NSDragOperationNone; +} + +- (BOOL)performDragOperation:(id <NSDraggingInfo>)sender { + NSPasteboard *pboard; + NSDragOperation sourceDragMask; + + sourceDragMask = [sender draggingSourceOperationMask]; + pboard = [sender draggingPasteboard]; + + if ([[pboard types] containsObject:NSFilenamesPboardType]) { + NSArray *files = [pboard propertyListForType:NSFilenamesPboardType]; + + NSLog(@"%@", files); + } + + return YES; +} + +@end diff --git a/Drop Serve/en.lproj/MainMenu.xib b/Drop Serve/en.lproj/MainMenu.xib index d456783..5727e8c 100644 --- a/Drop Serve/en.lproj/MainMenu.xib +++ b/Drop Serve/en.lproj/MainMenu.xib @@ -1308,23 +1308,24 @@ <reference key="NSNextResponder"/> <int key="NSvFlags">256</int> <array class="NSMutableArray" key="NSSubviews"> - <object class="NSBox" id="807763375"> + <object class="NSBox" id="941204981"> <reference key="NSNextResponder" ref="439893737"/> <int key="NSvFlags">12</int> <array class="NSMutableArray" key="NSSubviews"> - <object class="NSView" id="150009024"> - <reference key="NSNextResponder" ref="807763375"/> + <object class="NSView" id="113735635"> + <reference key="NSNextResponder" ref="941204981"/> <int key="NSvFlags">274</int> <array class="NSMutableArray" key="NSSubviews"> - <object class="NSTextField" id="190066575"> - <reference key="NSNextResponder" ref="150009024"/> + <object class="NSTextField" id="916435079"> + <reference key="NSNextResponder" ref="113735635"/> <int key="NSvFlags">268</int> <string key="NSFrame">{{93, 122}, {120, 17}}</string> - <reference key="NSSuperview" ref="150009024"/> + <reference key="NSSuperview" ref="113735635"/> <reference key="NSWindow"/> + <reference key="NSNextKeyView"/> <string key="NSReuseIdentifierKey">_NS:1535</string> <bool key="NSEnabled">YES</bool> - <object class="NSTextFieldCell" key="NSCell" id="429212681"> + <object class="NSTextFieldCell" key="NSCell" id="887911743"> <int key="NSCellFlags">68157504</int> <int key="NSCellFlags2">272630784</int> <string key="NSContents">Drop a folder here</string> @@ -1334,7 +1335,7 @@ <int key="NSfFlags">1044</int> </object> <string key="NSCellIdentifier">_NS:1535</string> - <reference key="NSControlView" ref="190066575"/> + <reference key="NSControlView" ref="916435079"/> <object class="NSColor" key="NSBackgroundColor"> <int key="NSColorSpace">6</int> <string key="NSCatalogName">System</string> @@ -1358,16 +1359,16 @@ </object> </array> <string key="NSFrame">{{1, 1}, {306, 259}}</string> - <reference key="NSSuperview" ref="807763375"/> + <reference key="NSSuperview" ref="941204981"/> <reference key="NSWindow"/> - <reference key="NSNextKeyView" ref="190066575"/> + <reference key="NSNextKeyView" ref="916435079"/> <string key="NSReuseIdentifierKey">_NS:11</string> </object> </array> <string key="NSFrame">{{17, 81}, {308, 261}}</string> <reference key="NSSuperview" ref="439893737"/> <reference key="NSWindow"/> - <reference key="NSNextKeyView" ref="150009024"/> + <reference key="NSNextKeyView" ref="113735635"/> <string key="NSReuseIdentifierKey">_NS:9</string> <string key="NSOffsets">{0, 0}</string> <object class="NSTextFieldCell" key="NSTitleCell"> @@ -1393,7 +1394,7 @@ <bytes key="NSWhite">MCAwLjgwMDAwMDAxMTkAA</bytes> </object> </object> - <reference key="NSContentView" ref="150009024"/> + <reference key="NSContentView" ref="113735635"/> <int key="NSBorderType">1</int> <int key="NSBoxType">0</int> <int key="NSTitlePosition">0</int> @@ -1403,7 +1404,7 @@ <string key="NSFrameSize">{342, 360}</string> <reference key="NSSuperview"/> <reference key="NSWindow"/> - <reference key="NSNextKeyView" ref="807763375"/> + <reference key="NSNextKeyView" ref="941204981"/> </object> <string key="NSScreenRect">{{0, 0}, {1440, 878}}</string> <string key="NSMinSize">{342, 382}</string> @@ -2624,11 +2625,11 @@ <int key="objectID">372</int> <reference key="object" ref="439893737"/> <array class="NSMutableArray" key="children"> - <object class="IBNSLayoutConstraint" id="636326439"> + <object class="IBNSLayoutConstraint" id="420682529"> <reference key="firstItem" ref="439893737"/> <int key="firstAttribute">4</int> <int key="relation">0</int> - <reference key="secondItem" ref="807763375"/> + <reference key="secondItem" ref="941204981"/> <int key="secondAttribute">4</int> <float key="multiplier">1</float> <object class="IBLayoutConstant" key="constant"> @@ -2640,11 +2641,11 @@ <float key="scoringTypeFloat">9</float> <int key="contentType">3</int> </object> - <object class="IBNSLayoutConstraint" id="230520396"> + <object class="IBNSLayoutConstraint" id="69769905"> <reference key="firstItem" ref="439893737"/> <int key="firstAttribute">6</int> <int key="relation">0</int> - <reference key="secondItem" ref="807763375"/> + <reference key="secondItem" ref="941204981"/> <int key="secondAttribute">6</int> <float key="multiplier">1</float> <object class="IBNSLayoutSymbolicConstant" key="constant"> @@ -2656,8 +2657,8 @@ <float key="scoringTypeFloat">29</float> <int key="contentType">3</int> </object> - <object class="IBNSLayoutConstraint" id="956437138"> - <reference key="firstItem" ref="807763375"/> + <object class="IBNSLayoutConstraint" id="766936688"> + <reference key="firstItem" ref="941204981"/> <int key="firstAttribute">3</int> <int key="relation">0</int> <reference key="secondItem" ref="439893737"/> @@ -2672,8 +2673,8 @@ <float key="scoringTypeFloat">29</float> <int key="contentType">3</int> </object> - <object class="IBNSLayoutConstraint" id="1037949553"> - <reference key="firstItem" ref="807763375"/> + <object class="IBNSLayoutConstraint" id="994791410"> + <reference key="firstItem" ref="941204981"/> <int key="firstAttribute">5</int> <int key="relation">0</int> <reference key="secondItem" ref="439893737"/> @@ -2688,7 +2689,7 @@ <float key="scoringTypeFloat">29</float> <int key="contentType">3</int> </object> - <reference ref="807763375"/> + <reference ref="941204981"/> </array> <reference key="parent" ref="972006081"/> </object> @@ -3167,37 +3168,37 @@ </object> <object class="IBObjectRecord"> <int key="objectID">540</int> - <reference key="object" ref="807763375"/> + <reference key="object" ref="941204981"/> <array class="NSMutableArray" key="children"> - <reference ref="190066575"/> - <object class="IBNSLayoutConstraint" id="195853797"> - <reference key="firstItem" ref="190066575"/> + <reference ref="916435079"/> + <object class="IBNSLayoutConstraint" id="95578652"> + <reference key="firstItem" ref="916435079"/> <int key="firstAttribute">3</int> <int key="relation">0</int> - <reference key="secondItem" ref="807763375"/> + <reference key="secondItem" ref="941204981"/> <int key="secondAttribute">3</int> <float key="multiplier">1</float> <object class="IBLayoutConstant" key="constant"> <double key="value">119</double> </object> <float key="priority">1000</float> - <reference key="containingView" ref="807763375"/> + <reference key="containingView" ref="941204981"/> <int key="scoringType">3</int> <float key="scoringTypeFloat">9</float> <int key="contentType">3</int> </object> - <object class="IBNSLayoutConstraint" id="81541816"> - <reference key="firstItem" ref="190066575"/> + <object class="IBNSLayoutConstraint" id="264214897"> + <reference key="firstItem" ref="916435079"/> <int key="firstAttribute">9</int> <int key="relation">0</int> - <reference key="secondItem" ref="807763375"/> + <reference key="secondItem" ref="941204981"/> <int key="secondAttribute">9</int> <float key="multiplier">1</float> <object class="IBLayoutConstant" key="constant"> <double key="value">0.0</double> </object> <float key="priority">1000</float> - <reference key="containingView" ref="807763375"/> + <reference key="containingView" ref="941204981"/> <int key="scoringType">5</int> <float key="scoringTypeFloat">22</float> <int key="contentType">2</int> @@ -3207,46 +3208,46 @@ </object> <object class="IBObjectRecord"> <int key="objectID">547</int> - <reference key="object" ref="1037949553"/> + <reference key="object" ref="994791410"/> <reference key="parent" ref="439893737"/> </object> <object class="IBObjectRecord"> <int key="objectID">548</int> - <reference key="object" ref="956437138"/> + <reference key="object" ref="766936688"/> <reference key="parent" ref="439893737"/> </object> <object class="IBObjectRecord"> <int key="objectID">551</int> - <reference key="object" ref="230520396"/> + <reference key="object" ref="69769905"/> <reference key="parent" ref="439893737"/> </object> <object class="IBObjectRecord"> <int key="objectID">552</int> - <reference key="object" ref="636326439"/> + <reference key="object" ref="420682529"/> <reference key="parent" ref="439893737"/> </object> <object class="IBObjectRecord"> <int key="objectID">553</int> - <reference key="object" ref="190066575"/> + <reference key="object" ref="916435079"/> <array class="NSMutableArray" key="children"> - <reference ref="429212681"/> + <reference ref="887911743"/> </array> - <reference key="parent" ref="807763375"/> + <reference key="parent" ref="941204981"/> </object> <object class="IBObjectRecord"> <int key="objectID">554</int> - <reference key="object" ref="429212681"/> - <reference key="parent" ref="190066575"/> + <reference key="object" ref="887911743"/> + <reference key="parent" ref="916435079"/> </object> <object class="IBObjectRecord"> <int key="objectID">555</int> - <reference key="object" ref="81541816"/> - <reference key="parent" ref="807763375"/> + <reference key="object" ref="264214897"/> + <reference key="parent" ref="941204981"/> </object> <object class="IBObjectRecord"> <int key="objectID">556</int> - <reference key="object" ref="195853797"/> - <reference key="parent" ref="807763375"/> + <reference key="object" ref="95578652"/> + <reference key="parent" ref="941204981"/> </object> </array> </object> @@ -3315,10 +3316,10 @@ <string key="371.IBWindowTemplateEditedContentRect">{{380, 496}, {480, 360}}</string> <integer value="1" key="371.NSWindowTemplate.visibleAtLaunch"/> <array class="NSMutableArray" key="372.IBNSViewMetadataConstraints"> - <reference ref="1037949553"/> - <reference ref="956437138"/> - <reference ref="230520396"/> - <reference ref="636326439"/> + <reference ref="994791410"/> + <reference ref="766936688"/> + <reference ref="69769905"/> + <reference ref="420682529"/> </array> <string key="372.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> <string key="375.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> @@ -3397,9 +3398,10 @@ <string key="516.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> <string key="517.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> <string key="534.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="540.CustomClassName">DropZone</string> <array key="540.IBNSViewMetadataConstraints"> - <reference ref="81541816"/> - <reference ref="195853797"/> + <reference ref="264214897"/> + <reference ref="95578652"/> </array> <boolean value="NO" key="540.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/> <string key="540.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> @@ -3438,61 +3440,31 @@ <object class="IBPartialClassDescription"> <string key="className">AppDelegate</string> <string key="superclassName">NSObject</string> - <object class="NSMutableDictionary" key="outlets"> - <string key="NS.key.0">window</string> - <string key="NS.object.0">NSWindow</string> - </object> - <object class="NSMutableDictionary" key="toOneOutletInfosByName"> - <string key="NS.key.0">window</string> - <object class="IBToOneOutletInfo" key="NS.object.0"> + <dictionary class="NSMutableDictionary" key="outlets"> + <string key="_dropzone">DropZone</string> + <string key="window">NSWindow</string> + </dictionary> + <dictionary class="NSMutableDictionary" key="toOneOutletInfosByName"> + <object class="IBToOneOutletInfo" key="_dropzone"> + <string key="name">_dropzone</string> + <string key="candidateClassName">DropZone</string> + </object> + <object class="IBToOneOutletInfo" key="window"> <string key="name">window</string> <string key="candidateClassName">NSWindow</string> </object> - </object> + </dictionary> <object class="IBClassDescriptionSource" key="sourceIdentifier"> <string key="majorKey">IBProjectSource</string> <string key="minorKey">./Classes/AppDelegate.h</string> </object> </object> <object class="IBPartialClassDescription"> - <string key="className">NSDocument</string> - <dictionary class="NSMutableDictionary" key="actions"> - <string key="printDocument:">id</string> - <string key="revertDocumentToSaved:">id</string> - <string key="runPageLayout:">id</string> - <string key="saveDocument:">id</string> - <string key="saveDocumentAs:">id</string> - <string key="saveDocumentTo:">id</string> - </dictionary> - <dictionary class="NSMutableDictionary" key="actionInfosByName"> - <object class="IBActionInfo" key="printDocument:"> - <string key="name">printDocument:</string> - <string key="candidateClassName">id</string> - </object> - <object class="IBActionInfo" key="revertDocumentToSaved:"> - <string key="name">revertDocumentToSaved:</string> - <string key="candidateClassName">id</string> - </object> - <object class="IBActionInfo" key="runPageLayout:"> - <string key="name">runPageLayout:</string> - <string key="candidateClassName">id</string> - </object> - <object class="IBActionInfo" key="saveDocument:"> - <string key="name">saveDocument:</string> - <string key="candidateClassName">id</string> - </object> - <object class="IBActionInfo" key="saveDocumentAs:"> - <string key="name">saveDocumentAs:</string> - <string key="candidateClassName">id</string> - </object> - <object class="IBActionInfo" key="saveDocumentTo:"> - <string key="name">saveDocumentTo:</string> - <string key="candidateClassName">id</string> - </object> - </dictionary> + <string key="className">DropZone</string> + <string key="superclassName">NSBox</string> <object class="IBClassDescriptionSource" key="sourceIdentifier"> <string key="majorKey">IBProjectSource</string> - <string key="minorKey">./Classes/NSDocument.h</string> + <string key="minorKey">./Classes/DropZone.h</string> </object> </object> <object class="IBPartialClassDescription"> |
