2011-08-06 2 views
1

Comment afficher une icône personnalisée en fonction d'un code de créateur de fichier/code de type. Par exemple, j'ai une application qui ouvre des fichiers avec le code créateur 'TSTx', comment pourrais-je définir l'icône pour ce code créateur?Afficher l'icône du code du créateur sur OSX

Je suppose que c'est ainsi que des applications comme Cyberduck affichent une icône de progression lorsqu'un fichier est téléchargé sans changer l'extension du fichier et c'est le comportement que j'essaie de reproduire.

Merci, J

Répondre

3

Vous ne devez pas compter sur les codes de créateur et de type pour cela. Tous les fichiers ne les ont pas affectés. En fait, même pas toutes les applications ont des codes créateurs uniques, donc c'est garanti de rompre.

Si les fichiers existent dans le système de fichiers et ont des extensions de chemin correctes, devrait faire l'affaire. (Je pense que cela fonctionnera également avec les icônes personnalisées.) Si le fichier n'existe pas dans le système de fichiers (par exemple, parce qu'il est stocké dans une base de données), -[NSWorkspace iconForFileType:] est le chemin à parcourir. Vous pouvez lui fournir une extension de chemin ou, si vous insistez, avec un code de type HFS (que vous devez inclure dans une chaîne avec the NSFileTypeForHFSTypeCode function).

Pour définir une icône personnalisée à utiliser par le Finder, vous n'avez pas besoin de codes de type et de créateur. Utilisez -[NSWorkspace setIcon:forFile:options:].

+0

Merci pour la réponse, mais dans ce cas, je peux garantir que le code du créateur et le code de type est présent. J'ai juste besoin d'afficher une icône dans le Finder en fonction des codes. Les extensions ne sont pas une option valide car j'essaie de reproduire le comportement de Cyberduck où une extension de fichier reste la même mais l'icône est temporairement modifiée. – JWood

+0

Je suis confus. Voulez-vous afficher l'icône dans votre application ou définir une icône personnalisée dans le Finder? Pour définir une icône personnalisée à utiliser par le Finder, vous n'avez pas besoin de codes de type et de créateur. Utilisez '- [NSWorkspace setIcon: forFile: options:]'. (J'ai édité ma réponse pour inclure cette option.) – gcbrueckmann

+0

Je veux placer l'icône dans le finder mais NSWorkspace setIcon: forFile: options n'est pas une option car elle nécessite que le fichier soit accessible en écriture (je suppose met à jour la fourchette de ressources?). Le système de fichiers est en lecture seule, mais certains fichiers contiendront un code de type HFS spécifique. Je veux juste associer cela avec une icône statique pour empêcher les données de fichier lues par le Finder de créer une icône. – JWood

Questions connexes