Skip to content

Instantly share code, notes, and snippets.

@lidaobing
Last active June 11, 2019 16:44
Show Gist options
  • Select an option

  • Save lidaobing/407dfeae98a88114e60679a81c154cd1 to your computer and use it in GitHub Desktop.

Select an option

Save lidaobing/407dfeae98a88114e60679a81c154cd1 to your computer and use it in GitHub Desktop.
diff --git a/wrapper/ibus/setup/main.py b/wrapper/ibus/setup/main.py
index e20a3a5..396c514 100644
--- a/wrapper/ibus/setup/main.py
+++ b/wrapper/ibus/setup/main.py
@@ -39,10 +39,12 @@ import os
from os import path
try:
import gtk
+ import glib
except ImportError:
from gi import require_version as gi_require_version
gi_require_version('Gtk', '3.0')
from gi.repository import Gtk as gtk
+ from gi.repository import GLib as glib
try:
import ibus
except ImportError:
@@ -63,25 +65,33 @@ class Logger:
def pr(message):
print >> sys.stderr, message
+
class Option(object):
"""Option serves as an interface of ibus.config
it is used to synchronize the configuration with setting on user interface
"""
config = ibus.Bus().get_config()
+ __wrappers = {
+ type(True): glib.Variant.new_boolean,
+ type(1): glib.Variant.new_int32,
+ type('str'): glib.Variant.new_string,
+ type([]): glib.Variant.new_strv,
+ }
def __init__(self, name, default):
self.name = name
self.default = default
+ self.__wrap = self.__wrappers[type(self.default)]
def read(self):
section, key = self.__get_config_name()
- return self.config.get_value(section, key, self.default)
+ wrapped = self.config.get_value(section, key)
+ return self.default if wrapped is None else wrapped.unpack()
def write(self, v):
section, key = self.__get_config_name()
- return self.config.set_value(section, key, type(self.default)(v))
-
+ return self.config.set_value(section, key, self.__wrap(v))
def __get_config_name(self):
keys = self.name.rsplit(SEPARATOR ,1)
@hosiet
Copy link
Copy Markdown

hosiet commented Jun 11, 2019

I guess we also need to add gi_require_version('GLib', '2.0') before importing it from gi.repository.

@lidaobing
Copy link
Copy Markdown
Author

lidaobing commented Jun 11, 2019 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment