Nasıl OS X Bulucu eklenti Yazmak
Mac OS X Bulucu eklentileri yazmak için bir kılavuz ya da örnek kod arıyorum. Bazı basit eylemleri yapmak için nasıl bilmek istiyor:
- simgeler için görüntü overlayers sözlerine ekledi
- bağlam menüsü öğeleri ekleme
- dosya değişiklikleri için dinleyin
Aşağıdaki iki kaynak buldum:
- Writing Contextual Menu Plugins for OS X:
COM
API Mac OS X 8/9 hedefleme kullanan 2002'den eski Bir belge. - SCPlugin: Açık kaynak Bulucu içeren SVN Mac uygulama eklentisi.
SCPlugin
kod gözden geçirmek hoşuma gitti ama sindirimi daha kolay bir örnek bulmak umut vardı.
CEVAP
Finder Icon Overlay örnek proje cevabı aşağıda küçük ve ama aslında çalışma çok temel bir örnek teşkil etmektedir.
https://github.com/lesnie/Finder-Icon-Overlay
Bu çok eski olduğunu biliyorum, ama bazı konuları hala ilgileniyor olabilir (?)
Leopard (10.6) yaptım. İlk başta Bulucu başlıkları gerekli uygun. Sınıf-döküm aracı almak için kullanın. O zaman yaz SİMBL bir eklenti olarak kodunuzu (bunu nasıl belgelerine bakın), bazı yöntemler swizzling. Örneğin, Liste Görünümü simge üzerine bir şeyler çizmek, drawİconWithFrame: TİconAndTextCell yöntemi yöntemi geçersiz olmalıdır.
İşte yöntem swizzling için: kod
(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);
}
Geçersiz kılma ben "drawİconWithFrame:" benim yöntemi "FT_drawİconWithFrame:". Aşağıda, bu yöntem için örnek uygulama.
- (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];
}
}
Çizer aslında "" harfi ile başlıyor dosya adı ile dosya için her simgenin üzerine"". Bir myPrettyİconOverlayİmage Bu mantık size kalmış.
6* *Bu nasıl 'süper' normal simge ve isim vs. almak için. bu satıra dikkat: Biliyorum, tuhaf görünüyor, döngü gibi, ama aslında hiç de kolay değil. Sonra SİMBL plugin içine sarın, SİMBL ...yükleyin ve çalıştırın.
Bazı işler baştan yapılmak zorunda Aslan değişiklikler nedeniyle (yeni bir "Bulucu.h" tüm bildirimleri içinde gerekli olan, uygun classess ve geçersiz kılmak için yöntemler bulmak) dosya, ama bu yöntem hala çalışıyor.
Happy hacking!
Nasıl Eclipse için bir eklenti yazmak ...
Çözmek için nasıl "Eklenti yürütm...
Nasıl bir yazmak:satır içi CSS hover?...
Nasıl iOS tamamen C uygulama yazmak iç...
Nasıl ActiveRecord modeli ve Raylar ta...