Macintosh C Создание окна навигации для выбора приложения

StackOverflow https://stackoverflow.com/questions/429486

  •  06-07-2019
  •  | 
  •  

Вопрос

Я пишу C-программу для Mac, и мне нужно разрешить пользователю выбирать приложение для отправки события Apple. Я могу создать окно навигации, используя NavCreateChooseFileDialog () , но не могу включить его для каких-либо файлов .app. Если я ограничу типы с помощью NavDialogSetFilterTypeIdentifiers , это позволит мне выбирать только такие приложения, как MS Office, которые не имеют .app в имени папки. Все остальное затенено.

Есть идеи?

Это было полезно?

Решение

Обязательно установите флаг kNavSupportPackages в inOptions.optionFlags для NavCreateChooseFileDialog и поместите «APPL» в список типов (также можно использовать этот параметр вместо NavDialogSetFilterTypeIdentifiers (), так как вы будете работать с 10.3-) и тебе надо идти, я только что попробовал.

В качестве альтернативы, если вы не возражаете против использования Какао, вы можете использовать - [NSOpenPanel runModalForTypes: [NSArray arrayWithObjects: @ " app " ;, nil]] (в котором также перечислены приложения, не являющиеся приложениями), а затем вы ' re только один FSPathMakeRef ((UInt8 *) [path fileSystemRepresentation], & amp; fsRef, NULL); от FSRef.

Помните, что в любом случае полученный файл может быть псевдонимом, поэтому вам придется попытаться разрешить псевдонимы.

Другие советы

Помните, что .app-комплекты являются каталогами, поэтому вам может потребоваться включить какую-то опцию allow-directoryies (или, что более вероятно, enable-bundles).

Мне жаль, что я не могу предложить более конкретную помощь. Я начал с Carbon, но никогда не трогал Navigation Services.

Это работает для меня:

NSOpenPanel * panel = [ NSOpenPanel openPanel ] ;
panel.allowedFileTypes = @[ (__bridge id)kUTTypeApplication ] ;

[ panel runModal ] ;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top