1,3 → 1,37 |
const STATE_START = Components.interfaces.nsIWebProgressListener.STATE_START; |
const STATE_TRANSFERRING = Components.interfaces.nsIWebProgressListener.STATE_TRANSFERRING; |
const STATE_STOP = Components.interfaces.nsIWebProgressListener.STATE_STOP; |
|
var LatRusWebProgressListener = { |
QueryInterface: function(aIID) |
{ |
if(aIID.equals(Components.interfaces.nsIWebProgressListener) |
|| aIID.equals(Components.interfaces.nsISupportsWeakReference) |
|| aIID.equals(Components.interfaces.nsISupports)) |
{ |
return this; |
} |
|
throw Components.results.NS_NOINTERFACE; |
}, |
|
onStateChange: function(aWebProgress, aRequest, aFlag, aStatus) |
{ |
// try to take control at first possible stage |
if(aFlag & (STATE_START | STATE_TRANSFERRING | STATE_STOP)) { |
aWebProgress.DOMWindow.document.removeEventListener('keypress', LatRus.onKeyPress, true); |
aWebProgress.DOMWindow.document.addEventListener('keypress', LatRus.onKeyPress, true); |
} |
return 0; |
}, |
|
onLocationChange: function() { return 0; }, |
onProgressChange: function() { return 0; }, |
onStatusChange: function() { return 0; }, |
onSecurityChange: function() { return 0; }, |
onLinkIconAvailable: function() { return 0; }, |
} |
|
var latRusWorker = null; |
var latRusEnabled = false; |
|
4,20 → 38,16 |
var LatRus = { |
init: function() |
{ |
var appcontent = document.getElementById("appcontent"); |
if(appcontent) { |
appcontent.addEventListener("DOMContentLoaded", LatRus.onPageLoad, true); |
} |
gBrowser.addProgressListener(LatRusWebProgressListener, |
Components.interfaces.nsIWebProgress.NOTIFY_STATE_DOCUMENT); |
|
latRusWorker = new Worker(); |
LatRus.setEnabled(latRusEnabled); // update menu and panel |
}, |
|
onPageLoad: function(aEvent) |
uninit: function() |
{ |
if(aEvent.originalTarget.nodeName == "#document") { |
aEvent.originalTarget.addEventListener('keypress', LatRus.onKeyPress, true); |
} |
gBrowser.removeProgressListener(LatRusWebProgressListener); |
}, |
|
onKeyPress: function(aEvent) |
54,7 → 84,8 |
}, |
}; |
|
window.addEventListener('load', LatRus.init, false); |
window.addEventListener('load', LatRus.init, false); |
window.addEventListener('unload', LatRus.uninit, false); |
|
Worker.engTable = new Array( |
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', |