Проект примера Finder Icon Overlay представляет собой небольшой и очень простой, но фактически рабочий пример ответа ниже.
https://github.com/lesnie/Finder-Icon-Overlay
Я знаю, что это настолько старый, но некоторые из них могут быть по-прежнему заинтересованы в теме (?)
Вот что я это сделал под Leopard (10.6). Сначала нужны правильные заголовки Finder. Используйте инструмент класса-дампа, чтобы получить его. Затем напишите свой код как плагин SIMBL (см. Документацию, как это сделать), swizzling некоторые методы. Например, чтобы нарисовать что-то поверх значка в ListView, drawIconWithFrame: метод TIconAndTextCell должен быть переопределен.
Вот код для метода 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:)),"[email protected]:{CGRect={CGPoint=dd}{CGSize=dd}}");
old = class_getInstanceMethod(finder_class, @selector(drawIconWithFrame:));
new = class_getInstanceMethod(finder_class, @selector(FT_drawIconWithFrame:));
method_exchangeImplementations(old, new);
}
Я переопределение "drawIconWithFrame:" метод с моим методом "FT_drawIconWithFrame:". Ниже приведен пример реализации этого метода.
- (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];
}
}
По существу, он рисует «myPrettyIconOverlayImage» над каждым значком файла с именем файла начинается с буквы «А». Эта логика зависит от вас.
Обратите внимание на эту строку: [self FT_drawIconWithFrame:arg1];
вот как называть «супер», чтобы получить нормальный значок и имя и т. Д. Я знаю, выглядит странно, как цикл, но на самом деле это не так. Затем включите плагин SIMBL, установите SIMBL и ... запустите.
Из-за изменений в Lion необходимо выполнить некоторые работы с нуля (создать новый файл Finder.h со всеми необходимыми объявлениями, найти подходящую классность и методы для переопределения), но этот метод все еще работает.
Счастливый взлом!
Прошло некоторое время с этого поста, с 10.6 легкодоступными. Вы достигли того, что пытались? Вы пошли с тактикой плагина Finder? – epologee
Любые обновления по этому поводу для льва? – Tony
@ LesNie ниже ссылки на его проект [Настроить значок значка] (https://github.com/lesnie/Finder-Icon-Overlay). Связывание в случае, если кто-либо еще сталкивается с трудностями при поиске примера с открытым исходным кодом OS X Finder Plugin (как и я). – pkamb