Domanda

Voglio essere in grado di eseguire un editor di testo dalla mia app, come indicato dall'utente nella variabile d'ambiente TEXT_EDITOR. Ora, supponendo che non ci sia nulla in quella variabile, voglio impostare automaticamente il programma TextEdit fornito con OSX. È kosher hardcode /Applications/TextEdit.app/Contents/MacOS/TextEdit nella mia app o esiste un modo migliore per chiamare il programma?

Modifica: per la cronaca, sono limitato all'esecuzione di un percorso specifico dell'applicazione, in C. Non sto aprendo un percorso a un file di testo.

Modifica 2: Scherzi a parte, non sto aprendo un file qui. Sto chiedendo un percorso dell'applicazione per un motivo.

È stato utile?

Soluzione

Nella tua seconda modifica sembra che tu voglia semplicemente ottenere il percorso per TextEdit, questo può essere fatto facilmente usando il metodo NSWorkspace absolutePath ForApp BundleWithIdentifier:

NSString *path = [[NSWorkspace sharedWorkspace] absolutePathForAppBundleWithIdentifier:@"com.apple.TextEdit"];

Altri suggerimenti

Mac OS X ha un meccanismo chiamato "identificatori di tipo uniforme" che utilizza per tenere traccia delle associazioni tra tipi di dati e applicazioni in grado di gestirli. Il sottosistema che gestisce questo è Launch Services. Puoi fare una delle due cose:

  • Se si dispone di un file con un'estensione di percorso ragionevolmente nota, ad es. .txt , puoi semplicemente chiedere a NSWorkspace di aprire il file nell'applicazione appropriata.

  • Se non si dispone di un'estensione di percorso nota, ma si conosce il tipo di dati, è possibile chiedere a Launch Services di cercare l'applicazione predefinita per quel tipo, quindi chiedere NSWorkspace per aprire il file in quella specifica applicazione.

Se lo fai in questo modo otterrai lo stesso comportamento del Finder e non dovrai fork () / exec () o usare system () solo per aprire un file.

Credo che hardcoding " Applicazioni " non funzionerà se l'impostazione della lingua dell'utente non è l'inglese. Ad esempio, in Norsk " Applicazioni " la cartella è denominata " Programmer " ;.

Il documento Apple sull'internazionalizzazione è qui . A partire da pagina 45 è una sezione sulla gestione dei nomi di percorsi localizzati.

Credo che Mac OS X fornisca un meccanismo applicativo predefinito, in modo che .txt si aprirà in TextEdit.app o Emacs o GVim o qualunque cosa l'utente abbia specificato. Tuttavia non sono riuscito a trovare nulla online.

È possibile eseguire il comando seguente dall'applicazione:

open <full path to text file>

Questo aprirà il file di testo nell'editor di testo predefinito. Puoi aprire qualsiasi tipo di file usando il comando open .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top