Hallo!
Wenn es für deine Zwecke funktioniert, dann ist es prima!
Verbesserungsvorschläge hätte ich keine
Lösungsmöglichkeiten hast du im Prinzip auch nicht übersehen. Im Gegenteil, gute Recherche!
...wobei...
Ich gehe davon aus, dass du nicht im System herumwurschteln willst, was ich verstehen kann und hier auch niemals jemanden empfehlen würde... allerdings ist das sozusagen ein Sonderfall und du würdest nur einen Fehler korrigieren (der übrigens in Lion mittlerweile gefixt ist).
Alle weiteren Ansätze wirst du eventuell aus ästhetischen Gründen verwerfen. Stehst du auf das Alert Stop Icon?
Angenommen, dem ist so, dann könnte man was basteln. Bevor ich lange schreibe, hänge ich mal eine Variante an.
Gruß
Ergebnis 1 bis 6 von 6
- 18.12.2011, 21:16 #1Riesenboiken
Themenstarter
- Registriert
- 06.2004
- Beiträge
- 290
Standardzeilen für jedes Droplet
Hallo liebe Apfelskripter! Häufig möchte ich an Droplets noch irgendetwas ändern und habe mir nun gedacht, ich schlage gleich zwei Fliegen mit einer Klappe: Jedem Droplet stelle ich ein paar Zeilen voran, die mich bei einem Doppelklick auf dasselbe einerseits darauf hinweisen, dass es ein Droplet ist und andererseits (und das ist die wichtigere Funktion) das Droplet im Editor öffnen. Ich habe es folgendermaßen gelöst:
Das ist alles nicht besonders spektakulär, vielleicht sogar viel zu kompliziert gedacht und gemacht, aber es funktioniert für meine Zwecke - und ich bin froh, als AS-Anfänger mal wieder eine selbstgestellte Aufgabe erfolgreich gelöst zu habenCode:on run display dialog "Dies ist ein Droplet, bitte Ordner oder Dateien daraufziehen." & linefeed & linefeed buttons {"Edit", "OK, ich hab's verstanden"} default button 2 with icon 0 if button returned of result = "Edit" then set myItem to (path to me) if application "Script Editor" is running then tell application "Script Editor" activate open myItem end tell else tell application "Script Editor" activate close window "Ohne Titel" open myItem end tell end if end if end run on open -- hier steht drin, was das eigentliche Droplet machen soll end open
Falls aber jemand Verbesserungsvorschläge hat, würde ich mich freuen!
P.S: Ich nutze Leopard 10.5.8 auf deutsch. Der "display dialog" hat oben links eine rote "closebox", die bei Betätigung das Script abstürzen lässt, darüber habe ich schon einiges gelesen. Folgende Lösungsansätze habe ich aus verschiedenen Gründen verworfen:
- OS X Leopard in englischer Systemversion
- "display alert" statt "display dialog"
- "display dialog" via "Automator Runner"
- Modifikation in "/System/Library/ScriptingAdditions/StandardAdditions.osax/Contents/Resources/German.lproj/DisplayDialog.nib/objects.xib"
Habe ich irgendwelche Lösungsmöglichkeiten übersehen? Besteht das Problem auch in OS X Lion?
- 19.12.2011, 12:31 #2
- 19.12.2011, 15:06 #3Riesenboiken
Themenstarter
- Registriert
- 06.2004
- Beiträge
- 290
Hallo & Danke! Das ist mal wieder eine sehr willkommene Bereicherung

Dass der "closebox-bug" in Lion behoben ist, freut mich. Von einer Modifikation in meinen 10.4.11 Tiger- und 10.5.8 Leopard-Systemen habe ich Abstand genommen, da ich so vergesslich bin, dass ich bei einem (eigenen oder fremden) dritten Mac oder einer Systemneuinstallation vermutlich nicht mehr an diesen Eingriff denken würde. Ganz zu schweigen davon, dass es doch recht kompliziert ist, beispielsweise ein Droplet zu Weihnachten zu verschenken und dem Empfänger zugleich mitteilen zu müssen, dass er erst mal mit Administratorrechten sein System bearbeiten muss.
Das Icon "stop" finde ich nicht wirklich attraktiv, jedoch ist es bei den für den "display dialog" zur Verfügung stehenden Symbolen meine erste Wahl - aber in Deiner Lösung lässt sich ja mit durchaus überschaubarem Aufwand ein eigenes Icon einfügen. Allerdings erscheint beim "display alert" der Cursor als nichtdrehendes schwarzweisses kreisförmigen Zeichen, aus ästhetischen Gründen ist mir da wiederum der ganz normale pfeilförmige Mauszeiger aus dem "display dialog" lieber. Nicht dass ich etwas gegen den Münchener Automobilhersteller hätte, an dessen Logo mich das Symbol erinnert, aber mich irritiert, dass der Kreis sich nicht dreht - kommt vielleicht häufiger vor, ist mir jedoch noch nie aufgefallen.
Alles in allem ergeben sich aber zwei Fragen:
Unter Tiger kann ich Dein Droplet nicht verwenden, lässt sich das modifizieren oder ist das schlichtweg unmöglich? Habe recherchiert und probiert, bin aber zu keinem Ergebnis gekommen.
Und unter Leopard (Skripteditor 2.2.1, Intel) lässt sich der Bundle-Inhalt nicht einblenden, was unter Tiger (Skripteditor 2.1.2, PowerPC) problemlos geht. Woran liegt das denn nun schon wieder, verflixt noch mal...
- 19.12.2011, 17:22 #4
Hmm, stimmt....
Da gab es einige Veränderungen!
Hier erst mal ein Link: Klick
Und was die Erinnerung noch hergibt:
In Leopard wurde zwischen Programm und Programm Bundle unterschieden. Ein Skript muss als Programm Bundle gespeichert sein, um auf den Bundle-Inhalt zugreifen zu können.
Wie das in Tiger war, weiß ich nicht mehr
Ansonsten auch noch mal hier schauen: Klick
Gruß
- 22.12.2011, 14:22 #5
Warum einfach wenn's auch kompliziert geht?
Ähm... *lol*.
Hier (aus Spaß) ein Pimp:
Code:on run set goDoStuff to runAction() if not goDoStuff is false then doStuff(goDoStuff) end run on open droppedItems doStuff(droppedItems) end open on doStuff(droppedItems) -- hier steht drin, was das eigentliche Droplet machen soll (* repeat with aItem in droppedItems -- jedes dropling enzeln verarbeiten log aItem end repeat *) end doStuff on runAction() set dialogButtonsMap to {chooseFile:"Ordner/Dateien auswählen", edit:"Edit", cancel:"OK, ich hab's verstanden"} -- muss man nem dialog als (items of dialogButtonsMap) übergeben. dialoge fressen keine maps, sondern listen repeat -- lieber display alert. das kann man mit esc loswerden, wenn man cancel button definiert, -- mit enter kriegt man den default und mit space immer den dritten set alertButtonResult to button returned of ¬ (display alert ¬ "Dies ist ein Droplet, bitte Ordner oder Dateien daraufziehen." & linefeed & linefeed ¬ buttons (items of dialogButtonsMap) ¬ default button 1 ¬ cancel button 3 ¬ as warning ¬ ) if alertButtonResult = (edit of dialogButtonsMap) then set myItem to (path to me) editScript(myItem) return false -- damit doStuff nicht ausgeführt wird else if alertButtonResult = (chooseFile of dialogButtonsMap) then set selectedFilesOrFolders to selectFilesOrFolders() if not selectedFilesOrFolders is false then return selectedFilesOrFolders -- wenn choose from list in selectFilesOrFolders() abgebrochen wurde, ist selectedFilesOrFolders false -- das führt dazu, dass display alert wieder angezeigt wird wg. dem loop else if alertButtonResult = (cancel of dialogButtonsMap) then -- wird nie aufgerufen, weil bei klick auf "OK, ich… " die ausführung abgebrochen wird -- => ist cancel button von display alert -- mit display dialog bräuchte man es return false end if end repeat end runAction on selectFilesOrFolders() set cFLMap to {files_:"Dateien", folders_:"Ordner"} set cFLResult to ¬ (choose from list (items of cFLMap) with prompt "was?") if cFLResult as string = files_ of cFLMap then set myResult to ¬ (choose file with multiple selections allowed) else if cFLResult as string = folders_ of cFLMap then set myResult to ¬ (choose folder with multiple selections allowed) else set myResult to false end if return myResult end selectFilesOrFolders on editScript(theScript) -- «application id "com.apple.ScriptEditor2"» statt «application "script editor"» macht es für 10.6+ portabel, -- da der Script Editor in Applescript Editor umbenannt wurde if application id "com.apple.ScriptEditor2" is running then tell application id "com.apple.ScriptEditor2" activate open theScript end tell else tell application id "com.apple.ScriptEditor2" activate close window "Ohne Titel" open theScript end tell end if end editScript
Jajaja muss man nicht so kompliziert machen. Die anfängliche Vorlage reicht völligst.
The cause of the problem is:
Don't worry; it's been deprecated.
The new one is worse.
- 22.12.2011, 14:30 #6Riesenboiken
Themenstarter
- Registriert
- 06.2004
- Beiträge
- 290
Auch nicht schlecht, Danke!
(Warum nicht einfach mal ein bischen komplizierter
)


Zitieren
