Je sais que c'est vieux, mais certains peuvent être encore intéressé par le sujet (?)
Voici ce que j'ai fait sous Leopard (10.6). À première bonne Finder les en-têtes sont nécessaires. Utilisation en classe-outil de vidage pour l'obtenir. Ensuite, écrivez votre code comme un SIMBL plugin (se référer à la documentation comment faire), swizzling certaines méthodes. Par exemple pour dessiner quelque chose sur l'icône dans la vue liste, drawIconWithFrame: méthode de TIconAndTextCell méthode doit être surchargée.
Voici le code pour la méthode swizzling:
+ (void) Plugin_load
{
Method old, new;
Class self_class = [self class];
Class finder_class = [objc_getClass("TIconAndTextCell") class];
class_addMethod(finder_class, @selector(FT_drawIconWithFrame:),
class_getMethodImplementation(self_class, @selector(FT_drawIconWithFrame:)),"v@:{CGRect={CGPoint=dd}{CGSize=dd}}");
old = class_getInstanceMethod(finder_class, @selector(drawIconWithFrame:));
new = class_getInstanceMethod(finder_class, @selector(FT_drawIconWithFrame:));
method_exchangeImplementations(old, new);
}
Je suis primordial "drawIconWithFrame:" avec ma méthode "FT_drawIconWithFrame:". Ci-dessous un exemple de mise en œuvre de cette méthode.
- (void) FT_drawIconWithFrame:(struct CGRect)arg1
{
[self FT_drawIconWithFrame:arg1];
if ([self respondsToSelector:@selector(node)]) {
if ([[[[NSClassFromString(@"FINode") nodeWithFENode:[(TNodeIconAndNameCell *)self node]] fullPath] lastPathComponent] hasPrefix:@"A"])
[myPrettyIconOverlayImage drawInRect:NSMakeRect(arg1.origin.x, arg1.origin.y, arg1.size.height, arg1.size.height) fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0];
}
}
Essentiellement, il dessine "myPrettyIconOverlayImage" sur chaque icône pour le fichier avec le nom de fichier commence par la lettre "A". Cette logique est à vous.
Attention à cette ligne: [self FT_drawIconWithFrame:arg1];
c'est la façon de l'appeler "super" afin d'obtenir la normale icône et le nom de etc. Je sais, un peu bizarre, comme la boucle, mais en réalité il ne l'est pas. Puis les envelopper dans dans SIMBL plugin, installer SIMBL et ...courir.
En raison de changements dans Lion de quelques travaux sont à faire à partir de zéro (faire de nouveaux "du Finder.h" fichier avec toutes les déclarations nécessaires, trouver bon classess et de méthodes pour le remplacer), mais cette technique fonctionne encore.
Happy hacking!