Blob Blame History Raw
diff --git a/setup/ibus-setup-hangul.desktop.in b/setup/ibus-setup-hangul.desktop.in
index a956593..882abbc 100644
--- a/setup/ibus-setup-hangul.desktop.in
+++ b/setup/ibus-setup-hangul.desktop.in
@@ -4,6 +4,7 @@ _Name=IBus Hangul Preferences
 _Comment=Set IBus Hangul Preferences
 Exec=ibus-setup-hangul
 Icon=ibus-setup-hangul
+NoDisplay=true
 Terminal=false
 Type=Application
 StartupNotify=true
diff --git a/setup/keycapturedialog.py b/setup/keycapturedialog.py
index a6c9cff..a431221 100644
--- a/setup/keycapturedialog.py
+++ b/setup/keycapturedialog.py
@@ -1,42 +1,42 @@
-import gtk
-import gtk.gdk as gdk
+from gi.repository import Gtk
+from gi.repository import Gdk
 import gettext
 
 _ = lambda a : gettext.dgettext("ibus-hangul", a)
 
 class KeyCaptureDialog ():
     def __init__ (self, title, parent):
-	self.__key_str = ''
-	self.__dialog = gtk.MessageDialog(parent,
-			gtk.DIALOG_MODAL,
-			gtk.MESSAGE_INFO,
-			gtk.BUTTONS_OK_CANCEL,
-			"")
-	self.__dialog.set_markup(_("Press any key which you want to use as hanja key. "
+        self.__key_str = ''
+        self.__dialog = Gtk.MessageDialog(parent,
+                        Gtk.DialogFlags.MODAL,
+                        Gtk.MessageType.INFO,
+                        Gtk.ButtonsType.OK_CANCEL,
+                        "")
+        self.__dialog.set_markup(_("Press any key which you want to use as hanja key. "
                 "The key you pressed is displayed below.\n"
                 "If you want to use it, click \"Ok\" or click \"Cancel\""))
 
-	self.__dialog.format_secondary_markup(" ")
-	self.__dialog.connect("key-press-event", self.on_keypress, None)
+        self.__dialog.format_secondary_markup(" ")
+        self.__dialog.connect("key-press-event", self.on_keypress, None)
 
     def destroy(self):
-	self.__dialog.destroy()
+        self.__dialog.destroy()
 
     def run(self):
-	return self.__dialog.run()
+        return self.__dialog.run()
 
     def get_key_string(self):
-	return self.__key_str
+        return self.__key_str
 
     def on_keypress(self, widget, event, data = None):
-	self.__key_str = ""
-	if event.state & gdk.CONTROL_MASK :
-	    self.__key_str += "Control+"
-	if event.state & gdk.MOD1_MASK :
-	    self.__key_str += "Alt+"
-	if event.state & gdk.SHIFT_MASK :
-	    self.__key_str += "Shift+"
-
-	self.__key_str += gdk.keyval_name(event.keyval)
-	    
-	self.__dialog.format_secondary_markup('<span size="large" weight="bold">%s</span>' % self.__key_str)
+        self.__key_str = ""
+        if event.state & Gdk.ModifierType.CONTROL_MASK :
+            self.__key_str += "Control+"
+        if event.state & Gdk.ModifierType.MOD1_MASK :
+            self.__key_str += "Alt+"
+        if event.state & Gdk.ModifierType.SHIFT_MASK :
+            self.__key_str += "Shift+"
+
+        self.__key_str += Gdk.keyval_name(event.keyval)
+            
+        self.__dialog.format_secondary_markup('<span size="large" weight="bold">%s</span>' % self.__key_str)
diff --git a/setup/main.py b/setup/main.py
index 28a66a9..ce33db7 100644
--- a/setup/main.py
+++ b/setup/main.py
@@ -20,9 +20,9 @@
 
 import sys
 import os
-import gobject
-import gtk
-import ibus
+from gi.repository import GLib
+from gi.repository import Gtk
+from gi.repository import IBus
 import locale
 import gettext
 import config
@@ -35,157 +35,166 @@ class Setup ():
     def __init__ (self, bus):
         self.__bus = bus
         self.__config = self.__bus.get_config()
-	self.__config.connect("value-changed", self.on_value_changed, None)
-
-	ui_file = os.path.join(os.path.dirname(__file__), "setup.ui")
-	self.__builder = gtk.Builder()
-	self.__builder.set_translation_domain(config.gettext_package)
-	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')
-	
-	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
-
-	self.__hangul_keyboard.set_model(model)
-	renderer = gtk.CellRendererText()
-	self.__hangul_keyboard.pack_start(renderer)
-	self.__hangul_keyboard.add_attribute(renderer, "text", 0)
-
-	current = self.__read("HangulKeyboard", "2")
-	for i in model:
-	    if i[1] == current:
-		self.__hangul_keyboard.set_active(i[2])
-		break
-
-	self.__word_commit = self.__builder.get_object("WordCommit")
-
-	word_commit = self.__read("WordCommit", False)
+        self.__config.connect("value-changed", self.on_value_changed, None)
+
+        ui_file = os.path.join(os.path.dirname(__file__), "setup.ui")
+        self.__builder = Gtk.Builder()
+        self.__builder.set_translation_domain(config.gettext_package)
+        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')
+        
+        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
+
+        self.__hangul_keyboard.set_model(model)
+        renderer = Gtk.CellRendererText()
+        self.__hangul_keyboard.pack_start(renderer, True)
+        self.__hangul_keyboard.add_attribute(renderer, "text", 0)
+
+        default = GLib.Variant.new_string("2")
+        current = self.__read("HangulKeyboard", default).get_string()
+        for i in model:
+            if i[1] == current:
+                self.__hangul_keyboard.set_active(i[2])
+                break
+
+        self.__word_commit = self.__builder.get_object("WordCommit")
+
+        default = GLib.Variant.new_boolean(False)
+        word_commit = self.__read("WordCommit", default).get_boolean()
         self.__word_commit.set_active(word_commit)
 
-	self.__auto_reorder = self.__builder.get_object("AutoReorder")
-	auto_reorder = self.__read("AutoReorder", True)
+        self.__auto_reorder = self.__builder.get_object("AutoReorder")
+        default = GLib.Variant.new_boolean(True)
+        auto_reorder = self.__read("AutoReorder", default).get_boolean()
         self.__auto_reorder.set_active(auto_reorder)
 
-	# hanja tab
-	button = self.__builder.get_object("HanjaKeyListAddButton")
-	button.connect("clicked", self.on_hanja_key_add, None)
+        # hanja tab
+        button = self.__builder.get_object("HanjaKeyListAddButton")
+        button.connect("clicked", self.on_hanja_key_add, None)
 
-	button = self.__builder.get_object("HanjaKeyListRemoveButton")
-	button.connect("clicked", self.on_hanja_key_remove, None)
+        button = self.__builder.get_object("HanjaKeyListRemoveButton")
+        button.connect("clicked", self.on_hanja_key_remove, None)
 
-	model = gtk.ListStore(str)
+        model = Gtk.ListStore(str)
 
-	keylist_str = self.__read("HanjaKeys", "Hangul_Hanja,F9")
-	self.__hanja_key_list_str = keylist_str.split(',')
-	for i in self.__hanja_key_list_str:
-	    model.append([i])
+        default = GLib.Variant.new_string("Hangul_Hanja,F9")
+        keylist_str = self.__read("HanjaKeys", default).get_string()
+        self.__hanja_key_list_str = keylist_str.split(',')
+        for i in self.__hanja_key_list_str:
+            model.append([i])
 
-	self.__hanja_key_list = self.__builder.get_object("HanjaKeyList")
-	self.__hanja_key_list.set_model(model)
-	column = gtk.TreeViewColumn()
-	column.set_title("key")
-	renderer = gtk.CellRendererText()
-	column.pack_start(renderer)
-	column.add_attribute(renderer, "text", 0)
-	self.__hanja_key_list.append_column(column)
+        self.__hanja_key_list = self.__builder.get_object("HanjaKeyList")
+        self.__hanja_key_list.set_model(model)
+        column = Gtk.TreeViewColumn()
+        column.set_title("key")
+        renderer = Gtk.CellRendererText()
+        column.pack_start(renderer, True)
+        column.add_attribute(renderer, "text", 0)
+        self.__hanja_key_list.append_column(column)
 
+        # advanced tab
+        notebook = self.__builder.get_object("SetupNotebook")
+        notebook.remove_page(2)
 
-	# advanced tab
-	notebook = self.__builder.get_object("SetupNotebook")
-	notebook.remove_page(2)
+        # setup dialog
+        self.__window = self.__builder.get_object("SetupDialog")
+        icon_file = os.path.join(config.pkgdatadir, "icons", "ibus-hangul.svg")
+        self.__window.set_icon_from_file(icon_file)
+        self.__window.connect("response", self.on_response, None)
+        self.__window.show()
 
-	# setup dialog
-	self.__window = self.__builder.get_object("SetupDialog")
-	icon_file = os.path.join(config.pkgdatadir, "icons", "ibus-hangul.svg")
-	self.__window.set_icon_from_file(icon_file)
-	self.__window.connect("response", self.on_response, None)
-	self.__window.show()
-
-	ok_button = self.__builder.get_object("button_cancel")
-	ok_button.grab_focus()
+        ok_button = self.__builder.get_object("button_cancel")
+        ok_button.grab_focus()
 
     def run(self):
-	res = self.__window.run()
-	if (res == gtk.RESPONSE_OK):
-	    self.on_ok()
-	self.__window.destroy()
+        res = self.__window.run()
+        if (res == Gtk.ResponseType.OK):
+            self.on_ok()
+        self.__window.destroy()
 
     def apply(self):
-	model = self.__hangul_keyboard.get_model()
-	i = self.__hangul_keyboard.get_active()
-	self.__write("HangulKeyboard", model[i][1])
+        model = self.__hangul_keyboard.get_model()
+        i = self.__hangul_keyboard.get_active()
+        self.__write("HangulKeyboard", GLib.Variant.new_string(model[i][1]))
 
         word_commit = self.__word_commit.get_active()
-        self.__write("WordCommit", word_commit)
-
-	model = self.__hanja_key_list.get_model()
-	str = ""
-	iter = model.get_iter_first()
-	while iter:
-	    if len(str) > 0:
-		str += ","
-		str += model.get_value(iter, 0)
-	    else:
-		str += model.get_value(iter, 0)
-	    iter = model.iter_next(iter)
-	self.__write("HanjaKeys", str)
+        self.__write("WordCommit", GLib.Variant.new_boolean(word_commit))
+
+        auto_reorder = self.__auto_reorder.get_active()
+        self.__write("AutoReorder", GLib.Variant.new_boolean(auto_reorder))
+
+        model = self.__hanja_key_list.get_model()
+        str = ""
+        iter = model.get_iter_first()
+        while iter:
+            if len(str) > 0:
+                str += ","
+                str += model.get_value(iter, 0)
+            else:
+                str += model.get_value(iter, 0)
+            iter = model.iter_next(iter)
+        self.__write("HanjaKeys", GLib.Variant.new_string(str))
 
     def on_response(self, widget, id, data = None):
-	if id == gtk.RESPONSE_APPLY:
-	    self.apply()
-	    widget.emit_stop_by_name("response")
-	if id == gtk.RESPONSE_NONE:
-	    widget.emit_stop_by_name("response")
+        if id == Gtk.ResponseType.APPLY:
+            self.apply()
+            widget.emit_stop_by_name("response")
+        if id == Gtk.ResponseType.NONE:
+            widget.emit_stop_by_name("response")
 
     def on_ok(self):
-	self.apply()
+        self.apply()
 
     def on_hanja_key_add(self, widget, data = None):
-	dialog = KeyCaptureDialog(_("Select Hanja key"), self.__window)
-	res = dialog.run()
-	if res == gtk.RESPONSE_OK:
-	    key_str = dialog.get_key_string()
-	    if len(key_str) > 0:
-		model = self.__hanja_key_list.get_model()
-		iter = model.get_iter_first()
-		while iter:
-		    str = model.get_value(iter, 0)
-		    if str == key_str:
-			model.remove(iter)
-			break
-		    iter = model.iter_next(iter)
-
-		model.append([key_str])
-	dialog.destroy()
+        dialog = KeyCaptureDialog(_("Select Hanja key"), self.__window)
+        res = dialog.run()
+        if res == Gtk.ResponseType.OK:
+            key_str = dialog.get_key_string()
+            if len(key_str) > 0:
+                model = self.__hanja_key_list.get_model()
+                iter = model.get_iter_first()
+                while iter:
+                    str = model.get_value(iter, 0)
+                    if str == key_str:
+                        model.remove(iter)
+                        break
+                    iter = model.iter_next(iter)
+
+                model.append([key_str])
+        dialog.destroy()
 
     def on_hanja_key_remove(self, widget, data = None):
-	selection = self.__hanja_key_list.get_selection()
-	(model, iter) = selection.get_selected()
-	if model and iter:
-	    model.remove(iter)
+        selection = self.__hanja_key_list.get_selection()
+        (model, iter) = selection.get_selected()
+        if model and iter:
+            model.remove(iter)
 
     def on_value_changed(self, config, section, name, value, data):
-	if section == "engine/Hangul":
-	    if name == "HangulKeyboard":
-		model = self.__hangul_keyboard.get_model()
-		for i in model:
-		    if i[1] == value:
-			self.__hangul_keyboard.set_active(i[2])
-			break
-	    elif name == "HanjaKeys":
-		self.__hanja_key_list_str = value.split(',')
+        if section == "engine/Hangul":
+            if name == "HangulKeyboard":
+                model = self.__hangul_keyboard.get_model()
+                for i in model:
+                    if i[1] == value:
+                        self.__hangul_keyboard.set_active(i[2])
+                        break
+            elif name == "HanjaKeys":
+                self.__hanja_key_list_str = value.split(',')
 
     def __read(self, name, v):
-        return self.__config.get_value("engine/Hangul", name, v)
+        value = self.__config.get_value("engine/Hangul", name)
+        if value is None:
+            return v
+        return value
 
     def __write(self, name, v):
         return self.__config.set_value("engine/Hangul", name, v)
@@ -194,14 +203,13 @@ if __name__ == "__main__":
     locale.bindtextdomain(config.gettext_package, config.localedir)
     locale.bind_textdomain_codeset(config.gettext_package, "UTF-8")
 
-    try:
-        bus = ibus.Bus()
-    except:
+    bus = IBus.Bus()
+    if bus.is_connected():
+        Setup(bus).run()
+    else:
         message = _("IBus daemon is not running.\nHangul engine settings cannot be saved.")
-        dialog = gtk.MessageDialog(type = gtk.MESSAGE_ERROR,
-                                   buttons = gtk.BUTTONS_CLOSE,
+        dialog = Gtk.MessageDialog(type = Gtk.MessageType.ERROR,
+                                   buttons = Gtk.ButtonsType.CLOSE,
                                    message_format = message)
         dialog.run()
         sys.exit(1)
-
-    Setup(bus).run()
diff --git a/src/hangul.xml.in.in b/src/hangul.xml.in.in
index c175437..71f9043 100644
--- a/src/hangul.xml.in.in
+++ b/src/hangul.xml.in.in
@@ -18,7 +18,7 @@
 			<author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
 			<icon>ibus-hangul</icon>
 			<layout>us</layout>
-			<longname>Korean</longname>
+			<longname>Hangul</longname>
 			<description>Korean Input Method</description>
 			<rank>99</rank>
 			<symbol>&#xD55C;</symbol>