Mise à  jour d'icônes dans le Finder

helgrindhelgrind Membre
16:47 modifié dans Vos applications #1
Bonjour,

J'utilise IconFamily pour appliqué des icône personnalisées à  des fichiers fraichement créés.
Mais des fois, quand j'applique une icône à  un fichier, le Finder n'affiche pas la nouvelle icône et je dois recommencer plusieurs fois jusqu'à  ce que ça marche.

En regardant dans la resource fork du fichier, l'icône s'y trouve bien.
Donc j'en déduis qu'il s'agit d'un problème de rafraichissement de l'icône.

J'ai essayé noteFileSystemChanged: de NSWorkspace, FNNotify et même d'envoyer un Apple Event au Finder, mais rien à  faire.
L'icône du fichier reste une page blanche.

Réponses

  • schlumschlum Membre
    16:47 modifié #2
    Je ne sais pas s'il y a une solution à  ce problème à  ce jour, mais c'est notoire que le Finder a des problèmes de rafraà®chissement.
    Par exemple, parfois je dézippe un truc et le dossier obtenu paraà®t vide ; problèmes de rafraà®chissement d'icônes aussi etc.

    Peut-être que ça a été amélioré dans Leopard  ???
  • helgrindhelgrind Membre
    16:47 modifié #3
    dans 1201517378:

    Je ne sais pas s'il y a une solution à  ce problème à  ce jour, mais c'est notoire que le Finder a des problèmes de rafraà®chissement.
    Par exemple, parfois je dézippe un truc et le dossier obtenu paraà®t vide ; problèmes de rafraà®chissement d'icônes aussi etc.

    Peut-être que ça a été amélioré dans Leopard  ???

    Bah je suis sur Léopard, et apparement il y toujours ces problèmes...
  • BruBru Membre
    16:47 modifié #4
    dans 1201503863:

    J'ai essayé noteFileSystemChanged: de NSWorkspace, FNNotify et même d'envoyer un Apple Event au Finder, mais rien à  faire.
    L'icône du fichier reste une page blanche.


    Bizarre, car noteFileSystemChanged: fonctionne bien pour le Finder...
    Quel chemin mets-tu ?
    Celui du fichier avec la nouvelle icône, ou celui de répertoire dans lequel se trouve ce fichier ?

    .
  • helgrindhelgrind Membre
    16:47 modifié #5
    dans 1201523349:

    Bizarre, car noteFileSystemChanged: fonctionne bien pour le Finder...
    Quel chemin mets-tu ?
    Celui du fichier avec la nouvelle icône, ou celui de répertoire dans lequel se trouve ce fichier ?

    Celui du répertoire parent.
  • BruBru Membre
    16:47 modifié #6
    dans 1201535315:

    Celui du répertoire parent.


    Ben, justement, j'aurais plutôt mis le chemin du fichier modifié (celui pour lequel tu as mis l'icône personnalisée)...

    .
  • helgrindhelgrind Membre
    16:47 modifié #7
    dans 1201536259:

    dans 1201535315:

    Celui du répertoire parent.


    Ben, justement, j'aurais plutôt mis le chemin du fichier modifié (celui pour lequel tu as mis l'icône personnalisée)...


    Ca ne change rien malheureusement  :-\\

    J'ai pensé à  une chose: est-ce possible que l'icône ait mal été écrite dans la resource fork du fichier?

  • schlumschlum Membre
    16:47 modifié #8
    Pour le savoir, tu relances le Finder... S'il affiche la bonne icône, c'est que c'était un problème de rafraà®chissement.
  • helgrindhelgrind Membre
    16:47 modifié #9
    dans 1201548548:

    Pour le savoir, tu relances le Finder... S'il affiche la bonne icône, c'est que c'était un problème de rafraà®chissement.

    Déjà  essayé, mais ca ne marche pas quand même.
  • schlumschlum Membre
    16:47 modifié #10
    Tu peux essayer le redémarrage aussi pour être sûr...
    Mais bon, c'est un peu violent  :o
  • BruBru Membre
    16:47 modifié #11
    Le code suivant :
    <br />{<br />&nbsp;  NSImage *image=[[NSImage alloc] initWithContentsOfFile:@&quot;/Library/User Pictures/Sports/8ball.tif&quot;];<br />&nbsp;  [[NSWorkspace sharedWorkspace] setIcon:image forFile:@&quot;/text.txt&quot; options:0];<br />&nbsp;  [[NSWorkspace sharedWorkspace] noteFileSystemChanged:@&quot;/text.txt&quot;];<br />&nbsp;  [image release];<br />}<br />
    

    fonctionne à  merveille.
    La nouvelle icône apparaà®t instantanément dans la fenêtre ouverte en arrière-plan du Finder.

    Par contre, je ne sais pas réellement ce que fait setIcon: (l'icône customisée n'est pas sélectionnable dans l'inspecteur du Finder : on ne peut ni la copier, ni l'effacer).

    Les symptômes que tu décris me font toutefois penser, en effet, à  un problème de configuration de la nouvelle icône.

    .
  • helgrindhelgrind Membre
    16:47 modifié #12
    dans 1201555858:

    Le code suivant :
    <br />{<br />   NSImage *image=[[NSImage alloc] initWithContentsOfFile:@&quot;/Library/User Pictures/Sports/8ball.tif&quot;];<br />   [[NSWorkspace sharedWorkspace] setIcon:image forFile:@&quot;/text.txt&quot; options:0];<br />   [[NSWorkspace sharedWorkspace] noteFileSystemChanged:@&quot;/text.txt&quot;];<br />   [image release];<br />}<br />
    

    fonctionne à  merveille.
    La nouvelle icône apparaà®t instantanément dans la fenêtre ouverte en arrière-plan du Finder.

    Par contre, je ne sais pas réellement ce que fait setIcon: (l'icône customisée n'est pas sélectionnable dans l'inspecteur du Finder : on ne peut ni la copier, ni l'effacer).

    Les symptômes que tu décris me font toutefois penser, en effet, à  un problème de configuration de la nouvelle icône.


    Le problème avec cette méthode c'est que c'est terriblement lent pour traité des centaines d'icônes.

    Et voilà  un magnifique aperçu des icônes aplliquées par NSWorkspace  :P

  • AliGatorAliGator Membre, Modérateur
    16:47 modifié #13
    dans 1201551569:

    Tu peux essayer le redémarrage aussi pour être sûr...
    Mais bon, c'est un peu violent  :o
    Ou simplement déplacer le fichier dans un autre dossier (ou sur le bureau) puis le remettre ensuite à  son emplacement d'origine.
    Ca suffit pour raffraà®chir l'icône.
  • helgrindhelgrind Membre
    16:47 modifié #14
    dans 1201597851:

    dans 1201551569:

    Tu peux essayer le redémarrage aussi pour être sûr...
    Mais bon, c'est un peu violent   :o
    Ou simplement déplacer le fichier dans un autre dossier (ou sur le bureau) puis le remettre ensuite à  son emplacement d'origine.
    Ca suffit pour raffraà®chir l'icône.


    J'ai déjà  essayé tout ça.
    Je commence à  croire à  un problème d'écriture des ressources du fichiers.
    Ce qui est bizarre c'est qu'il n'y a aucune erreur...

  • schlumschlum Membre
    16:47 modifié #15
    Moi ce qui m'étonne, c'est que tu dis qu'en recommençant plusieurs fois, ça fonctionne.
    On est en informatique ici, pas chez les Shadoks  :P

    Les seuls problèmes aléatoires que je connaisse en informatique sont dû :
    - À un dépassement de buffer
    - À une section critique mal protégée et utilisée par 2 threads en même temps

    (il y a peut-être d'autres cas, mais en général ce sont des cas très spécifiques !)
  • helgrindhelgrind Membre
    16:47 modifié #16
    dans 1201604043:

    Moi ce qui m'étonne, c'est que tu dis qu'en recommençant plusieurs fois, ça fonctionne.
    On est en informatique ici, pas chez les Shadoks  :P

    Les seuls problèmes aléatoires que je connaisse en informatique sont dû :
    - À un dépassement de buffer
    - À une section critique mal protégée et utilisée par 2 threads en même temps

    (il y a peut-être d'autres cas, mais en général ce sont des cas très spécifiques !)

    Bah ça doit faire partie des cas très spécifique  :)

    Il y a environ 10% des icônes qui ne sont pas affichées.

  • AliGatorAliGator Membre, Modérateur
    16:47 modifié #17
    10% des icônes, ou des fichiers auxquels tu appliques une icône ?
    Toujours sur les mêmes fichiers ou ça dépend des fois ?

    Ca peut très bien être dépendant soit de l'icône que tu appliques (si c'est toujours les mêmes icônes qui foirent et les mêmes icônes qui marchent)
    Ca peut aussi dépendre du chemin du fichier (si c'est toujours pour le même fichier que l'application de l'icône foire, quelle que soit l'icône)
    Ca peut même être une combinaison des deux.

    Je pense entre autres par exemple à  un problème dans le path (espaces dans le path, ou caractères accentués, etc) ou un problème de droits sur le fichier, etc.
  • helgrindhelgrind Membre
    16:47 modifié #18
    dans 1201613605:

    10% des icônes, ou des fichiers auxquels tu appliques une icône ?
    Toujours sur les mêmes fichiers ou ça dépend des fois ?

    Ca peut très bien être dépendant soit de l'icône que tu appliques (si c'est toujours les mêmes icônes qui foirent et les mêmes icônes qui marchent)
    Ca peut aussi dépendre du chemin du fichier (si c'est toujours pour le même fichier que l'application de l'icône foire, quelle que soit l'icône)
    Ca peut même être une combinaison des deux.

    Je pense entre autres par exemple à  un problème dans le path (espaces dans le path, ou caractères accentués, etc) ou un problème de droits sur le fichier, etc.

    C'est sur 10% des fichiers auquels j'applique les icônes que ça ne marche pas.
    Et les icônes qui ne marche pas varie.

    Je ne pense pas à  un problème de permissions car les fichiers sont créés par mon prog avant d'appliquer l'icône.
    Je vais poster un exemple ce soir pour vous montrer.
  • helgrindhelgrind Membre
    16:47 modifié #19
    Voilà  je mets un petit projet de test pour tester ;)
    un dossier "icons" est créé sur le bureau où les icônes seront enregistrées.
Connectez-vous ou Inscrivez-vous pour répondre.