Sélection d'un dossier gravable (burn folder)

tabliertablier Membre
mars 2007 modifié dans API AppKit #1
j'ai nécessité de sélectionner un dossier gravable avec le sélecteur de fichier NSOpenPanel.  Je n'ai rien trouvé dans la doc qui concerne les burn folders (je n'ai pas du chercher au bon endroit!).
j'ai créé un dossier gravable et essayé cela:
NSOpenPanel *monPanel = [NSOpenPanel openPanel] ;<br />	[monPanel setAllowsMultipleSelection:NO] ;	<br />	[monPanel setResolvesAliases:NO] ;			<br />	[monPanel setCanChooseFiles: NO ] ;		<br />	[monPanel setCanChooseDirectories: YES ] ;	<br /><br />	retour = [monPanel runModalForDirectory: ............ etc<br />

qui ne marche pas: on voit le dosier gravable, mais il est impossible de le sélectionner!!  >:(

je pense avoir trouvé la solution:
NSOpenPanel *monPanel = [NSOpenPanel openPanel] ;<br />	[monPanel setAllowsMultipleSelection:NO] ;	<br />	[monPanel setResolvesAliases:NO] ;			<br />	[monPanel setCanChooseFiles: YES ] ;		<br />	[monPanel setCanChooseDirectories: YES ] ;	<br />	[monPanel setRequiredFileType: @&quot;fpbf&quot;] ;<br /><br />	retour = [monPanel runModalForDirectory: ............ etc<br />


Pourquoi faut-il valider la sélection des fichiers pour sélectionner un dossier? je donne ma langue au chat!
Quelqu'un a l'explication?

Réponses

  • UniXUniX Membre
    01:36 modifié #2
    Je ne suis pas sur de ce que je vais te dire ....

    Si tu regardes un dossier à  graver dans les Infos finder, tu verras qu'il a l'extention .fbpf
    Je penses que le finder affiche un dossier à  graver comme un dossier, mais il s'agit en fait d'un simple fichier ou sont stockés les éléments contenus dans le dossier à  graver.
  • tabliertablier Membre
    01:36 modifié #3
    Il est évident que le Finder fait de la présentation des objets UNIX. Mais Je ne crois pas que les dossiers à  graver soient des fichiers car le ls -l dans la console indique que c'est bien un dossier (ici son nom est "Dossier a graver"):
    PBook-msaro:~/Desktop msaro$ ls -l<br />...<br />drwxr-xr-x&nbsp; &nbsp; 2 msaro&nbsp; msaro&nbsp; &nbsp; &nbsp;  68 Mar 29 19:58 Dossier a graver.fpbf<br />....
    


    Si vous ajoutez par programme ".fpbf" au nom d'un dossier, cela devient un dossier à  graver!  et si vous essayez d'ajouter l'extension sous Finder, vous obtenez "l'extension .fpbf est réservé au système........"

    Si vous avez une autre idée, je suis preneur!
  • BruBru Membre
    01:36 modifié #4
    Chez moi, setCanChooseDirectories: à  YES me permet de sélectionner les dossiers à  graver...

    <br />{<br />&nbsp;  NSOpenPanel *p;<br />&nbsp;  p=[NSOpenPanel openPanel];<br />&nbsp;  [p setDelegate:self];<br />&nbsp;  [p setCanChooseDirectories:YES];<br />&nbsp;  [p setCanChooseFiles:NO];<br />&nbsp;  [p setAllowsMultipleSelection:NO];<br />&nbsp;  [p runModal];<br />&nbsp;  NSLog(@&quot;le chemin du dossier a graver=%@&quot;, [[p filenames] lastObject]);<br />}<br /><br />- (BOOL)panel:(id)sender shouldShowFilename:(NSString *)filename<br />{<br />&nbsp;  return [[filename pathExtension] isEqual:@&quot;fpbf&quot;];<br />}<br /><br />
    
  • tabliertablier Membre
    01:36 modifié #5
    Merci Bru, j'ai trouvé! J'ai mis ton code en place et ça marche. Mon erreur se situe dans le "types:" de:
    &nbsp; retour = [monPanel runModalForDirectory: [filepath stringByDeletingLastPathComponent] <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  file:[filepath lastPathComponent] types:[NSArray arrayWithObjects:@&quot;fpbf&quot;,nil]] ;<br />
    


    Il me paraissait normal de mettre types à  {"fpbf"} et c'est ça qui fait coincé la machine. J'ai remplacé par nil et ça marche.

    A+
Connectez-vous ou Inscrivez-vous pour répondre.