Frage

Ich bin auf der Suche nach einem Guide oder Beispielcode für Mac OS X Finder Plug-in zu schreiben? Es würde gerne wissen, wie einige einfache Aktionen zu tun:

  1. Hinzufügen von Bild Oberschichten zu Ikonen
  2. Hinzufügen von Kontextmenüelemente
  3. hören Änderungen in Datei

Ich fand die beiden folgenden Ressourcen:

Ich bin versucht, den SCPlugin Code zu überprüfen, aber hatte gehofft, eine einfachere Probe finden zu verdauen.

War es hilfreich?

Lösung

Leider Programmieren eine Finder-Plugin eigentlich hat benötigt immer noch die Hände schmutzig mit COM bekommen. Wenn Sie das SCFinderPlugin Teilprojekt des SCPlugin Projekt anschauen, werden Sie feststellen, dass es genau die gleichen Techniken, die in den ersten Link skizzierte folgt, einschließlich einer VTable für COM Einrichten, Schreiben AddRef / ReleaseRef Funktionen, und so weiter. Schreibe eine Plugin, wo Sie gleichzeitig Altschule Carbon-Speicherverwaltung, COM-Stil Speicherverwaltung und Cocoa / new-style Carbon-Memory-Management verwalten, können eine unglaubliche schmerz und sein, dass ignoriert die Tatsache, dass Sie werden in drei oder mehr radikal unterschiedlichen APIs Interaktion mit unterschiedlichen Namenskonventionen und Aufrufen Semantik. die Situation ruft eine große Untertreibung wäre hysterisch schlecht.

Auf der hellen Seite, der Finder in Mac OS X 10.6 Snow Leopard wurde in Cocoa komplett neu geschrieben - und damit kommt weit überlegen Plugin-Schnittstellen. Wenn Sie das Glück haben, in einer Situation, wo man eigentlich nur Snow Leopard ausrichten können, sollten Sie vielleicht einen ADC Premier oder höher Mitgliedschaft packen, laden Sie die Pre-Release baut und Code dagegen. Außerdem kann das Plugin nicht sowieso ohne Cocoa Rewrite auf 10.6 arbeiten, so könnte es sinnvoll sein einen Blick auf Snow Leopard zu nehmen, bevor sie veröffentlicht wird, und zwar unabhängig.

Andere Tipps

Der Finder Icon Overlay Beispielprojekt stellt ein kleines und sehr einfach, aber tatsächlich Beispiel Arbeits die Antwort unten.

https://github.com/lesnie/Finder-Icon-Overlay

Ich weiß, das so alt ist, aber einige können in Thema noch interessiert sein (?)

Hier ist, was ich es unter Leopard (10.6) getan haben. Auf den ersten richtigen Finder Header benötigt werden. Verwenden Sie Klasse-Dump-Tool zu bekommen. Dann wird Ihren Code als SIMBL Plugin schreiben (siehe Dokumentation, wie es zu tun), einige Methoden Swizzling. Zum Beispiel etwas über das Icon in Listview zu zeichnen, drawIconWithFrame. Muss Verfahren TIconAndTextCell Verfahren außer Kraft gesetzt werden

Hier ist der Code für die Methode 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);

}

Ich bin überwiegender "drawIconWithFrame:" Verfahren mit meiner Methode "FT_drawIconWithFrame:". Im Folgenden finden Sie Beispielimplementierung für diese Methode.

- (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];
    }
}

Im Wesentlichen zieht es „myPrettyIconOverlayImage“ über jedes Symbol für Datei mit dem Dateinamen mit dem Buchstaben „A“ beginnt. Diese Logik ist bis zu Ihnen.

Achten Sie auf dieser Linie: [self FT_drawIconWithFrame:arg1]; dies ist, wie um ‚super‘ nennen normalen Symbol und Name usw. zu bekommen Ich weiß, sieht seltsam, wie Schleife, aber eigentlich ist es nicht. Dann wickeln Sie in in SIMBL Plugin installieren SIMBL und ... laufen.

Aufgrund von Änderungen in Lion einige Arbeit haben von Grund auf neu gemacht werden (stellen neue „Finder.h“ Datei mit allen Erklärungen es erforderlich, geeignete jeweiligen Kategorie und Methoden finden außer Kraft zu setzen), aber diese Technik funktioniert nach wie vor.

Happy Hacking!

Für Yosemite (MacOS 10.10 und neue) können Sie von Apple verwenden FinderSync Rahmen , die Finder Erweiterungen erlaubt:

  • Express Interesse an bestimmten Ordnerhierarchien
  • Geben Sie „Abzeichen“ zu zeigen den Status der Elemente innerhalb dieser Hierarchien
  • Geben Sie dynamische Menüpunkte im Finder Kontextmenü, wenn die ausgewählten Elemente (oder das Fenster Ziel) ist in diesen Hierarchien
  • Geben Sie eine Toolbar Artikel dass zeigt ein Menü mit dynamischen Elementen (auch wenn die Auswahl ist nicht verwandte)

Es gibt kein offizielles oder unterstützten Plugin-System für den Finder. Beginnend mit OS X 10.6, müssen Sie Code in den Finder Prozess injizieren und objektive C-Methoden im Finder Prozess außer Kraft setzen.

Ich habe dies für ein proprietäres Projekt getan. Ich kann Ihnen sagen, dass der Grund, dass es keine Beispiele oder Tutorials dafür ist, weil es eine deutlich schwierig und zeitraubend Entwicklungsaufgabe ist. Aus diesem Grund gibt es viel Anreiz für Einzelpersonen oder Organisationen, die dies erreicht haben, die Besonderheiten ihres Prozesses eng zu schützen.

Wenn es überhaupt eine Möglichkeit, dass Sie Ihr Ziel mit dem Services-API erreichen können, tun Sie es. ein Finder-Plugin Schreiben nehmen Sie 1-2 solide Monaten harter Entwicklung und einigermaßen tiefe Kenntnisse in C und Objective-C-Interna.

Wenn Sie immer noch davon überzeugt sind, dass Sie das tun wollen, greifen mach_star . Viel Glück.

Soweit ich weiß, gibt es keine offizielle Plugin-Architektur für den Finder. Sie können Bild-Overlays auf Symbole durch eine externe Anwendung hinzufügen können, ohne in den Finder, Haken, obwohl es nicht im laufenden Betrieb wäre. Ich glaube nicht, gibt es eine Möglichkeit Kontextmenü Elemente hinzufügen neben Ordneraktionen und Automator. Sie können Dateisystem mit einem externen Programm in das Schreiben aussehen ändert sich auch die Überwachung mit der

Hier ist eine fertige Lösung für Finder-Symbol Abzeichen und Kontextmenüs in Lion und Mountain Lion mit den von Les Nie beschriebenen Techniken.

Liferay Nativity ein Scripting-Bundle bietet, die die relevanten Finder Methoden swizzle werden und ein Java-Client für Setzen Sie die Symbole und Kontextmenüs. Es enthält auch gleichwertige Projekte für Windows und Linux.

Das Projekt ist Open Source unter der LGPL, so fühlen sich frei, alle Fehlerbehebungen oder Verbesserungen beitragen!

Die Beute ist schlank; es ist nie wirklich klar zu mir gewesen, ob Finder Plugins tatsächlich unterstützt werden. Ein paar mehr Leads, aber:

  • SampleCMPlugIn - Kohlenstoff-basierte natürlich, da so Finder ist. Beachten Sie, dass fast jeder Finder-Plugin wird wahrscheinlich gehen mit 10,6 aufhören zu arbeiten.
  • Automator kann Dinge als speichern "Finder-Plugin." Es ist eine weitere unterstützte Version von dem, was Sie diskutieren, aber natürlich weniger flexibel.

Finder / Datei-Browser-Symbol-Overlays und Kontextmenüs in einer plattformübergreifende Art und Weise hinzuzufügen, aus Java, werfen Sie einen Blick auf die Liferay Nativity Bibliothek.

ich auch erwähnt dies in eine andere SO Post , die auch enthält Links zu Apples 'Finder Sync' docs und API.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top