diff options
Diffstat (limited to 'setup/main.py')
-rw-r--r-- | setup/main.py | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/setup/main.py b/setup/main.py index 6dff317..18a21ab 100644 --- a/setup/main.py +++ b/setup/main.py @@ -26,11 +26,30 @@ from gi.repository import IBus import locale import gettext import config -import subprocess from keycapturedialog import KeyCaptureDialog _ = lambda a : gettext.dgettext(config.gettext_package, a) + +def get_hangul_keyboard_list(): + from ctypes import CDLL, c_int, c_char_p + libhangul = CDLL('libhangul.so.1') + libhangul.hangul_ic_get_n_keyboards.argtypes = [] + libhangul.hangul_ic_get_n_keyboards.restype = c_int + libhangul.hangul_ic_get_keyboard_id.argtypes = [c_int] + libhangul.hangul_ic_get_keyboard_id.restype = c_char_p + libhangul.hangul_ic_get_keyboard_name.argtypes = [c_int] + libhangul.hangul_ic_get_keyboard_name.restype = c_char_p + + n = libhangul.hangul_ic_get_n_keyboards() + list = [] + for i in range(n): + id = libhangul.hangul_ic_get_keyboard_id(i).decode('UTF-8') + name = libhangul.hangul_ic_get_keyboard_name(i).decode('UTF-8') + list.append((id, name)) + return list + + class Setup (): def __init__ (self, bus): self.__bus = bus @@ -43,17 +62,14 @@ class Setup (): self.__builder.add_from_file(ui_file) # Hangul tab - pipe = subprocess.Popen([config.setuplibdir + '/hangul_keyboard_list'], stdout = subprocess.PIPE) - list = pipe.communicate()[0].split('\n') + list = get_hangul_keyboard_list() self.__hangul_keyboard = self.__builder.get_object("HangulKeyboard") model = Gtk.ListStore(str, str, int) i = 0 - for line in list: - items = line.split('\t') - if len(items) > 1: - model.append([items[1], items[0], i]) - i+=1 + for (id, name) in list: + model.append([name, id, i]) + i+=1 self.__hangul_keyboard.set_model(model) renderer = Gtk.CellRendererText() |