2008-10-10 7 views
0

Je veux créer un NSOpenPanel qui permet de sélectionner le type de fichier, donc je fais cePourquoi puis-je sélectionner des alias mais pas des liens symboliques dans NSOpenPanel?

NSOpenPanel* panel = [NSOpenPanel openPanel]; 

if([panel runModalForTypes:nil] == NSOKButton) { 
    // process files here 
} 

qui me permet de sélectionner tous les fichiers sauf liens symboliques.
Ils ne sont tout simplement pas sélectionnables et l'évidence setResolvesAliases
ne fait rien.

Ce qui donne?

Mise à jour 1: Je l'ai fait un peu plus de tests et a constaté que cette bizarrerie
est présent dans Leopard (10.5.5), mais pas dans Tiger (10.4.8).

Mise à jour 2: Le code ci-dessus peut sélectionner des alias Mac (chemin persistant
données qui vit dans la fourchette de ressources), mais pas les liens symboliques (fichiers créés avec ln -s).

Répondre

1

Je ne peux pas reproduire cela. Je l'ai juste essayé et ça marche très bien. Si un lien symbolique pointe vers un répertoire, il affiche le contenu du répertoire lorsque je sélectionne le lien symbolique et si le lien symbolique pointe vers un fichier, je peux également le sélectionner.

Bien sûr, si le lien pointe vers un répertoire, vous ne pouvez le sélectionner si le choix des répertoires est autorisé

NSOpenPanel * panel = [NSOpenPanel openPanel]; 
[panel setCanChooseDirectories:YES]; 
if ([panel runModalForTypes:nil] == NSOKButton) { 
    NSLog(@"%@", [panel filenames]); 
} 
+0

Si j'ajoute votre ligne '[panel setCanChooseDirectories: YES];', alors je peux sélectionner des liens symboliques, mais je peux aussi sélectionner des répertoires, ce que je ne veux pas. Étrange que cela fonctionne pour vous. Tu ne cours pas Leopard Je le prends. –

0

Votre exemple de code a fonctionné pour moi, aussi bien - j'utilise 10.5.5 et Xcode 3.1, si c'est important.

Si l'alias est dans un répertoire, je n'ai pas pu sélectionner l'alias car il a résolu le répertoire vers lequel il pointait, pas l'alias lui-même (le panneau semble résoudre les alias par défaut). Cependant, j'étais capable de sélectionner un alias dans un fichier.

+0

C'est ma configuration exacte. Donc, avec mon exemple, vous pouvez sélectionner un alias dans un fichier, puis cliquez sur le bouton Ouvrir? –

+0

Oui - J'ai copié + collé le code que vous avez inclus dans la question dans une application de test que je viens de créer. – Andy

+0

En fait, cela fonctionne aussi pour moi, mais seulement quand le fichier est un alias mac (une sorte de chemin persistant qui se trouve dans la branche des ressources). Je n'arrive toujours pas à sélectionner les liens symboliques (fichiers créés avec ln -s). –

Questions connexes