Vai al contenuto

Settare icona a tipo file


Messaggi raccomandati

Ciao, qualche giorno fa ho finito un programma di karaoke, tutto ok fino a quando non ho associato

i file di tipo .future (per esempio Jeeg.future) all'applicazione del karaoke ( FutureSingers.app )

l'app e' posizionata nel folder applicazioni.

A questo punto tutti i vari file ".future" correttamente si aprono con il player karaoke, ma l'icona dei file .future

rimane di tipo blank (nessun disegnino particolare)

davo per scontato che un qualche tipo di entry nel plist dell' app consentisse in automatico di "ereditare" l'icns dell' app come icns del tipo di file.

ma dopo aver scartabellato mezza giornata non ho trovato info.

a questo punto , chiedo aiuto :)

qual'e' il file di configurazione che contiene i dati delle associazioni app-->tipofile ? (mi spiego.. le associazioni APRI CON...)

come si puo' associare un icns ai file di un determinato tipo? (modifica plist/xml/altro.. nulla che abbia a che fare col mouse, perche' la procedura dovra' essere effettuata dall' applicazione)

Sperando non sia necessario creare un package (perche' voglio rilasciare il player in solo formato ZIP per motivi di trasparenza)

Grazie in anticipo

FutureSingers.Karaoke.MacOS.jpg

Link al commento
Condividi su altri siti

Per far sì che la tua app apra certi tipi di file si deve impostare il file Info.plist dicendo appunto quali sono i file apribili.

Per ogni tipo file che aggiungi puoi anche dirgli che deve usare un'icona particolare, che deve trovarsi dentro il bundle dell'applicazione.

Quando l'utente imposta dal Finder un tipo di file perché venga aperto con una certa app, il sistema controlla se è impostata anche un'icona particolare e usa quella per tutti i file di quel tipo.

Se la tua app apre già i file .future immagino che tu abbia già impostato questo file.

A questo punto allora ti basta aggiungere che quel tipo di file deve corrispondere l'icona che vuoi tu.

Naturalmente è bene creare un'icona ad hoc e non usare la stessa dell'app, per non creare confusione.

Ti linko la pagina della documentazione Apple dove parlano delle voci da aggiungere all'Info.plist.

http://developer.apple.com/library/mac/#documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html%23//apple_ref/doc/uid/20001431-101685

Marco - Gallery

MacBook Nero 2.2 GHz Intel Core 2 Duo - 4 GB RAM - Mac OS X 10.6 Snow Leopard

Link al commento
Condividi su altri siti

A questo punto allora ti basta aggiungere che quel tipo di file deve corrispondere l'icona che vuoi tu.

CFBundleTypeExtensions e CFBundleTypeIconFile

da quello che alla veloce ho capito :)

Thx MacMomo

e per quanto riguarda i magicnumbers ... gestirli e' una cosa offlimits per l'utente? (che tu sappia) o e' possibile aggiungere la gestione di un nuovo MN (tanto buttare li' 2 bytes in testa al .future non e' certo un problema) e far gestire la cosa ... piu' a basso livello?

Edit:

ho provato giusto ora con questo plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleDocumentTypes</key>
<array>
	<dict>
		<key>CFBundleTypeExtensions</key>
		<array>
			<string>future</string>
		</array>
		<key>CFBundleTypeIconFile</key>
		<string>futuresong.icns</string>
		<key>CFBundleTypeRole</key>
		<string>Editor</string>
		<key>LSIsAppleDefaultForType</key>
		<true/>
	</dict>
</array>
<key>CFBundleExecutable</key>
<string>FutureSingers</string>
<key>CFBundleGetInfoString</key>
<string>FutureSingers www.nonsolocuneo.com</string>
<key>CFBundleIconFile</key>
<string>FutureSingers.icns</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>LSMinimumSystemVersion</key>
<string>10.4</string>
<key>NSHumanReadableCopyright</key>
<string>FutureSingers (Freeware 2011)</string>
<key>LSUIPresentationMode</key>
<integer>3</integer>
</dict>
</plist>

mettendo l'icona per le songs "futuresong.icns" nelle resources dell' app...

ma qualcosa ancora non funge. cmq e' troppo tardi e mi sa che ci dormiro' sopra :) (magari ho scasinato io la gestione icone e estensioni con altri esperimenti), meglio ripartire sul pulito DOMANI :)

                        <key>CFBundleTypeRole</key>
                       <string>Editor</string>

era per un esperimento... non sara' presente nella versione definitiva.

Link al commento
Condividi su altri siti

e per quanto riguarda i magicnumbers ... gestirli e' una cosa offlimits per l'utente? (che tu sappia)

Per utente intendi l'utente finale della tua app o intendi tu come programmatore? :confused:

Comunque non penso ci siano problemi...

Sinceramente non so se ci sono dei "database" ufficiali per i magic number, ma non penso.

Probabilmente ogni programmatore/software house fa come vuole, quando crea un nuovo formato di file.

Sapevo invece che per il Codice Tipo (CFBundleTypeOSTypes), usato sul system 9 e ormai quasi estinto, c'era una specie di registro ufficiale Apple al quale bisognava regustrare i propri tipi di file per non farli sovrappore ad altri, ma alla fine se ne usavi di tuoi senza passare per Apple alla fine non c'erano problemi (sempre che non arrivava qualcun'altro con lo stesso Tipo a creare confusione).

Marco - Gallery

MacBook Nero 2.2 GHz Intel Core 2 Duo - 4 GB RAM - Mac OS X 10.6 Snow Leopard

Link al commento
Condividi su altri siti

riuscire a forzare un magicnumber nuovo (senza patchare file di sistema)

Veramente non mi sembra proprio che il sistema usi i magic number (anzi), ma solo l'estensione e, per quei pochi che ancora ce l'hanno impostati, il codice Tipo e Creatore, ereditati dal vecchio System.

Se infatti provi a cancellare l'estensione da un file vedrai che questo verrà visto come file generico (di solito come eseguibile).

I magic number di solito servono solo all'app che deve aprirli per una corretta lettura del file.

Marco - Gallery

MacBook Nero 2.2 GHz Intel Core 2 Duo - 4 GB RAM - Mac OS X 10.6 Snow Leopard

Link al commento
Condividi su altri siti

Veramente non mi sembra proprio che il sistema usi i magic number (anzi),

Mi aveva tratto in inganno uno strano comportamento...

rinominando un file per esempio: test.png in test.pn2 (utilizzando la shell grafica)

questo veniva aperto comunque con il preview...

rifacendo ora il passaggio mi sono accorto che il sistema effettua una rinominazione "particolare" senza avvertire l'utente...

ovvero.. il nuovo nome del file diventa: test.pn2.png (e viene nascosta l' estensione)

a questo punto risulta evidente che e' stato consultato un elenco di estensioni valide/note che impedisce di utilizzare un estensione non classificata.

domanda? dove si trova il file contenente questo elenco?

avendo sotto mano.. questo elenco... si potrebbe "creare" a tutti gli effetti la gestione di un estensione, senza dover girare attorno ai plist inseriti nelle app...

(comunque questo e' un altro discorso. grazie Macmomo per le delucidazioni :) )

Link al commento
Condividi su altri siti

domanda? dove si trova il file contenente questo elenco?

Dovrebbe essere questo:

/Users/nomeUtente/Library/Preferences/com.apple.LaunchServices.plist

ma ripeto che non c'è bisogno di intervenire direttamente su quel file, perché se imposti correttamente la tua app, i suoi file verranno automaticamente aperti da quell'app.

E nel caso ci siano più applicazioni a poter aprire un certo tipo di file, starà poi all'utente, eventualmente, decidere con quale aprirli.

Marco - Gallery

MacBook Nero 2.2 GHz Intel Core 2 Duo - 4 GB RAM - Mac OS X 10.6 Snow Leopard

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...