[wrong_layout] Remove plugin
This commit is contained in:
@@ -1 +0,0 @@
|
|||||||
from .plugin import WrongLayoutPlugin
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
[info]
|
|
||||||
name: Wrong Layout
|
|
||||||
short_name: wrong_layout
|
|
||||||
version: 1.3.0
|
|
||||||
description: Press Alt+R to convert chars typed in wrong layout
|
|
||||||
authors: Denis Fomin <fominde@gmail.com>
|
|
||||||
homepage: https://dev.gajim.org/gajim/gajim-plugins/wikis/WrongLayoutPlugin
|
|
||||||
min_gajim_version: 1.2.91
|
|
||||||
max_gajim_version: 1.3.90
|
|
||||||
@@ -1,126 +0,0 @@
|
|||||||
from gi.repository import Gtk
|
|
||||||
from gi.repository import Gdk
|
|
||||||
|
|
||||||
from gajim.common import app
|
|
||||||
|
|
||||||
from gajim.plugins import GajimPlugin
|
|
||||||
from gajim.plugins.helpers import log_calls
|
|
||||||
from gajim.plugins.plugins_i18n import _
|
|
||||||
|
|
||||||
|
|
||||||
class WrongLayoutPlugin(GajimPlugin):
|
|
||||||
@log_calls('WrongLayoutPlugin')
|
|
||||||
def init(self):
|
|
||||||
self.description = _('Press alt+r to convert chars typed in '
|
|
||||||
'wrong layout Rus<>Eng')
|
|
||||||
self.config_dialog = None
|
|
||||||
self.gui_extension_points = {
|
|
||||||
'chat_control_base': (self.connect_with_chat_control,
|
|
||||||
self.disconnect_from_chat_control)}
|
|
||||||
self.chat_control = None
|
|
||||||
self.controls = []
|
|
||||||
self.dict_eng = {'`': 'ё', 'q': 'й', 'w': 'ц', 'e': 'у', 'r': 'к',
|
|
||||||
't': 'е',
|
|
||||||
'y': 'н', 'u': 'г', 'i': 'ш', 'o': 'щ', 'p': 'з', '[': 'х',
|
|
||||||
']': 'ъ', 'a': 'ф', 's': 'ы', 'd': 'в', 'f': 'а', 'g': 'п',
|
|
||||||
'h': 'р', 'j': 'о', 'k': 'л', 'l': 'д', ';': 'ж', '\'': 'э',
|
|
||||||
'z': 'я', 'x': 'ч', 'c': 'с', 'v': 'м', 'b': 'и', 'n': 'т',
|
|
||||||
'm': 'ь', ',': 'б', '.': 'ю', '/': '.',
|
|
||||||
'\\': '\\', '~': 'Ё', '@': '"', '$': ';', '^': ':', '&': '?',
|
|
||||||
'Q': 'Й', 'W': 'Ц', 'E': 'У', 'R': 'К', 'T': 'Е', 'Y': 'Н',
|
|
||||||
'U': 'Г', 'I': 'Ш', 'O': 'Щ', 'P': 'З', '{': 'Х', '}': 'Ъ',
|
|
||||||
'|': '/', 'A': 'Ф', 'S': 'Ы', 'D': 'В', 'F': 'А', 'G': 'П',
|
|
||||||
'H': 'Р', 'J': 'О', 'K': 'Л', 'L': 'Д', '"': 'Э', 'Z': 'Я',
|
|
||||||
'X': 'Ч', 'C': 'С', 'V': 'М', 'B': 'И', 'N': 'Т', 'M': 'Ь',
|
|
||||||
'<': 'Б', '>': 'Ю', '?': ',', ':': 'Ж'}
|
|
||||||
self.dict_ru = {}
|
|
||||||
for key in list(self.dict_eng.keys()):
|
|
||||||
self.dict_ru[self.dict_eng[key]] = key
|
|
||||||
|
|
||||||
@log_calls('WrongLayoutPlugin')
|
|
||||||
def activate(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
@log_calls('WrongLayoutPlugin')
|
|
||||||
def deactivate(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
@log_calls('WrongLayoutPlugin')
|
|
||||||
def connect_with_chat_control(self, chat_control):
|
|
||||||
self.chat_control = chat_control
|
|
||||||
control = Base(self, self.chat_control)
|
|
||||||
self.controls.append(control)
|
|
||||||
|
|
||||||
@log_calls('WrongLayoutPlugin')
|
|
||||||
def disconnect_from_chat_control(self, chat_control):
|
|
||||||
for control in self.controls:
|
|
||||||
control.disconnect_from_chat_control()
|
|
||||||
self.controls = []
|
|
||||||
|
|
||||||
|
|
||||||
class Base(object):
|
|
||||||
def __init__(self, plugin, chat_control):
|
|
||||||
self.plugin = plugin
|
|
||||||
self.chat_control = chat_control
|
|
||||||
self.textview = self.chat_control.conv_textview
|
|
||||||
|
|
||||||
self.id_ = self.chat_control.msg_textview.connect('key_press_event',
|
|
||||||
self.mykeypress_event)
|
|
||||||
self.chat_control.handlers[self.id_] = self.chat_control.msg_textview
|
|
||||||
|
|
||||||
def disconnect_from_chat_control(self):
|
|
||||||
if self.chat_control.msg_textview.handler_is_connected(self.id_):
|
|
||||||
self.chat_control.msg_textview.disconnect(self.id_)
|
|
||||||
|
|
||||||
def mykeypress_event(self, widget, event):
|
|
||||||
if event.keyval == Gdk.KEY_r or event.keyval == 1739:
|
|
||||||
if event.state & Gdk.ModifierType.MOD1_MASK: # alt+r
|
|
||||||
start, end, iter_ = self.get_start_end()
|
|
||||||
count_eng = count_rus = 0
|
|
||||||
c = iter_.get_char()
|
|
||||||
while ((c != 0) & iter_.in_range(start, end)):
|
|
||||||
if ((ord(c) > 65) & (ord(c) < 122)) | \
|
|
||||||
(c == '@') | (c == '#') | (c == '$') | (c == '^') | \
|
|
||||||
(c == '&') | (c == '|') | (c == '~') | \
|
|
||||||
(c == '{') | (c == '}') | (c == '[') | (c == ']') | \
|
|
||||||
(c == '<') | (c == '>'):
|
|
||||||
count_eng += 1
|
|
||||||
if ((ord(c) > 1040) & (ord(c) < 1103)) | (c == 'ё') | \
|
|
||||||
(c == 'Ё') | (c == '№'):
|
|
||||||
count_rus += 1
|
|
||||||
iter_.forward_char()
|
|
||||||
c = iter_.get_char()
|
|
||||||
is_russian = (count_rus >= count_eng)
|
|
||||||
start, end, iter_ = self.get_start_end()
|
|
||||||
c = iter_.get_char()
|
|
||||||
text = ''
|
|
||||||
while ((c != 0) & iter_.in_range(start, end)):
|
|
||||||
if not is_russian:
|
|
||||||
conv = self.plugin.dict_eng.get(c, c)
|
|
||||||
else:
|
|
||||||
conv = self.plugin.dict_ru.get(c.encode('utf-8'), c)
|
|
||||||
text = text + conv
|
|
||||||
iter_.forward_char()
|
|
||||||
c = iter_.get_char()
|
|
||||||
start, end, iter_ = self.get_start_end()
|
|
||||||
message_buffer = self.chat_control.msg_textview.get_buffer()
|
|
||||||
message_buffer.delete(start, end)
|
|
||||||
message_buffer.insert_at_cursor(text)
|
|
||||||
self.chat_control.msg_textview.grab_focus()
|
|
||||||
return True
|
|
||||||
|
|
||||||
def get_start_end(self):
|
|
||||||
message_buffer = self.chat_control.msg_textview.get_buffer()
|
|
||||||
sel = message_buffer.get_selection_bounds()
|
|
||||||
if sel != ():
|
|
||||||
start, end = sel
|
|
||||||
else:
|
|
||||||
start = message_buffer.get_start_iter()
|
|
||||||
end = message_buffer.get_end_iter()
|
|
||||||
stext = app.config.get('gc_refer_to_nick_char')
|
|
||||||
res = start.forward_search(stext, Gtk.TextSearchFlags.TEXT_ONLY, None)
|
|
||||||
if res:
|
|
||||||
first, start = res
|
|
||||||
start.order(end)
|
|
||||||
iter_ = start
|
|
||||||
return start, end, iter_
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.1 KiB |
Reference in New Issue
Block a user