SORU
18 AĞUSTOS 2009, Salı


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:

  1. simgeler için görüntü overlayers sözlerine ekledi
  2. bağlam menüsü öğeleri ekleme
  3. dosya değişiklikleri için dinleyin

Aşağıdaki iki kaynak buldum:

SCPlugin kod gözden geçirmek hoşuma gitti ama sindirimi daha kolay bir örnek bulmak umut vardı.

CEVAP
9 Ocak 2012, PAZARTESİ


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!

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Edge-CGI 3D Tutorials and more!

    Edge-CGI 3D

    11 HAZİRAN 2013
  • erikbjgn's channel

    erikbjgn's c

    12 Mayıs 2008
  • Roger Huffman

    Roger Huffma

    4 ŞUBAT 2007