Как получить значок на рабочем столе, используемый в Finder?

В Objective-c/Cocoa, как мне получить значок, который Finder использует для рабочего стола (он выглядит как черно-розовое изображение туманности на рабочем столе с панелью меню и док-станцией).

Я пробовал это:

NSImage *icon = [[NSWorkspace sharedWorkspace] 
                 iconForFileType: NSFileTypeForHFSTypeCode(kDesktopIcon)];

Но все, что я получаю, это синяя папка с призрачной коробкой, похожей на рабочий стол. Есть ли другая константа, которая предоставляет этот значок, или другой способ получения значка?


person Alex B    schedule 05.09.2009    source источник


Ответы (1)


Значок, который вы ищете, находится по адресу: /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/ToolbarDesktopFolderIcon.icns.

Мне не удалось найти для него константу, но вы можете загрузить изображение с помощью imageWithContentsOfFile:.

person Yanik Magnan    schedule 05.09.2009
comment
Спасибо! Если кто-нибудь знает постоянное значение для этого (на случай, если Apple изменит свое местоположение), опубликуйте его здесь. - person Alex B; 05.09.2009
comment
Значки панели инструментов получают собственные постоянные имена. Это kToolbarDesktopFolderIcon. - person Peter Hosey; 05.09.2009
comment
Кстати, если вы хотите узнать больше об этих значках, IconsCore.h действительно полезно почитать. Вы можете попробовать значки с помощью моего приложения IconGrabber: boredzo.org/icongrabber (требуется Rosetta) - person Peter Hosey; 05.09.2009
comment
Это похоже на использование неопубликованных методов. Вы не можете полагаться на этот путь, он может меняться между выпусками (и, скорее всего, так и будет). Как говорится в примечаниях к выпуску +[NSImage imageNamed], если нет доступного изображения для интересующей вас ситуации, сообщите об ошибке и тем временем используйте свое собственное изображение. Питер, для 10.6 мы (группа Cocoa ) прошел через Icons.h с группой человеческого интерфейса и сделал имена NSImage для всего, что было сочтено рекомендованным для общего использования. Файл ошибки для чего-нибудь еще. - person Ken; 05.09.2009
comment
@Peter Hosey: я только что попробовал kToolbarDesktopFolderIcon, и для меня это не указано. Может быть, это только для Snow Leopard? - person Yanik Magnan; 05.09.2009
comment
kToolbarDesktopFolderIcon работал у меня(!) и у меня 10.6, поэтому он должен быть новым в Snow Leopard. Интересно, почему группа Cocoa удалила его из Icons.h и поместила в IconsCore.h? - person Alex B; 06.09.2009