Subversion Repositories general

Compare Revisions

Ignore whitespace Rev 1319 → Rev 1320

/firefox/latrus/trunk/src/chrome/content/latrus.js
1,86 → 1,35
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 latRusWorker = null;
var latRusEnabled = false;
 
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 LatRus = {
init: function()
{
latRusWorker = new Worker();
 
gBrowser.addProgressListener(LatRusWebProgressListener,
Components.interfaces.nsIWebProgress.NOTIFY_STATE_DOCUMENT);
gBrowser.tabContainer.addEventListener("TabSelect", LatRus.onTabSelect, false);
 
LatRus.setEnabled(false);
},
 
uninit: function()
{
gBrowser.removeProgressListener(LatRusWebProgressListener);
},
 
onTabSelect: function(aEvent)
{
if(aEvent.target.linkedBrowser.latRusEnabled == undefined) {
aEvent.target.linkedBrowser.latRusEnabled = false; // the default value
}
 
LatRus.updateEnabled();
},
 
onKeyPress: function(aEvent)
{
if(!gBrowser.selectedBrowser.latRusEnabled) return;
if(!latRusEnabled) return;
if(aEvent.ctrlKey || aEvent.altKey || aEvent.charCode == 0) return true;
if(aEvent.keyCode == 255) return; // our loop event
 
var newEvent = document.commandDispatcher.focusedWindow.document.createEvent("KeyEvents");
var newEvent = aEvent.target.ownerDocument.createEvent("KeyEvents");
newEvent.initKeyEvent(aEvent.type, aEvent.bubbles, aEvent.cancelable, aEvent.view,
false, false, false, false, 255, latRusWorker.convertCode(aEvent.charCode));
aEvent.preventDefault();
aEvent.target.dispatchEvent(newEvent);
aEvent.originalTarget.dispatchEvent(newEvent);
},
 
toggleEnabled: function()
{
LatRus.setEnabled(!gBrowser.selectedBrowser.latRusEnabled);
LatRus.setEnabled(!latRusEnabled);
},
 
setEnabled: function(enabled)
{
gBrowser.selectedBrowser.latRusEnabled = enabled;
latRusEnabled = enabled;
LatRus.updateEnabled();
},
 
88,12 → 37,12
{
var item = document.getElementById("context-latrus-enabled");
if(item) {
item.setAttribute("checked", gBrowser.selectedBrowser.latRusEnabled);
item.setAttribute("checked", latRusEnabled);
}
 
var panel = document.getElementById("latrus-panel");
if(panel) {
panel.label = (gBrowser.selectedBrowser.latRusEnabled ? "RUS" : "LAT");
panel.label = (latRusEnabled ? "RUS" : "LAT");
}
},
161,8 → 110,11
},
};
 
window.addEventListener('load', LatRus.init, false);
window.addEventListener('unload', LatRus.uninit, false);
/* REGISTER */
if(!latRusWorker && !window.frameElement) {
window.addEventListener('load', LatRus.init, false);
window.addEventListener('keypress', LatRus.onKeyPress, true);
}
 
Worker.engTable = new Array(
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',