скопируйте и вставьте текст + изображение из NSPsteboard

мы работаем над приложением C++ Qt, которое копирует выделенный текст и/или изображения из внешних приложений, изменяет его, а затем вставляет обратно. Поскольку мы работаем на Mac, мы делаем эту часть с помощью Objective-C.

У нас возникли проблемы с попыткой получить изображение из монтажного стола. Он отлично работает для текста, но мы не уверены, как обрабатывать изображения или комбинацию текст+изображение. Поскольку мы не знаем, что может выбрать пользователь, мы должны иметь возможность выполнить общий поиск содержимого монтажного стола, чтобы изменить его и вернуть обратно на монтажный стол.

Мы пробовали это:

//we thought about retrieving some generic item from pasteboard, using NSPasteboardItem
NSArray *classes = [[NSArray alloc] initWithObjects:[NSPasteboardItem class], nil];
NSDictionary *options = [NSDictionary dictionary];
NSArray *auxArray = [[NSPasteboard generalPasteboard] readObjectsForClasses:classes options:options];
NSData *archived_data = [auxArray objectAtIndex:0];

Наше решение для обработки текста было:

NSString *text = [[NSPasteoard generalPasteboard] stringForType:NSStringPboardType];
string text_str = string([text UTF8String]);

Это не сработало, так как мы можем получить выбор пользователя из монтажного стола? Нам нужно получить необработанные байты или содержимое rtf, чтобы изменить его по мере необходимости, а затем поместить его обратно в монтажный стол и вставить обратно, заменив исходный выбор пользователя.

Спасибо!


person Sebastian    schedule 07.02.2012    source источник
comment
мы работаем над приложением C++ Qt, которое копирует выделенный текст и/или изображения из внешних приложений, изменяет его, а затем вставляет обратно. Поскольку мы работаем на Mac, мы делаем эту часть с помощью Objective-C. подскажите, пожалуйста, как вы копируете выделенный текст и/или изображения из внешних приложений в oboe-ctivec. Спасибо. ннагорный(at)aol.com   -  person Nikolai Nagornyi    schedule 14.04.2012


Ответы (1)


Думаю эта функция вам поможет

 - (IBAction)paste:sender
{
    NSPasteboard *pasteboard = [NSPasteboard generalPasteboard];
    NSArray *classArray = [NSArray arrayWithObject:[NSImage class]];
    NSDictionary *options = [NSDictionary dictionary];
    BOOL ok = [pasteboard canReadObjectForClasses:classArray options:options];
    if (ok)
    {
       NSArray *objectsToPaste = [pasteboard readObjectsForClasses:classArray options:options];
       NSImage *image = [objectsToPaste objectAtIndex:0];
      [imageView setImage:image];
    }
}
person Sujatha Girijala    schedule 28.12.2016