Macintosh C Crear una ventana de navegación para elegir una aplicación
-
06-07-2019 - |
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?
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 ] ;