Macintosh C Создание окна навигации для выбора приложения - PullRequest
0 голосов
/ 09 января 2009

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

Есть идеи?

Ответы [ 3 ]

0 голосов
/ 21 марта 2009

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

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

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

0 голосов
/ 15 апреля 2014

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

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

[ panel runModal ] ;
0 голосов
/ 10 января 2009

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

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

...