From: Adam R. M. <ama...@ma...> - 2008-01-24 00:10:14
|
On Wednesday, January 23, 2008, at 12:39PM, "Christiaan Hofman" <cmh...@gm...> wrote: >But the delegate does not know the context (drag to trash, AOT any >other delete). So it cannot be in the editor. It should be >conditional on a delete though, just forgot the if-clause. > >I think it will be clear that we don't trash the file. It would be >wrong to do that without warning (Finder does not do that either) so >the user should never expect that. Users haven't found it clear how to remove files, though, unfortunately, and the distinction between "Remove" and "Delete" is pretty fine. Finder happily allows putting files in trash without warning, although it won't empty the trash without warning. There's no indication that hitting the delete key does/doesn't move to the trash, and it doesn't make sense for the view to discriminate between drag to trash and delete key, since it's app-specific. >Showing an alert for every delete >is annoying and can't be disabled without being ambiguous. For testing that would be annoying, and it makes sense to just remove them from the view in the sample project. However, how often do you delete a file in BibEditor? Other than testing, I'm not sure that I've ever done that. Deleting remote URLs is a bit more common. >Irt would be nice if we could play the shredding sound. We don't empty the trash, though, do we? > >Christiaan > >On 23 Jan 2008, at 9:22 PM, Adam R. Maxwell wrote: > >> This sort of breaks the whole datasource/delegate principle. I >> know the distinction between controller and view is a bit blurred >> overall in the view, but moving/trashing/deleting/warning should be >> the job of the object that gets the datasource message. Here, even >> if deleteURLsAtIndexes: returns NO, an alert is still shown. If >> the datasource deletes in response to the message, the view then >> tries to trash nonexistent files. >> >> It probably was wrong to implement drag-to-trash as just removing >> from the view, so something needs to change. I think this should >> probably be in BibEditor for now, or use a separate >> fileView:trashURLsAtIndexes: method if we need to differentiate. >> I'm not sure that the distinction between delete key and drag-to- >> trash will be obvious to users, so it might be best just to show >> the alert for both cases? >> >> On Wednesday, January 23, 2008, at 10:25AM, >> <ho...@us...> wrote: >>> Revision: 12641 >>> http://bibdesk.svn.sourceforge.net/bibdesk/? >>> rev=12641&view=rev >>> Author: hofman >>> Date: 2008-01-23 10:24:44 -0800 (Wed, 23 Jan 2008) >>> >>> Log Message: >>> ----------- >>> Show an alert to ask whether to trash files dragged to the trash. >>> >>> Modified Paths: >>> -------------- >>> trunk/bibdesk_vendorsrc/amaxwell/FileView/FileView.m >>> >>> Modified: trunk/bibdesk_vendorsrc/amaxwell/FileView/FileView.m >>> =================================================================== >>> --- trunk/bibdesk_vendorsrc/amaxwell/FileView/FileView.m >>> 2008-01-23 17:52:59 UTC (rev 12640) >>> +++ trunk/bibdesk_vendorsrc/amaxwell/FileView/FileView.m >>> 2008-01-23 18:24:44 UTC (rev 12641) >>> @@ -1317,13 +1317,41 @@ >>> >>> #pragma mark Drag source >>> >>> +- (void)trashAlertDidEnd:(NSAlert *)alert returnCode:(int) >>> returnCode contextInfo:(void *)contextInfo >>> +{ >>> + NSArray *selectedURLs = [(NSArray *)contextInfo autorelease]; >>> + if (returnCode == NSAlertAlternateReturn) { >>> + NSEnumerator *urlEnum = [selectedURLs objectEnumerator]; >>> + NSURL *url; >>> + while (url = [urlEnum nextObject]) { >>> + if ([url isFileURL] == NO || [url isEqual:[FVIcon >>> missingFileURL]]) continue; >>> + NSString *path = [url path]; >>> + NSString *folderPath = [path >>> stringByDeletingLastPathComponent]; >>> + NSString *fileName = [path lastPathComponent]; >>> + int tag = 0; >>> + [[NSWorkspace sharedWorkspace] >>> performFileOperation:NSWorkspaceRecycleOperation source:folderPath >>> destination:nil files:[NSArray arrayWithObjects:fileName, nil] >>> tag:&tag]; >>> + } >>> + } >>> +} >>> + >>> - (void)draggedImage:(NSImage *)image endedAt:(NSPoint)screenPoint >>> operation:(NSDragOperation)operation; >>> { >>> // only called if we originated the drag, so the row/column >>> must be valid >>> if ((operation & NSDragOperationDelete) != 0 && [self >>> isEditable]) { >>> + NSArray *selectedURLs = [[self _selectedURLs] copy]; >>> [[self dataSource] fileView:self >>> deleteURLsAtIndexes:_selectedIndexes]; >>> [self setSelectionIndexes:[NSIndexSet indexSet]]; >>> [self reloadIcons]; >>> + NSBundle *bundle = [NSBundle bundleForClass:[FileView >>> class]]; >>> + NSAlert *alert = [NSAlert >>> alertWithMessageText:NSLocalizedStringFromTableInBundle(@"Move >>> Files to Trash?", @"FileView", bundle, @"Message in alert dialog >>> when dragging files to the trash") >>> + >>> defaultButton:NSLocalizedStringFromTableInBundle(@"No", >>> @"FileView", bundle, @"Button title") >>> + >>> alternateButton:NSLocalizedStringFromTableInBundle(@"Yes", >>> @"FileView", bundle, @"Button title") >>> + otherButton:nil >>> + >>> informativeTextWithFormat:NSLocalizedStringFromTableInBundle(@"Do >>> you want to move the removed files to the trash?", @"FileView", >>> bundle, @"Informative text in alert dialog when dragging files to >>> the trash")]; >>> + [alert beginSheetModalForWindow:[self window] >>> + modalDelegate:self >>> + didEndSelector:@selector >>> (trashAlertDidEnd:returnCode:contextInfo:) >>> + contextInfo:selectedURLs]; >>> } >>> } >>> >>> >>> >>> This was sent by the SourceForge.net collaborative development >>> platform, the world's largest Open Source development site. >>> >>> --------------------------------------------------------------------- >>> ---- >>> This SF.net email is sponsored by: Microsoft >>> Defy all challenges. Microsoft(R) Visual Studio 2008. >>> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ >>> _______________________________________________ >>> Bibdesk-commit mailing list >>> Bib...@li... >>> https://lists.sourceforge.net/lists/listinfo/bibdesk-commit >>> >>> >> >> ---------------------------------------------------------------------- >> --- >> This SF.net email is sponsored by: Microsoft >> Defy all challenges. Microsoft(R) Visual Studio 2008. >> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ >> _______________________________________________ >> Bibdesk-develop mailing list >> Bib...@li... >> https://lists.sourceforge.net/lists/listinfo/bibdesk-develop > > >------------------------------------------------------------------------- >This SF.net email is sponsored by: Microsoft >Defy all challenges. Microsoft(R) Visual Studio 2008. >http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ >_______________________________________________ >Bibdesk-develop mailing list >Bib...@li... >https://lists.sourceforge.net/lists/listinfo/bibdesk-develop > > |