2016-05-06 9 views
1

В 2010 кто-то подал ошибку: http://www.openradar.me/7582817Перетащите и падение Automator действия на AMWorkflowView

Действительно, если перетащить и падение действие Automator из Finder в редактируемый AMWorkflowView, не добавить действие, но добавляет новое действие «Получить заданные элементы поиска».

У меня есть NSTableView, перечисляющий несколько действий, которые можно перетаскивать из вида таблицы в другие виды. Справа находится AMWorkflowView, который, как предполагается, предназначен для перетаскивания. Все реализовано и работает отлично, за исключением того, что здесь также добавляются действия «Получить определенные элементы поиска» вместо самих перетаскиваемых действий.

Печать AMWorkflowView's-registeredDraggedtypes выводит этот список:

[ "ApertureImageDataPboardType", "CalUUIDPasteboardType", "AlbumDataListPboardType", "CorePasteboardFlavorType 0x6974756E", "ABGroupsUIDsPboardType", "CorePasteboardFlavorType 0x4F69646E", «NSFilenamesPboardType »,« AutomatorActions », « com.apple.Automator.RunScript.source »,« Тип URL-адреса Apple », « com.apple.mail.PasteboardTypeAutomator », « ApertureFolderDataPboardType »,« NSStringPboardType », "CorePasteboardFlavorType 0x4870666C", "AutomatorVariables", "ImageDataListPboardType", "ошибки Действие", "ABPeopleUIDsPboardType"]

Похоже, что "AutomatorActions" тип pboard является отношение один, но из-за отсутствия документации Я не мог понять, как заставить приложение работать. Есть ли полезная информация об этом? Не удалось найти ничего значимого в Apple's Automator documentation ... и установка данных NSPasteBoard путем архивирования AMBundleAction с NSKeyedArchiver тоже не работала.

+0

Automator также добавление «Получить указанные элементы Искатель». – Willeke

ответ

2

Не документировано, незаконное, использование на свой страх и риск:

- (BOOL)tableView:(NSTableView *)aTableView writeRowsWithIndexes:(NSIndexSet *)rowIndexes 
    toPasteboard:(NSPasteboard *)pboard 
{ 
    [pboard clearContents]; 
    NSMutableArray *array = [NSMutableArray array]; 
    for (AMAction *action in [[self.arrayController arrangedObjects] objectsAtIndexes:rowIndexes]) 
    { 
     NSMutableDictionary *dictionary = [NSMutableDictionary dictionary]; 
     [action writeToDictionary:dictionary]; 
     [array addObject:dictionary]; 
    } 
    if ([pboard setPropertyList:@{@"Actions":array} forType:@"AutomatorActions"]) 
     return YES; 
    return NO; 
} 
+0

Отлично работает, спасибо. –