1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
| # -*- coding: utf-8 -*-
# J.P Décembre 2014
# Assignement de caractères accentués à touches de raccourcis
import unohelper
from com.sun.star.awt import XKeyHandler
from com.sun.star.awt.Key import ESCAPE as K_ESCAPE
# dictionnaire de correspondance des caractères
symboles = {"1a" : "ā","2a" : "á","3a" : "ǎ","4a" : "à",
"1e" : "ē","2e" : "é","3e" : "ě","4e" : "è",
"1i" : "ī","2i" : "í","3i" : "ǐ","4i" : "ì",
"1o" : "ō","2o" : "ó","3o" : "ǒ","4o" : "ò",
"1u" : "ū","2u" : "ú","3u" : "ǔ","4u" : "ù",
"5u" : "ǖ","6u" : "ǘ","7u" : "ǚ","8u" : "ǜ" }
handler = None
# classe de gestion des caractères
class SpecialSymbolKeyHandler(unohelper.Base, XKeyHandler):
def __init__(self, doc,numcode):
self.doc = doc
self.numcode = numcode
self.registered = False
self.register()
def register(self):
if not self.registered:
self.doc.getCurrentController().addKeyHandler(self)
self.registered = True
def unregister(self):
if self.registered:
self.doc.getCurrentController().removeKeyHandler(self)
def exit(self):
self.unregister()
self.disposing(None)
def disposing(self, ev):
global handler
handler = None
self.doc = None
def keyReleased(self, ev): return True
def keyPressed(self, ev):
if ev.KeyCode == K_ESCAPE:
self.exit()
#
lecode = self.numcode + ev.KeyChar.value
try:
# on regarde si le code existe dans le dictionnaire
if lecode in symboles:
c = symboles[lecode]
else:
# on insère le caractère tapé si code pas sans dictionnaire
c = ev.KeyChar.value
self.insertString(c)
# on arrête la macro
self.exit()
return True
except:
pass
return False
def insertString(self, c):
view_cursor = self.doc.getCurrentController().getViewCursor()
text = self.doc.getText()
cursor = text.createTextCursorByRange(view_cursor)
self.unregister()
cursor.setString(c)
self.register()
def tempshortcut(numcode):
global handler
doc = XSCRIPTCONTEXT.getDocument()
if not doc.supportsService("com.sun.star.text.TextDocument"):
return
handler = SpecialSymbolKeyHandler(doc,numcode)
def compSpecChar1():
tempshortcut("1")
def compSpecChar2():
tempshortcut("2")
def compSpecChar3():
tempshortcut("3")
def compSpecChar4():
tempshortcut("4")
def compSpecChar5():
tempshortcut("5")
def compSpecChar6():
tempshortcut("6")
def compSpecChar7():
tempshortcut("7")
def compSpecChar8():
tempshortcut("8")
def compSpecChar9():
tempshortcut("9") |
Partager