Problème d'affichage d'icône

epetit91epetit91 Membre
mars 2012 modifié dans API AppKit #1
<br />
[size=3]- (IBAction)TBLACreerBase:(id)sender<br />
{<br />
	StructEntete  entete;<br />
  <br />
	entete.champs1 = 0;<br />
	entete.champs2 = 0;<br />
	entete.champs3 = 0;<br />
	entete.champs4 = 0;<br />
  <br />
// Ouvre un dialogue de création d&#39;une base (extension &quot;.tblabase&quot;)<br />
	NSSavePanel *panel = [NSSavePanel savePanel];<br />
	[panel setRequiredFileType:@&quot;tblabase&quot;];<br />
  <br />
	//  Positionne le masquage de l&#39;extension à  &quot;Masquée&quot;<br />
	[panel setCanSelectHiddenExtension:TRUE];<br />
  <br />
// Si la sélection est validée<br />
	if (NSOKButton == [panel runModal])<br />
	{<br />
		//  Création du fichier et initialisation de l&#39;entête<br />
		[[NSData dataWithBytes:&amp;entete length:sizeof(entete)] writeToFile:[[panel filename] stringByExpandingTildeInPath] atomically:YES];<br />
	  <br />
		//  Masque/Affiche l&#39;extension en fonction de l&#39;état de la case à  cocher du dialogue d&#39;enregistrement<br />
		NSDictionary *masqueAttrs = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:[panel isExtensionHidden]] forKey:NSFileExtensionHidden];<br />
		[[NSFileManager defaultManager] setAttributes:masqueAttrs ofItemAtPath:[[panel filename] stringByExpandingTildeInPath] error:nil];<br />
	  [/size]<br />
[size=3]		//  Définit le créateur et le type du fichier<br />
		masqueAttrs = [NSDictionary dictionaryWithObject:[NSNumber numberWithUnsignedInt:&#39;LoAs&#39;] forKey:NSFileHFSCreatorCode];<br />
		[[NSFileManager defaultManager] setAttributes:masqueAttrs ofItemAtPath:[[panel filename] stringByExpandingTildeInPath] error:nil];<br />
		masqueAttrs = [NSDictionary dictionaryWithObject:[NSNumber numberWithUnsignedInt:&#39;BaS2&#39;] forKey:NSFileHFSTypeCode];<br />
		[[NSFileManager defaultManager] setAttributes:masqueAttrs ofItemAtPath:[[panel filename] stringByExpandingTildeInPath] error:nil];<br />
	}<br />
}[/size]<br />




Pour ce type de fichier, j'ai défini un Exported UTI et un type (cf. fichier joint).



Mon problème est le suivant : lorsque j'exécute la méthode de création du fichier, le fichier est parfaitement créé avec un contenu correct mais il ne prend pas l'icône que j'ai définie.



Je ne vois pas où est mon erreur et je ne comprends pas d'autant que si je glisse le fichier créé sur l'icône de l'application ou si je double-clique sur ce fichier, l'application s'exécute et le fichier est traitement parfaitement.



Quelqu'un a-t-il une réponse à  m'apporter ?



Merci d'avance

Réponses

  • Pas d'idée sur mon problème image/huh.gif' class='bbc_emoticon' alt='???' />

    Merci
  • 'epetit91' a écrit:


    Pas d'idée sur mon problème image/huh.gif' class='bbc_emoticon' alt='???' />

    Merci




    Hello,



    Tu peux utiliser la méthode setIcon de la class NSWorkspace ?



    -[NSWorkspace setIcon:forFile:options:];



    a voir...
  • CéroceCéroce Membre, Modérateur
    Je n'ai pas vraiment de réponse (je suppose que les clefs sont bonnes), mais d'expérience, le Finder est fainéant.

    Essaie de "reconstruire le bureau", il me semble qu'il faut maintenir Option appuyée lors du démarrage de Finder.
  • tu pourrais également essayer de fermer le Finder puis de le rouvrir avec un script automatique du genre:
    tell application "Finder"

    quit


    end tell



    try

    do shell script "open /System/Library/CoreServices/Finder.app"

    on error

    display dialog "une erreur est apparue. Pour relancer le Finder cliquer sur son icone dans le Dock" buttons {"OK"} default button "OK" giving up after 30 with icon caution

    end try
    J'ignorre si ce serait suffisant. C'est à  essayer.
  • Bonsoir,



    Merci à  tous pour votre aide.

    Après vérification, la bonne vieille méthode de reconstruction du bureau de système 7, 8 etc... (ALT+CMD au démarrage) semble ne plus être d'actualité sous OS X.



    Finalement j'ai adopté la méthode [NSWorkspace setIcon:forFile:options:] qui fonctionne parfaitement. L'icône peut toutefois être supprimée dans la fenêtre de lecture des informations du fichier par un simple CMD-X.



    J'aurais quand même bien aimé comprendre pourquoi cela ne fonctionne pas sans la mise en oeuvre de cette méthode.



    Faute de mieux, pour le moment je garde cette solution.

    Merci
Connectez-vous ou Inscrivez-vous pour répondre.