Проблемы FinderSync со значком боковой панели, значком панели инструментов и контекстным меню

Я разрабатываю приложение для Mac, которое должно поддерживать расширение приложения FinderSync. Все работает нормально, за исключением некоторых проблем со значками боковой панели и панели инструментов.

  1. Есть ли способ программно добавить значки панели инструментов и боковой панели без вмешательства пользователя? Что касается документации, я не нашел ничего, что могло бы помочь мне в этом. Они ссылаются на эти значки, упоминая, что пользователь должен вручную перетащить папку вручную на боковую панель или вручную настроить панель инструментов, но не API для достижения этого во время выполнения. Однако есть приложения, которые добавляют себя обратно, если кто-то удаляет их с панели инструментов.

  2. Есть ли другой способ отобразить значок для моей папки, кроме набора значков? Я заметил, что есть другие приложения, у которых есть значок на боковой панели, но у них, похоже, нет значка, установленного в ресурсах пакета, а для CFBundleIconFile задан ресурс icns.

  3. Есть ли способ отключить пункт меню в menuForMenuKind:? В обычной ситуации с NSMenu пункт меню не должен иметь ни действия, ни цели, но это не так. Даже если я это сделаю, пункт меню все еще включен.

Спасибо большое за вашу помощь!


person ciprian    schedule 21.09.2015    source источник


Ответы (1)


Добро пожаловать в мир боли. Я также разрабатываю расширение Finder Sync, поэтому вот ответы на ваши вопросы:

  1. Сейчас ищу способ добавить программно кнопку Toolbar, видел фразы, что это можно сделать. Чтобы добавить элемент на боковую панель, вы должны использовать код LSSharedFileList: Добавить элемент на боковую панель Finder С помощью того же API вы можете проверить, присутствует ли ваш элемент на боковой панели, и не добавлять дубликат.

  2. Теперь (начиная с Mac OS X 10.11) значок боковой панели можно изменить только через набор иконок. Ранее его можно было изменить с помощью внедрения кода Finder, что не разрешено в версии 10.11.

  3. Просто используйте [menuItem setEnabled:NO]. Также обратите внимание, что не все элементы меню доступны в версии 10.10 — например, флажки не отображаются, а разделитель отображается в виде пробела. Кроме того, параметр отправителя в ваших обработчиках всегда является пустым объектом NSMenuItem.

person Nickolay Olshevsky    schedule 01.10.2015