~ubuntu-branches/debian/squeeze/ibus-hangul/squeeze

« back to all changes in this revision

Viewing changes to setup/main.py

  • Committer: Bazaar Package Importer
  • Author(s): LI Daobing
  • Date: 2010-01-03 12:46:27 UTC
  • mfrom: (1.1.4 upstream)
  • Revision ID: james.westby@ubuntu.com-20100103124627-myjyr6sjtomh148o
Tags: 1.2.0.20100102-1
New upstream release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
import os
23
23
import gobject
24
24
import gtk
25
 
import gtk.glade as glade
26
25
import ibus
 
26
import locale
27
27
import gettext
28
28
import config
 
29
from keycapturedialog import KeyCaptureDialog
29
30
 
30
31
_ = lambda a : gettext.dgettext("ibus-hangul", a)
31
32
 
32
33
class Setup ():
33
34
    def __init__ (self):
 
35
        locale.bindtextdomain("ibus-hangul", config.localedir)
 
36
        locale.bind_textdomain_codeset("ibus-hangul", "UTF-8")
 
37
 
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)
37
41
 
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)
41
46
 
42
 
        self.__hangul_keyboard = self.__xml.get_widget("HangulKeyboard")
 
47
        # Hangul tab
 
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])
 
56
 
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)
51
61
 
52
62
        current = self.__read("HangulKeyboard", "2")
53
63
        for i in model:
55
65
                self.__hangul_keyboard.set_active(i[2])
56
66
                break
57
67
 
58
 
        self.__window = self.__xml.get_widget("dialog")
 
68
 
 
69
        # hanja tab
 
70
        button = self.__builder.get_object("HanjaKeyListAddButton")
 
71
        button.connect("clicked", self.on_hanja_key_add, None)
 
72
 
 
73
        button = self.__builder.get_object("HanjaKeyListRemoveButton")
 
74
        button.connect("clicked", self.on_hanja_key_remove, None)
 
75
 
 
76
        model = gtk.ListStore(str)
 
77
 
 
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:
 
81
            model.append([i])
 
82
 
 
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)
 
91
 
 
92
 
 
93
        # advanced tab
 
94
        notebook = self.__builder.get_object("SetupNotebook")
 
95
        notebook.remove_page(2)
 
96
 
 
97
        # setup dialog
 
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()
63
103
 
64
 
        ok_button = self.__xml.get_widget("button_ok")
 
104
        ok_button = self.__builder.get_object("button_cancel")
65
105
        ok_button.grab_focus()
66
106
 
67
107
    def run(self):
75
115
        i = self.__hangul_keyboard.get_active()
76
116
        self.__write("HangulKeyboard", model[i][1])
77
117
 
 
118
        model = self.__hanja_key_list.get_model()
 
119
        str = ""
 
120
        iter = model.get_iter_first()
 
121
        while iter:
 
122
            if len(str) > 0:
 
123
                str += ","
 
124
                str += model.get_value(iter, 0)
 
125
            else:
 
126
                str += model.get_value(iter, 0)
 
127
            iter = model.iter_next(iter)
 
128
        self.__write("HanjaKeys", str)
 
129
 
78
130
    def on_response(self, widget, id, data = None):
79
 
        if (id == gtk.RESPONSE_APPLY):
 
131
        if id == gtk.RESPONSE_APPLY:
80
132
            self.apply()
81
133
            widget.emit_stop_by_name("response")
 
134
        if id == gtk.RESPONSE_NONE:
 
135
            widget.emit_stop_by_name("response")
82
136
 
83
137
    def on_ok(self):
84
138
        self.apply()
85
139
 
 
140
    def on_hanja_key_add(self, widget, data = None):
 
141
        dialog = KeyCaptureDialog(_("Select Hanja key"), self.__window)
 
142
        res = dialog.run()
 
143
        if res == gtk.RESPONSE_OK:
 
144
            key_str = dialog.get_key_string()
 
145
            if len(key_str) > 0:
 
146
                model = self.__hanja_key_list.get_model()
 
147
                iter = model.get_iter_first()
 
148
                while iter:
 
149
                    str = model.get_value(iter, 0)
 
150
                    if str == key_str:
 
151
                        model.remove(iter)
 
152
                        break
 
153
                    iter = model.iter_next(iter)
 
154
 
 
155
                model.append([key_str])
 
156
        dialog.destroy()
 
157
 
 
158
    def on_hanja_key_remove(self, widget, data = None):
 
159
        selection = self.__hanja_key_list.get_selection()
 
160
        (model, iter) = selection.get_selected()
 
161
        if model and iter:
 
162
            model.remove(iter)
 
163
 
86
164
    def on_value_changed(self, config, section, name, value, data):
87
165
        if section == "engine/Hangul":
88
166
            if name == "HangulKeyboard":
91
169
                    if i[1] == value:
92
170
                        self.__hangul_keyboard.set_active(i[2])
93
171
                        break
 
172
            elif name == "HanjaKeys":
 
173
                self.__hanja_key_list_str = value.split(',')
94
174
 
95
175
    def __read(self, name, v):
96
176
        return self.__config.get_value("engine/Hangul", name, v)