[PALEMOON] Replace tabs with 2 spaces in statusbar component

This commit is contained in:
NTD 2018-04-20 16:10:23 -04:00 committed by Roy Tam
commit 1f12910aa2
15 changed files with 3814 additions and 3816 deletions

File diff suppressed because it is too large Load diff

View file

@ -12,172 +12,172 @@ const CU = Components.utils;
CU.import("resource://gre/modules/XPCOMUtils.jsm");
function S4EProgressService(gBrowser, service, getters, statusService) {
this._gBrowser = gBrowser;
this._service = service;
this._getters = getters;
this._statusService = statusService;
this._gBrowser = gBrowser;
this._service = service;
this._getters = getters;
this._statusService = statusService;
this._gBrowser.addProgressListener(this);
this._gBrowser.addProgressListener(this);
}
S4EProgressService.prototype =
{
_gBrowser: null,
_service: null,
_getters: null,
_statusService: null,
_gBrowser: null,
_service: null,
_getters: null,
_statusService: null,
_busyUI: false,
_busyUI: false,
set value(val)
{
let toolbar_progress = this._getters.toolbarProgress;
if(toolbar_progress)
{
toolbar_progress.value = val;
}
set value(val)
{
let toolbar_progress = this._getters.toolbarProgress;
if(toolbar_progress)
{
toolbar_progress.value = val;
}
let throbber_progress = this._getters.throbberProgress;
if(throbber_progress)
{
if(val)
{
throbber_progress.setAttribute("progress", val);
}
else
{
throbber_progress.removeAttribute("progress");
}
}
},
let throbber_progress = this._getters.throbberProgress;
if(throbber_progress)
{
if(val)
{
throbber_progress.setAttribute("progress", val);
}
else
{
throbber_progress.removeAttribute("progress");
}
}
},
set collapsed(val)
{
let toolbar_progress = this._getters.toolbarProgress;
if(toolbar_progress)
{
toolbar_progress.collapsed = val;
}
set collapsed(val)
{
let toolbar_progress = this._getters.toolbarProgress;
if(toolbar_progress)
{
toolbar_progress.collapsed = val;
}
let throbber_progress = this._getters.throbberProgress;
if(throbber_progress)
{
if(val)
{
throbber_progress.removeAttribute("busy");
}
else
{
throbber_progress.setAttribute("busy", true);
}
}
},
let throbber_progress = this._getters.throbberProgress;
if(throbber_progress)
{
if(val)
{
throbber_progress.removeAttribute("busy");
}
else
{
throbber_progress.setAttribute("busy", true);
}
}
},
destroy: function()
{
this._gBrowser.removeProgressListener(this);
destroy: function()
{
this._gBrowser.removeProgressListener(this);
["_gBrowser", "_service", "_getters", "_statusService"].forEach(function(prop)
{
delete this[prop];
}, this);
},
["_gBrowser", "_service", "_getters", "_statusService"].forEach(function(prop)
{
delete this[prop];
}, this);
},
onStatusChange: function(aWebProgress, aRequest, aStatus, aMessage)
{
this._statusService.setNetworkStatus(aMessage, this._busyUI);
},
onStatusChange: function(aWebProgress, aRequest, aStatus, aMessage)
{
this._statusService.setNetworkStatus(aMessage, this._busyUI);
},
onStateChange: function(aWebProgress, aRequest, aStateFlags, aStatus)
{
let nsIWPL = CI.nsIWebProgressListener;
onStateChange: function(aWebProgress, aRequest, aStateFlags, aStatus)
{
let nsIWPL = CI.nsIWebProgressListener;
if(!this._busyUI
&& aStateFlags & nsIWPL.STATE_START
&& aStateFlags & nsIWPL.STATE_IS_NETWORK
&& !(aStateFlags & nsIWPL.STATE_RESTORING))
{
this._busyUI = true;
this.value = 0;
this.collapsed = false;
}
else if(aStateFlags & nsIWPL.STATE_STOP)
{
if(aRequest)
{
let msg = "";
let location;
if(aRequest instanceof CI.nsIChannel || "URI" in aRequest)
{
location = aRequest.URI;
if(location.spec != "about:blank")
{
switch (aStatus)
{
case Components.results.NS_BINDING_ABORTED:
msg = this._getters.strings.getString("nv_stopped");
break;
case Components.results.NS_ERROR_NET_TIMEOUT:
msg = this._getters.strings.getString("nv_timeout");
break;
}
}
}
if(!this._busyUI
&& aStateFlags & nsIWPL.STATE_START
&& aStateFlags & nsIWPL.STATE_IS_NETWORK
&& !(aStateFlags & nsIWPL.STATE_RESTORING))
{
this._busyUI = true;
this.value = 0;
this.collapsed = false;
}
else if(aStateFlags & nsIWPL.STATE_STOP)
{
if(aRequest)
{
let msg = "";
let location;
if(aRequest instanceof CI.nsIChannel || "URI" in aRequest)
{
location = aRequest.URI;
if(location.spec != "about:blank")
{
switch (aStatus)
{
case Components.results.NS_BINDING_ABORTED:
msg = this._getters.strings.getString("nv_stopped");
break;
case Components.results.NS_ERROR_NET_TIMEOUT:
msg = this._getters.strings.getString("nv_timeout");
break;
}
}
}
if(!msg && (!location || location.spec != "about:blank"))
{
msg = this._getters.strings.getString("nv_done");
}
if(!msg && (!location || location.spec != "about:blank"))
{
msg = this._getters.strings.getString("nv_done");
}
this._statusService.setDefaultStatus(msg);
this._statusService.setNetworkStatus("", this._busyUI);
}
this._statusService.setDefaultStatus(msg);
this._statusService.setNetworkStatus("", this._busyUI);
}
if(this._busyUI)
{
this._busyUI = false;
this.collapsed = true;
this.value = 0;
}
}
},
if(this._busyUI)
{
this._busyUI = false;
this.collapsed = true;
this.value = 0;
}
}
},
onUpdateCurrentBrowser: function(aStateFlags, aStatus, aMessage, aTotalProgress)
{
let nsIWPL = CI.nsIWebProgressListener;
let loadingDone = aStateFlags & nsIWPL.STATE_STOP;
onUpdateCurrentBrowser: function(aStateFlags, aStatus, aMessage, aTotalProgress)
{
let nsIWPL = CI.nsIWebProgressListener;
let loadingDone = aStateFlags & nsIWPL.STATE_STOP;
this.onStateChange(
this._gBrowser.webProgress,
{ URI: this._gBrowser.currentURI },
((loadingDone ? nsIWPL.STATE_STOP : nsIWPL.STATE_START) | (aStateFlags & nsIWPL.STATE_IS_NETWORK)),
aStatus
);
this.onStateChange(
this._gBrowser.webProgress,
{ URI: this._gBrowser.currentURI },
((loadingDone ? nsIWPL.STATE_STOP : nsIWPL.STATE_START) | (aStateFlags & nsIWPL.STATE_IS_NETWORK)),
aStatus
);
if(!loadingDone)
{
this.onProgressChange(this._gBrowser.webProgress, null, 0, 0, aTotalProgress, 1);
this.onStatusChange(this._gBrowser.webProgress, null, 0, aMessage);
}
},
if(!loadingDone)
{
this.onProgressChange(this._gBrowser.webProgress, null, 0, 0, aTotalProgress, 1);
this.onStatusChange(this._gBrowser.webProgress, null, 0, aMessage);
}
},
onProgressChange: function(aWebProgress, aRequest, aCurSelfProgress, aMaxSelfProgress, aCurTotalProgress, aMaxTotalProgress)
{
if (aMaxTotalProgress > 0 && this._busyUI)
{
// This is highly optimized. Don't touch this code unless
// you are intimately familiar with the cost of setting
// attrs on XUL elements. -- hyatt
let percentage = (aCurTotalProgress * 100) / aMaxTotalProgress;
this.value = percentage;
}
},
onProgressChange: function(aWebProgress, aRequest, aCurSelfProgress, aMaxSelfProgress, aCurTotalProgress, aMaxTotalProgress)
{
if (aMaxTotalProgress > 0 && this._busyUI)
{
// This is highly optimized. Don't touch this code unless
// you are intimately familiar with the cost of setting
// attrs on XUL elements. -- hyatt
let percentage = (aCurTotalProgress * 100) / aMaxTotalProgress;
this.value = percentage;
}
},
onProgressChange64: function(aWebProgress, aRequest, aCurSelfProgress, aMaxSelfProgress, aCurTotalProgress, aMaxTotalProgress)
{
return this.onProgressChange(aWebProgress, aRequest, aCurSelfProgress, aMaxSelfProgress, aCurTotalProgress, aMaxTotalProgress);
},
onProgressChange64: function(aWebProgress, aRequest, aCurSelfProgress, aMaxSelfProgress, aCurTotalProgress, aMaxTotalProgress)
{
return this.onProgressChange(aWebProgress, aRequest, aCurSelfProgress, aMaxSelfProgress, aCurTotalProgress, aMaxTotalProgress);
},
QueryInterface: XPCOMUtils.generateQI([ CI.nsIWebProgressListener, CI.nsIWebProgressListener2 ])
QueryInterface: XPCOMUtils.generateQI([ CI.nsIWebProgressListener, CI.nsIWebProgressListener2 ])
};

View file

@ -13,452 +13,452 @@ CU.import("resource://gre/modules/XPCOMUtils.jsm");
function S4EStatusService(window, service, getters)
{
this._window = window;
this._service = service;
this._getters = getters;
this._window = window;
this._service = service;
this._getters = getters;
this._overLinkService = new S4EOverlinkService(this._window, this._service, this);
this._overLinkService = new S4EOverlinkService(this._window, this._service, this);
}
S4EStatusService.prototype =
{
_window: null,
_service: null,
_getters: null,
_overLinkService: null,
_window: null,
_service: null,
_getters: null,
_overLinkService: null,
_overLink: { val: "", type: "" },
_network: { val: "", type: "" },
_networkXHR: { val: "", type: "" },
_status: { val: "", type: "" },
_jsStatus: { val: "", type: "" },
_defaultStatus: { val: "", type: "" },
_overLink: { val: "", type: "" },
_network: { val: "", type: "" },
_networkXHR: { val: "", type: "" },
_status: { val: "", type: "" },
_jsStatus: { val: "", type: "" },
_defaultStatus: { val: "", type: "" },
_isFullScreen: false,
_isFullScreenVideo: false,
_isFullScreen: false,
_isFullScreenVideo: false,
_statusText: { val: "", type: "" },
_noUpdate: false,
_statusChromeTimeoutID: 0,
_statusContentTimeoutID: 0,
_statusText: { val: "", type: "" },
_noUpdate: false,
_statusChromeTimeoutID: 0,
_statusContentTimeoutID: 0,
getCompositeStatusText: function()
{
return this._statusText.val;
},
getCompositeStatusText: function()
{
return this._statusText.val;
},
getStatusText: function()
{
return this._status.val;
},
getStatusText: function()
{
return this._status.val;
},
setNetworkStatus: function(status, busy)
{
if(busy)
{
this._network = { val: status, type: "network" };
this._networkXHR = { val: "", type: "network xhr" };
}
else
{
this._networkXHR = { val: status, type: "network xhr" };
}
this.updateStatusField();
},
setNetworkStatus: function(status, busy)
{
if(busy)
{
this._network = { val: status, type: "network" };
this._networkXHR = { val: "", type: "network xhr" };
}
else
{
this._networkXHR = { val: status, type: "network xhr" };
}
this.updateStatusField();
},
setStatusText: function(status)
{
this._status = { val: status, type: "status chrome" };
this.updateStatusField();
},
setStatusText: function(status)
{
this._status = { val: status, type: "status chrome" };
this.updateStatusField();
},
setJSStatus: function(status)
{
this._jsStatus = { val: status, type: "status content" };
this.updateStatusField();
},
setJSStatus: function(status)
{
this._jsStatus = { val: status, type: "status content" };
this.updateStatusField();
},
setJSDefaultStatus: function(status)
{
// This was removed from Firefox in Bug 862917
},
setJSDefaultStatus: function(status)
{
// This was removed from Firefox in Bug 862917
},
setDefaultStatus: function(status)
{
this._defaultStatus = { val: status, type: "status chrome default" };
this.updateStatusField();
},
setDefaultStatus: function(status)
{
this._defaultStatus = { val: status, type: "status chrome default" };
this.updateStatusField();
},
setOverLink: function(link, aAnchor)
{
this._overLinkService.update(link, aAnchor);
},
setOverLink: function(link, aAnchor)
{
this._overLinkService.update(link, aAnchor);
},
setOverLinkInternal: function(link, aAnchor)
{
let status = this._service.status;
let statusLinkOver = this._service.statusLinkOver;
setOverLinkInternal: function(link, aAnchor)
{
let status = this._service.status;
let statusLinkOver = this._service.statusLinkOver;
if(statusLinkOver)
{
link = link.replace(/[\u200e\u200f\u202a\u202b\u202c\u202d\u202e]/g, encodeURIComponent);
if(status == statusLinkOver)
{
this._overLink = { val: link, type: "overLink", anchor: aAnchor };
this.updateStatusField();
}
else
{
this.setStatusField(statusLinkOver, { val: link, type: "overLink", anchor: aAnchor }, true);
}
}
},
if(statusLinkOver)
{
link = link.replace(/[\u200e\u200f\u202a\u202b\u202c\u202d\u202e]/g, encodeURIComponent);
if(status == statusLinkOver)
{
this._overLink = { val: link, type: "overLink", anchor: aAnchor };
this.updateStatusField();
}
else
{
this.setStatusField(statusLinkOver, { val: link, type: "overLink", anchor: aAnchor }, true);
}
}
},
setNoUpdate: function(nu)
{
this._noUpdate = nu;
},
setNoUpdate: function(nu)
{
this._noUpdate = nu;
},
buildBinding: function() {
let XULBWPropHandler = function(prop, oldval, newval) {
CU.reportError("Attempt to modify XULBrowserWindow." + prop);
return oldval;
};
buildBinding: function() {
let XULBWPropHandler = function(prop, oldval, newval) {
CU.reportError("Attempt to modify XULBrowserWindow." + prop);
return oldval;
};
["updateStatusField", "onStatusChange"].forEach(function(prop)
{
this._window.XULBrowserWindow.unwatch(prop);
this._window.XULBrowserWindow[prop] = function() {};
this._window.XULBrowserWindow.watch(prop, XULBWPropHandler);
}, this);
["updateStatusField", "onStatusChange"].forEach(function(prop)
{
this._window.XULBrowserWindow.unwatch(prop);
this._window.XULBrowserWindow[prop] = function() {};
this._window.XULBrowserWindow.watch(prop, XULBWPropHandler);
}, this);
["getCompositeStatusText", "getStatusText", "setStatusText", "setJSStatus",
"setJSDefaultStatus", "setDefaultStatus", "setOverLink"].forEach(function(prop)
{
this._window.XULBrowserWindow.unwatch(prop);
this._window.XULBrowserWindow[prop] = this[prop].bind(this);
this._window.XULBrowserWindow.watch(prop, XULBWPropHandler);
}, this);
["getCompositeStatusText", "getStatusText", "setStatusText", "setJSStatus",
"setJSDefaultStatus", "setDefaultStatus", "setOverLink"].forEach(function(prop)
{
this._window.XULBrowserWindow.unwatch(prop);
this._window.XULBrowserWindow[prop] = this[prop].bind(this);
this._window.XULBrowserWindow.watch(prop, XULBWPropHandler);
}, this);
let XULBWHandler = function(prop, oldval, newval) {
if(!newval)
{
return newval;
}
CU.reportError("XULBrowserWindow changed. Updating S4E bindings.");
this._window.setTimeout(function(self)
{
self.buildBinding();
}, 0, this);
return newval;
};
let XULBWHandler = function(prop, oldval, newval) {
if(!newval)
{
return newval;
}
CU.reportError("XULBrowserWindow changed. Updating S4E bindings.");
this._window.setTimeout(function(self)
{
self.buildBinding();
}, 0, this);
return newval;
};
this._window.watch("XULBrowserWindow", XULBWHandler);
},
this._window.watch("XULBrowserWindow", XULBWHandler);
},
destroy: function()
{
// No need to unbind from the XULBrowserWindow, it's already null at this point
destroy: function()
{
// No need to unbind from the XULBrowserWindow, it's already null at this point
this.clearTimer("_statusChromeTimeoutID");
this.clearTimer("_statusContentTimeoutID");
this.clearTimer("_statusChromeTimeoutID");
this.clearTimer("_statusContentTimeoutID");
this._overLinkService.destroy();
this._overLinkService.destroy();
["_overLink", "_network", "_networkXHR", "_status", "_jsStatus", "_defaultStatus",
"_statusText", "_window", "_service", "_getters", "_overLinkService"].forEach(function(prop)
{
delete this[prop];
}, this);
},
["_overLink", "_network", "_networkXHR", "_status", "_jsStatus", "_defaultStatus",
"_statusText", "_window", "_service", "_getters", "_overLinkService"].forEach(function(prop)
{
delete this[prop];
}, this);
},
buildTextOrder: function()
{
this.__defineGetter__("_textOrder", function()
{
let textOrder = ["_overLink"];
if(this._service.statusNetwork)
{
textOrder.push("_network");
if(this._service.statusNetworkXHR)
{
textOrder.push("_networkXHR");
}
}
textOrder.push("_status", "_jsStatus");
if(this._service.statusDefault)
{
textOrder.push("_defaultStatus");
}
buildTextOrder: function()
{
this.__defineGetter__("_textOrder", function()
{
let textOrder = ["_overLink"];
if(this._service.statusNetwork)
{
textOrder.push("_network");
if(this._service.statusNetworkXHR)
{
textOrder.push("_networkXHR");
}
}
textOrder.push("_status", "_jsStatus");
if(this._service.statusDefault)
{
textOrder.push("_defaultStatus");
}
delete this._textOrder;
return this._textOrder = textOrder;
});
},
delete this._textOrder;
return this._textOrder = textOrder;
});
},
updateStatusField: function(force)
{
let text = { val: "", type: "" };
for(let i = 0; !text.val && i < this._textOrder.length; i++)
{
text = this[this._textOrder[i]];
}
updateStatusField: function(force)
{
let text = { val: "", type: "" };
for(let i = 0; !text.val && i < this._textOrder.length; i++)
{
text = this[this._textOrder[i]];
}
if(this._statusText.val != text.val || force)
{
if(this._noUpdate)
{
return;
}
if(this._statusText.val != text.val || force)
{
if(this._noUpdate)
{
return;
}
this._statusText = text;
this._statusText = text;
this.setStatusField(this._service.status, text, false);
this.setStatusField(this._service.status, text, false);
if(text.val && this._service.statusTimeout)
{
this.setTimer(text.type);
}
}
},
if(text.val && this._service.statusTimeout)
{
this.setTimer(text.type);
}
}
},
updateFullScreen: function()
{
this._isFullScreen = this._window.fullScreen;
this._isFullScreenVideo = false;
if(this._isFullScreen)
{
let fsEl = this._window.content.document.mozFullScreenElement;
if(fsEl && (fsEl.nodeName == "VIDEO" || fsEl.getElementsByTagName("VIDEO").length > 0))
{
this._isFullScreenVideo = true;
}
}
updateFullScreen: function()
{
this._isFullScreen = this._window.fullScreen;
this._isFullScreenVideo = false;
if(this._isFullScreen)
{
let fsEl = this._window.content.document.mozFullScreenElement;
if(fsEl && (fsEl.nodeName == "VIDEO" || fsEl.getElementsByTagName("VIDEO").length > 0))
{
this._isFullScreenVideo = true;
}
}
this.clearStatusField();
this.updateStatusField(true);
},
this.clearStatusField();
this.updateStatusField(true);
},
setTimer: function(type)
{
let typeArgs = type.split(" ", 3);
setTimer: function(type)
{
let typeArgs = type.split(" ", 3);
if(typeArgs.length < 2 || typeArgs[0] != "status")
{
return;
}
if(typeArgs.length < 2 || typeArgs[0] != "status")
{
return;
}
if(typeArgs[1] == "chrome")
{
this.clearTimer("_statusChromeTimeoutID");
this._statusChromeTimeoutID = this._window.setTimeout(function(self, isDefault)
{
self._statusChromeTimeoutID = 0;
if(isDefault)
{
self.setDefaultStatus("");
}
else
{
self.setStatusText("");
}
}, this._service.statusTimeout, this, (typeArgs.length == 3 && typeArgs[2] == "default"));
}
else
{
this.clearTimer("_statusContentTimeoutID");
this._statusContentTimeoutID = this._window.setTimeout(function(self)
{
self._statusContentTimeoutID = 0;
self.setJSStatus("");
}, this._service.statusTimeout, this);
}
},
if(typeArgs[1] == "chrome")
{
this.clearTimer("_statusChromeTimeoutID");
this._statusChromeTimeoutID = this._window.setTimeout(function(self, isDefault)
{
self._statusChromeTimeoutID = 0;
if(isDefault)
{
self.setDefaultStatus("");
}
else
{
self.setStatusText("");
}
}, this._service.statusTimeout, this, (typeArgs.length == 3 && typeArgs[2] == "default"));
}
else
{
this.clearTimer("_statusContentTimeoutID");
this._statusContentTimeoutID = this._window.setTimeout(function(self)
{
self._statusContentTimeoutID = 0;
self.setJSStatus("");
}, this._service.statusTimeout, this);
}
},
clearTimer: function(timerName)
{
if(this[timerName] != 0)
{
this._window.clearTimeout(this[timerName]);
this[timerName] = 0;
}
},
clearTimer: function(timerName)
{
if(this[timerName] != 0)
{
this._window.clearTimeout(this[timerName]);
this[timerName] = 0;
}
},
clearStatusField: function()
{
this._getters.statusOverlay.value = "";
clearStatusField: function()
{
this._getters.statusOverlay.value = "";
let status_label = this._getters.statusWidgetLabel;
if(status_label)
{
status_label.value = "";
}
let status_label = this._getters.statusWidgetLabel;
if(status_label)
{
status_label.value = "";
}
},
},
setStatusField: function(location, text, allowTooltip)
{
if(!location)
{
return;
}
setStatusField: function(location, text, allowTooltip)
{
if(!location)
{
return;
}
let label = null;
let label = null;
if(this._isFullScreen && this._service.advancedStatusDetectFullScreen)
{
switch(location)
{
case 1: // Toolbar
location = 3
break;
case 2: // URL bar
if(Services.prefs.getBoolPref("browser.fullscreen.autohide"))
{
location = 3
}
break;
}
}
if(this._isFullScreen && this._service.advancedStatusDetectFullScreen)
{
switch(location)
{
case 1: // Toolbar
location = 3
break;
case 2: // URL bar
if(Services.prefs.getBoolPref("browser.fullscreen.autohide"))
{
location = 3
}
break;
}
}
switch(location)
{
case 1: // Toolbar
label = this._getters.statusWidgetLabel;
break;
case 2: // URL Bar
break;
case 3: // Popup
default:
if(this._isFullScreenVideo && this._service.advancedStatusDetectVideo)
{
return;
}
label = this._getters.statusOverlay;
break;
}
switch(location)
{
case 1: // Toolbar
label = this._getters.statusWidgetLabel;
break;
case 2: // URL Bar
break;
case 3: // Popup
default:
if(this._isFullScreenVideo && this._service.advancedStatusDetectVideo)
{
return;
}
label = this._getters.statusOverlay;
break;
}
if(label)
{
label.setAttribute("previoustype", label.getAttribute("type"));
label.setAttribute("type", text.type);
label.value = text.val;
label.setAttribute("crop", text.type == "overLink" ? "center" : "end");
}
}
if(label)
{
label.setAttribute("previoustype", label.getAttribute("type"));
label.setAttribute("type", text.type);
label.value = text.val;
label.setAttribute("crop", text.type == "overLink" ? "center" : "end");
}
}
};
function S4EOverlinkService(window, service, statusService) {
this._window = window;
this._service = service;
this._statusService = statusService;
this._window = window;
this._service = service;
this._statusService = statusService;
}
S4EOverlinkService.prototype =
{
_window: null,
_service: null,
_statusService: null,
_window: null,
_service: null,
_statusService: null,
_timer: 0,
_currentLink: { link: "", anchor: null },
_pendingLink: { link: "", anchor: null },
_listening: false,
_timer: 0,
_currentLink: { link: "", anchor: null },
_pendingLink: { link: "", anchor: null },
_listening: false,
update: function(aLink, aAnchor)
{
this.clearTimer();
this.stopListen();
this._pendingLink = { link: aLink, anchor: aAnchor };
update: function(aLink, aAnchor)
{
this.clearTimer();
this.stopListen();
this._pendingLink = { link: aLink, anchor: aAnchor };
if(!aLink)
{
if(this._window.XULBrowserWindow.hideOverLinkImmediately || !this._service.statusLinkOverDelayHide)
{
this._show();
}
else
{
this._showDelayed();
}
}
else if(this._currentLink.link || !this._service.statusLinkOverDelayShow)
{
this._show();
}
else
{
this._showDelayed();
this.startListen();
}
},
if(!aLink)
{
if(this._window.XULBrowserWindow.hideOverLinkImmediately || !this._service.statusLinkOverDelayHide)
{
this._show();
}
else
{
this._showDelayed();
}
}
else if(this._currentLink.link || !this._service.statusLinkOverDelayShow)
{
this._show();
}
else
{
this._showDelayed();
this.startListen();
}
},
destroy: function()
{
this.clearTimer();
this.stopListen();
destroy: function()
{
this.clearTimer();
this.stopListen();
["_currentLink", "_pendingLink", "_statusService", "_window"].forEach(function(prop)
{
delete this[prop];
}, this);
},
["_currentLink", "_pendingLink", "_statusService", "_window"].forEach(function(prop)
{
delete this[prop];
}, this);
},
startListen: function()
{
if(!this._listening)
{
this._window.addEventListener("mousemove", this, true);
this._listening = true;
}
},
startListen: function()
{
if(!this._listening)
{
this._window.addEventListener("mousemove", this, true);
this._listening = true;
}
},
stopListen: function()
{
if(this._listening)
{
this._window.removeEventListener("mousemove", this, true);
this._listening = false;
}
},
stopListen: function()
{
if(this._listening)
{
this._window.removeEventListener("mousemove", this, true);
this._listening = false;
}
},
clearTimer: function()
{
if(this._timer != 0)
{
this._window.clearTimeout(this._timer);
this._timer = 0;
}
},
clearTimer: function()
{
if(this._timer != 0)
{
this._window.clearTimeout(this._timer);
this._timer = 0;
}
},
handleEvent: function(event)
{
switch(event.type)
{
case "mousemove":
this.clearTimer();
this._showDelayed();
}
},
handleEvent: function(event)
{
switch(event.type)
{
case "mousemove":
this.clearTimer();
this._showDelayed();
}
},
_showDelayed: function()
{
let delay = ((this._pendingLink.link)
? this._service.statusLinkOverDelayShow
: this._service.statusLinkOverDelayHide);
_showDelayed: function()
{
let delay = ((this._pendingLink.link)
? this._service.statusLinkOverDelayShow
: this._service.statusLinkOverDelayHide);
this._timer = this._window.setTimeout(function(self)
{
self._timer = 0;
self._show();
self.stopListen();
}, delay, this);
},
this._timer = this._window.setTimeout(function(self)
{
self._timer = 0;
self._show();
self.stopListen();
}, delay, this);
},
_show: function()
{
this._currentLink = this._pendingLink;
this._statusService.setOverLinkInternal(this._currentLink.link, this._currentLink.anchor);
}
_show: function()
{
this._currentLink = this._pendingLink;
this._statusService.setOverLinkInternal(this._currentLink.link, this._currentLink.anchor);
}
};

View file

@ -23,257 +23,257 @@ CU.import("resource:///modules/statusbar/Toolbars.jsm");
function Status4Evar(window, gBrowser, toolbox)
{
this._window = window;
this._toolbox = toolbox;
this._window = window;
this._toolbox = toolbox;
this.getters = new S4EWindowGetters(this._window);
this.toolbars = new S4EToolbars(this._window, gBrowser, this._toolbox, s4e_service, this.getters);
this.statusService = new S4EStatusService(this._window, s4e_service, this.getters);
this.progressMeter = new S4EProgressService(gBrowser, s4e_service, this.getters, this.statusService);
this.downloadStatus = new S4EDownloadService(this._window, gBrowser, s4e_service, this.getters);
this.sizeModeService = new SizeModeService(this._window, this);
this.getters = new S4EWindowGetters(this._window);
this.toolbars = new S4EToolbars(this._window, gBrowser, this._toolbox, s4e_service, this.getters);
this.statusService = new S4EStatusService(this._window, s4e_service, this.getters);
this.progressMeter = new S4EProgressService(gBrowser, s4e_service, this.getters, this.statusService);
this.downloadStatus = new S4EDownloadService(this._window, gBrowser, s4e_service, this.getters);
this.sizeModeService = new SizeModeService(this._window, this);
this._window.addEventListener("unload", this, false);
this._window.addEventListener("unload", this, false);
}
Status4Evar.prototype =
{
_window: null,
_toolbox: null,
_window: null,
_toolbox: null,
getters: null,
toolbars: null,
statusService: null,
progressMeter: null,
downloadStatus: null,
sizeModeService: null,
getters: null,
toolbars: null,
statusService: null,
progressMeter: null,
downloadStatus: null,
sizeModeService: null,
setup: function()
{
this._toolbox.addEventListener("beforecustomization", this, false);
this._toolbox.addEventListener("aftercustomization", this, false);
setup: function()
{
this._toolbox.addEventListener("beforecustomization", this, false);
this._toolbox.addEventListener("aftercustomization", this, false);
this.toolbars.setup();
this.updateWindow();
this.toolbars.setup();
this.updateWindow();
// OMFG HAX! If a page is already loading, fake a network start event
if(this._window.XULBrowserWindow._busyUI)
{
let nsIWPL = CI.nsIWebProgressListener;
this.progressMeter.onStateChange(0, null, nsIWPL.STATE_START | nsIWPL.STATE_IS_NETWORK, 0);
}
},
// OMFG HAX! If a page is already loading, fake a network start event
if(this._window.XULBrowserWindow._busyUI)
{
let nsIWPL = CI.nsIWebProgressListener;
this.progressMeter.onStateChange(0, null, nsIWPL.STATE_START | nsIWPL.STATE_IS_NETWORK, 0);
}
},
destroy: function()
{
this._window.removeEventListener("unload", this, false);
this._toolbox.removeEventListener("aftercustomization", this, false);
this._toolbox.removeEventListener("beforecustomization", this, false);
destroy: function()
{
this._window.removeEventListener("unload", this, false);
this._toolbox.removeEventListener("aftercustomization", this, false);
this._toolbox.removeEventListener("beforecustomization", this, false);
this.getters.destroy();
this.statusService.destroy();
this.downloadStatus.destroy();
this.progressMeter.destroy();
this.toolbars.destroy();
this.sizeModeService.destroy();
this.getters.destroy();
this.statusService.destroy();
this.downloadStatus.destroy();
this.progressMeter.destroy();
this.toolbars.destroy();
this.sizeModeService.destroy();
["_window", "_toolbox", "getters", "statusService", "downloadStatus",
"progressMeter", "toolbars", "sizeModeService"].forEach(function(prop)
{
delete this[prop];
}, this);
},
["_window", "_toolbox", "getters", "statusService", "downloadStatus",
"progressMeter", "toolbars", "sizeModeService"].forEach(function(prop)
{
delete this[prop];
}, this);
},
handleEvent: function(aEvent)
{
switch(aEvent.type)
{
case "unload":
this.destroy();
break;
case "beforecustomization":
this.beforeCustomization();
break;
case "aftercustomization":
this.updateWindow();
break;
}
},
handleEvent: function(aEvent)
{
switch(aEvent.type)
{
case "unload":
this.destroy();
break;
case "beforecustomization":
this.beforeCustomization();
break;
case "aftercustomization":
this.updateWindow();
break;
}
},
beforeCustomization: function()
{
this.toolbars.updateSplitters(false);
this.toolbars.updateWindowGripper(false);
beforeCustomization: function()
{
this.toolbars.updateSplitters(false);
this.toolbars.updateWindowGripper(false);
this.statusService.setNoUpdate(true);
let status_label = this.getters.statusWidgetLabel;
if(status_label)
{
status_label.value = this.getters.strings.getString("statusText");
}
this.statusService.setNoUpdate(true);
let status_label = this.getters.statusWidgetLabel;
if(status_label)
{
status_label.value = this.getters.strings.getString("statusText");
}
this.downloadStatus.customizing(true);
},
this.downloadStatus.customizing(true);
},
updateWindow: function()
{
this.statusService.setNoUpdate(false);
this.getters.resetGetters();
this.statusService.buildTextOrder();
this.statusService.buildBinding();
this.downloadStatus.init();
this.downloadStatus.customizing(false);
this.toolbars.updateSplitters(true);
updateWindow: function()
{
this.statusService.setNoUpdate(false);
this.getters.resetGetters();
this.statusService.buildTextOrder();
this.statusService.buildBinding();
this.downloadStatus.init();
this.downloadStatus.customizing(false);
this.toolbars.updateSplitters(true);
s4e_service.updateWindow(this._window);
// This also handles the following:
// * buildTextOrder()
// * updateStatusField(true)
// * updateWindowGripper(true)
},
s4e_service.updateWindow(this._window);
// This also handles the following:
// * buildTextOrder()
// * updateStatusField(true)
// * updateWindowGripper(true)
},
launchOptions: function(currentWindow)
{
let optionsURL = "chrome://browser/content/statusbar/prefs.xul";
let windows = Services.wm.getEnumerator(null);
while (windows.hasMoreElements())
{
let win = windows.getNext();
if (win.document.documentURI == optionsURL)
{
win.focus();
return;
}
}
let features = "chrome,titlebar,toolbar,centerscreen";
try
{
let instantApply = Services.prefs.getBoolPref("browser.preferences.instantApply");
features += instantApply ? ",dialog=no" : ",modal";
}
catch(e)
{
features += ",modal";
}
currentWindow.openDialog(optionsURL, "", features);
}
launchOptions: function(currentWindow)
{
let optionsURL = "chrome://browser/content/statusbar/prefs.xul";
let windows = Services.wm.getEnumerator(null);
while (windows.hasMoreElements())
{
let win = windows.getNext();
if (win.document.documentURI == optionsURL)
{
win.focus();
return;
}
}
let features = "chrome,titlebar,toolbar,centerscreen";
try
{
let instantApply = Services.prefs.getBoolPref("browser.preferences.instantApply");
features += instantApply ? ",dialog=no" : ",modal";
}
catch(e)
{
features += ",modal";
}
currentWindow.openDialog(optionsURL, "", features);
}
};
function S4EWindowGetters(window)
{
this._window = window;
this._window = window;
}
S4EWindowGetters.prototype =
{
_window: null,
_getterMap:
[
["addonbar", "addon-bar"],
["addonbarCloseButton", "addonbar-closebutton"],
["browserBottomBox", "browser-bottombox"],
["downloadButton", "status4evar-download-button"],
["downloadButtonTooltip", "status4evar-download-tooltip"],
["downloadButtonProgress", "status4evar-download-progress-bar"],
["downloadButtonLabel", "status4evar-download-label"],
["downloadButtonAnchor", "status4evar-download-anchor"],
["downloadNotifyAnchor", "status4evar-download-notification-anchor"],
["statusBar", "status4evar-status-bar"],
["statusWidget", "status4evar-status-widget"],
["statusWidgetLabel", "status4evar-status-text"],
["strings", "bundle_status4evar"],
["throbberProgress", "status4evar-throbber-widget"],
["toolbarProgress", "status4evar-progress-bar"]
],
_window: null,
_getterMap:
[
["addonbar", "addon-bar"],
["addonbarCloseButton", "addonbar-closebutton"],
["browserBottomBox", "browser-bottombox"],
["downloadButton", "status4evar-download-button"],
["downloadButtonTooltip", "status4evar-download-tooltip"],
["downloadButtonProgress", "status4evar-download-progress-bar"],
["downloadButtonLabel", "status4evar-download-label"],
["downloadButtonAnchor", "status4evar-download-anchor"],
["downloadNotifyAnchor", "status4evar-download-notification-anchor"],
["statusBar", "status4evar-status-bar"],
["statusWidget", "status4evar-status-widget"],
["statusWidgetLabel", "status4evar-status-text"],
["strings", "bundle_status4evar"],
["throbberProgress", "status4evar-throbber-widget"],
["toolbarProgress", "status4evar-progress-bar"]
],
resetGetters: function()
{
let document = this._window.document;
resetGetters: function()
{
let document = this._window.document;
this._getterMap.forEach(function(getter)
{
let [prop, id] = getter;
delete this[prop];
this.__defineGetter__(prop, function()
{
delete this[prop];
return this[prop] = document.getElementById(id);
});
}, this);
this._getterMap.forEach(function(getter)
{
let [prop, id] = getter;
delete this[prop];
this.__defineGetter__(prop, function()
{
delete this[prop];
return this[prop] = document.getElementById(id);
});
}, this);
delete this.statusOverlay;
this.__defineGetter__("statusOverlay", function()
{
let so = this._window.XULBrowserWindow.statusTextField;
if(!so)
{
return null;
}
delete this.statusOverlay;
this.__defineGetter__("statusOverlay", function()
{
let so = this._window.XULBrowserWindow.statusTextField;
if(!so)
{
return null;
}
delete this.statusOverlay;
return this.statusOverlay = so;
});
},
delete this.statusOverlay;
return this.statusOverlay = so;
});
},
destroy: function()
{
this._getterMap.forEach(function(getter)
{
let [prop, id] = getter;
delete this[prop];
}, this);
destroy: function()
{
this._getterMap.forEach(function(getter)
{
let [prop, id] = getter;
delete this[prop];
}, this);
["statusOverlay", "statusOverlay", "_window"].forEach(function(prop)
{
delete this[prop];
}, this);
}
["statusOverlay", "statusOverlay", "_window"].forEach(function(prop)
{
delete this[prop];
}, this);
}
};
function SizeModeService(window, s4e)
{
this._window = window;
this._s4e = s4e;
this._window = window;
this._s4e = s4e;
this.lastFullScreen = this._window.fullScreen;
this.lastwindowState = this._window.windowState;
this._window.addEventListener("sizemodechange", this, false);
this.lastFullScreen = this._window.fullScreen;
this.lastwindowState = this._window.windowState;
this._window.addEventListener("sizemodechange", this, false);
}
SizeModeService.prototype =
{
_window: null,
_s4e: null,
_window: null,
_s4e: null,
lastFullScreen: null,
lastwindowState: null,
lastFullScreen: null,
lastwindowState: null,
destroy: function()
{
this._window.removeEventListener("sizemodechange", this, false);
destroy: function()
{
this._window.removeEventListener("sizemodechange", this, false);
["_window", "_s4e"].forEach(function(prop)
{
delete this[prop];
}, this);
},
["_window", "_s4e"].forEach(function(prop)
{
delete this[prop];
}, this);
},
handleEvent: function(e)
{
if(this._window.fullScreen != this.lastFullScreen)
{
this.lastFullScreen = this._window.fullScreen;
this._s4e.statusService.updateFullScreen();
}
handleEvent: function(e)
{
if(this._window.fullScreen != this.lastFullScreen)
{
this.lastFullScreen = this._window.fullScreen;
this._s4e.statusService.updateFullScreen();
}
if(this._window.windowState != this.lastwindowState)
{
this.lastwindowState = this._window.windowState;
this._s4e.toolbars.updateWindowGripper(true);
}
},
if(this._window.windowState != this.lastwindowState)
{
this.lastwindowState = this._window.windowState;
this._s4e.toolbars.updateWindowGripper(true);
}
},
QueryInterface: XPCOMUtils.generateQI([ CI.nsIDOMEventListener ])
QueryInterface: XPCOMUtils.generateQI([ CI.nsIDOMEventListener ])
};

View file

@ -13,209 +13,209 @@ CU.import("resource://gre/modules/Services.jsm");
function S4EToolbars(window, gBrowser, toolbox, service, getters)
{
this._window = window;
this._toolbox = toolbox;
this._service = service;
this._getters = getters;
this._handler = new ClassicS4EToolbars(this._window, this._toolbox);
this._window = window;
this._toolbox = toolbox;
this._service = service;
this._getters = getters;
this._handler = new ClassicS4EToolbars(this._window, this._toolbox);
}
S4EToolbars.prototype =
{
_window: null,
_toolbox: null,
_service: null,
_getters: null,
_window: null,
_toolbox: null,
_service: null,
_getters: null,
_handler: null,
_handler: null,
setup: function()
{
this.updateSplitters(false);
this.updateWindowGripper(false);
this._handler.setup(this._service.firstRun);
},
setup: function()
{
this.updateSplitters(false);
this.updateWindowGripper(false);
this._handler.setup(this._service.firstRun);
},
destroy: function()
{
this._handler.destroy();
destroy: function()
{
this._handler.destroy();
["_window", "_toolbox", "_service", "_getters", "_handler"].forEach(function(prop)
{
delete this[prop];
}, this);
},
["_window", "_toolbox", "_service", "_getters", "_handler"].forEach(function(prop)
{
delete this[prop];
}, this);
},
updateSplitters: function(action)
{
let document = this._window.document;
updateSplitters: function(action)
{
let document = this._window.document;
let splitter_before = document.getElementById("status4evar-status-splitter-before");
if(splitter_before)
{
splitter_before.parentNode.removeChild(splitter_before);
}
let splitter_before = document.getElementById("status4evar-status-splitter-before");
if(splitter_before)
{
splitter_before.parentNode.removeChild(splitter_before);
}
let splitter_after = document.getElementById("status4evar-status-splitter-after");
if(splitter_after)
{
splitter_after.parentNode.removeChild(splitter_after);
}
let splitter_after = document.getElementById("status4evar-status-splitter-after");
if(splitter_after)
{
splitter_after.parentNode.removeChild(splitter_after);
}
let status = this._getters.statusWidget;
if(!action || !status)
{
return;
}
let status = this._getters.statusWidget;
if(!action || !status)
{
return;
}
let urlbar = document.getElementById("urlbar-container");
let stop = document.getElementById("stop-button");
let fullscreenflex = document.getElementById("fullscreenflex");
let urlbar = document.getElementById("urlbar-container");
let stop = document.getElementById("stop-button");
let fullscreenflex = document.getElementById("fullscreenflex");
let nextSibling = status.nextSibling;
let previousSibling = status.previousSibling;
let nextSibling = status.nextSibling;
let previousSibling = status.previousSibling;
function getSplitter(splitter, suffix)
{
if(!splitter)
{
splitter = document.createElement("splitter");
splitter.id = "status4evar-status-splitter-" + suffix;
splitter.setAttribute("resizebefore", "flex");
splitter.setAttribute("resizeafter", "flex");
splitter.className = "chromeclass-toolbar-additional status4evar-status-splitter";
}
return splitter;
}
function getSplitter(splitter, suffix)
{
if(!splitter)
{
splitter = document.createElement("splitter");
splitter.id = "status4evar-status-splitter-" + suffix;
splitter.setAttribute("resizebefore", "flex");
splitter.setAttribute("resizeafter", "flex");
splitter.className = "chromeclass-toolbar-additional status4evar-status-splitter";
}
return splitter;
}
if((previousSibling && previousSibling.flex > 0)
|| (urlbar && stop && urlbar.getAttribute("combined") && stop == previousSibling))
{
status.parentNode.insertBefore(getSplitter(splitter_before, "before"), status);
}
if((previousSibling && previousSibling.flex > 0)
|| (urlbar && stop && urlbar.getAttribute("combined") && stop == previousSibling))
{
status.parentNode.insertBefore(getSplitter(splitter_before, "before"), status);
}
if(nextSibling && nextSibling.flex > 0 && nextSibling != fullscreenflex)
{
status.parentNode.insertBefore(getSplitter(splitter_after, "after"), nextSibling);
}
},
if(nextSibling && nextSibling.flex > 0 && nextSibling != fullscreenflex)
{
status.parentNode.insertBefore(getSplitter(splitter_after, "after"), nextSibling);
}
},
updateWindowGripper: function(action)
{
let document = this._window.document;
updateWindowGripper: function(action)
{
let document = this._window.document;
let gripper = document.getElementById("status4evar-window-gripper");
let toolbar = this._getters.statusBar || this._getters.addonbar;
let gripper = document.getElementById("status4evar-window-gripper");
let toolbar = this._getters.statusBar || this._getters.addonbar;
if(!action || !toolbar || !this._service.addonbarWindowGripper
|| this._window.windowState != CI.nsIDOMChromeWindow.STATE_NORMAL || toolbar.toolbox.customizing)
{
if(gripper)
{
gripper.parentNode.removeChild(gripper);
}
return;
}
if(!action || !toolbar || !this._service.addonbarWindowGripper
|| this._window.windowState != CI.nsIDOMChromeWindow.STATE_NORMAL || toolbar.toolbox.customizing)
{
if(gripper)
{
gripper.parentNode.removeChild(gripper);
}
return;
}
gripper = this._handler.buildGripper(toolbar, gripper, "status4evar-window-gripper");
gripper = this._handler.buildGripper(toolbar, gripper, "status4evar-window-gripper");
toolbar.appendChild(gripper);
}
toolbar.appendChild(gripper);
}
};
function ClassicS4EToolbars(window, toolbox)
{
this._window = window;
this._toolbox = toolbox;
this._window = window;
this._toolbox = toolbox;
}
ClassicS4EToolbars.prototype =
{
_window: null,
_toolbox: null,
_window: null,
_toolbox: null,
setup: function(firstRun)
{
let document = this._window.document;
setup: function(firstRun)
{
let document = this._window.document;
let addon_bar = document.getElementById("addon-bar");
if(addon_bar)
{
let baseSet = "addonbar-closebutton"
+ ",status4evar-status-widget"
+ ",status4evar-progress-widget";
let addon_bar = document.getElementById("addon-bar");
if(addon_bar)
{
let baseSet = "addonbar-closebutton"
+ ",status4evar-status-widget"
+ ",status4evar-progress-widget";
// Update the defaultSet
let defaultSet = baseSet;
let defaultSetIgnore = ["addonbar-closebutton", "spring", "status-bar"];
addon_bar.getAttribute("defaultset").split(",").forEach(function(item)
{
if(defaultSetIgnore.indexOf(item) == -1)
{
defaultSet += "," + item;
}
});
defaultSet += ",status-bar"
addon_bar.setAttribute("defaultset", defaultSet);
// Update the defaultSet
let defaultSet = baseSet;
let defaultSetIgnore = ["addonbar-closebutton", "spring", "status-bar"];
addon_bar.getAttribute("defaultset").split(",").forEach(function(item)
{
if(defaultSetIgnore.indexOf(item) == -1)
{
defaultSet += "," + item;
}
});
defaultSet += ",status-bar"
addon_bar.setAttribute("defaultset", defaultSet);
// Update the currentSet
if(firstRun)
{
let isCustomizableToolbar = function(aElt)
{
return aElt.localName == "toolbar" && aElt.getAttribute("customizable") == "true";
}
// Update the currentSet
if(firstRun)
{
let isCustomizableToolbar = function(aElt)
{
return aElt.localName == "toolbar" && aElt.getAttribute("customizable") == "true";
}
let isCustomizedAlready = false;
let toolbars = Array.filter(this._toolbox.childNodes, isCustomizableToolbar).concat(
Array.filter(this._toolbox.externalToolbars, isCustomizableToolbar));
toolbars.forEach(function(toolbar)
{
if(toolbar.currentSet.indexOf("status4evar") > -1)
{
isCustomizedAlready = true;
}
});
let isCustomizedAlready = false;
let toolbars = Array.filter(this._toolbox.childNodes, isCustomizableToolbar).concat(
Array.filter(this._toolbox.externalToolbars, isCustomizableToolbar));
toolbars.forEach(function(toolbar)
{
if(toolbar.currentSet.indexOf("status4evar") > -1)
{
isCustomizedAlready = true;
}
});
if(!isCustomizedAlready)
{
let currentSet = baseSet;
let currentSetIgnore = ["addonbar-closebutton", "spring"];
addon_bar.currentSet.split(",").forEach(function(item)
{
if(currentSetIgnore.indexOf(item) == -1)
{
currentSet += "," + item;
}
});
addon_bar.currentSet = currentSet;
addon_bar.setAttribute("currentset", currentSet);
document.persist(addon_bar.id, "currentset");
this._window.setToolbarVisibility(addon_bar, true);
}
}
}
},
if(!isCustomizedAlready)
{
let currentSet = baseSet;
let currentSetIgnore = ["addonbar-closebutton", "spring"];
addon_bar.currentSet.split(",").forEach(function(item)
{
if(currentSetIgnore.indexOf(item) == -1)
{
currentSet += "," + item;
}
});
addon_bar.currentSet = currentSet;
addon_bar.setAttribute("currentset", currentSet);
document.persist(addon_bar.id, "currentset");
this._window.setToolbarVisibility(addon_bar, true);
}
}
}
},
destroy: function()
{
["_window", "_toolbox"].forEach(function(prop)
{
delete this[prop];
}, this);
},
destroy: function()
{
["_window", "_toolbox"].forEach(function(prop)
{
delete this[prop];
}, this);
},
buildGripper: function(toolbar, gripper, id)
{
if(!gripper)
{
let document = this._window.document;
buildGripper: function(toolbar, gripper, id)
{
if(!gripper)
{
let document = this._window.document;
gripper = document.createElement("resizer");
gripper.id = id;
gripper.dir = "bottomend";
}
gripper = document.createElement("resizer");
gripper.id = id;
gripper.dir = "bottomend";
}
return gripper;
}
return gripper;
}
};

View file

@ -8,8 +8,7 @@
* Status Popup
*/
statuspanel
{
-moz-binding: url("chrome://browser/content/statusbar/tabbrowser.xml#statuspanel");
statuspanel {
-moz-binding: url("chrome://browser/content/statusbar/tabbrowser.xml#statuspanel");
}

View file

@ -6,11 +6,11 @@ if(!caligon) var caligon = {};
window.addEventListener("load", function buildS4E()
{
window.removeEventListener("load", buildS4E, false);
window.removeEventListener("load", buildS4E, false);
Components.utils.import("resource:///modules/statusbar/Status4Evar.jsm");
Components.utils.import("resource:///modules/statusbar/Status4Evar.jsm");
caligon.status4evar = new Status4Evar(window, gBrowser, gNavToolbox);
caligon.status4evar.setup();
caligon.status4evar = new Status4Evar(window, gBrowser, gNavToolbox);
caligon.status4evar.setup();
}, false);

View file

@ -13,23 +13,23 @@
<overlay id="status4evar-overlay"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<stringbundleset id="stringbundleset">
<stringbundle id="bundle_status4evar" src="chrome://browser/locale/statusbar/overlay.properties" />
</stringbundleset>
<stringbundleset id="stringbundleset">
<stringbundle id="bundle_status4evar" src="chrome://browser/locale/statusbar/overlay.properties" />
</stringbundleset>
<script type="application/javascript" src="chrome://browser/content/statusbar/overlay.js" />
<script type="application/javascript" src="chrome://browser/content/statusbar/overlay.js" />
<commandset>
<command id="S4E:Options" oncommand="caligon.status4evar.launchOptions(window);"/>
</commandset>
<commandset>
<command id="S4E:Options" oncommand="caligon.status4evar.launchOptions(window);"/>
</commandset>
<popupset id="mainPopupSet">
<hbox id="status4evar-download-notification-container" mousethrough="always">
<vbox id="status4evar-download-notification-anchor">
<vbox id="status4evar-download-notification-icon" />
</vbox>
</hbox>
</popupset>
<popupset id="mainPopupSet">
<hbox id="status4evar-download-notification-container" mousethrough="always">
<vbox id="status4evar-download-notification-anchor">
<vbox id="status4evar-download-notification-icon" />
</vbox>
</hbox>
</popupset>
<menupopup id="menu_ToolsPopup">
<menuitem id="statusbar-options-fx" command="S4E:Options"
@ -41,41 +41,41 @@
label="&status4evar.menu.options.label;"/>
</menupopup>
<toolbarpalette id="BrowserToolbarPalette">
<toolbaritem id="status4evar-status-widget"
title="&status4evar.status.widget.title;"
removable="true" flex="1" persist="width" width="100">
<label id="status4evar-status-text" flex="1" crop="end" value="&status4evar.status.widget.title;" />
</toolbaritem>
<toolbarpalette id="BrowserToolbarPalette">
<toolbaritem id="status4evar-status-widget"
title="&status4evar.status.widget.title;"
removable="true" flex="1" persist="width" width="100">
<label id="status4evar-status-text" flex="1" crop="end" value="&status4evar.status.widget.title;" />
</toolbaritem>
<toolbarbutton id="status4evar-download-button"
title="&status4evar.download.widget.title;"
class="toolbarbutton-1 chromeclass-toolbar-additional"
removable="true" collapsed="true" tooltip="_child"
oncommand="caligon.status4evar.downloadStatus.openUI(event)">
<stack id="status4evar-download-anchor" class="toolbarbutton-icon">
<vbox id="status4evar-download-icon" />
<vbox pack="end">
<progressmeter id="status4evar-download-progress-bar" mode="normal" value="0" collapsed="true" min="0" max="100" />
</vbox>
</stack>
<tooltip id="status4evar-download-tooltip" />
<label id="status4evar-download-label" value="&status4evar.download.widget.title;" class="toolbarbutton-text" crop="right" flex="1" />
</toolbarbutton>
<toolbarbutton id="status4evar-download-button"
title="&status4evar.download.widget.title;"
class="toolbarbutton-1 chromeclass-toolbar-additional"
removable="true" collapsed="true" tooltip="_child"
oncommand="caligon.status4evar.downloadStatus.openUI(event)">
<stack id="status4evar-download-anchor" class="toolbarbutton-icon">
<vbox id="status4evar-download-icon" />
<vbox pack="end">
<progressmeter id="status4evar-download-progress-bar" mode="normal" value="0" collapsed="true" min="0" max="100" />
</vbox>
</stack>
<tooltip id="status4evar-download-tooltip" />
<label id="status4evar-download-label" value="&status4evar.download.widget.title;" class="toolbarbutton-text" crop="right" flex="1" />
</toolbarbutton>
<toolbaritem id="status4evar-progress-widget"
title="&status4evar.progress.widget.title;"
removable="true">
<progressmeter id="status4evar-progress-bar" class="progressmeter-statusbar"
mode="normal" value="0" collapsed="true" min="0" max="100" />
</toolbaritem>
<toolbaritem id="status4evar-progress-widget"
title="&status4evar.progress.widget.title;"
removable="true">
<progressmeter id="status4evar-progress-bar" class="progressmeter-statusbar"
mode="normal" value="0" collapsed="true" min="0" max="100" />
</toolbaritem>
<toolbarbutton id="status4evar-options-button"
title="&status4evar.options.widget.title;"
class="toolbarbutton-1 chromeclass-toolbar-additional"
label="&status4evar.options.widget.label;"
removable="true" command="S4E:Options" tooltiptext="&status4evar.options.widget.title;" />
</toolbarpalette>
<toolbarbutton id="status4evar-options-button"
title="&status4evar.options.widget.title;"
class="toolbarbutton-1 chromeclass-toolbar-additional"
label="&status4evar.options.widget.label;"
removable="true" command="S4E:Options" tooltiptext="&status4evar.options.widget.title;" />
</toolbarpalette>
<statusbar id="status-bar" ordinal="1" />
</overlay>

View file

@ -4,8 +4,7 @@
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
.css-bg-editor
{
-moz-binding: url("chrome://browser/content/statusbar/prefs.xml#css-bg-editor");
.css-bg-editor {
-moz-binding: url("chrome://browser/content/statusbar/prefs.xml#css-bg-editor");
}

View file

@ -6,267 +6,267 @@ Components.utils.import("resource://gre/modules/Services.jsm");
var status4evarPrefs =
{
get dynamicProgressStyle()
{
let styleSheets = window.document.styleSheets;
for(let i = 0; i < styleSheets.length; i++)
{
let styleSheet = styleSheets[i];
if(styleSheet.href == "chrome://browser/skin/statusbar/dynamic.css")
{
delete this.dynamicProgressStyle;
return this.dynamicProgressStyle = styleSheet;
}
}
get dynamicProgressStyle()
{
let styleSheets = window.document.styleSheets;
for(let i = 0; i < styleSheets.length; i++)
{
let styleSheet = styleSheets[i];
if(styleSheet.href == "chrome://browser/skin/statusbar/dynamic.css")
{
delete this.dynamicProgressStyle;
return this.dynamicProgressStyle = styleSheet;
}
}
return null;
},
return null;
},
//
// Status timeout management
//
get statusTimeoutPref()
{
delete this.statusTimeoutPref;
return this.statusTimeoutPref = document.getElementById("status4evar-pref-status-timeout");
},
get statusTimeoutPref()
{
delete this.statusTimeoutPref;
return this.statusTimeoutPref = document.getElementById("status4evar-pref-status-timeout");
},
get statusTimeoutCheckbox()
{
delete this.statusTimeoutCheckbox;
return this.statusTimeoutCheckbox = document.getElementById("status4evar-status-timeout-check");
},
get statusTimeoutCheckbox()
{
delete this.statusTimeoutCheckbox;
return this.statusTimeoutCheckbox = document.getElementById("status4evar-status-timeout-check");
},
statusTimeoutChanged: function()
{
if(this.statusTimeoutPref.value > 0)
{
this.statusTimeoutPref.disabled = false;
this.statusTimeoutCheckbox.checked = true;
}
else
{
this.statusTimeoutPref.disabled = true;
this.statusTimeoutCheckbox.checked = false;
}
},
statusTimeoutChanged: function()
{
if(this.statusTimeoutPref.value > 0)
{
this.statusTimeoutPref.disabled = false;
this.statusTimeoutCheckbox.checked = true;
}
else
{
this.statusTimeoutPref.disabled = true;
this.statusTimeoutCheckbox.checked = false;
}
},
statusTimeoutSync: function()
{
this.statusTimeoutChanged();
return undefined;
},
statusTimeoutSync: function()
{
this.statusTimeoutChanged();
return undefined;
},
statusTimeoutToggle: function()
{
if(this.statusTimeoutPref.disabled == this.statusTimeoutCheckbox.checked)
{
if(this.statusTimeoutCheckbox.checked)
{
this.statusTimeoutPref.value = 10;
}
else
{
this.statusTimeoutPref.value = 0;
}
}
},
statusTimeoutToggle: function()
{
if(this.statusTimeoutPref.disabled == this.statusTimeoutCheckbox.checked)
{
if(this.statusTimeoutCheckbox.checked)
{
this.statusTimeoutPref.value = 10;
}
else
{
this.statusTimeoutPref.value = 0;
}
}
},
//
// Status network management
//
get statusNetworkPref()
{
delete this.statusNetworkPref;
return this.statusNetworkPref = document.getElementById("status4evar-pref-status-network");
},
get statusNetworkPref()
{
delete this.statusNetworkPref;
return this.statusNetworkPref = document.getElementById("status4evar-pref-status-network");
},
get statusNetworkXHRPref()
{
delete this.statusNetworkXHRPref;
return this.statusNetworkXHRPref = document.getElementById("status4evar-pref-status-network-xhr");
},
get statusNetworkXHRPref()
{
delete this.statusNetworkXHRPref;
return this.statusNetworkXHRPref = document.getElementById("status4evar-pref-status-network-xhr");
},
statusNetworkChanged: function()
{
this.statusNetworkXHRPref.disabled = ! this.statusNetworkPref.value;
},
statusNetworkChanged: function()
{
this.statusNetworkXHRPref.disabled = ! this.statusNetworkPref.value;
},
statusNetworkSync: function()
{
this.statusNetworkChanged();
return undefined;
},
statusNetworkSync: function()
{
this.statusNetworkChanged();
return undefined;
},
//
// Status Text langth managment
//
get textMaxLengthPref()
{
delete this.textMaxLengthPref;
return this.textMaxLengthPref = document.getElementById("status4evar-pref-status-toolbar-maxLength");
},
get textMaxLengthPref()
{
delete this.textMaxLengthPref;
return this.textMaxLengthPref = document.getElementById("status4evar-pref-status-toolbar-maxLength");
},
get textMaxLengthCheckbox()
{
delete this.textMaxLengthCheckbox;
return this.textMaxLengthCheckbox = document.getElementById("status4evar-status-toolbar-maxLength-check");
},
get textMaxLengthCheckbox()
{
delete this.textMaxLengthCheckbox;
return this.textMaxLengthCheckbox = document.getElementById("status4evar-status-toolbar-maxLength-check");
},
textLengthChanged: function()
{
if(this.textMaxLengthPref.value > 0)
{
this.textMaxLengthPref.disabled = false;
this.textMaxLengthCheckbox.checked = true;
}
else
{
this.textMaxLengthPref.disabled = true;
this.textMaxLengthCheckbox.checked = false;
}
},
textLengthChanged: function()
{
if(this.textMaxLengthPref.value > 0)
{
this.textMaxLengthPref.disabled = false;
this.textMaxLengthCheckbox.checked = true;
}
else
{
this.textMaxLengthPref.disabled = true;
this.textMaxLengthCheckbox.checked = false;
}
},
textLengthSync: function()
{
this.textLengthChanged();
return undefined;
},
textLengthSync: function()
{
this.textLengthChanged();
return undefined;
},
textLengthToggle: function()
{
if(this.textMaxLengthPref.disabled == this.textMaxLengthCheckbox.checked)
{
if(this.textMaxLengthCheckbox.checked)
{
this.textMaxLengthPref.value = 800;
}
else
{
this.textMaxLengthPref.value = 0;
}
}
},
textLengthToggle: function()
{
if(this.textMaxLengthPref.disabled == this.textMaxLengthCheckbox.checked)
{
if(this.textMaxLengthCheckbox.checked)
{
this.textMaxLengthPref.value = 800;
}
else
{
this.textMaxLengthPref.value = 0;
}
}
},
//
// Toolbar progress style management
//
get progressToolbarStylePref()
{
delete this.progressToolbarStylePref;
return this.progressToolbarStylePref = document.getElementById("status4evar-pref-progress-toolbar-style");
},
get progressToolbarStylePref()
{
delete this.progressToolbarStylePref;
return this.progressToolbarStylePref = document.getElementById("status4evar-pref-progress-toolbar-style");
},
get progressToolbarCSSPref()
{
delete this.progressToolbarCSSPref;
return this.progressToolbarCSSPref = document.getElementById("status4evar-pref-progress-toolbar-css");
},
get progressToolbarCSSPref()
{
delete this.progressToolbarCSSPref;
return this.progressToolbarCSSPref = document.getElementById("status4evar-pref-progress-toolbar-css");
},
get progressToolbarProgress()
{
delete this.progressToolbarProgress;
return this.progressToolbarProgress = document.getElementById("status4evar-progress-bar");
},
get progressToolbarProgress()
{
delete this.progressToolbarProgress;
return this.progressToolbarProgress = document.getElementById("status4evar-progress-bar");
},
progressToolbarCSSChanged: function()
{
if(!this.progressToolbarCSSPref.value)
{
this.progressToolbarCSSPref.value = "#33FF33";
}
this.dynamicProgressStyle.cssRules[1].style.background = this.progressToolbarCSSPref.value;
},
progressToolbarCSSChanged: function()
{
if(!this.progressToolbarCSSPref.value)
{
this.progressToolbarCSSPref.value = "#33FF33";
}
this.dynamicProgressStyle.cssRules[1].style.background = this.progressToolbarCSSPref.value;
},
progressToolbarStyleChanged: function()
{
this.progressToolbarCSSChanged();
this.progressToolbarCSSPref.disabled = !this.progressToolbarStylePref.value;
if(this.progressToolbarStylePref.value)
{
this.progressToolbarProgress.setAttribute("s4estyle", true);
}
else
{
this.progressToolbarProgress.removeAttribute("s4estyle");
}
},
progressToolbarStyleChanged: function()
{
this.progressToolbarCSSChanged();
this.progressToolbarCSSPref.disabled = !this.progressToolbarStylePref.value;
if(this.progressToolbarStylePref.value)
{
this.progressToolbarProgress.setAttribute("s4estyle", true);
}
else
{
this.progressToolbarProgress.removeAttribute("s4estyle");
}
},
progressToolbarStyleSync: function()
{
this.progressToolbarStyleChanged();
return undefined;
},
progressToolbarStyleSync: function()
{
this.progressToolbarStyleChanged();
return undefined;
},
//
// Download progress management
//
get downloadProgressCheck()
{
delete this.downloadProgressCheck;
return this.downloadProgressCheck = document.getElementById("status4evar-download-progress-check");
},
get downloadProgressCheck()
{
delete this.downloadProgressCheck;
return this.downloadProgressCheck = document.getElementById("status4evar-download-progress-check");
},
get downloadProgressPref()
{
delete this.downloadProgressPref;
return this.downloadProgressPref = document.getElementById("status4evar-pref-download-progress");
},
get downloadProgressPref()
{
delete this.downloadProgressPref;
return this.downloadProgressPref = document.getElementById("status4evar-pref-download-progress");
},
get downloadProgressColorActivePref()
{
delete this.downloadProgressActiveColorPref;
return this.downloadProgressActiveColorPref = document.getElementById("status4evar-pref-download-color-active");
},
get downloadProgressColorActivePref()
{
delete this.downloadProgressActiveColorPref;
return this.downloadProgressActiveColorPref = document.getElementById("status4evar-pref-download-color-active");
},
get downloadProgressColorPausedPref()
{
delete this.downloadProgressPausedColorPref;
return this.downloadProgressPausedColorPref = document.getElementById("status4evar-pref-download-color-paused");
},
get downloadProgressColorPausedPref()
{
delete this.downloadProgressPausedColorPref;
return this.downloadProgressPausedColorPref = document.getElementById("status4evar-pref-download-color-paused");
},
downloadProgressSync: function()
{
let val = this.downloadProgressPref.value;
this.downloadProgressColorActivePref.disabled = (val == 0);
this.downloadProgressColorPausedPref.disabled = (val == 0);
this.downloadProgressPref.disabled = (val == 0);
this.downloadProgressCheck.checked = (val != 0);
return ((val == 0) ? 1 : val);
},
downloadProgressSync: function()
{
let val = this.downloadProgressPref.value;
this.downloadProgressColorActivePref.disabled = (val == 0);
this.downloadProgressColorPausedPref.disabled = (val == 0);
this.downloadProgressPref.disabled = (val == 0);
this.downloadProgressCheck.checked = (val != 0);
return ((val == 0) ? 1 : val);
},
downloadProgressToggle: function()
{
let enabled = this.downloadProgressCheck.checked;
this.downloadProgressPref.value = ((enabled) ? 1 : 0);
},
downloadProgressToggle: function()
{
let enabled = this.downloadProgressCheck.checked;
this.downloadProgressPref.value = ((enabled) ? 1 : 0);
},
//
// Pref Window load
//
get downloadButtonActionCommandPref()
{
delete this.downloadButtonActionCommandPref;
return this.downloadButtonActionCommandPref = document.getElementById("status4evar-pref-download-button-action-command");
},
get downloadButtonActionCommandPref()
{
delete this.downloadButtonActionCommandPref;
return this.downloadButtonActionCommandPref = document.getElementById("status4evar-pref-download-button-action-command");
},
get downloadButtonActionThirdPartyItem()
{
delete this.downloadButtonActionThirdPartyItem;
return this.downloadButtonActionThirdPartyItem = document.getElementById("status4evar-download-button-action-menu-thirdparty");
},
get downloadButtonActionThirdPartyItem()
{
delete this.downloadButtonActionThirdPartyItem;
return this.downloadButtonActionThirdPartyItem = document.getElementById("status4evar-download-button-action-menu-thirdparty");
},
onPrefWindowLoad: function()
{
if(!this.downloadButtonActionCommandPref.value)
{
this.downloadButtonActionThirdPartyItem.disabled = true;
}
},
onPrefWindowLoad: function()
{
if(!this.downloadButtonActionCommandPref.value)
{
this.downloadButtonActionThirdPartyItem.disabled = true;
}
},
onPrefWindowUnLoad: function()
{
}
onPrefWindowUnLoad: function()
{
}
}
var XULBrowserWindow = {

File diff suppressed because it is too large Load diff

View file

@ -5,8 +5,8 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<!DOCTYPE prefwindow [
<!ENTITY % prefsDTD SYSTEM "chrome://browser/locale/statusbar/statusbar-prefs.dtd">
%prefsDTD;
<!ENTITY % prefsDTD SYSTEM "chrome://browser/locale/statusbar/statusbar-prefs.dtd">
%prefsDTD;
]>
<?xml-stylesheet href="chrome://global/skin/config.css" type="text/css" ?>
@ -23,275 +23,275 @@
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="status4evarPrefs.onPrefWindowLoad();" onunload="status4evarPrefs.onPrefWindowUnLoad();">
<stringbundleset id="stringbundleset">
<stringbundle id="bundle_status4evar" src="chrome://browser/locale/statusbar/prefs.properties" />
</stringbundleset>
<script type="application/javascript" src="chrome://browser/content/statusbar/prefs.js" />
<stringbundleset id="stringbundleset">
<stringbundle id="bundle_status4evar" src="chrome://browser/locale/statusbar/prefs.properties" />
</stringbundleset>
<script type="application/javascript" src="chrome://browser/content/statusbar/prefs.js" />
<prefpane id="status4evar-pane-status" label="&status4evar.pane.status;">
<preferences>
<preference id="status4evar-pref-status" name="status4evar.status" type="int" />
<preference id="status4evar-pref-status-default" name="status4evar.status.default" type="bool" />
<preference id="status4evar-pref-status-network" name="status4evar.status.network" type="bool"
onchange="status4evarPrefs.statusNetworkChanged();" />
<preference id="status4evar-pref-status-network-xhr" name="status4evar.status.network.xhr" type="bool" />
<preference id="status4evar-pref-status-timeout" name="status4evar.status.timeout" type="int"
onchange="status4evarPrefs.statusTimeoutChanged();" />
<preference id="status4evar-pref-status-linkOver" name="status4evar.status.linkOver" type="int" />
<preference id="status4evar-pref-status-linkOver-delay-show" name="status4evar.status.linkOver.delay.show" type="int" />
<preference id="status4evar-pref-status-linkOver-delay-hide" name="status4evar.status.linkOver.delay.hide" type="int" />
<preference id="status4evar-pref-status-toolbar-maxLength" name="status4evar.status.toolbar.maxLength" type="int"
onchange="status4evarPrefs.textLengthChanged();" />
<preference id="status4evar-pref-status-popup-invertMirror" name="status4evar.status.popup.invertMirror" type="bool" />
<preference id="status4evar-pref-status-popup-mouseMirror" name="status4evar.status.popup.mouseMirror" type="bool" />
<preference id="toolkit-pref-dom-status-change" name="dom.disable_window_status_change" type="bool" inverted="true" />
</preferences>
<prefpane id="status4evar-pane-status" label="&status4evar.pane.status;">
<preferences>
<preference id="status4evar-pref-status" name="status4evar.status" type="int" />
<preference id="status4evar-pref-status-default" name="status4evar.status.default" type="bool" />
<preference id="status4evar-pref-status-network" name="status4evar.status.network" type="bool"
onchange="status4evarPrefs.statusNetworkChanged();" />
<preference id="status4evar-pref-status-network-xhr" name="status4evar.status.network.xhr" type="bool" />
<preference id="status4evar-pref-status-timeout" name="status4evar.status.timeout" type="int"
onchange="status4evarPrefs.statusTimeoutChanged();" />
<preference id="status4evar-pref-status-linkOver" name="status4evar.status.linkOver" type="int" />
<preference id="status4evar-pref-status-linkOver-delay-show" name="status4evar.status.linkOver.delay.show" type="int" />
<preference id="status4evar-pref-status-linkOver-delay-hide" name="status4evar.status.linkOver.delay.hide" type="int" />
<preference id="status4evar-pref-status-toolbar-maxLength" name="status4evar.status.toolbar.maxLength" type="int"
onchange="status4evarPrefs.textLengthChanged();" />
<preference id="status4evar-pref-status-popup-invertMirror" name="status4evar.status.popup.invertMirror" type="bool" />
<preference id="status4evar-pref-status-popup-mouseMirror" name="status4evar.status.popup.mouseMirror" type="bool" />
<preference id="toolkit-pref-dom-status-change" name="dom.disable_window_status_change" type="bool" inverted="true" />
</preferences>
<commandset id="status4evar-commandset-status">
<command id="status4evar-command-status-timeout" oncommand="status4evarPrefs.statusTimeoutToggle();" />
<command id="status4evar-command-status-toolbar-maxLength" oncommand="status4evarPrefs.textLengthToggle();" />
</commandset>
<commandset id="status4evar-commandset-status">
<command id="status4evar-command-status-timeout" oncommand="status4evarPrefs.statusTimeoutToggle();" />
<command id="status4evar-command-status-toolbar-maxLength" oncommand="status4evarPrefs.textLengthToggle();" />
</commandset>
<tabbox id="status4evar-tabbox-status" flex="1">
<tabs id="status4evar-tabs-status">
<tab id="status4evar-tab-status-general" label="&status4evar.tab.general;" />
<tab id="status4evar-tab-status-toolbar" label="&status4evar.tab.toolbar;" />
<tab id="status4evar-tab-status-popup" label="&status4evar.tab.popup;" />
</tabs>
<tabbox id="status4evar-tabbox-status" flex="1">
<tabs id="status4evar-tabs-status">
<tab id="status4evar-tab-status-general" label="&status4evar.tab.general;" />
<tab id="status4evar-tab-status-toolbar" label="&status4evar.tab.toolbar;" />
<tab id="status4evar-tab-status-popup" label="&status4evar.tab.popup;" />
</tabs>
<tabpanels id="status4evar-tabpanels-status" flex="1">
<tabpanel id="status4evar-tabpanel-status-general" orient="vertical">
<groupbox id="status4evar-status-general-status">
<caption label="&status4evar.status.general.status.caption;" />
<tabpanels id="status4evar-tabpanels-status" flex="1">
<tabpanel id="status4evar-tabpanel-status-general" orient="vertical">
<groupbox id="status4evar-status-general-status">
<caption label="&status4evar.status.general.status.caption;" />
<hbox align="center">
<label id="status4evar-status-label" control="status4evar-status-menu">&status4evar.status.label;</label>
<menulist id="status4evar-status-menu" preference="status4evar-pref-status" sizetopopup="always">
<menupopup>
<menuitem label="&status4evar.option.none;" value="0" />
<menuitem label="&status4evar.option.toolbar;" value="1" />
<menuitem label="&status4evar.option.popup;" value="3" />
</menupopup>
</menulist>
</hbox>
<hbox align="center">
<label id="status4evar-status-label" control="status4evar-status-menu">&status4evar.status.label;</label>
<menulist id="status4evar-status-menu" preference="status4evar-pref-status" sizetopopup="always">
<menupopup>
<menuitem label="&status4evar.option.none;" value="0" />
<menuitem label="&status4evar.option.toolbar;" value="1" />
<menuitem label="&status4evar.option.popup;" value="3" />
</menupopup>
</menulist>
</hbox>
<hbox align="center">
<checkbox id="status4evar-status-timeout-check" label="&status4evar.status.timeout.label;"
command="status4evar-command-status-timeout" />
<textbox id="status4evar-status-timeout-value" preference="status4evar-pref-status-timeout" type="number" size="4"
onsyncfrompreference="return status4evarPrefs.statusTimeoutSync();" />
<label id="status4evar-status-timeout-unit">&status4evar.unit.seconds;</label>
</hbox>
<hbox align="center">
<checkbox id="status4evar-status-timeout-check" label="&status4evar.status.timeout.label;"
command="status4evar-command-status-timeout" />
<textbox id="status4evar-status-timeout-value" preference="status4evar-pref-status-timeout" type="number" size="4"
onsyncfrompreference="return status4evarPrefs.statusTimeoutSync();" />
<label id="status4evar-status-timeout-unit">&status4evar.unit.seconds;</label>
</hbox>
<checkbox id="status4evar-status-default-check" preference="status4evar-pref-status-default" label="&status4evar.status.default.label;" />
<checkbox id="status4evar-status-default-check" preference="status4evar-pref-status-default" label="&status4evar.status.default.label;" />
<checkbox id="status4evar-status-network-check" preference="status4evar-pref-status-network" label="&status4evar.status.network.label;"
onsyncfrompreference="return status4evarPrefs.statusNetworkSync();" />
<checkbox id="status4evar-status-network-check" preference="status4evar-pref-status-network" label="&status4evar.status.network.label;"
onsyncfrompreference="return status4evarPrefs.statusNetworkSync();" />
<hbox align="center" class="indent">
<checkbox id="status4evar-status-network-xhr-check" preference="status4evar-pref-status-network-xhr" label="&status4evar.status.network.xhr.label;" />
</hbox>
<hbox align="center" class="indent">
<checkbox id="status4evar-status-network-xhr-check" preference="status4evar-pref-status-network-xhr" label="&status4evar.status.network.xhr.label;" />
</hbox>
<checkbox id="toolkit-dom-status-change-check" preference="toolkit-pref-dom-status-change" label="&toolkit.dom.status.change.label;" />
</groupbox>
<checkbox id="toolkit-dom-status-change-check" preference="toolkit-pref-dom-status-change" label="&toolkit.dom.status.change.label;" />
</groupbox>
<groupbox id="status4evar-status-general-linkOver">
<caption label="&status4evar.status.general.linkOver.caption;" />
<groupbox id="status4evar-status-general-linkOver">
<caption label="&status4evar.status.general.linkOver.caption;" />
<hbox align="center">
<label id="status4evar-status-linkOver-label" control="status4evar-status-linkOver-menu">&status4evar.status.linkOver.label;</label>
<menulist id="status4evar-status-linkOver-menu" preference="status4evar-pref-status-linkOver" sizetopopup="always">
<menupopup>
<menuitem label="&status4evar.option.none;" value="0" />
<menuitem label="&status4evar.option.toolbar;" value="1" />
<menuitem label="&status4evar.option.popup;" value="3" />
</menupopup>
</menulist>
</hbox>
<hbox align="center">
<label id="status4evar-status-linkOver-label" control="status4evar-status-linkOver-menu">&status4evar.status.linkOver.label;</label>
<menulist id="status4evar-status-linkOver-menu" preference="status4evar-pref-status-linkOver" sizetopopup="always">
<menupopup>
<menuitem label="&status4evar.option.none;" value="0" />
<menuitem label="&status4evar.option.toolbar;" value="1" />
<menuitem label="&status4evar.option.popup;" value="3" />
</menupopup>
</menulist>
</hbox>
<hbox align="center">
<label id="status4evar-status-linkOver-delay-show-label" control="status4evar-status-linkOver-delay-show-value">&status4evar.status.linkOver.delay.show.label;</label>
<textbox id="status4evar-status-linkOver-delay-show-value" preference="status4evar-pref-status-linkOver-delay-show" type="number" size="5" />
<label id="status4evar-status-linkOver-delay-show-unit">&status4evar.unit.milliseconds;</label>
</hbox>
<hbox align="center">
<label id="status4evar-status-linkOver-delay-show-label" control="status4evar-status-linkOver-delay-show-value">&status4evar.status.linkOver.delay.show.label;</label>
<textbox id="status4evar-status-linkOver-delay-show-value" preference="status4evar-pref-status-linkOver-delay-show" type="number" size="5" />
<label id="status4evar-status-linkOver-delay-show-unit">&status4evar.unit.milliseconds;</label>
</hbox>
<hbox align="center">
<label id="status4evar-status-linkOver-delay-hide-label" control="status4evar-status-linkOver-delay-hide-value">&status4evar.status.linkOver.delay.hide.label;</label>
<textbox id="status4evar-status-linkOver-delay-hide-value" preference="status4evar-pref-status-linkOver-delay-hide" type="number" size="5" />
<label id="status4evar-status-linkOver-delay-hide-unit">&status4evar.unit.milliseconds;</label>
</hbox>
</groupbox>
<hbox align="center">
<label id="status4evar-status-linkOver-delay-hide-label" control="status4evar-status-linkOver-delay-hide-value">&status4evar.status.linkOver.delay.hide.label;</label>
<textbox id="status4evar-status-linkOver-delay-hide-value" preference="status4evar-pref-status-linkOver-delay-hide" type="number" size="5" />
<label id="status4evar-status-linkOver-delay-hide-unit">&status4evar.unit.milliseconds;</label>
</hbox>
</groupbox>
</tabpanel>
</tabpanel>
<tabpanel id="status4evar-tabpanel-status-toolbar" orient="vertical">
<hbox align="center">
<checkbox id="status4evar-status-toolbar-maxLength-check" label="&status4evar.status.toolbar.maxLength.label;"
command="status4evar-command-status-toolbar-maxLength" />
<textbox id="status4evar-status-toolbar-maxLength-value" preference="status4evar-pref-status-toolbar-maxLength" type="number" size="4"
onsyncfrompreference="return status4evarPrefs.textLengthSync();" />
<label id="status4evar-status-toolbar-maxLength-unit">&status4evar.unit.px;</label>
</hbox>
</tabpanel>
<tabpanel id="status4evar-tabpanel-status-toolbar" orient="vertical">
<hbox align="center">
<checkbox id="status4evar-status-toolbar-maxLength-check" label="&status4evar.status.toolbar.maxLength.label;"
command="status4evar-command-status-toolbar-maxLength" />
<textbox id="status4evar-status-toolbar-maxLength-value" preference="status4evar-pref-status-toolbar-maxLength" type="number" size="4"
onsyncfrompreference="return status4evarPrefs.textLengthSync();" />
<label id="status4evar-status-toolbar-maxLength-unit">&status4evar.unit.px;</label>
</hbox>
</tabpanel>
<tabpanel id="status4evar-tabpanel-status-popup" orient="vertical">
<checkbox id="status4evar-status-popup-invertMirror-check" preference="status4evar-pref-status-popup-invertMirror" label="&status4evar.status.popup.invertMirror.label;" />
<tabpanel id="status4evar-tabpanel-status-popup" orient="vertical">
<checkbox id="status4evar-status-popup-invertMirror-check" preference="status4evar-pref-status-popup-invertMirror" label="&status4evar.status.popup.invertMirror.label;" />
<checkbox id="status4evar-status-popup-mouseMirror-check" preference="status4evar-pref-status-popup-mouseMirror" label="&status4evar.status.popup.mouseMirror.label;" />
</tabpanel>
<checkbox id="status4evar-status-popup-mouseMirror-check" preference="status4evar-pref-status-popup-mouseMirror" label="&status4evar.status.popup.mouseMirror.label;" />
</tabpanel>
</tabpanels>
</tabbox>
</prefpane>
</tabpanels>
</tabbox>
</prefpane>
<prefpane id="status4evar-pane-progress" label="&status4evar.pane.progress;">
<preferences>
<preference id="status4evar-pref-progress-toolbar-force" name="status4evar.progress.toolbar.force" type="bool" />
<preference id="status4evar-pref-progress-toolbar-style" name="status4evar.progress.toolbar.style" type="bool"
onchange="status4evarPrefs.progressToolbarStyleChanged();" />
<preference id="status4evar-pref-progress-toolbar-css" name="status4evar.progress.toolbar.css" type="string"
onchange="status4evarPrefs.progressToolbarCSSChanged();" />
</preferences>
<prefpane id="status4evar-pane-progress" label="&status4evar.pane.progress;">
<preferences>
<preference id="status4evar-pref-progress-toolbar-force" name="status4evar.progress.toolbar.force" type="bool" />
<preference id="status4evar-pref-progress-toolbar-style" name="status4evar.progress.toolbar.style" type="bool"
onchange="status4evarPrefs.progressToolbarStyleChanged();" />
<preference id="status4evar-pref-progress-toolbar-css" name="status4evar.progress.toolbar.css" type="string"
onchange="status4evarPrefs.progressToolbarCSSChanged();" />
</preferences>
<commandset id="status4evar-commandset-status">
</commandset>
<commandset id="status4evar-commandset-status">
</commandset>
<checkbox id="status4evar-progress-toolbar-force-check" preference="status4evar-pref-progress-toolbar-force" label="&status4evar.progress.toolbar.force.label;" />
<checkbox id="status4evar-progress-toolbar-force-check" preference="status4evar-pref-progress-toolbar-force" label="&status4evar.progress.toolbar.force.label;" />
<checkbox id="status4evar-progress-toolbar-style-check" preference="status4evar-pref-progress-toolbar-style" label="&status4evar.progress.style.label;"
onsyncfrompreference="return status4evarPrefs.progressToolbarStyleSync();" />
<checkbox id="status4evar-progress-toolbar-style-check" preference="status4evar-pref-progress-toolbar-style" label="&status4evar.progress.style.label;"
onsyncfrompreference="return status4evarPrefs.progressToolbarStyleSync();" />
<vbox class="css-bg-editor" preference="status4evar-pref-progress-toolbar-css" preference-editable="true" flex="1">
<progressmeter id="status4evar-progress-bar" value="75" flex="1" />
</vbox>
</prefpane>
<vbox class="css-bg-editor" preference="status4evar-pref-progress-toolbar-css" preference-editable="true" flex="1">
<progressmeter id="status4evar-progress-bar" value="75" flex="1" />
</vbox>
</prefpane>
<prefpane id="status4evar-pane-download" label="&status4evar.pane.download;">
<preferences>
<preference id="status4evar-pref-download-button-action" name="status4evar.download.button.action" type="int" />
<preference id="status4evar-pref-download-color-active" name="status4evar.download.color.active" type="string" />
<preference id="status4evar-pref-download-color-paused" name="status4evar.download.color.paused" type="string" />
<preference id="status4evar-pref-download-force" name="status4evar.download.force" type="bool" />
<preference id="status4evar-pref-download-label" name="status4evar.download.label" type="int" />
<preference id="status4evar-pref-download-label-force" name="status4evar.download.label.force" type="bool" />
<preference id="status4evar-pref-download-notify-animate" name="status4evar.download.notify.animate" type="bool" />
<preference id="status4evar-pref-download-notify-timeout" name="status4evar.download.notify.timeout" type="int" />
<preference id="status4evar-pref-download-progress" name="status4evar.download.progress" type="int" />
<preference id="status4evar-pref-download-tooltip" name="status4evar.download.tooltip" type="int" />
<prefpane id="status4evar-pane-download" label="&status4evar.pane.download;">
<preferences>
<preference id="status4evar-pref-download-button-action" name="status4evar.download.button.action" type="int" />
<preference id="status4evar-pref-download-color-active" name="status4evar.download.color.active" type="string" />
<preference id="status4evar-pref-download-color-paused" name="status4evar.download.color.paused" type="string" />
<preference id="status4evar-pref-download-force" name="status4evar.download.force" type="bool" />
<preference id="status4evar-pref-download-label" name="status4evar.download.label" type="int" />
<preference id="status4evar-pref-download-label-force" name="status4evar.download.label.force" type="bool" />
<preference id="status4evar-pref-download-notify-animate" name="status4evar.download.notify.animate" type="bool" />
<preference id="status4evar-pref-download-notify-timeout" name="status4evar.download.notify.timeout" type="int" />
<preference id="status4evar-pref-download-progress" name="status4evar.download.progress" type="int" />
<preference id="status4evar-pref-download-tooltip" name="status4evar.download.tooltip" type="int" />
<preference id="status4evar-pref-download-button-action-command" name="status4evar.download.button.action.command" type="string"/>
</preferences>
<preference id="status4evar-pref-download-button-action-command" name="status4evar.download.button.action.command" type="string"/>
</preferences>
<commandset id="status4evar-commandset-download">
<command id="status4evar-command-download-progress" oncommand="status4evarPrefs.downloadProgressToggle();" />
</commandset>
<commandset id="status4evar-commandset-download">
<command id="status4evar-command-download-progress" oncommand="status4evarPrefs.downloadProgressToggle();" />
</commandset>
<checkbox id="status4evar-download-force-check" preference="status4evar-pref-download-force" label="&status4evar.download.force.label;" />
<checkbox id="status4evar-download-force-check" preference="status4evar-pref-download-force" label="&status4evar.download.force.label;" />
<checkbox id="status4evar-download-label-force-check" preference="status4evar-pref-download-label-force" label="&status4evar.download.label.force.label;" />
<checkbox id="status4evar-download-label-force-check" preference="status4evar-pref-download-label-force" label="&status4evar.download.label.force.label;" />
<hbox align="center">
<label id="status4evar-download-label-label" control="status4evar-download-label-menu">&status4evar.download.label.label;</label>
<menulist id="status4evar-download-label-menu" preference="status4evar-pref-download-label" sizetopopup="always">
<menupopup>
<menuitem value="0" label="&status4evar.option.dlcount;" />
<menuitem value="1" label="&status4evar.option.dltime;" />
<menuitem value="2" label="&status4evar.option.both;" />
</menupopup>
</menulist>
</hbox>
<hbox align="center">
<label id="status4evar-download-label-label" control="status4evar-download-label-menu">&status4evar.download.label.label;</label>
<menulist id="status4evar-download-label-menu" preference="status4evar-pref-download-label" sizetopopup="always">
<menupopup>
<menuitem value="0" label="&status4evar.option.dlcount;" />
<menuitem value="1" label="&status4evar.option.dltime;" />
<menuitem value="2" label="&status4evar.option.both;" />
</menupopup>
</menulist>
</hbox>
<hbox align="center">
<label id="status4evar-download-tooltip-label" control="status4evar-download-tooltip-menu">&status4evar.download.tooltip.label;</label>
<menulist id="status4evar-download-tooltip-menu" preference="status4evar-pref-download-tooltip" sizetopopup="always">
<menupopup>
<menuitem value="0" label="&status4evar.option.dlcount;" />
<menuitem value="1" label="&status4evar.option.dltime;" />
<menuitem value="2" label="&status4evar.option.both;" />
</menupopup>
</menulist>
</hbox>
<hbox align="center">
<label id="status4evar-download-tooltip-label" control="status4evar-download-tooltip-menu">&status4evar.download.tooltip.label;</label>
<menulist id="status4evar-download-tooltip-menu" preference="status4evar-pref-download-tooltip" sizetopopup="always">
<menupopup>
<menuitem value="0" label="&status4evar.option.dlcount;" />
<menuitem value="1" label="&status4evar.option.dltime;" />
<menuitem value="2" label="&status4evar.option.both;" />
</menupopup>
</menulist>
</hbox>
<hbox align="center">
<label id="status4evar-download-button-action-label" control="status4evar-download-button-action-menu">&status4evar.download.button.action.label;</label>
<menulist id="status4evar-download-button-action-menu" preference="status4evar-pref-download-button-action" sizetopopup="always">
<menupopup>
<menuitem value="0" label="&status4evar.option.nothing;" />
<menuitem value="1" label="&status4evar.option.firefoxdefault;" />
<menuitem value="2" label="&status4evar.option.download.library;" />
<menuitem value="3" label="&status4evar.option.download.tab;" />
<menuitem value="4" label="&status4evar.option.download.thirdparty;" id="status4evar-download-button-action-menu-thirdparty" />
</menupopup>
</menulist>
</hbox>
<hbox align="center">
<label id="status4evar-download-button-action-label" control="status4evar-download-button-action-menu">&status4evar.download.button.action.label;</label>
<menulist id="status4evar-download-button-action-menu" preference="status4evar-pref-download-button-action" sizetopopup="always">
<menupopup>
<menuitem value="0" label="&status4evar.option.nothing;" />
<menuitem value="1" label="&status4evar.option.firefoxdefault;" />
<menuitem value="2" label="&status4evar.option.download.library;" />
<menuitem value="3" label="&status4evar.option.download.tab;" />
<menuitem value="4" label="&status4evar.option.download.thirdparty;" id="status4evar-download-button-action-menu-thirdparty" />
</menupopup>
</menulist>
</hbox>
<hbox align="center">
<label id="status4evar-download-notify-timeout-label" control="status4evar-download-notify-timeout-value">&status4evar.download.notify.timeout.label;</label>
<textbox id="status4evar-download-notify-timeout-value" preference="status4evar-pref-download-notify-timeout" type="number" size="3" />
<label id="status4evar-download-notify-timeout-unit">&status4evar.unit.seconds;</label>
</hbox>
<hbox align="center">
<label id="status4evar-download-notify-timeout-label" control="status4evar-download-notify-timeout-value">&status4evar.download.notify.timeout.label;</label>
<textbox id="status4evar-download-notify-timeout-value" preference="status4evar-pref-download-notify-timeout" type="number" size="3" />
<label id="status4evar-download-notify-timeout-unit">&status4evar.unit.seconds;</label>
</hbox>
<checkbox id="status4evar-download-notify-animate-check" preference="status4evar-pref-download-notify-animate" label="&status4evar.download.notify.animate.label;" />
<checkbox id="status4evar-download-notify-animate-check" preference="status4evar-pref-download-notify-animate" label="&status4evar.download.notify.animate.label;" />
<checkbox id="status4evar-download-progress-check" command="status4evar-command-download-progress" label="&status4evar.download.progress.label;" />
<checkbox id="status4evar-download-progress-check" command="status4evar-command-download-progress" label="&status4evar.download.progress.label;" />
<vbox class="indent">
<hbox align="center">
<radiogroup id="status4evar-download-progress-radiogroup" preference="status4evar-pref-download-progress"
onsyncfrompreference="return status4evarPrefs.downloadProgressSync();">
<radio value="1" label="&status4evar.download.progress.average.label;" />
<radio value="2" label="&status4evar.download.progress.max.label;" />
<radio value="3" label="&status4evar.download.progress.min.label;" />
</radiogroup>
</hbox>
<vbox class="indent">
<hbox align="center">
<radiogroup id="status4evar-download-progress-radiogroup" preference="status4evar-pref-download-progress"
onsyncfrompreference="return status4evarPrefs.downloadProgressSync();">
<radio value="1" label="&status4evar.download.progress.average.label;" />
<radio value="2" label="&status4evar.download.progress.max.label;" />
<radio value="3" label="&status4evar.download.progress.min.label;" />
</radiogroup>
</hbox>
<hbox align="center">
<label id="status4evar-download-color-active-label" control="status4evar-download-color-active-picker">&status4evar.download.color.active.label;</label>
<colorpicker id="status4evar-download-color-active-picker" preference="status4evar-pref-download-color-active" type="button" />
</hbox>
<hbox align="center">
<label id="status4evar-download-color-active-label" control="status4evar-download-color-active-picker">&status4evar.download.color.active.label;</label>
<colorpicker id="status4evar-download-color-active-picker" preference="status4evar-pref-download-color-active" type="button" />
</hbox>
<hbox align="center">
<label id="status4evar-download-color-paused-label" control="status4evar-download-color-paused-picker">&status4evar.download.color.paused.label;</label>
<colorpicker id="status4evar-download-color-paused-picker" preference="status4evar-pref-download-color-paused" type="button" />
</hbox>
</vbox>
</prefpane>
<hbox align="center">
<label id="status4evar-download-color-paused-label" control="status4evar-download-color-paused-picker">&status4evar.download.color.paused.label;</label>
<colorpicker id="status4evar-download-color-paused-picker" preference="status4evar-pref-download-color-paused" type="button" />
</hbox>
</vbox>
</prefpane>
<prefpane id="status4evar-pane-addonbar" label="&status4evar.pane.statusbar;">
<preferences>
<preference id="status4evar-pref-addonbar-borderStyle" name="status4evar.addonbar.borderStyle" type="bool" />
<preference id="status4evar-pref-addonbar-closeButton" name="status4evar.addonbar.closeButton" type="bool" />
<preference id="status4evar-pref-addonbar-windowGripper" name="status4evar.addonbar.windowGripper" type="bool" />
</preferences>
<prefpane id="status4evar-pane-addonbar" label="&status4evar.pane.statusbar;">
<preferences>
<preference id="status4evar-pref-addonbar-borderStyle" name="status4evar.addonbar.borderStyle" type="bool" />
<preference id="status4evar-pref-addonbar-closeButton" name="status4evar.addonbar.closeButton" type="bool" />
<preference id="status4evar-pref-addonbar-windowGripper" name="status4evar.addonbar.windowGripper" type="bool" />
</preferences>
<checkbox id="status4evar-addonbar-borderStyle-check" preference="status4evar-pref-addonbar-borderStyle" label="&status4evar.addonbar.borderStyle;" />
<checkbox id="status4evar-addonbar-borderStyle-check" preference="status4evar-pref-addonbar-borderStyle" label="&status4evar.addonbar.borderStyle;" />
<checkbox id="status4evar-addonbar-closeButton-check" preference="status4evar-pref-addonbar-closeButton" label="&status4evar.addonbar.closeButton;" />
<checkbox id="status4evar-addonbar-closeButton-check" preference="status4evar-pref-addonbar-closeButton" label="&status4evar.addonbar.closeButton;" />
<checkbox id="status4evar-addonbar-windowGripper-check" preference="status4evar-pref-addonbar-windowGripper" label="&status4evar.addonbar.windowGripper;" />
</prefpane>
<checkbox id="status4evar-addonbar-windowGripper-check" preference="status4evar-pref-addonbar-windowGripper" label="&status4evar.addonbar.windowGripper;" />
</prefpane>
<prefpane id="status4evar-pane-advanced" label="&status4evar.pane.advanced;">
<preferences>
<preference id="status4evar-pref-advanced-status-detectFullScreen" name="status4evar.advanced.status.detectFullScreen" type="bool" />
<preference id="status4evar-pref-advanced-status-detectVideo" name="status4evar.advanced.status.detectVideo" type="bool" />
<preference id="browser-pref-urlbar-trimming-enabled" name="browser.urlbar.trimURLs" type="bool" />
</preferences>
<prefpane id="status4evar-pane-advanced" label="&status4evar.pane.advanced;">
<preferences>
<preference id="status4evar-pref-advanced-status-detectFullScreen" name="status4evar.advanced.status.detectFullScreen" type="bool" />
<preference id="status4evar-pref-advanced-status-detectVideo" name="status4evar.advanced.status.detectVideo" type="bool" />
<preference id="browser-pref-urlbar-trimming-enabled" name="browser.urlbar.trimURLs" type="bool" />
</preferences>
<vbox flex="1">
<groupbox id="status4evar-status-urlbar-builtin">
<caption label="&status4evar.status.urlbar.firefox.builtin.caption;" />
<vbox flex="1">
<groupbox id="status4evar-status-urlbar-builtin">
<caption label="&status4evar.status.urlbar.firefox.builtin.caption;" />
<checkbox id="browser-urlbar-trimming-enabled-ckeck" preference="browser-pref-urlbar-trimming-enabled" label="&browser.urlbar.trimming.enabled.label;" />
</groupbox>
<checkbox id="browser-urlbar-trimming-enabled-ckeck" preference="browser-pref-urlbar-trimming-enabled" label="&browser.urlbar.trimming.enabled.label;" />
</groupbox>
<groupbox id="status4evar-advanced-status">
<caption label="&status4evar.pane.status;" />
<groupbox id="status4evar-advanced-status">
<caption label="&status4evar.pane.status;" />
<checkbox id="status4evar-advanced-status-detectFullScreen-check" preference="status4evar-pref-advanced-status-detectFullScreen" label="&status4evar.advanced.status.detectFullScreen;" />
<checkbox id="status4evar-advanced-status-detectVideo-check" preference="status4evar-pref-advanced-status-detectVideo" label="&status4evar.advanced.status.detectVideo;" />
</groupbox>
</vbox>
</prefpane>
<checkbox id="status4evar-advanced-status-detectFullScreen-check" preference="status4evar-pref-advanced-status-detectFullScreen" label="&status4evar.advanced.status.detectFullScreen;" />
<checkbox id="status4evar-advanced-status-detectVideo-check" preference="status4evar-pref-advanced-status-detectVideo" label="&status4evar.advanced.status.detectVideo;" />
</groupbox>
</vbox>
</prefpane>
</prefwindow>

View file

@ -9,210 +9,210 @@
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:xbl="http://www.mozilla.org/xbl">
<binding id="statuspanel" display="xul:hbox" extends="chrome://browser/content/tabbrowser.xml#statuspanel">
<implementation>
<!-- -->
<!-- Inverted mirror handling -->
<!-- -->
<binding id="statuspanel" display="xul:hbox" extends="chrome://browser/content/tabbrowser.xml#statuspanel">
<implementation>
<!-- -->
<!-- Inverted mirror handling -->
<!-- -->
<field name="_invertMirror"><![CDATA[
false
]]></field>
<field name="_invertMirror"><![CDATA[
false
]]></field>
<property name="invertMirror">
<setter><![CDATA[
this._invertMirror = val;
this.mirror = this._isMirrored;
return val;
]]></setter>
<getter><![CDATA[
return this._invertMirror;
]]></getter>
</property>
<property name="invertMirror">
<setter><![CDATA[
this._invertMirror = val;
this.mirror = this._isMirrored;
return val;
]]></setter>
<getter><![CDATA[
return this._invertMirror;
]]></getter>
</property>
<!-- -->
<!-- Mouse mirror handling -->
<!-- -->
<!-- -->
<!-- Mouse mirror handling -->
<!-- -->
<field name="_mouseMirror"><![CDATA[
true
]]></field>
<field name="_mouseMirror"><![CDATA[
true
]]></field>
<field name="_mouseMirrorListen"><![CDATA[
false
]]></field>
<field name="_mouseMirrorListen"><![CDATA[
false
]]></field>
<property name="mouseMirror">
<setter><![CDATA[
this._mouseMirror = val;
this.setupMouseMirror(this.value);
return val;
]]></setter>
<getter><![CDATA[
return this._mouseMirror;
]]></getter>
</property>
<property name="mouseMirror">
<setter><![CDATA[
this._mouseMirror = val;
this.setupMouseMirror(this.value);
return val;
]]></setter>
<getter><![CDATA[
return this._mouseMirror;
]]></getter>
</property>
<method name="setupMouseMirror">
<parameter name="val"/>
<body><![CDATA[
if(val && this._mouseMirror)
{
this._calcMouseTargetRect();
if(!this._mouseMirrorListen)
{
MousePosTracker.addListener(this);
this._mouseMirrorListen = true;
}
}
else
{
this.mirror = false;
if(this._mouseMirrorListen)
{
MousePosTracker.removeListener(this);
this._mouseMirrorListen = false;
}
}
]]></body>
</method>
<method name="setupMouseMirror">
<parameter name="val"/>
<body><![CDATA[
if(val && this._mouseMirror)
{
this._calcMouseTargetRect();
if(!this._mouseMirrorListen)
{
MousePosTracker.addListener(this);
this._mouseMirrorListen = true;
}
}
else
{
this.mirror = false;
if(this._mouseMirrorListen)
{
MousePosTracker.removeListener(this);
this._mouseMirrorListen = false;
}
}
]]></body>
</method>
<method name="_calcMouseTargetRect">
<body><![CDATA[
let alignRight = false;
let isRTL = (getComputedStyle(document.documentElement).direction == "rtl");
if((this._invertMirror && !isRTL) || (!this._invertMirror && isRTL))
{
alignRight = true;
}
<method name="_calcMouseTargetRect">
<body><![CDATA[
let alignRight = false;
let isRTL = (getComputedStyle(document.documentElement).direction == "rtl");
if((this._invertMirror && !isRTL) || (!this._invertMirror && isRTL))
{
alignRight = true;
}
let rect = this.getBoundingClientRect();
this._mouseTargetRect =
{
top: rect.top,
bottom: rect.bottom,
left: ((alignRight) ? window.innerWidth - rect.width : 0),
right: ((alignRight) ? window.innerWidth : rect.width)
};
]]></body>
</method>
let rect = this.getBoundingClientRect();
this._mouseTargetRect =
{
top: rect.top,
bottom: rect.bottom,
left: ((alignRight) ? window.innerWidth - rect.width : 0),
right: ((alignRight) ? window.innerWidth : rect.width)
};
]]></body>
</method>
<method name="onMouseEnter">
<body><![CDATA[
this.mirror = true;
]]></body>
</method>
<method name="onMouseEnter">
<body><![CDATA[
this.mirror = true;
]]></body>
</method>
<method name="onMouseLeave">
<body><![CDATA[
this.mirror = false;
]]></body>
</method>
<method name="onMouseLeave">
<body><![CDATA[
this.mirror = false;
]]></body>
</method>
<!-- -->
<!-- Mirror handling -->
<!-- -->
<!-- -->
<!-- Mirror handling -->
<!-- -->
<field name="_isMirrored"><![CDATA[
false
]]></field>
<field name="_isMirrored"><![CDATA[
false
]]></field>
<property name="mirror">
<setter><![CDATA[
this._isMirrored = val;
if(this._invertMirror)
{
val = !val;
}
<property name="mirror">
<setter><![CDATA[
this._isMirrored = val;
if(this._invertMirror)
{
val = !val;
}
this.setBooleanAttr("mirror", val);
]]></setter>
<getter><![CDATA[
return this._isMirrored;
]]></getter>
</property>
this.setBooleanAttr("mirror", val);
]]></setter>
<getter><![CDATA[
return this._isMirrored;
]]></getter>
</property>
<method name="_mirror">
<body><![CDATA[
this.mirror = !this._isMirrored;
]]></body>
</method>
<method name="_mirror">
<body><![CDATA[
this.mirror = !this._isMirrored;
]]></body>
</method>
<!-- -->
<!-- Value handling -->
<!-- -->
<!-- -->
<!-- Value handling -->
<!-- -->
<property name="label">
<setter><![CDATA[
if(window.caligon && window.caligon.status4evar)
{
window.caligon.status4evar.statusService.setStatusText(val);
}
return undefined;
]]></setter>
<getter><![CDATA[
if(window.caligon && window.caligon.status4evar)
{
return window.caligon.status4evar.statusService.getStatusText();
}
return "";
]]></getter>
</property>
<property name="label">
<setter><![CDATA[
if(window.caligon && window.caligon.status4evar)
{
window.caligon.status4evar.statusService.setStatusText(val);
}
return undefined;
]]></setter>
<getter><![CDATA[
if(window.caligon && window.caligon.status4evar)
{
return window.caligon.status4evar.statusService.getStatusText();
}
return "";
]]></getter>
</property>
<property name="value">
<setter><![CDATA[
this.setValue(val);
this.setupMouseMirror(val);
return val;
]]></setter>
<getter><![CDATA[
return ((this.hasAttribute("inactive")) ? "" : this.getAttribute("label"));
]]></getter>
</property>
<property name="value">
<setter><![CDATA[
this.setValue(val);
this.setupMouseMirror(val);
return val;
]]></setter>
<getter><![CDATA[
return ((this.hasAttribute("inactive")) ? "" : this.getAttribute("label"));
]]></getter>
</property>
<method name="setValue">
<parameter name="val"/>
<body><![CDATA[
if((this.getAttribute("type") || "").indexOf("network") > -1 && (this.getAttribute("previoustype") || "").indexOf("network") > -1)
{
this.style.minWidth = getComputedStyle(this).width;
}
else
{
this.style.minWidth = "";
}
<method name="setValue">
<parameter name="val"/>
<body><![CDATA[
if((this.getAttribute("type") || "").indexOf("network") > -1 && (this.getAttribute("previoustype") || "").indexOf("network") > -1)
{
this.style.minWidth = getComputedStyle(this).width;
}
else
{
this.style.minWidth = "";
}
if(val)
{
this.setAttribute("label", val);
this.setBooleanAttr("inactive", false);
}
else
{
this.setBooleanAttr("inactive", true);
}
]]></body>
</method>
if(val)
{
this.setAttribute("label", val);
this.setBooleanAttr("inactive", false);
}
else
{
this.setBooleanAttr("inactive", true);
}
]]></body>
</method>
<!-- -->
<!-- Helpers -->
<!-- -->
<!-- -->
<!-- Helpers -->
<!-- -->
<method name="setBooleanAttr">
<parameter name="name"/>
<parameter name="val"/>
<body><![CDATA[
if(val)
{
this.setAttribute(name, "true");
}
else
{
this.removeAttribute(name);
}
]]></body>
</method>
</implementation>
</binding>
<method name="setBooleanAttr">
<parameter name="name"/>
<parameter name="val"/>
<body><![CDATA[
if(val)
{
this.setAttribute(name, "true");
}
else
{
this.removeAttribute(name);
}
]]></body>
</method>
</implementation>
</binding>
</bindings>

View file

@ -9,49 +9,49 @@ interface nsIDOMWindow;
[scriptable, uuid(33d0433d-07be-4dc4-87fd-954057310efd)]
interface nsIStatus4Evar : nsISupports
{
readonly attribute boolean addonbarBorderStyle;
readonly attribute boolean addonbarCloseButton;
readonly attribute boolean addonbarLegacyShim;
readonly attribute boolean addonbarWindowGripper;
readonly attribute boolean addonbarBorderStyle;
readonly attribute boolean addonbarCloseButton;
readonly attribute boolean addonbarLegacyShim;
readonly attribute boolean addonbarWindowGripper;
readonly attribute boolean advancedStatusDetectFullScreen;
readonly attribute boolean advancedStatusDetectVideo;
readonly attribute boolean advancedStatusDetectFullScreen;
readonly attribute boolean advancedStatusDetectVideo;
readonly attribute long downloadButtonAction;
readonly attribute ACString downloadButtonActionCommand;
readonly attribute ACString downloadColorActive;
readonly attribute ACString downloadColorPaused;
readonly attribute boolean downloadForce;
readonly attribute long downloadLabel;
readonly attribute boolean downloadLabelForce;
readonly attribute boolean downloadNotifyAnimate;
readonly attribute long downloadNotifyTimeout;
readonly attribute long downloadProgress;
readonly attribute long downloadTooltip;
readonly attribute long downloadButtonAction;
readonly attribute ACString downloadButtonActionCommand;
readonly attribute ACString downloadColorActive;
readonly attribute ACString downloadColorPaused;
readonly attribute boolean downloadForce;
readonly attribute long downloadLabel;
readonly attribute boolean downloadLabelForce;
readonly attribute boolean downloadNotifyAnimate;
readonly attribute long downloadNotifyTimeout;
readonly attribute long downloadProgress;
readonly attribute long downloadTooltip;
readonly attribute boolean firstRun;
readonly attribute boolean firstRunAustralis;
readonly attribute boolean firstRun;
readonly attribute boolean firstRunAustralis;
readonly attribute ACString progressToolbarCSS;
readonly attribute boolean progressToolbarForce;
readonly attribute boolean progressToolbarStyle;
readonly attribute boolean progressToolbarStyleAdvanced;
readonly attribute ACString progressToolbarCSS;
readonly attribute boolean progressToolbarForce;
readonly attribute boolean progressToolbarStyle;
readonly attribute boolean progressToolbarStyleAdvanced;
readonly attribute long status;
readonly attribute boolean statusDefault;
readonly attribute boolean statusNetwork;
readonly attribute boolean statusNetworkXHR;
readonly attribute long statusTimeout;
readonly attribute long statusLinkOver;
readonly attribute long statusLinkOverDelayShow;
readonly attribute long statusLinkOverDelayHide;
readonly attribute long status;
readonly attribute boolean statusDefault;
readonly attribute boolean statusNetwork;
readonly attribute boolean statusNetworkXHR;
readonly attribute long statusTimeout;
readonly attribute long statusLinkOver;
readonly attribute long statusLinkOverDelayShow;
readonly attribute long statusLinkOverDelayHide;
readonly attribute long statusToolbarMaxLength;
readonly attribute long statusToolbarMaxLength;
readonly attribute boolean statusToolbarInvertMirror;
readonly attribute boolean statusToolbarMouseMirror;
readonly attribute boolean statusToolbarInvertMirror;
readonly attribute boolean statusToolbarMouseMirror;
void resetPrefs();
void updateWindow(in nsIDOMWindow win);
void resetPrefs();
void updateWindow(in nsIDOMWindow win);
};

File diff suppressed because it is too large Load diff