Leopard change mes icônes (le vilain)

ChachaChacha Membre
16:06 modifié dans API AppKit #1
Salut,

NSWorkspace a une méthode bien pratique depuis 10.4 permettant d'attribuer une icône particulière aux fichiers que l'on crée : -setIcon:forFile:options:
Je l'utilise dans un de mes logiciels (LaTeXiT) pour que le pdf généré (une équation le plus souvent) n'ait pas comme icône un aperçu du contenu complet (sinon on ne voit rien tellement c'est petit) mais plutôt un extrait de l'équation (plus gros, donc plus discriminant à  l'oe“il).
Cela marchait très bien avec Tiger, mais voilà  que Leopard n'en fait qu'à  sa tête ! Il ignore superbement mon icône dans le Finder... sauf en mode QuickLook ...
Et si je compresse le fichier, puis le décompresse, alors là  c'est bon, il reprend mon icône.
Je vais faire un rapport de bugs, car il n'est pas normal d'avoir deux comportements différents. Mais auriez-vous une idée pour contourner ce problème du premier coup ?

+
Chacha

Réponses

  • schlumschlum Membre
    16:06 modifié #2
    Passer par les méthodes Carbon ?  :P
  • AliGatorAliGator Membre, Modérateur
    16:06 modifié #3
    C'est pas juste une question de mise à  jour des LS dans le Finder ?
    Je sais que souvent pour des petits trucs comme ça (modification du Info.plist d'un bundle, ou du fichier .icns du bundle, etc) il faut forcer le refresh du Finder pour que ce dernier prenne en compte la modification.

    La manière la plus simple pour le faire "à  la main" est de déplacer l'application (ou le document ou le bundle, ...) à  un autre endroit (quitte à  la remettre dans le dossier d'origine ensuite). Le fait que tu obtiennes l'icône après avoir zippé puis dézippé ton fichier me fait penser aussi à  cette piste.

    Par contre, par code (en Cocoa), il me semble qu'il y a une méthode (ça doit pas être NSFileManager mais pas loin) pour demander de forcer la mise à  jour de l'élément dans le Finder, qu'il prenne en compte les modifications... reste plus qu'à  la retrouver :D
  • schlumschlum Membre
    16:06 modifié #4
    dans 1208804765:

    Par contre, par code (en Cocoa), il me semble qu'il y a une méthode (ça doit pas être NSFileManager mais pas loin) pour demander de forcer la mise à  jour de l'élément dans le Finder, qu'il prenne en compte les modifications... reste plus qu'à  la retrouver :D


    Oui, méthode de NSWorkspace aussi : "- (void)noteFileSystemChanged:(NSString *)path"

    Mais il me semble que "setIcon" le fait déjà  automatiquement  ???
  • avril 2008 modifié #5
    Justement, si tu zip puis dezip, le fichier a été, en quelque sorte modifié. Tu ne peux pas changer sa date de modification avec NSFileManager juste après lui avoir appliqué l'icone pour voir ?

    <br />[[NSWorkspace sharedWorkspace] setIcon:icon forFile:path options:NSExcludeQuickDrawElementsIconCreationOption];<br />[fileManager changeFileAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[NSDate date],NSFileModificationDate,<br />[NSDate date],NSFileCreationDate,nil] <br />&nbsp; &nbsp;  atPath:path]];<br />
    
  • AliGatorAliGator Membre, Modérateur
    16:06 modifié #6
    dans 1208807191:

    Oui, méthode de NSWorkspace aussi : "- (void)noteFileSystemChanged:(NSString *)path"

    Mais il me semble que "setIcon" le fait déjà  automatiquement  ???
    Ah ben voilà , c'était à  celle là  que je pensais, merci schlum :)
    Pourquoi je pense jamais à  NSWorkspace, moi ? :P
  • ChachaChacha Membre
    16:06 modifié #7
    Yep,

    Merci des tuyaux ! Pendant ce temps, Apple me dit
    This issue has been filed in our bug database under the original Bug ID# 5622958
    , donc ils sont au courant.
    Je crois que je ne vais pas me casser la nénette à  contourner le bug alors... ça devrait se réparer tout seul

    En tous cas -noteFileSystemChanged n'a pas changé grand chose, mais c'était une bonne idée.
    Peut-être qu'il faudrait que je crée le fichier ailleurs, temporairement, pour le déplacer ensuite au bon endroit.

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