Как открыть панель настроек для дополнения Firefox через кнопку на панели инструментов XUL? - PullRequest
3 голосов
/ 20 января 2012

Панель настроек для моего аддона FireFox представляет собой документ XUL (язык интерфейса пользователя XML).Файл называется options.xul.

В browser.xul я создал панель инструментов с кнопкой для параметров.При нажатии кнопки «Параметры» должна появиться панель настроек, определенная в файле options.xul.Но я не знаю, как вызывать панель настроек из oncommand.

Вызов функции Javascript не вызывает затруднений.Но как вызвать панель настроек AddOn?Ниже приведена команда, вызывающая функцию javascript, но как можно вызвать Preferene Pane?

Если кто-то мог бы опубликовать изменение следующего в browser.xul:

    <menupopup>
    <menuitem label="Options" tooltiptext="Options" oncommand="example.LoadURL('http://www.google.com/')" />
    </menupopup>

Ответы [ 2 ]

2 голосов
/ 26 января 2012

Вы не можете открыть панель как таковую.Панель настроек является частью окна настроек.Ваш option.xul должен выглядеть примерно так:

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<prefwindow xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
    <prefpane id="myOptions" label="My Options">
        <preferences>
            <preference id="pref-option1" name="myapp.myoption1" type="bool"/>
            <preference id="pref-option2" name="myapp.myoption2" type="int"/>
        </preferences>
        <checkbox label="Option Checkbox" preference="pref-option1"/>
        <textbox label="Duration:" preference="pref-option2"/>
    </prefpane>
</prefwindow>

В файле browser.xul ваша команда может открыть окно настроек, используя:

oncommand = "window.openDialog('chrome://whatever_location/option.xul',' My Option Dialog','chrome,toolbar');"

(или любой другой метод).в вашем javascript, который вы хотели бы сделать openDialog)

Дополнительную информацию о предварительных окнах и панелях можно найти на

https://developer.mozilla.org/en/XUL/prefwindow или

https://developer.mozilla.org/en/XUL/prefpane

1 голос
/ 12 марта 2015

Я предполагаю, что под «Панелью предпочтений» вы на самом деле имеете в виду диалоговое окно Option для вашего дополнения, а не просто один <prefpane> в пределах <prefwindow>.Я также предполагаю, что у вас есть options.xul, который полностью функционален для использования в качестве диалогового окна опций, используя обычную кнопку опций на вкладке дополнения.

Я обнаружил, что были необходимы несколько отличающиеся от показанных выше tazyDevel опцииоткрыть диалоговое окно параметров, чтобы оно выглядело так, как будто оно было открыто на вкладке дополнений.Я не уверен, если это разница с 2012 по 2014 год (когда я написал код ниже), или это просто разница в реализации.Если я правильно помню, когда я писал это, я проверял, как Firefox запускал диалоговые окна параметров, и копировал используемые там параметры.

Я использую следующий код, чтобы открыть диалоговое окно параметров для одногомоих надстроек с помощью кнопки в главном диалоговом окне надстройки (помимо того, что она доступна на вкладке надстроек):

XUL (кнопка, открывающая диалоговое окно параметров):

<button label="Options" id="optionsButtonId"
        onclick="myExtension.optionsButton();"
        tooltiptext="Open the options window."
        hidden="false" />

JavaScript:

/**
 * The Options button.
 */
optionsButton : function() {
     window.openDialog('chrome://myExtension/content/options.xul', '',
                       'chrome,titlebar,toolbar,centerscreen,modal');
},

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

myExtension является заполнителем для всего, что вы используете для вызова вашего добавочного номера.Предполагается, что одна переменная объекта, содержащая функции, является myExtension тем, что вы используете для идентификации своего содержимого в файле chrome.manifest.

...