2010-04-18 9 views
2

Comment définir la partie du nom de fichier sélectionnée dans NSSavePanel? Je veux seulement le nom de fichier choisi et pas l'extension de fichier.NSSavePanel sélection d'une partie du nom de fichier

Voici ce que j'ai remarqué. Si je définis setAllowedFileTypes: pour le panneau de sauvegarde, seul le nom du fichier est sélectionné mais pas l'extension du fichier. Toutefois, si je ne définis pas les types de fichiers autorisés, l'extension de fichier est sélectionnée avec le nom du fichier.

Je ne veux pas utiliser setAllowedFileTypes mais je veux toujours contrôler la sélection afin que l'extension de fichier ne soit pas sélectionnée. Cela peut-il être fait?

Répondre

2

Je l'ai compris. Je ne le savais pas avant mais chaque fenêtre a un éditeur de champ si un objet contenant du texte est en cours de modification. Comme un tel panneau de sauvegarde en a un parce que le champ de nom de fichier est en cours d'édition. Un éditeur de champ est juste un NSTextView et a donc une méthode setSelectedRange :. J'ai donc utilisé cette connaissance et voici la solution. Appelez simplement cela sur le NSSavePanel chaque fois que vous voulez sélectionner uniquement le nom du fichier.

NSText* editor = [savePanel fieldEditor:NO forObject:nil]; 
if (editor) { 
    NSString* nameFieldString = [savePanel nameFieldStringValue]; 
    NSString* nameFieldExt = [nameFieldString pathExtension]; 
    if (nameFieldExt != nil) { 
     NSInteger newLength = [nameFieldString length]-[nameFieldExt length]-1; 
     [editor setSelectedRange:NSMakeRange(0, newLength)]; 
    } 
}