mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
236 lines
8.1 KiB
XML
236 lines
8.1 KiB
XML
<?xml version="1.0"?>
|
|
|
|
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
|
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
|
|
|
<!DOCTYPE window [
|
|
<!ENTITY % updateDTD SYSTEM "chrome://mozapps/locale/extensions/selectAddons.dtd">
|
|
<!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd">
|
|
%updateDTD;
|
|
%brandDTD;
|
|
]>
|
|
|
|
<bindings xmlns="http://www.mozilla.org/xbl"
|
|
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
|
xmlns:xbl="http://www.mozilla.org/xbl">
|
|
|
|
<binding id="addon-select">
|
|
<content>
|
|
<xul:hbox class="select-keep select-cell">
|
|
<xul:checkbox class="addon-keep-checkbox" anonid="keep"
|
|
xbl:inherits="tooltiptext=name"
|
|
oncommand="document.getBindingParent(this).keepChanged();"/>
|
|
</xul:hbox>
|
|
<xul:hbox class="select-icon select-cell">
|
|
<xul:image class="addon-icon" xbl:inherits="type"/>
|
|
</xul:hbox>
|
|
<xul:hbox class="select-name select-cell">
|
|
<xul:label class="addon-name" crop="end" style="&select.name.style;"
|
|
xbl:inherits="xbl:text=name"/>
|
|
</xul:hbox>
|
|
<xul:hbox class="select-action select-cell">
|
|
<xul:label class="addon-action-message" style="&select.action.style;"
|
|
xbl:inherits="xbl:text=action"/>
|
|
<xul:checkbox anonid="update" checked="true" class="addon-action-update"
|
|
oncommand="document.getBindingParent(this).updateChanged();"
|
|
style="&select.action.style;" xbl:inherits="label=action"/>
|
|
</xul:hbox>
|
|
<xul:hbox class="select-source select-cell">
|
|
<xul:label class="addon-source" xbl:inherits="xbl:text=source"/>
|
|
</xul:hbox>
|
|
</content>
|
|
|
|
<implementation>
|
|
<field name="_addon"/>
|
|
<field name="_disabled"/>
|
|
<field name="_install"/>
|
|
<field name="_wasActive"/>
|
|
<field name="_keep">document.getAnonymousElementByAttribute(this, "anonid", "keep");</field>
|
|
<field name="_update">document.getAnonymousElementByAttribute(this, "anonid", "update");</field>
|
|
<field name="_strings">document.getElementById("strings");</field>
|
|
|
|
<property name="action" readonly="true">
|
|
<getter><![CDATA[
|
|
if (!this._keep.checked) {
|
|
if (this._wasActive)
|
|
return "disable";
|
|
else
|
|
return null;
|
|
}
|
|
|
|
if (this._addon.appDisabled && !this._install)
|
|
return "incompatible";
|
|
|
|
if (this._install && (AddonManager.shouldAutoUpdate(this._addon) || this._update.checked))
|
|
return "update";
|
|
|
|
if (this._addon.permissions & AddonManager.PERM_CAN_ENABLE)
|
|
return "enable";
|
|
|
|
return null;
|
|
]]></getter>
|
|
</property>
|
|
|
|
<method name="setAddon">
|
|
<parameter name="aAddon"/>
|
|
<parameter name="aInstall"/>
|
|
<parameter name="aWasActive"/>
|
|
<parameter name="aDistroInstalled"/>
|
|
<body><![CDATA[
|
|
this._addon = aAddon;
|
|
this._install = aInstall;
|
|
this._wasActive = aWasActive;
|
|
|
|
this.setAttribute("name", aAddon.name);
|
|
this.setAttribute("type", aAddon.type);
|
|
|
|
// User and bundled add-ons default to staying enabled,
|
|
// others default to disabled.
|
|
switch (aAddon.scope) {
|
|
case AddonManager.SCOPE_PROFILE:
|
|
this._keep.checked = !aAddon.userDisabled;
|
|
if (aDistroInstalled)
|
|
this.setAttribute("source", this._strings.getString("source.bundled"));
|
|
else
|
|
this.setAttribute("source", this._strings.getString("source.profile"));
|
|
break;
|
|
default:
|
|
this._keep.checked = false;
|
|
this.setAttribute("source", this._strings.getString("source.other"));
|
|
}
|
|
|
|
this.updateAction();
|
|
]]></body>
|
|
</method>
|
|
|
|
<method name="setActionMessage">
|
|
<body><![CDATA[
|
|
if (!this._keep.checked) {
|
|
// If the user no longer wants this add-on then it is either being
|
|
// disabled or nothing is changing. Don't complicate matters by
|
|
// talking about updates for this case
|
|
|
|
if (this._wasActive)
|
|
this.setAttribute("action", this._strings.getString("action.disabled"));
|
|
else
|
|
this.setAttribute("action", "");
|
|
|
|
this.removeAttribute("optionalupdate");
|
|
return;
|
|
}
|
|
|
|
if (this._addon.appDisabled && !this._install) {
|
|
// If the add-on is incompatible and there is no update available
|
|
// then it will remain disabled
|
|
|
|
this.setAttribute("action", this._strings.getString("action.incompatible"));
|
|
|
|
this.removeAttribute("optionalupdate");
|
|
return;
|
|
}
|
|
|
|
if (this._install) {
|
|
if (!AddonManager.shouldAutoUpdate(this._addon)) {
|
|
this.setAttribute("optionalupdate", "true");
|
|
|
|
// If manual updating for the add-on then display the right
|
|
// text depending on whether the update is required to make
|
|
// the add-on work or not
|
|
if (this._addon.appDisabled)
|
|
this.setAttribute("action", this._strings.getString("action.neededupdate"));
|
|
else
|
|
this.setAttribute("action", this._strings.getString("action.unneededupdate"));
|
|
return;
|
|
}
|
|
|
|
this.removeAttribute("optionalupdate");
|
|
|
|
// If the update is needed to make the add-on compatible then
|
|
// say so otherwise just say nothing about it
|
|
if (this._addon.appDisabled) {
|
|
this.setAttribute("action", this._strings.getString("action.autoupdate"));
|
|
return;
|
|
}
|
|
}
|
|
else {
|
|
this.removeAttribute("optionalupdate");
|
|
}
|
|
|
|
// If the add-on didn't used to be active and it now is (via a
|
|
// compatibility update) or it can be enabled then the action is to
|
|
// enable the add-on
|
|
if (!this._wasActive && (this._addon.isActive || this._addon.permissions & AddonManager.PERM_CAN_ENABLE)) {
|
|
this.setAttribute("action", this._strings.getString("action.enabled"));
|
|
return;
|
|
}
|
|
|
|
// In all other cases the add-on is simply remaining enabled
|
|
this.setAttribute("action", "");
|
|
]]></body>
|
|
</method>
|
|
|
|
<method name="updateAction">
|
|
<body><![CDATA[
|
|
this.setActionMessage();
|
|
let installingUpdate = this._install &&
|
|
(AddonManager.shouldAutoUpdate(this._addon) ||
|
|
this._update.checked);
|
|
|
|
if (this._keep.checked && (!this._addon.appDisabled || installingUpdate))
|
|
this.setAttribute("active", "true");
|
|
else
|
|
this.removeAttribute("active");
|
|
|
|
gSelect.updateButtons();
|
|
]]></body>
|
|
</method>
|
|
|
|
<method name="updateChanged">
|
|
<body><![CDATA[
|
|
this.updateAction();
|
|
]]></body>
|
|
</method>
|
|
|
|
<method name="keepChanged">
|
|
<body><![CDATA[
|
|
this.updateAction();
|
|
]]></body>
|
|
</method>
|
|
|
|
<method name="keep">
|
|
<body><![CDATA[
|
|
this._keep.checked = true;
|
|
this.keepChanged();
|
|
]]></body>
|
|
</method>
|
|
|
|
<method name="disable">
|
|
<body><![CDATA[
|
|
this._keep.checked = false;
|
|
this.keepChanged();
|
|
]]></body>
|
|
</method>
|
|
|
|
<method name="apply">
|
|
<body><![CDATA[
|
|
this._addon.userDisabled = !this._keep.checked;
|
|
|
|
if (!this._install || !this._keep.checked)
|
|
return;
|
|
|
|
if (AddonManager.shouldAutoUpdate(this._addon) || this._update.checked)
|
|
this._install.install();
|
|
]]></body>
|
|
</method>
|
|
</implementation>
|
|
</binding>
|
|
|
|
<binding id="addon-confirm">
|
|
<content>
|
|
<xul:image class="addon-icon" xbl:inherits="type"/>
|
|
<xul:label class="addon-name" xbl:inherits="xbl:text=name"/>
|
|
</content>
|
|
</binding>
|
|
</bindings>
|