Finder-Attribute: Pakete und "sprechender" Name zu File-Typen

  • Finder-Attribute: Pakete und "sprechender" Name zu File-Typen

    Ich habe 2 Probleme bei der Ermittlung von Datei-Attributen:

    1. Pakete
    Ich möchte gerne herausfinden, ob es sich bei einem Verzeichnis um ein Paket handelt.
    Bei Carbon-Paketen scheint dies über das Package-Bit angegeben zu sein, bei Cocoa-Paketen über die Endung (.app, .bundle, ..)?

    Wie kann ich nun das Package-Bit abfragen und wie ermittle ich alle Endungen, die ein Verzeichnis als Paket kennzeichnen?
    Oder gibt es einen anderen Weg herauszufinden, ob ein Verzeichnis ein Paket ist?

    2. "Sprechender" Name von Datei-Typen
    Ich möchte gerne zu einer beliebigen Datei oder Verzeichnis den Typ als Namen bestimmen, so wie er auch im Informationfenster des Finders angezeigt wird.
    (Dabei unterscheidet Mac OS X ja zwischen Endung und HFS-Typcode).

    Vielen Dank für Hilfe im Vorraus,
    Tjark
  • RE: Finder-Attribute: Pakete und "sprechender" Name zu File-Typen

    also zu erstens könntest du das so machen:
    - rausbekommen, ob ordner:

    Quellcode

    1. - (BOOL)fileExistsAtPath:(NSString *)path isDirectory:(BOOL *)isDirectory

    - und dann gucken, ob im letzten Pfad segment ein Punkt vorkommt. Dann ist es ein Bundle...

    Das Problem ist ja, dass der Finder nur Ordner als Bundle angibt, von denen er die Endung kennt und weiß, dass es ein Bundle ist. Alles andere kann 1000x Bundle sein, wird aber als Ordner dargestellt, wenn er es nicht kennt. Also bleibt dir auch nicht viel anderes übrig. Die real Names bekommt man auch nur über den Finder, der alle Dateien, die er nicht kennt, als "Dokument" angibt. Diese stehen bei jeder App in der Filetypes Definition. Bei Cocoa Apps ist die recht einfach zu bekommen, sie steht in ner' plist. Aber wie das bei Carbon ist, weiß ich nicht...
  • RE: Finder-Attribute: Pakete und "sprechender" Name zu File-Typen

    Original von chacko
    Ich habe 2 Probleme bei der Ermittlung von Datei-Attributen:

    1. Pakete
    Ich möchte gerne herausfinden, ob es sich bei einem Verzeichnis um ein Paket handelt.
    Bei Carbon-Paketen scheint dies über das Package-Bit angegeben zu sein, bei Cocoa-Paketen über die Endung (.app, .bundle, ..)?

    Wie kann ich nun das Package-Bit abfragen und wie ermittle ich alle Endungen, die ein Verzeichnis als Paket kennzeichnen?
    Oder gibt es einen anderen Weg herauszufinden, ob ein Verzeichnis ein Paket ist?


    Das ist sehr einfach, man muß es nur finden:

    Quellcode

    1. [[NSWorkspace sharedWorkspace] isFilePackageAtPath: filePath]



    2. "Sprechender" Name von Datei-Typen
    Ich möchte gerne zu einer beliebigen Datei oder Verzeichnis den Typ als Namen bestimmen, so wie er auch im Informationfenster des Finders angezeigt wird.
    (Dabei unterscheidet Mac OS X ja zwischen Endung und HFS-Typcode).


    Das wird im PB bei den Targets unter "Document Types" festgelegt.

    Gruß, Michael
    Xcode 4 sucks – „,Multiple exclamation marks‘, he went on, shaking his head, are a sure sign of a diseased mind.‘“ (Terry Pratchett 1992: Eric)

    "Wir ordnen und befehlen hiermit allen Ernstes, dass die Advocati wollene schwarze Mäntel, welche bis unter das Knie gehen, unserer Verordnung gemäß zu tragen haben, damit man die Spitzbuben schon von weitem erkennt." (Friedrich Wilhelm I., Soldatenkönig)
  • RE: Finder-Attribute: Pakete und "sprechender" Name zu File-Typen

    Vielen Dank für die schnellen Antworten!

    Mein Problem 1 ist damit gelöst :)

    Leider besteht mein Problem 2 noch. Ich möchte nicht von den Dokumententypen meiner Applikation sprechende Namen festlegen, sondern von Dokumenten anderer Applikationen den Typ-Namen erhalten.

    Z.B. von "readme.rtf" (ohne HFS-Typ und -Creator) möchte ich den String "Rich Text Format (RTF) Dokument" erhalten.
    Oder von der Datei "readme" (ohne Endung) mit HFS-Creator 'ttxt" (für Simpletext) und HFS-Typ 'RTF ' ebenfalls den Typ-Namen "Rich Text Format (RTF) Dokument" erhalten.

    Solche Informationen sammelt der Finder in der Desktop DB, soweit ich weiß.
    Gibt es ein Möglichkeit, diese Informationen von Finder zu erfragen?

    5.10.: Habe es herausgefunden. Mittels der Carbon "LaunchServices" kann man mittels "LSCopyKindStringForTypeInfo" und "LSCopyKindStringForRef" den Typ als String erfragen.
    Die "LaunchServices" bieten noch weitere Funktionalitäten, die teils von NSWorkspace abgedeckt werden. Deren Funktionen finden sich leider nicht in den Dev-Dokus, sind aber im Header "LaunchServices.h" erläutert (der Umfang ist in 10.3 noch erweitert worden).

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von chacko ()