25
import gtk.glade as glade
29
from keycapturedialog import KeyCaptureDialog
30
31
_ = lambda a : gettext.dgettext("ibus-hangul", a)
33
34
def __init__ (self):
35
locale.bindtextdomain("ibus-hangul", config.localedir)
36
locale.bind_textdomain_codeset("ibus-hangul", "UTF-8")
34
38
self.__bus = ibus.Bus()
35
39
self.__config = self.__bus.get_config()
36
40
self.__config.connect("value-changed", self.on_value_changed, None)
38
glade.bindtextdomain("ibus-hangul", config.localedir)
39
glade_file = os.path.join(os.path.dirname(__file__), "setup.glade")
40
self.__xml = glade.XML(glade_file, domain="ibus-hangul")
42
ui_file = os.path.join(os.path.dirname(__file__), "setup.ui")
43
self.__builder = gtk.Builder()
44
self.__builder.set_translation_domain("ibus-hangul")
45
self.__builder.add_from_file(ui_file)
42
self.__hangul_keyboard = self.__xml.get_widget("HangulKeyboard")
48
self.__hangul_keyboard = self.__builder.get_object("HangulKeyboard")
43
49
model = gtk.ListStore(str, str, int)
44
50
model.append([_("Dubeolsik"), "2", 0])
45
51
model.append([_("Sebeolsik Final"), "3f", 1])
47
53
model.append([_("Sebeolsik No-shift"), "3s", 3])
48
54
model.append([_("Sebeolsik 2 set"), "32", 4])
49
55
model.append([_("Romaja"), "ro", 5])
50
57
self.__hangul_keyboard.set_model(model)
58
renderer = gtk.CellRendererText()
59
self.__hangul_keyboard.pack_start(renderer)
60
self.__hangul_keyboard.add_attribute(renderer, "text", 0)
52
62
current = self.__read("HangulKeyboard", "2")
55
65
self.__hangul_keyboard.set_active(i[2])
58
self.__window = self.__xml.get_widget("dialog")
70
button = self.__builder.get_object("HanjaKeyListAddButton")
71
button.connect("clicked", self.on_hanja_key_add, None)
73
button = self.__builder.get_object("HanjaKeyListRemoveButton")
74
button.connect("clicked", self.on_hanja_key_remove, None)
76
model = gtk.ListStore(str)
78
keylist_str = self.__read("HanjaKeys", "Hangul_Hanja,F9")
79
self.__hanja_key_list_str = keylist_str.split(',')
80
for i in self.__hanja_key_list_str:
83
self.__hanja_key_list = self.__builder.get_object("HanjaKeyList")
84
self.__hanja_key_list.set_model(model)
85
column = gtk.TreeViewColumn()
86
column.set_title("key")
87
renderer = gtk.CellRendererText()
88
column.pack_start(renderer)
89
column.add_attribute(renderer, "text", 0)
90
self.__hanja_key_list.append_column(column)
94
notebook = self.__builder.get_object("SetupNotebook")
95
notebook.remove_page(2)
98
self.__window = self.__builder.get_object("SetupDialog")
59
99
icon_file = os.path.join(config.datadir, "ibus-hangul", "icons", "ibus-hangul.svg")
60
100
self.__window.set_icon_from_file(icon_file)
61
101
self.__window.connect("response", self.on_response, None)
62
102
self.__window.show()
64
ok_button = self.__xml.get_widget("button_ok")
104
ok_button = self.__builder.get_object("button_cancel")
65
105
ok_button.grab_focus()
75
115
i = self.__hangul_keyboard.get_active()
76
116
self.__write("HangulKeyboard", model[i][1])
118
model = self.__hanja_key_list.get_model()
120
iter = model.get_iter_first()
124
str += model.get_value(iter, 0)
126
str += model.get_value(iter, 0)
127
iter = model.iter_next(iter)
128
self.__write("HanjaKeys", str)
78
130
def on_response(self, widget, id, data = None):
79
if (id == gtk.RESPONSE_APPLY):
131
if id == gtk.RESPONSE_APPLY:
81
133
widget.emit_stop_by_name("response")
134
if id == gtk.RESPONSE_NONE:
135
widget.emit_stop_by_name("response")
140
def on_hanja_key_add(self, widget, data = None):
141
dialog = KeyCaptureDialog(_("Select Hanja key"), self.__window)
143
if res == gtk.RESPONSE_OK:
144
key_str = dialog.get_key_string()
146
model = self.__hanja_key_list.get_model()
147
iter = model.get_iter_first()
149
str = model.get_value(iter, 0)
153
iter = model.iter_next(iter)
155
model.append([key_str])
158
def on_hanja_key_remove(self, widget, data = None):
159
selection = self.__hanja_key_list.get_selection()
160
(model, iter) = selection.get_selected()
86
164
def on_value_changed(self, config, section, name, value, data):
87
165
if section == "engine/Hangul":
88
166
if name == "HangulKeyboard":
92
170
self.__hangul_keyboard.set_active(i[2])
172
elif name == "HanjaKeys":
173
self.__hanja_key_list_str = value.split(',')
95
175
def __read(self, name, v):
96
176
return self.__config.get_value("engine/Hangul", name, v)