Newsgroup: it.comp.macintosh
Titolo: Cambiare il "Creator"

Vorrei fare uno script per cambiere il creator di un file (voglio fare
uno scherzetto a un mio amico) quale é la sintassi (amesso che sa
possibile)? Lo posso fare solo con applicazioni scriptabili o riesco a
farlo anche solo con il Finder?
ciao, grazie.
maxo
-- 
========================================
               m a x o
 
ma...@freemail.it


"Ora mai che i baci tuoi piu' non mi sazian
 cerchero' un'altra donna dentro ai sogni di Tarzan..."

 Né l'uno né l'altro, dunque: occorre come minimo una OSAX.
Ahi ahi Marco, va bene che il referendum ha perso :-((( e oggi hai
esagerato con lo champagne... ;-)
----
set myfile to (choose file)
tell application "Finder"
        set file type of myfile to "PICT"
end tell
----
L'unica cosa a cui bisogna stare attenti e` che il type bisogna
chiamarlo "file type" e il creator "creator type". 
I vocaboli con scritto "obsolete" servono a fare script compatibili 
col system pre-Sys.8
Cioe` se sull'8 scrivo  "set locked obsolete of x to true", 
scrivero` uno script che sara` compatibile all'indietro ma non in
avanti. Viceversa se scrivo "set locked of x to true" saro` 
compatibile in avanti. 
(dal dizionario del Finder 8.0)
Class file : A file
Properties:
        creator type type class -- the OSType identifying the 
                                   application that created the item
        file type obsolete type class -- the OSType identifying the 
                                         type of data contained in 
                                         the item (DEPRECATED - for 
                                         use with scripts compiled
                                         before Finder 8.0. Will be
                                         removed in the next release)
        file type type class -- the OSType identifying the type of data
                                contained in the item
        locked obsolete boolean -- Is the file locked? (DEPRECATED - for
                                   use with scripts compiled before
                                   Finder 8.0. Will be removed in the
                                   next release)
        locked boolean -- Is the file locked?
        product version string [r/o] -- the version of the product
                                        (visible at the top of the 
                                        "Get Info" window)
        stationery boolean -- Is the file a stationery pad?
        version string [r/o] -- the version of the file (visible at
                                the bottom of the "Get Info" window)
-- 
Ciao,        \+----------+  "La risposta e ` dentro di te...
   Vittorio --| : )    o |      ...MA E` SBAGLIATA!!!"
             /+----------+
+-----------------------------------------------------------+
|  - = (  ENCICLOPEDIA DIGITALE DELLA FANTASCIENZA  ) = -   |
| 
http://www.fantascienza.com/edf/
 (con motore di ricerca!) |
+-----------------------------------------------------------+

end tell
Touche' :-\
Ciao!


 farlo anche solo con il Finder?
Se vogliamo proprio strafare, salva questo script come applicazione
(selezionando "never show startup screen"): 
Poi tu rinimini *lo script* con nomi tipo "TEXT.ttxt", "JPEG.GKON" ecc.
(insomma hai capito, con type e creator chge vuoi, separati da un
punto).
Quando ci trascini sopra un gruppo di files, essi assumono il type e
creator specificato nel nome dello scriptino. 
E` un po' lentino (meglio usare una vera applicazione), pero` funziona!
----
on open (gruppo)
        set x to the path to me as text
        set tid to AppleScript's text item delimiters
        set AppleScript's text item delimiters to ":"
        set y to the last text item of x
 
        set AppleScript's text item delimiters to "."
        set tipo to text item 1 of y
        set creatore to text item 2 of y
 
        tell application "Finder"
                repeat with myfile in gruppo
                        set file type of myfile to tipo
                        set creator type of myfile to creatore
                end repeat
        end tell
        set AppleScript's text item delimiters to tid
end open
----


 ----
 Oppure  con  "Weedhopper Commands" (shareware 9 $) 

 maxo
Puoi installare Snitch, e' un pannello di controllo che permette di
farlo.
ciao
Mailman

end open
Stavolta tocca a me ;-))
Come sai in genere preferisco anch'io ricorrere ai text item
delimiters, ma in questo script tu effettui comune la tell al
Finder... quindi potresti farti fornire il nome file dal Finder.
Un'altra possibilità (IMHO più carina) è quella di chiamare il file
'TEXT ttxt', ovvero con i due gruppi 4+4 separati da uno spazio.
In questo caso puoi usare:
set (tipo, creatore) to (words -2 thru -1 of ((path to me) as text)))
Tu come la vedi? ;)


 Tu come la vedi? ;)
Ponendomi come obiettivo non la velocita` (har, har, har...) ma di
ridurre al minimo il numero di variabili, in modo da avere uno script
che si spera comprensibile quanto il linguaggio naturale... a me viene
questo:
----
on open (gruppo)
tell application "Finder"
set ilnome to the name of file (path to me)
set tid to AppleScript's text item delimiters
set AppleScript's text item delimiters to "."
set {iltipo, ilcreatore} to {(text item -2 of ¬
 ilnome), (text item -1 of ilnome)}
repeat with myfile in gruppo
set file type of myfile to iltipo
set creator type of myfile to ilcreatore
end repeat
set AppleScript's text item delimiters to tid
end tell
end open
----
In realta` questo script, per evitare di avere variabili che non
rappresentano qualcosa di reale, ha almeno il difetto che ad ogni ciclo
fa DUE coercions quando ne basterebbe UNA... ma credo che il tempo
processore che si aggiunge sia irrilevante. 
Una domanda per il pubblico ;-) : questo script vi pare grossomodo
comprensibile? Il sogno di Applescript di essere comprensibile (e
manipolabile) da tutti i macuser, vi sembra almeno in parte realizzato?


end open
Ciao!


 come TID il '.'
Visto quanto e` limitato il multitasking, mi stupirei che 
un altro script riuscisse a sfruttare il breve attimo fra 
quando questo acquisisce il nome e l'inizio del repeat... 
Pero` hai ragione e non capisco come mi e` passato di mente... 


un altro script riuscisse a sfruttare il breve attimo fra
Beh, se cominci ad usare 8.5 ed una CPU pompata fila liscio come il
burro... Più script girano assieme senza il minimo problema, ed il
sistema resta fluido che è un piacere.
A questo punto la cosa carina sarebbe non basarsi sul nome del file,
ma presentare una lista al momento del run in cui si sceglie il tipo
ed il creatore.
Può venire una cosa carina, ed io la farei così:
- la lista è una property, e può crescere "by example" (se vuoi un
  tipo/creatore diverso scegli un file esempio o digiti entrambi i
  codici, e poi ne dai una descrizione. In pratica si tratterebbe di
  una lista di elemnti del tipo {_type: 'xxxx', _creator: 'yyyy', 
  _comment: 'adasdad asda'}, e il comment viene mostrato con una
  choice al run.
- il formato in cui convertire viene richiesto on run e non on open,
  per cui finché non quitti resta quello.
Tu come la vedi? ;)
------


 Tu come la vedi? ;)
Da come me la presenti avrebbe bisogno di un fottio di osax... 
1)Per la finestra per scegliere cosa fare, almeno Dialog Director. 
2)Per permettere di saltare alcuni dialoghi, la funzione keys pressed di
Jon's Commands... 


Jon's Commands... 
Non è obbligatorio... comunque io in pratica i Jon's Commands li
considero quasi parte integrante di vanilla ;-))
Ciao!


 
(Remove the hyphen! Spambusters at work!)
***  The Americans spent $500,000 developing a pen 
     that would work in a weightless environment. 
     The Russians used a pencil.

 Beh, grazie! E' una scheggia - tipo 50 files in 3 secondi...
Ti ringrazio, ma si potrebbe far di meglio, perche' tutte queste cose lo
script non le fa direttamente ma dando comandi al Finder. 
In particolar modo, prima lo script chiede al Finder come si chiama il
file che lo ospita (da se' non lo sa), in base a questo decide che T&C
dare, e poi passa a cambiare T&C ai file. 
La prima fase (che sul mio 8.0 e` un ritardo abbastanza percettibile
prima che le icone comincino a cambiare), potrebbe essere eliminato
molto facilmente attribuendo i valori alle variabili iltipo e ilcreatore
direttamente all'inizio dello script, invece di farsele dire ogni volta.
property iltipo : "JPEG"
property ilcreatore : "8BIM" -- Photoshop
Cosi` dovresti avere 3-4 Applescript diverse sulla scrivania o in
FinderPop per i cambiamenti che fai piu` frequentemente, ma saresti un
pelino piu` veloce a partire. 


direttamente all'inizio dello script, invece di farsele dire ogni volta.
Anche aggiornandoti all'8.5.1, cosa aspetti ancora? :-P
