Невозможно добавить элемент в контекстное меню Finder с помощью служб в Какао - PullRequest
10 голосов
/ 24 февраля 2012


Я хотел бы добавлять элемент в контекстное меню моего Finder всякий раз, когда я щелкаю правой кнопкой мыши файлы или папки, и это меню связано с методом моего приложения Cocoa.
Я следую примеру CocoaDev иДокументация Apple, но я не могу отобразить службу.
Вот мой .h

#import <Cocoa/Cocoa.h>

@interface AppDelegate : NSObject <NSApplicationDelegate,NSObject>

@property (assign) IBOutlet NSWindow *window;
-(void)IClicked:(NSPasteboard *)pboard 
             userData:(NSString *)data
                error:(NSString **)error;

@end

.m

#import "AppDelegate.h"

@implementation AppDelegate
@synthesize window = _window;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    [NSApp setServicesProvider:self];
}

- (void)IClicked:(NSPasteboard *)pboard userData:(NSString *)data error:(NSString **)error
{
    NSLog(@"I clicked");
}

@end

и выдержка из моегоApplication-plist.info:

<key>NSServices</key>
<array>
    <dict>
        <key>NSKeyEquivalent</key>
        <dict>
            <key>default</key>
            <string>E</string>
        </dict>
        <key>NSMenuItem</key>
        <dict>
            <key>default</key>
            <string>My Application</string>
        </dict>
        <key>NSMessage</key>
        <string>IClicked</string>
        <key>NSPortName</key>
        <string>TestService</string>
        <key>NSSendFileTypes</key>
        <array>
            <string>public.item</string>
        </array>
        <key>NSSendTypes</key>
        <array>
            <string>NSPasteboardTypeString</string>
        </array>
        <key>NSRequiredContext</key>
        <dict>
            <key>NSServiceCategory</key>
            <string>public.item</string>
        </dict>
        <key>NSReturnTypes</key>
        <array>
            <string>NSPasteboardTypeString</string>
        </array>
    </dict>
</array>
</dict>

Я загрузил код в http://www.petits -suisses.ch / TestService.zip .

Что я сделал не так, илиесть ли какой-нибудь код Какао, который я могу скачать, чтобы понять, что я сделал не так?

Спасибо!

1 Ответ

7 голосов
/ 28 февраля 2012

Обнаружены проблемы:
1. Мне действительно нужно было хотя бы один раз сохранить свое приложение в папке «Приложения» (что не выполняется по умолчанию при компиляции с Xcode)
2. Должно было быть добавлено NSUpdateDynamicServices (); после команды [NSApp setServicesProvider: self]; .
3. Подождите примерно 10 секунд после запуска приложения, чтобы получить заполненное меню служб Finder.

...