Использование Add-on SDK для добавления кнопок на панель инструментов? Интеграция XUL и Add-on SDK для дополнений Firefox?

Я уже закодировал большую часть надстройки Firefox, используя Add-on SDK API. Теперь я обнаружил, что Add-on SDK может оказаться недостаточно мощным для моих целей. Мне нужны две вещи:

  1. Кнопка раскрывающегося списка на панели инструментов рядом со строкой адреса.
  2. Чтобы изменить менеджер дополнений в Firefox

Это действительно разочаровывает, но я не верю, что что-то из этого возможно с Add-on SDK.

Прежде всего, я понимаю, что в Add-on SDK API есть модуль widget. Но это позволяет мне добавить простой значок или метку на неудобную панель дополнений. Что, если мне нужно добавить более красивую кнопку, например, рядом с адресной строкой для Firebug или Greasemonkey? Что касается изменения менеджера надстроек в Firefox, я пробовал XUL Николая Пономарева с Add-on SDK без какого-либо успеха. Если кто-нибудь знает, как заставить это работать, и может указать мне правильное направление, это было бы чрезвычайно полезно (cfx init --template xul не делает ничего, что делает обычный SDK, когда я пытаюсь это сделать)


person Salami    schedule 06.10.2011    source источник
comment
Дополнения должны добавлять свой значок на панель дополнений, это официальная рекомендация для всех расширений, начиная с Firefox 4. Если пользователь хочет загромождать другие панели инструментов, он может настроить их и перетащить значки — это должно работать для добавления SDK. - тоже.   -  person Wladimir Palant    schedule 06.10.2011
comment
Что касается изменения менеджера надстроек: вы не предоставляете абсолютно никакой информации о том, чего вы пытаетесь достичь, и задавать два вопроса сразу — не лучшая идея. Я предлагаю вам отредактировать свой вопрос, чтобы спросить только о кнопках панели инструментов, и переместить модификацию менеджера надстроек в отдельный вопрос.   -  person Wladimir Palant    schedule 06.10.2011
comment
@WladimirPalant спасибо за предложения. Я думаю, что многим пользователям Firefox по-прежнему неудобно перемещать значки. Я боюсь, что людям не понравится расположение моего меню дополнений по умолчанию на панели дополнений, и они просто закроют панель целиком, вместо того, чтобы решать проблемы с перемещением.   -  person Salami    schedule 06.10.2011
comment
Стоит отметить, что проект SDK признает, что текущая ситуация неловкая; у нас есть некоторые мысли о том, как улучшить это в будущем, особенно в отношении пользовательского интерфейса адресной строки. Некоторые из новых идей, которые я видел в Firefox UX, содержат дополнительные возможности пользовательского интерфейса для надстроек.   -  person therealjeffg    schedule 07.10.2011


Ответы (3)


Вы видели модуль кнопок панели инструментов Эрика Волда?

https://github.com/erikvold/toolbarbutton-jplib/

Можно получить доступ ко всем внутренним API-интерфейсам Firefox в модулях SDK, потребовав привилегий Chrome; это просто не будет так просто, как API высокого уровня аддон-кита.

person therealjeffg    schedule 06.10.2011
comment
Я не видел этого, но это выглядит очень полезным. Возможно, я смогу использовать это как модель для изменения менеджера надстроек. Спасибо! - person Salami; 06.10.2011
comment
Конечно, вы можете изменить EM с помощью модулей SDK, я собирался сделать это сам, поэтому, если вы что-то начали, сообщите мне! - person erikvold; 07.10.2011
comment
(Предоставленная ссылка мертва) - person Mike; 16.02.2014

Упомянутый выше toolbarbuttonlib-jplib больше не существует, но попробуйте toolbarwidget-jplib. Работает как часы! Тотальный спасатель жизни.

person Evan Jones    schedule 18.02.2014

безуспешно пробовал XUL Николая Пономарева с Jetpack. Если кто-нибудь знает, как заставить это работать, и может указать мне правильное направление, это было бы чрезвычайно полезно (cfx init --template xul не делает ничего, что делает обычный sdk, когда я пытаюсь это сделать)

Очень хотелось бы услышать подробное описание того, что вы пробовали и как именно не получилось. Я не могу ответить на вопрос в его нынешнем виде.

Я не верю, что это возможно с JetPack.

Вы имеете в виду использование только встроенных высокоуровневых модулей SDK. Можно написать низкоуровневый модуль SDK, который использует XPCOM и напрямую взаимодействует с кодом Chrome для реализации необходимых вам функций — в конце концов, именно так реализованы остальные модули SDK. Если вы пойдете по этому пути, вы потеряете обещание совместимости SDK в будущем — вам придется либо включить его в исходный SDK, либо обновить его для более новых версий Firefox самостоятельно.

person Nickolay    schedule 09.10.2011
comment
Спасибо за ответ. Я скачал 1.0b1rc4 из вашего github форка надстройки sdk и запустил исходный код bin/activate. Затем, когда я запускаю cfx init --template xul в новой папке, я не получаю упомянутую папку extension (наряду с библиотекой, тестами и т. д.). надстройка даже не вносит изменения в файл package.json. Инструкции кажутся ясными, но я не получаю ожидаемых результатов. - person Salami; 11.10.2011
comment
@Salami: Хорошо, я подозреваю шаг загрузки. Вы использовали кнопку ZIP на странице github для загрузки? Возможно, вы скачали «базовую» версию кода, а не форк. Попробуйте github.com/nickolay/addon-sdk/zipball/ (или еще лучше клонировать с помощью git). - person Nickolay; 13.10.2011
comment
Спасибо. Эта версия 0.9, которую вы связали, кажется, отлично работает - person Salami; 17.10.2011
comment
@Nickolay: Флаг -t xul или --template xul был заменен флагом --templatedir=xul? - person vo1stv; 03.12.2011
comment
@SmileAndNod: нет, --template xul — это параметр cfx init в моей (устаревшей) вилке; templatedir можно использовать с cfx run/xpi в базовом аддоне sdk ( addons.mozilla.org/en-US/developers/docs/sdk/1.0/dev-guide/ ), и моя вилка добавляет свойство templatedir в package. json при создании расширения xul. - person Nickolay; 03.12.2011