Pregunta

Estoy escribiendo un programa en C para mac, y necesito permitir que el usuario elija una aplicación para enviar un evento de Apple. Puedo crear una ventana de navegación, usando NavCreateChooseFileDialog () , pero no consigo que habilite ningún archivo .app. Si restrinjo los tipos usando NavDialogSetFilterTypeIdentifiers , solo me permitirá seleccionar aplicaciones como MS Office, que no tienen .app en el nombre de la carpeta. Todo lo demás está atenuado.

¿Alguna idea?

¿Fue útil?

Solución

Asegúrese de establecer el indicador kNavSupportPackages en inOptions.optionFlags para NavCreateChooseFileDialog, y ponga 'APPL' en la lista de tipos (también podría usar ese parámetro en lugar de NavDialogSetFilterTypeIdentifiers (), de esa manera se ejecutará en 10.3-) y deberías ir, acabo de intentarlo.

Alternativamente, si no le importa usar Cocoa, puede usar - [NSOpenPanel runModalForTypes: [NSArray arrayWithObjects: @ " app " ;, nil]] (que también enumera aplicaciones que no son.app), y luego ' re solo un FSPathMakeRef ((UInt8 *) [ruta fileSystemRepresentation], & amp; fsRef, NULL); lejos de un FSRef.

Recuerde que, en cualquier caso, el archivo que obtenga puede ser un alias, por lo que deberá intentar resolverlos.

Otros consejos

Recuerde que los paquetes .app son directorios, por lo que es posible que necesite habilitar algún tipo de opción para permitir directorios (o, más probablemente, habilitar paquetes).

Lamento no poder ofrecer ayuda más específica. Empecé con Carbon, pero nunca toqué los servicios de navegación.

Esto funciona para mí:

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

[ panel runModal ] ;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top