Apple / Mac: Frage: Dragging file to py-program in dock

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
HorstJENS
User
Beiträge: 123
Registriert: Donnerstag 9. Februar 2006, 21:41
Wohnort: Wien, Österreich
Kontaktdaten:

Liebe Python + Apfel - Gurus,
bin leider nicht sehr bewandert mit Mac, hier eine Frage betreffend Mac OS 10.6.8 "Snow Leopard":

Ich habe ein Python-Programm geschrieben welches als command-line parameter einen filename akzeptiert und diesen dann auswertet.

Aufruf von der Shell:

Code: Alles auswählen

python meinprogram.py meinfilename.txt
Ich würde gerne einen File vom Finder mit der Maus auf mein Python-Programm (Icon im Dock) ziehen um den selben Effekt zu haben.

Muss ich dazu mein Python-Programm im Mac-OS registrieren als "Drag-and-drop"-fähig ? Wie mache ich das bzw wo finde ich Dokumentationen dazu ?

mfg,
-Horst
http://spielend-programmieren.at
deets

Das hier muesste das richtige sein:

https://developer.apple.com/library/mac ... rence.html

Und da dann application:openFile:


Dazu musst du halte ne Cocoa-App schreiben. Ich mache das gerne mit pyobjc und Python. Aber unter Umstaenden ist es fuer dich auch einfacher, eine simple Cocoa-App in Xcode zu schreiben, die an dein script delegiert.

Last but not least: das oben beschriebene funktioniert nur bei laufendem Programm! Wenn du auch bei einem nur dargestellten "wartenden" icon was machen willst, musst du das hier beachten:

https://developer.apple.com/library/mac ... 86-CH4-SW1
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Gemäß Stackoverflow kann man wohl den Applet Builder benutzen, doch das funktioniert bei mir im Test nicht. Der zweite Tipp ist besser. Öffne den Automator, wähle "Shell Script ausführen", wähle "/bin/bash", wähle "Als Argument", rufe dort dann das Python-Programm auf. Die Argumente werden in "$@" übergeben. Zum Beispiel:

Code: Alles auswählen

/usr/local/bin/python /Users/sma/test.py "$@"
mit

Code: Alles auswählen

import sys
print sys.argv
und es sollte gehen - natürlich siehst du das "print" nicht.

Du kannst aber gemäß der Warn-Meldung im Automator, noch die Aktion "Angegebene Finder-Objekte abfragen" hinzufügen, dort dann ein paar Beispiel-Dateien auswählen und dann siehst du im Ergebnisse-Feld der "Shell-Script ausführen"-Aktion das gewünschte Ergebnis.

Stefan

PS: Wenn du jetzt noch das Icon ändern willst, gehst du so vor: Suche dir ein icns-File oder eine App mit einem schönen Icon, öffne mit cmd+I die Info, klicke auf das kleine Icon oben links. Drücke cmd+C, öffne die Info vom dem Automator-Script, klicke wieder auf das kleine Icon, drücke cmd+V.
deets

@sma den automator hatte ich dazu auch mal ueberflogen, aber nix konkret genuges gefunden.

Vorhin ist mir nicht mehr eingefallen wie ein bestimmtes tool hiess - aber jetzt hab' ich's gefunden:

http://sveinbjorn.org/platypus

Das sollte das eigentlich auch gehen.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

platypus sieht interessant aus (auch wenn ich die Einstellung "F*ck off, ich habe keinen Block ein paar Strings-Ressourcen zu internationalisieren" aus der FAQ nicht so toll finde). Wo ich keine Antwort gefunden habe ist, wie man damit umgeht, dass man ab OS X 10.8 ja seine Apps signieren sollte, damit keine Fehler bei der Installation auftreten. Da ich davon ausgehe, dass Mountain Lion nächsten Monat erscheint, sollte man tagesaktuell eigentlich keine Apps mehr anders bauen (wenn's nicht gerade nur für den Privatgebrauch ist).

Stefan
deets

KA, letzlich kann man natuerlich codesign selbst ausfuehren. Das es natuerlich cooler waere das als Teil des Generierungsprozesses zu machen - klar. Vielleicht baut er's ja ein...
Benutzeravatar
HorstJENS
User
Beiträge: 123
Registriert: Donnerstag 9. Februar 2006, 21:41
Wohnort: Wien, Österreich
Kontaktdaten:

Danke für die vielen Hinweise. Habe mittels Platypus ein drag & drop fähiges Skript erstellen können.
http://spielend-programmieren.at
Antworten