Приложение строки состояния Mac OS X – скрытие его из меню Cmd/Alt?

Я пытаюсь создать простое небольшое приложение строки состояния в Obj-C/Cocoa.

Поэтому я сделал это прагматично — объявив NSStatusItem, добавив его в NSStatusBar, а затем предоставив ему объект NSMenu. Немного так...

NSStatusBar *bar = [NSStatusBar systemStatusBar];

theItem = [bar statusItemWithLength:NSVariableStatusItemLength];
[theItem retain];

[theItem setTitle: NSLocalizedString(@"Tablet",@"")];
[theItem setHighlightMode:YES];
[theItem setMenu:theMenu];

(Пример взят из «Темы программирования строки состояния», документация Apple)

Теперь в идеале я хотел бы, чтобы это приложение запускалось и не было доступно из окна CMD / ALT, меняющего «меню» (из-за отсутствия лучшего слова), я видел, как приложения делают это раньше, и мне бы этого действительно хотелось. Идея в том, что я просто хочу, чтобы он был доступен из каждого окна, не имея собственного NSMenu в строке состояния и не имея возможности использовать его в качестве активного приложения (- поэтому он не может взять на себя всю строку состояния , и его нельзя увидеть через CMD/ALT)

Кроме того, мне было интересно, поддерживает ли StatusBarItem возможность перетаскивания элемента на него? Я не уверен, что это ограничение NSStatusBar.

Я читал о демонах и агентах, но это кажется слишком низким уровнем / чрезмерным убийством для такого упрощенного приложения!

Заранее привет!


person Moddy    schedule 07.06.2010    source источник
comment
Вы имеете в виду функцию Command-Tab? И я не понимаю вашего вопроса. Вам нужен элемент строки состояния, который не является меню, но доступен во всех приложениях? Означает ли это, что значок будет виден, у него просто не будет меню, когда пользователь щелкнет по нему? Кроме того, я не думаю, что когда-либо видел приложение строки состояния, поддерживающее перетаскивание, но это не значит, что это невозможно.   -  person Jon Shier    schedule 07.06.2010
comment
Command-Tab даже - глупая опечатка с моей стороны! Я хочу в основном приложение строки состояния - я могу это сделать, но хочу скрыть его от функции Command-Tab. Я не уверен в функциональности перетаскивания, хотя, возможно, я видел что-то подобное. Хотя, возможно, это было реализовано с использованием части закрытой SystemUIPlugin Framework и NSMenuExtra. Естественно, я подумал об этом, но мысль об использовании частного фреймворка и его поломке во время обновления не идеальна!   -  person Moddy    schedule 08.06.2010


Ответы (1)


Поместите ключ LSUIElement в файл info.plist вашего приложения. Чтобы выполнить перетаскивание, вы устанавливаете вид элемента состояния на любой вид, который должен получить перетаскивание, и с этого момента он работает нормально.

person Chuck    schedule 07.06.2010
comment
Я собираюсь попробовать это - похоже, это должно быть идеальным решением! Я отпишусь с результатами! - person Moddy; 08.06.2010