2009-08-23 3 views
2

Мне понадобится что-то, что этот владелец нарисовал вкладку ключевых слов для дополнения ключа в моем собственном коде. Как и TextMate, в this example.Как нарисовать собственные эквиваленты ключей в NSMenuItem?

Я понял, что рисунок меню основан на углероде, но я не надеюсь, что это такой огромный взлом.

Но все, что я пробовал, и где бы я ни выглядел, не нашел подсказки.

EDIT: Я готов согласиться даже на основе углерода ответ, только что-нибудь, что работает на версии> = 10,4

ответ

2

Одним из способов достижения этой цели является сделать элемент данных самостоятельно. Я не уверен, есть ли способ просто переопределить чертеж на эквивалент ключа. Взгляните на примерный код MenuItemView.

+0

Да, спасибо, что знаю о встраивании NSView в элемент меню, но это очень дорого и работает только на 10.5 TextMate может сделать то же самое на 10.4, чтобы они нашли другой способ сделать рисунок. – Lothar

+0

Да, TextMate взломан. Нет способа поддерживать то, что он делает в 10.4. – Ken

3

Меню, даже в 10.6, по-прежнему базируется на углероде. На уровне Carbon существует API (см. Ниже), который позволяет вам установить любой эквивалент ключа, который вы хотите в меню, независимо от того, действительно ли приложение сопоставляет этот ключ, эквивалентный элементу menuitem. Другими словами, Carbon позволяет настраивать отображение элемента меню независимо от поведения. Используя этот API, вы можете установить любую комбинацию клавиш, которую вы хотите отобразить в меню.

К сожалению, документации по этому API уже нет. Но вы все равно можете прочитать файл заголовка. Я считаю, что API, который вы хотите, находится в /System/Library/Frameworks/Carbon.framework/Frameworks/HIToolbox.framework/Headers/Menus.h. Я знаю, что HIToolbox не 64-разрядный, но я подозреваю, что API меню все равно должен быть, учитывая, что меню Cocoa все еще основано на меню Carbon.

+0

Хммм, я действительно не хочу делать это только с файлом заголовка. Thats слишком много проб и ошибок для меня. Я знал, что есть пример на основе Carbon, но я не могу его найти. – Lothar

+0

Документация для Carbon (и даже Toolbox) не погибла; Apple перевела его в Legacy docset. Вот менеджер меню: http://developer.apple.com/legacy/mac/library/documentation/Carbon/Reference/Menu_Manager/ –

+0

Хм, я думаю, что устаревший docset не должен быть частью загрузки документации Xcode. –