Script aan UI koppelen

Hoi mensen,

Vraagje: normaal print ik via de terminal naar CUPS met dit
commmando: lpr -o raw <file>

Is er een mogelijkheid dit via de UI te doen? BV door te voegen aan het context menu toe te voegen? Rechtermuis klik en dan selecteren “Raw print”.

hoe kan ik iets dergelijks voor elkaar krijgen? Ik ben redelijk nieuw met de Mac, ik heb wel iets gehoord over AppleScript… Lukt dit hier mee?

(Ik ben alleen bekend met het gouwe ouwe REXX van de Amiga:))

Bedankt voor hulp!!!

Gr. Joris

met het proggie dropscript zou dat moeten kunnen.

AppleScript is your tool! AppleScript is zo makkelijk om te leren, kijk even bij de Links (op deze site) voor goede AppleScript sites.

Waarom printen via cups? Ik weet niet waar je naartoe print, maar IP printing is my friend :D

Ik ben een bezig met een stage opdracht met betrekking tot printen op de Mac.

Soms wil ik een file rechtstreeks naar de printer sturen zonder dat CUPS er nog aan gaat zitten sleutelen.

Ik zal eens met AppleScript aan de gang gaan.

Joris

Om je alvast op weg te helpen: Zet dit in Script Editor en save als Application (het wordt een dropscript): [code:1:d876be7abd]global item_counter

on run
set the item_counter to 0
tell application "Finder"
activate
set this_folder to (the target of the front window) as alias
my processor()
my process_folder(this_folder)
my display_result(item_counter)
end tell
end run

– This droplet processes both files or folders of files dropped onto the applet
on open these_items
set the item_counter to 0
–get_angle()
repeat with i from 1 to the count of these_items
set this_item to (item i of these_items)
set the item_info to info for this_item
if folder of the item_info is true then
process_folder(this_item)
else if (alias of the item_info is false) then
process_item(this_item)
end if
end repeat
my display_result(item_counter)
end open

– this sub-routine processes folders
on process_folder(this_folder)
set these_items to list folder this_folder without invisibles
repeat with i from 1 to the count of these_items
set this_item to alias ((this_folder as text) & (item i of these_items))
set the item_info to info for this_item
if folder of the item_info is true then
process_folder(this_item)
else if (alias of the item_info is false) then
process_item(this_item)
end if
end repeat
end process_folder

– this sub-routine processes single files
on process_item(this_item)
try
set unixpath to unix_path(this_item)
– put your shell script here
set command to "lpr -o raw " & unixpath
do shell script command
set the item_counter to the item_counter + 1
on error error_message
tell application "Finder"
activate
display dialog error_message buttons {"Cancel"} default button 1
end tell
end try
end process_item

– this sub-routine changes the mac file path (bla:blabla:blablabla) to a unix-like file path
on unix_path(mac_path)
set unixpath to (POSIX path of mac_path)
set chars to every character of unixpath
repeat with i from 1 to length of chars
if “!$&”’*(){[|;<>?~` &quot; contains (item i of chars as text) then
set item i of chars to "&quot; & (item i of chars as text)
end if
end repeat
return every item of chars as string
end unix_path

– display final result
on display_result(item_counter)
if the item_counter is 0 then
set the display_message to "Er zijn geen documenten geprint"
else if the item_counter is 1 then
set the display_message to "Eén document wordt geprint"
else
set the display_message to ((item_counter as string) & " documenten worden geprint.")
end if
tell application "Finder"
activate
display dialog display_message buttons {"?"} default button 1 giving up after 2
end tell
end display_result[/code:1:d876be7abd]

Het script is een beetje van mezelf en een beetje van maggi (en apple en james sorenson). Je zult ongetwijfeld nog wel een aantal dingen moeten aanpassen maar het zou al moeten werken.

Meer applescript info op developer.apple.com

Ik kom er niet helemaal uit.

Ik heb DropScript gedownload, maar ik kan er nergens documentatie over vinden.

Ik heb de code van Julian geopend met Script Editor en gesaved als “compiled script”.

hoe zorg ik voor de activatie van dit script en hoe geef ik de bestandsnaam door aan het script?

Is er geen “simpele” manier om iets aan het contextueel menu toe te voegen (Open With, Copy, Paste, Duplicate menu bedoel ik hier mee).

Gewoon rechter muis en dan “Send to Raw Printer” of zoiets. In Windows is heel makkelijk te doen, kun je zelfs per filetype aangeven.

Heb ik hier persé een script voor nodig?

Gr. Joris

[quote:7141a89cae="trekker"]Ik kom er niet helemaal uit.

Ik heb DropScript gedownload, maar ik kan er nergens documentatie over vinden.
[/quote:7141a89cae]
op de site staat een handleiding

Op deze site: http://www.advogato.org/proj/DropScript/

heb ik dit als enigste aan documentatie gevonden:

DropScript is a little Cocoa application (for Mac OS X) that lets you drop any program onto it which takes files as command line arguments and creates a new application from that program. Generally, these programs are scripts written in sh, perl, etc. So you can now write a shell script like so:

#!/bin/sh
gzip -9 “$@”

Then call the script “GZip.sh”, drop that file onto DropScript, and out pops DropGZip.app next to GZip.sh. When you drop files onto DropGZip, it compresses the files for you.

Is dit het goede programmaatje?

En ik zie nergens een Drop Window, zoals je bijvoorbeeld bij Drop Zip hebt. Of zit ik helemaal verkeerd over dit programma dit te denken???

Is het niet mogelijk iets aan het context menu toe te voegen?

Gr. Joris

Ik heb de text nog eens goed gelezen en tot de volgende conclusie gekomen:

Met behulp van DropScript moet ik een nieuwe applicatie maken, en in deze nieuwe applicatie kan ik mijn files droppen.

klopt dit?

dan de vraag, hoe maak ik die nieuwe applicatie met DropScript?

Ik kan in het menu alleen kiezen voor: Open, en dan kies ik mijn compiled script… maar daarna gebeurd er niks…

Hmmm ben een beetje op goede weg denk ik:)

[quote:d42635b047="trekker"]Ik heb de text nog eens goed gelezen en tot de volgende conclusie gekomen:

Met behulp van DropScript moet ik een nieuwe applicatie maken, en in deze nieuwe applicatie kan ik mijn files droppen.

klopt dit?

dan de vraag, hoe maak ik die nieuwe applicatie met DropScript?

Ik kan in het menu alleen kiezen voor: Open, en dan kies ik mijn compiled script… maar daarna gebeurd er niks…

Hmmm ben een beetje op goede weg denk ik:)[/quote:d42635b047]

ja dit klopt. volgens mij moet je een gewoon scriptje gebruiken ipv een gecompileerde

Nu snap ik hoe DropScript werkt.

Maar hoe schrijf ik dat scriptje nu?

Is dat van Julian niet een beetje gecompliceerd, kan het niet met een simpel shell scriptje?

Vanuit dat voorbeeld van de documentatie heb ik dit gedaan:

#!/bin/sh
lpr -o raw “$@”

Maar dit doet niet echt iets:) Behalve dan “Application not Responding”:slight_smile:

Enig idee iemand?

Gr. Joris

Nee nee, mijn script is puur applescript. Je moet het kopieren in script editor (applicaties/hulp programma's denk ik) en bewaren als application. Het wordt dan automatisch een dropscript (een applescript icoontje met een naar beneden wijzend pijltje erin) Je kunt daar je files en mappen opgooien/insplepen en dan zou ie het unix commando moeten uitvoeren dat achter de variabele 'commando' staat. Het applicatietje dropscript wordt dus helemaal niet gebruikt, hoewel je het volgens mij op die manier ook zou moeten kunnen doen. Ik weet alleen niet hoe goed ie met mappen en multiple files omgaat.

FF over de code: Die is niet zo moeilijk…
In het 1e deel worden een aantal variabelen gereserveerd
In het 2e deel wordt bekeken of we te maken hebben met losse files of een map
In het derde deel wordt een evt. map ontleed
In het 4e deel wordt een file geprocessed (dus wordt je unix command uitgevoerd
In het 5e deel wordt een standaard macintosh filepath (met ‘:’ als scheindings teken omgezet naar een unix file path (met ‘/’ en ’ ’ voor spaties)
In het 6e deel wordt uiteindelijk het aantal files dat geprocessed is getoont in een dialoogvenstertje.

Alleen deel 4 is echt interessant voor je omdat je daar het unix commando in elkaar klust. De rest is de code voor het dropscript (die van AppleScript dus)

Ik had hem zelf al een keer als Application opgeslagen in de Script Editor. Maar toen kreeg ik deze foutmelding bij het opstarten: <<script>> doesn't understand the processor message

Toen heb ik de application maar afgesloten, maar nu blijkt dat als ik doorklik het programmaatje wel werkt.

Is er nog iets te doen aan die foutmelding?

Gr. Joris