« Mathe | Main | Constantine »
08.03.05
Datei-Labels unter MacOS X (10.3+) und C(++)
Da ich keine vernünftige Dokumentation über das ändern der Labelfarbe einer Datei fand musste ich selber recherchieren :)
Eigentlich ist es garnicht so schwer. Ich persöhnlich gehe den Weg zu meiner Datei zumeist über ein
Hat man dieses kann man per
die Finder Informationen auslesen. Diese sind wie folgt aufgebaut :
struct FInfo {
OSType fdType;
OSType fdCreator;
UInt16 fdFlags;
Point fdLocation;
SInt16 fdFldr;
};
typedef struct FInfo FInfo;
(Vgl.
hier)
Widmen wir unsere Aufmerksamkeit den Wert fdFlags. Die Zusammenstellung dieser 16-Bit Variable wird
hier erklärt.
enum {
kIsOnDesk = 0x0001,
kColor = 0x000E,
kIsShared = 0x0040,
kHasNoINITs = 0x0080,
kHasBeenInited = 0x0100,
kHasCustomIcon = 0x0400,
kIsStationery = 0x0800,
kNameLocked = 0x1000,
kHasBundle = 0x2000,
kIsInvisible = 0x4000,
kIsAlias = 0x8000
};
kColor beschreibt hier die Werterange, in der die Farbinformation für das Label steht. 0x000E entspricht in diesem Fall den den 3 Bits nach dem ersten Bit.
Ergo haben wir :
0000000000001110
und in umgekehrter Notation
0111000000000000
Nun können wir mit Hilfe dieser 3 Bits die Farbinformation kodieren. Ich fand die Anordnung verwirrend, aber hier mal die Tabelle, wie ich sie im Kopf habe :
000 -> kein Label (0)
001 -> blaues Label (5)
010 -> grünes Label (4)
011 -> rotes Label (1)
100 -> graues Label (7)
101 -> gelbes label (3)
110 -> lila Label (6)
111 -> orangenes Label (2)
Diese 3 Bits setzen und dann per
sichern, und voilá hat man bunte Files ;)
In der Theorie dürfte das auch unter MacOS 9 funktionieren, Mac OS X <10.3 hat soweit mir bekannt keine Labels. Aber ich hab grad keins zum schaun da :)
Posted by Benni at 08.03.05 11:36
Comments
...kranker Mensch =)
klingt allerdings nach viel Spass...und du wolltest mir doch dieses nette notebook auf dem das alles läuft schenken wenn ich wieder da bin, richtig?
grüssle aus Australien, Markus
Posted by: Markus at 09.03.05 13:36