1,15 → 1,16 |
var LatRus = { |
inited: false, |
worker: null, |
enabled: false, |
showHint: false, |
hintPanelInited: false, |
inited: false, |
worker: null, |
enabled: false, |
showHint: false, |
hintPanelInited: false, |
lastKnownSelection: null, |
|
init: function() |
{ |
LatRus.worker = new LatRusWorker_Rus(); |
LatRus.setEnabled(false); |
LatRus.setHint(false); |
LatRus.setEnabled(LatRus.enabled); |
LatRus.setHint(LatRus.showHint); |
inited = true; |
}, |
|
19,12 → 20,19 |
if(aEvent.ctrlKey || aEvent.altKey || aEvent.charCode == 0) return true; |
if(aEvent.keyCode == 255) return; // our loop event |
|
var newEvent = aEvent.target.ownerDocument.createEvent("KeyEvents"); |
newEvent.initKeyEvent(aEvent.type, aEvent.bubbles, aEvent.cancelable, aEvent.view, |
var newEvent = aEvent.target.ownerDocument.createEvent("KeyEvents"); |
newEvent.initKeyEvent(aEvent.type, aEvent.bubbles, aEvent.cancelable, aEvent.view, |
false, false, false, false, 255, LatRus.worker.convertCode(aEvent.charCode)); |
aEvent.preventDefault(); |
aEvent.originalTarget.dispatchEvent(newEvent); |
aEvent.originalTarget.dispatchEvent(newEvent); |
}, |
|
onFocus: function(aEvent) |
{ |
if(aEvent.originalTarget.toString().indexOf("HTML") >= 0) { |
LatRus.lastKnownSelection = aEvent.originalTarget; |
} |
}, |
|
toggleEnabled: function() |
{ |
68,36 → 76,36 |
|
selectedToLat: function() |
{ |
if(!gContextMenu) return null; |
if(!gContextMenu) return null; |
LatRus.convertSelectedText(gContextMenu.target, 'convertStringBackward'); |
}, |
|
selectedToRus: function() |
{ |
if(!gContextMenu) return null; |
if(!gContextMenu) return null; |
LatRus.convertSelectedText(gContextMenu.target, 'convertStringForward'); |
}, |
|
getSelectedText: function(e) |
{ |
if(!e) return null; |
if(!e.value) return null; |
|
var start = e.selectionStart; |
var end = e.selectionEnd; |
if(start < 0 || end < 0 || start >= end) return null; |
|
return e.value.toString().substring(start, end); |
if(!e) return null; |
if(!e.value) return null; |
|
var start = e.selectionStart; |
var end = e.selectionEnd; |
if(start < 0 || end < 0 || start >= end) return null; |
|
return e.value.toString().substring(start, end); |
}, |
|
convertSelectedText: function(e, transformation) |
{ |
var selection = LatRus.getSelectedText(e); |
var selection = LatRus.getSelectedText(e); |
if(!selection) return; |
|
var res = LatRus.worker[transformation].call(LatRus.worker, selection); |
var start = e.selectionStart; |
var end = e.selectionEnd; |
var start = e.selectionStart; |
var end = e.selectionEnd; |
var scrollTop = e.scrollTop; |
var scrollLeft = e.scrollLeft; |
|
148,7 → 156,7 |
|
this.diplayHintPart(this.worker.getForwardTable(), panel, "latrus_hint_forward"); |
this.diplayHintPart(this.worker.getBackwardTable(), panel, "latrus_hint_backward"); |
//this.diplayHintPart(this.worker.getAdditionalTable(), panel, "latrus_hint_additional"); |
this.diplayHintPart(this.worker.getAdditionalTable(), panel, "latrus_hint_additional"); |
|
LatRus.hintPanelInited = true; |
}, |
160,19 → 168,38 |
panel.removeChild(box); |
} |
|
box = document.createElement("box"); |
box.setAttribute("id", boxId); |
panel.appendChild(box); |
for(var i = 0, l = table.length; i < l; ++i) { |
if(i % 32 == 0) { |
box = document.createElement("box"); |
box.setAttribute("id", boxId); |
panel.appendChild(box); |
} |
|
for(var i = 0, l = table.length; i < l; ++i) { |
var button = document.createElement("button"); |
button.setAttribute("label", table[i]); |
//button.setAttribute("onclick", "LatRus.addLetterClick(this)"); |
button.setAttribute("onclick", "LatRus.addLetterClick(this)"); |
button.setAttribute("class", "latrusHintLetterButton"); |
box.appendChild(button); |
} |
}, |
|
addLetterClick: function(button) |
{ |
if(LatRus.lastKnownSelection) { |
LatRus.lastKnownSelection.focus(); |
|
var newEvent = LatRus.lastKnownSelection.ownerDocument.createEvent("KeyEvents"); |
newEvent.initKeyEvent("keypress", true, true, null, |
false, false, false, false, 255, button.label.charCodeAt(0)); |
LatRus.lastKnownSelection.dispatchEvent(newEvent); |
} |
}, |
|
openInputBox: function() |
{ |
getBrowser().loadOneTab("chrome://latrus/content/input.html", null, null, null, false, false); |
}, |
|
showOptions: function() |
{ |
alert("latrus options"); |
182,6 → 209,7 |
/* REGISTER */ |
if(!LatRus.inited && !window.frameElement) { |
window.addEventListener('load', LatRus.init, false); |
window.addEventListener('focus', LatRus.onFocus, true); |
window.addEventListener('keypress', LatRus.onKeyPress, true); |
} |
|