summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfujiwarat <takao.fujiwara1@gmail.com>2013-06-19 12:18:36 +0900
committerfujiwarat <takao.fujiwara1@gmail.com>2013-06-19 12:18:36 +0900
commit579229e2cfe9c13396abaa7adc3e5a963bfd726a (patch)
tree7aad1694cf712faaba5b324ecf2966900e8dfa3d
parent75801eaa24eef877d5b5cdda7363094f1b75ced8 (diff)
downloadibus-anthy-579229e2cfe9c13396abaa7adc3e5a963bfd726a.tar.gz
Fixed ibus-engine-anthy --xml without display
-rw-r--r--engine/engine.py19
-rw-r--r--engine/main.py5
-rw-r--r--engine/thumb.py29
-rw-r--r--setup/main.py5
4 files changed, 42 insertions, 16 deletions
diff --git a/engine/engine.py b/engine/engine.py
index 8a56e8f..c230a9f 100644
--- a/engine/engine.py
+++ b/engine/engine.py
@@ -37,12 +37,6 @@ except:
from gi.repository import GLib
from gi.repository import IBus
-try:
- from gi.repository import Gtk
- clipboard_get = Gtk.Clipboard.get
-except ImportError:
- clipboard_get = lambda a : None
-
from gi.repository import Anthy
NTH_UNCONVERTED_CANDIDATE = Anthy.NTH_UNCONVERTED_CANDIDATE
NTH_KATAKANA_CANDIDATE = Anthy.NTH_KATAKANA_CANDIDATE
@@ -2322,6 +2316,19 @@ class Engine(IBus.EngineSimple):
# if user has inputed some chars
return False
+ # Move importing Gtk into Engine from the header
+ # because ibus-engine-anthy --xml does not requre to open X.
+ try:
+ from gi.repository import Gtk
+ clipboard_get = Gtk.Clipboard.get
+ except ImportError:
+ clipboard_get = lambda a : None
+ except RuntimeError:
+ # Do we support the engine without display?
+ print >> sys.stderr, "Gtk couldn't be initialized"
+ print >> sys.stderr, 'Could not open display'
+ clipboard_get = lambda a : None
+
# Use Gtk.Clipboard.request_text() instead of
# Gtk.Clipboard.wait_for_text() because DBus is timed out.
clipboard = clipboard_get ('PRIMARY')
diff --git a/engine/main.py b/engine/main.py
index eea430b..2816df1 100644
--- a/engine/main.py
+++ b/engine/main.py
@@ -29,6 +29,11 @@ import locale
import xml.dom.minidom
from gi.repository import GLib
+
+# set_prgname before importing factory to show the name in warning
+# messages when import modules are failed. E.g. Gtk.
+GLib.set_prgname('ibus-engine-anthy')
+
from gi.repository import IBus
import _config as config
diff --git a/engine/thumb.py b/engine/thumb.py
index 24b2698..57810e8 100644
--- a/engine/thumb.py
+++ b/engine/thumb.py
@@ -30,16 +30,6 @@ __all__ = (
from gi.repository import GLib
from gi.repository import IBus
-try:
- from gi.repository import Gdk
- get_default_root_window = Gdk.get_default_root_window
- property_get = Gdk.property_get
- intern = Gdk.Atom.intern
-except ImportError:
- get_default_root_window = lambda : None
- property_get = lambda : None
- intern = lambda : None
-
import segment
_THUMB_BASIC_METHOD = 'base'
@@ -391,6 +381,25 @@ class ThumbShiftKeyboard:
def __get_xkb_layout(self):
# Until Gdk.property_get is fixed
'''
+ # Move importing Gdk into ThumbShiftKeyboard from the header
+ # because ibus-engine-anthy --xml does not requre to open X.
+ try:
+ from gi.repository import Gdk
+ get_default_root_window = Gdk.get_default_root_window
+ property_get = Gdk.property_get
+ intern = Gdk.Atom.intern
+ except ImportError:
+ get_default_root_window = lambda : None
+ property_get = lambda : None
+ intern = lambda : None
+ except RuntimeError:
+ # Do we support the engine without display?
+ print >> sys.stderr, "Gdk couldn't be initialized"
+ print >> sys.stderr, 'Could not open display'
+ get_default_root_window = lambda : None
+ property_get = lambda : None
+ intern = lambda : None
+
root_window = get_default_root_window()
if not root_window:
return 0
diff --git a/setup/main.py b/setup/main.py
index 056807b..7562e46 100644
--- a/setup/main.py
+++ b/setup/main.py
@@ -34,6 +34,11 @@ except:
getpreferredencoding = None
from gi.repository import GLib
+
+# set_prgname before importing other modules to show the name in warning
+# messages when import modules are failed. E.g. Gtk.
+GLib.set_prgname('ibus-setup-anthy')
+
from gi.repository import Gtk
from gi.repository import Gdk
from gi.repository import GdkX11