summaryrefslogtreecommitdiffstats
path: root/setup/main.py
diff options
context:
space:
mode:
authorHuang Peng <shawn.p.huang@gmail.com>2008-08-06 13:59:55 +0800
committerHuang Peng <shawn.p.huang@gmail.com>2008-08-06 13:59:55 +0800
commit26a9f1aa0cc1c74304bce2a3e35055e5933666b5 (patch)
tree0343c09fce14bbf2bb5ea6d6ac0e2d73f9aa8bc1 /setup/main.py
parent2fad828d8e377597da641f71bd58108c0360d8e5 (diff)
downloadibus-26a9f1aa0cc1c74304bce2a3e35055e5933666b5.tar.gz
ibus-26a9f1aa0cc1c74304bce2a3e35055e5933666b5.tar.xz
ibus-26a9f1aa0cc1c74304bce2a3e35055e5933666b5.zip
Scale icon size.
Diffstat (limited to 'setup/main.py')
-rw-r--r--setup/main.py49
1 files changed, 26 insertions, 23 deletions
diff --git a/setup/main.py b/setup/main.py
index af65d1c..f161366 100644
--- a/setup/main.py
+++ b/setup/main.py
@@ -180,6 +180,25 @@ class Setup(object):
# set new value
model.set(iter, COLUMN_PRELOAD, data[DATA_PRELOAD])
+ def __load_icon(self, icon, icon_size):
+ pixbuf = None
+ try:
+ pixbuf = gdk.pixbuf_new_from_file(icon)
+ w, h = pixbuf.get_width(), pixbuf.get_height()
+ rate = max(w, h) / float(icon_size)
+ w = int(w / rate)
+ h = int(h / rate)
+ pixbuf = pixbuf.scale_simple(w, h, gdk.INTERP_BILINEAR)
+ except:
+ pass
+ if pixbuf == None:
+ try:
+ theme = gtk.icon_theme_get_default()
+ pixbuf = theme.load_icon(icon, icon_size, 0)
+ except:
+ pass
+ return pixbuf
+
def __create_model(self):
# create tree store
model = gtk.TreeStore(
@@ -200,6 +219,12 @@ class Setup(object):
keys = langs.keys()
keys.sort()
+
+ icon_size = gtk.icon_size_lookup(gtk.ICON_SIZE_LARGE_TOOLBAR)[0]
+ pixbuf_missing = self.__load_icon("engine-default", icon_size)
+ if pixbuf_missing == None:
+ pixbuf_missing = self.__load_icon("gtk-missing-image", icon_size)
+
for key in keys:
iter = model.append(None)
model.set(iter,
@@ -211,33 +236,11 @@ class Setup(object):
COLUMN_DATA, None)
langs[key].sort()
- icon_size = gtk.icon_size_lookup(gtk.ICON_SIZE_LARGE_TOOLBAR)[0]
- theme = gtk.icon_theme_get_default()
- pixbuf_missing = None
- try:
- pixbuf_missing = theme.load_icon("engine-default", icon_size, 0)
- except:
- pass
- try:
- if pixbuf_missing == None:
- pixbuf_missing = theme.load_icon("gtk-missing-image", icon_size, 0)
- except:
- pass
-
for name, lang, icon, author, credits, _exec, started in langs[key]:
child_iter = model.append(iter)
is_preload = "%s:%s" % (lang, name) in self.__preload_engines
- pixbuf = None
- try:
- pixbuf = gdk.pixbuf_new_from_file(icon)
- except:
- pass
- try:
- if pixbuf == None:
- pixbuf = theme.load_icon(icon, icon_size, 0)
- except:
- pass
+ pixbuf = self.__load_icon(icon, icon_size)
if pixbuf == None:
pixbuf = pixbuf_missing