[ibus-anthy] Updated ibus-anthy-HEAD.patch to enable property icon.
Takao Fujiwara
fujiwara at fedoraproject.org
Thu Feb 27 10:31:12 UTC 2014
commit 1f83a3f51973b4016c28f5db7da2a5f332654adc
Author: Takao Fujiwara <tfujiwar at redhat.com>
Date: Thu Feb 27 19:31:25 2014 +0900
Updated ibus-anthy-HEAD.patch to enable property icon.
ibus-anthy-HEAD.patch | 2409 +++++++++++++++++++++++++++++++++++++++++++++++++
ibus-anthy.spec | 16 +-
2 files changed, 2423 insertions(+), 2 deletions(-)
---
diff --git a/ibus-anthy-HEAD.patch b/ibus-anthy-HEAD.patch
index 8b13789..c12862d 100644
--- a/ibus-anthy-HEAD.patch
+++ b/ibus-anthy-HEAD.patch
@@ -1 +1,2410 @@
+From ffd69683443c56910e6db6d4526992a92c222275 Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1 at gmail.com>
+Date: Tue, 18 Feb 2014 17:36:45 +0900
+Subject: [PATCH] Fixed deprecated GtkHBox, GtkVBox and GtkStock since GTK+
+ 3.10.
+
+---
+ po/ibus-anthy.pot | 154 +++++++++++++++++++++-----------
+ setup/python2/main.py | 14 +--
+ setup/python2/setup.ui | 237 +++++++++++++++++++++++++------------------------
+ setup/python3/main.py | 10 +--
+ setup/python3/setup.ui | 237 +++++++++++++++++++++++++------------------------
+ 5 files changed, 361 insertions(+), 291 deletions(-)
+
+diff --git a/setup/python2/main.py b/setup/python2/main.py
+index 98486ad..7c403b8 100644
+--- a/setup/python2/main.py
++++ b/setup/python2/main.py
+@@ -4,8 +4,8 @@
+ #
+ # Copyright (c) 2007-2008 Peng Huang <shawn.p.huang at gmail.com>
+ # Copyright (c) 2009 Hideaki ABE <abe.sendai at gmail.com>
+-# Copyright (c) 2010-2013 Takao Fujiwara <takao.fujiwara1 at gmail.com>
+-# Copyright (c) 2007-2013 Red Hat, Inc.
++# Copyright (c) 2010-2014 Takao Fujiwara <takao.fujiwara1 at gmail.com>
++# Copyright (c) 2007-2014 Red Hat, Inc.
+ #
+ # This program is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+@@ -1416,14 +1416,14 @@ class AnthySetup(object):
+ dlg = Gtk.FileChooserDialog(title=_("Open Dictionary File"),
+ parent=self.__builder.get_object('main'),
+ action=Gtk.FileChooserAction.OPEN,
+- buttons=(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
+- Gtk.STOCK_OPEN, Gtk.ResponseType.OK))
++ buttons=(_("_Cancel"), Gtk.ResponseType.CANCEL,
++ _("_Open"), Gtk.ResponseType.OK))
+ if Gtk.Buildable.get_name(widget) == 'dict:btn_edit':
+ dlg = Gtk.Dialog(title=_("Edit Dictionary File"),
+ parent=self.__builder.get_object('main'),
+ flags=Gtk.DialogFlags.MODAL,
+- buttons=(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
+- Gtk.STOCK_OK, Gtk.ResponseType.OK))
++ buttons=(_("_Cancel"), Gtk.ResponseType.CANCEL,
++ _("_OK"), Gtk.ResponseType.OK))
+
+ vbox = self.__builder.get_object('dict:add_extra_vbox')
+ if Gtk.Buildable.get_name(widget) == 'dict:btn_add':
+@@ -1518,7 +1518,7 @@ class AnthySetup(object):
+ dlg = Gtk.Dialog(title=_("View Dictionary File"),
+ parent=self.__builder.get_object('main'),
+ flags=Gtk.DialogFlags.MODAL,
+- buttons=(Gtk.STOCK_OK, Gtk.ResponseType.OK))
++ buttons=(_("_OK"), Gtk.ResponseType.OK))
+ buffer = Gtk.TextBuffer()
+ buffer.set_text (lines)
+ text_view = Gtk.TextView.new_with_buffer(buffer)
+diff --git a/setup/python2/setup.ui b/setup/python2/setup.ui
+index d9ec626..dc5e7e1 100644
+--- a/setup/python2/setup.ui
++++ b/setup/python2/setup.ui
+@@ -195,16 +195,18 @@
+ <property name="type_hint">dialog</property>
+ <signal handler="on_main_delete" name="delete_event"/>
+ <child internal-child="vbox">
+- <object class="GtkVBox" id="dialog-vbox1">
++ <object class="GtkBox" id="dialog-vbox1">
+ <property name="visible">True</property>
++ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkNotebook" id="notebook1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="border_width">6</property>
+ <child>
+- <object class="GtkVBox" id="vbox1">
++ <object class="GtkBox" id="vbox1">
+ <property name="visible">True</property>
++ <property name="orientation">vertical</property>
+ <property name="border_width">8</property>
+ <child>
+ <object class="GtkFrame" id="frame11">
+@@ -355,8 +357,9 @@
+ <property name="bottom_padding">8</property>
+ <property name="left_padding">12</property>
+ <child>
+- <object class="GtkVBox" id="vbox12">
++ <object class="GtkBox" id="vbox12">
+ <property name="visible">True</property>
++ <property name="orientation">vertical</property>
+ <property name="border_width">4</property>
+ <property name="spacing">4</property>
+ <child>
+@@ -409,8 +412,9 @@
+ </packing>
+ </child>
+ <child>
+- <object class="GtkVBox" id="vbox2">
++ <object class="GtkBox" id="vbox2">
+ <property name="visible">True</property>
++ <property name="orientation">vertical</property>
+ <property name="border_width">8</property>
+ <child>
+ <object class="GtkFrame" id="frame21">
+@@ -637,8 +641,9 @@
+ <property name="column_spacing">8</property>
+ <property name="row_spacing">4</property>
+ <child>
+- <object class="GtkHBox" id="hbox4">
++ <object class="GtkBox" id="hbox4">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="spacing">8</property>
+ <child>
+ <object class="GtkLabel" id="label109">
+@@ -773,13 +778,15 @@
+ </packing>
+ </child>
+ <child>
+- <object class="GtkVBox" id="vbox3">
++ <object class="GtkBox" id="vbox3">
+ <property name="visible">True</property>
++ <property name="orientation">vertical</property>
+ <property name="border_width">4</property>
+ <property name="spacing">4</property>
+ <child>
+- <object class="GtkHBox" id="hbox1">
++ <object class="GtkBox" id="hbox1">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="spacing">8</property>
+ <child>
+ <object class="GtkLabel" id="label21">
+@@ -828,6 +835,7 @@
+ <property name="hscrollbar_policy">automatic</property>
+ <property name="vscrollbar_policy">automatic</property>
+ <property name="shadow_type">in</property>
++ <property name="height_request">300</property>
+ <child>
+ <object class="GtkTreeView" id="shortcut">
+ <property name="visible">True</property>
+@@ -843,53 +851,20 @@
+ </packing>
+ </child>
+ <child>
+- <object class="GtkHButtonBox" id="hbuttonbox31">
++ <object class="GtkButtonBox" id="hbuttonbox31">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="spacing">4</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="btn_default">
++ <property name="label" translatable="yes">De_fault</property>
++ <property name="use_underline">True</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+ <signal handler="on_btn_default_clicked" name="clicked"/>
+- <child>
+- <object class="GtkAlignment" id="alignment31">
+- <property name="visible">True</property>
+- <property name="xscale">0</property>
+- <property name="yscale">0</property>
+- <child>
+- <object class="GtkHBox" id="hbox5">
+- <property name="visible">True</property>
+- <property name="spacing">2</property>
+- <child>
+- <object class="GtkImage" id="image1">
+- <property name="visible">True</property>
+- <property name="stock">gtk-undo</property>
+- </object>
+- <packing>
+- <property name="expand">False</property>
+- <property name="fill">False</property>
+- <property name="position">0</property>
+- </packing>
+- </child>
+- <child>
+- <object class="GtkLabel" id="label27">
+- <property name="visible">True</property>
+- <property name="label" translatable="yes">De_fault</property>
+- <property name="use_underline">True</property>
+- </object>
+- <packing>
+- <property name="expand">False</property>
+- <property name="fill">False</property>
+- <property name="position">1</property>
+- </packing>
+- </child>
+- </object>
+- </child>
+- </object>
+- </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+@@ -899,12 +874,12 @@
+ </child>
+ <child>
+ <object class="GtkButton" id="btn_edit">
+- <property name="label">gtk-edit</property>
++ <property name="label" translatable="yes">_Edit</property>
++ <property name="use_underline">True</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+- <property name="use_stock">True</property>
+ <signal handler="on_btn_edit_clicked" name="clicked"/>
+ </object>
+ <packing>
+@@ -1352,8 +1327,9 @@
+ </packing>
+ </child>
+ <child>
+- <object class="GtkHBox" id="hbox51">
++ <object class="GtkBox" id="hbox51">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="spacing">8</property>
+ <child>
+ <object class="GtkLabel" id="label30">
+@@ -1393,13 +1369,14 @@
+ </packing>
+ </child>
+ <child>
+- <object class="GtkHBox" id="hbox52">
++ <object class="GtkBox" id="hbox52">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="spacing">8</property>
+ <child>
+ <object class="GtkImage" id="image2">
+ <property name="visible">True</property>
+- <property name="stock">gtk-dialog-info</property>
++ <property name="icon_name">dialog-information</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+@@ -1429,8 +1406,9 @@
+ </packing>
+ </child>
+ <child>
+- <object class="GtkHBox" id="hbox11">
++ <object class="GtkBox" id="hbox11">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="spacing">8</property>
+ <child>
+ <object class="GtkLabel" id="label33">
+@@ -1471,13 +1449,14 @@
+ </packing>
+ </child>
+ <child>
+- <object class="GtkHBox" id="hbox53">
++ <object class="GtkBox" id="hbox53">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="spacing">8</property>
+ <child>
+ <object class="GtkImage" id="image4">
+ <property name="visible">True</property>
+- <property name="stock">gtk-dialog-info</property>
++ <property name="icon_name">dialog-information</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+@@ -1605,8 +1584,9 @@
+ </packing>
+ </child>
+ <child>
+- <object class="GtkVBox" id="vbox6">
++ <object class="GtkBox" id="vbox6">
+ <property name="visible">True</property>
++ <property name="orientation">vertical</property>
+ <property name="border_width">8</property>
+ <property name="spacing">4</property>
+ <child>
+@@ -1620,8 +1600,9 @@
+ <property name="top_padding">4</property>
+ <property name="left_padding">0</property>
+ <child>
+- <object class="GtkVBox" id="vbox61">
++ <object class="GtkBox" id="vbox61">
+ <property name="visible">True</property>
++ <property name="orientation">vertical</property>
+ <property name="border_width">4</property>
+ <property name="spacing">4</property>
+ <child>
+@@ -1777,8 +1758,9 @@
+ <property name="top_padding">4</property>
+ <property name="left_padding">0</property>
+ <child>
+- <object class="GtkVBox" id="vbox71">
++ <object class="GtkBox" id="vbox71">
+ <property name="visible">True</property>
++ <property name="orientation">vertical</property>
+ <property name="border_width">4</property>
+ <property name="spacing">4</property>
+ <child>
+@@ -1801,8 +1783,9 @@
+ </packing>
+ </child>
+ <child>
+- <object class="GtkHButtonBox" id="hbuttonbox71">
++ <object class="GtkButtonBox" id="hbuttonbox71">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="spacing">4</property>
+ <property name="layout_style">end</property>
+ <child>
+@@ -1823,12 +1806,12 @@
+ </child>
+ <child>
+ <object class="GtkButton" id="dict:btn_add">
+- <property name="label">gtk-add</property>
++ <property name="label" translatable="yes">_Add</property>
++ <property name="use_underline">True</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+- <property name="use_stock">True</property>
+ <signal handler="on_btn_dict_add_clicked" name="clicked"/>
+ </object>
+ <packing>
+@@ -1839,12 +1822,12 @@
+ </child>
+ <child>
+ <object class="GtkButton" id="dict:btn_edit">
+- <property name="label">gtk-edit</property>
++ <property name="label" translatable="yes">_Edit</property>
++ <property name="use_underline">True</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+- <property name="use_stock">True</property>
+ <signal handler="on_btn_dict_add_clicked" name="clicked"/>
+ </object>
+ <packing>
+@@ -1855,12 +1838,12 @@
+ </child>
+ <child>
+ <object class="GtkButton" id="dict:btn_delete">
+- <property name="label">gtk-delete</property>
++ <property name="label" translatable="yes">_Delete</property>
++ <property name="use_underline">True</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+- <property name="use_stock">True</property>
+ <signal handler="on_btn_dict_delete_clicked" name="clicked"/>
+ </object>
+ <packing>
+@@ -1877,19 +1860,20 @@
+ </packing>
+ </child>
+ <child>
+- <object class="GtkHButtonBox" id="hbuttonbox72">
++ <object class="GtkButtonBox" id="hbuttonbox72">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="spacing">4</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="dict:btn_up">
+- <property name="label">gtk-go-up</property>
++ <property name="label" translatable="yes">_Up</property>
++ <property name="use_underline">True</property>
+ <property name="tooltip_text" translatable="yes">You can change the order on language bar</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+- <property name="use_stock">True</property>
+ <signal handler="on_btn_dict_order_clicked" name="clicked"/>
+ </object>
+ <packing>
+@@ -1900,13 +1884,13 @@
+ </child>
+ <child>
+ <object class="GtkButton" id="dict:btn_down">
+- <property name="label">gtk-go-down</property>
++ <property name="label" translatable="yes">_Down</property>
++ <property name="use_underline">True</property>
+ <property name="tooltip_text" translatable="yes">You can change the order on language bar</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+- <property name="use_stock">True</property>
+ <signal handler="on_btn_dict_order_clicked" name="clicked"/>
+ </object>
+ <packing>
+@@ -1953,7 +1937,7 @@
+ </packing>
+ </child>
+ <child>
+- <object class="GtkVBox" id="about_vbox">
++ <object class="GtkBox" id="about_vbox">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <property name="border_width">10</property>
+@@ -1979,18 +1963,19 @@
+ </packing>
+ </child>
+ <child internal-child="action_area">
+- <object class="GtkHButtonBox" id="dialog-action_area1">
++ <object class="GtkButtonBox" id="dialog-action_area1">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="btn_apply">
+- <property name="label">gtk-apply</property>
++ <property name="label" translatable="yes">_Apply</property>
++ <property name="use_underline">True</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+- <property name="use_stock">True</property>
+ <signal handler="on_btn_apply_clicked" name="clicked"/>
+ </object>
+ <packing>
+@@ -2001,12 +1986,12 @@
+ </child>
+ <child>
+ <object class="GtkButton" id="btn_cancel">
+- <property name="label">gtk-cancel</property>
++ <property name="label" translatable="yes">_Cancel</property>
++ <property name="use_underline">True</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+- <property name="use_stock">True</property>
+ <signal handler="on_btn_cancel_clicked" name="clicked"/>
+ </object>
+ <packing>
+@@ -2017,12 +2002,12 @@
+ </child>
+ <child>
+ <object class="GtkButton" id="btn_ok">
+- <property name="label">gtk-ok</property>
++ <property name="label" translatable="yes">_OK</property>
++ <property name="use_underline">True</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+- <property name="use_stock">True</property>
+ <signal handler="on_btn_ok_clicked" name="clicked"/>
+ </object>
+ <packing>
+@@ -2053,11 +2038,13 @@
+ <property name="modal">True</property>
+ <property name="type_hint">dialog</property>
+ <child internal-child="vbox">
+- <object class="GtkVBox" id="dialog-vbox2">
++ <object class="GtkBox" id="dialog-vbox2">
+ <property name="visible">True</property>
++ <property name="orientation">vertical</property>
+ <child>
+- <object class="GtkVBox" id="vbox101">
++ <object class="GtkBox" id="vbox101">
+ <property name="visible">True</property>
++ <property name="orientation">vertical</property>
+ <property name="border_width">5</property>
+ <property name="spacing">6</property>
+ <child>
+@@ -2068,6 +2055,7 @@
+ <property name="hscrollbar_policy">automatic</property>
+ <property name="vscrollbar_policy">automatic</property>
+ <property name="shadow_type">in</property>
++ <property name="height_request">150</property>
+ <child>
+ <object class="GtkTreeView" id="es:treeview">
+ <property name="visible">True</property>
+@@ -2081,8 +2069,9 @@
+ </packing>
+ </child>
+ <child>
+- <object class="GtkHBox" id="hbox101">
++ <object class="GtkBox" id="hbox101">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="spacing">8</property>
+ <child>
+ <object class="GtkLabel" id="label1001">
+@@ -2128,8 +2117,9 @@
+ </packing>
+ </child>
+ <child>
+- <object class="GtkHBox" id="hbox102">
++ <object class="GtkBox" id="hbox102">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="spacing">8</property>
+ <child>
+ <object class="GtkLabel" id="label1002">
+@@ -2143,8 +2133,9 @@
+ </packing>
+ </child>
+ <child>
+- <object class="GtkHBox" id="hbox103">
++ <object class="GtkBox" id="hbox103">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <child>
+ <object class="GtkCheckButton" id="es:checkbutton_alt">
+ <property name="label" translatable="yes">A_lternate</property>
+@@ -2197,19 +2188,20 @@
+ </packing>
+ </child>
+ <child>
+- <object class="GtkHButtonBox" id="hbuttonbox101">
++ <object class="GtkButtonBox" id="hbuttonbox101">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="spacing">6</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="es:button_add">
+- <property name="label">gtk-add</property>
++ <property name="label" translatable="yes">_Add</property>
++ <property name="use_underline">True</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+- <property name="use_stock">True</property>
+ <signal handler="on_es_button_add_clicked" name="clicked"/>
+ </object>
+ <packing>
+@@ -2220,12 +2212,12 @@
+ </child>
+ <child>
+ <object class="GtkButton" id="es:button_refresh">
+- <property name="label">gtk-refresh</property>
++ <property name="label" translatable="yes">_Refresh</property>
++ <property name="use_underline">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+- <property name="use_stock">True</property>
+ <signal handler="on_es_button_refresh_clicked" name="clicked"/>
+ </object>
+ <packing>
+@@ -2236,13 +2228,13 @@
+ </child>
+ <child>
+ <object class="GtkButton" id="es:button_del">
+- <property name="label">gtk-delete</property>
++ <property name="label" translatable="yes">_Delete</property>
++ <property name="use_underline">True</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+- <property name="use_stock">True</property>
+ <signal handler="on_es_button_del_clicked" name="clicked"/>
+ </object>
+ <packing>
+@@ -2264,17 +2256,18 @@
+ </packing>
+ </child>
+ <child internal-child="action_area">
+- <object class="GtkHButtonBox" id="dialog-action_area2">
++ <object class="GtkButtonBox" id="dialog-action_area2">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="cancelbutton101">
+- <property name="label">gtk-cancel</property>
++ <property name="label" translatable="yes">_Cancel</property>
++ <property name="use_underline">True</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+- <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+@@ -2284,12 +2277,12 @@
+ </child>
+ <child>
+ <object class="GtkButton" id="okbutton101">
+- <property name="label">gtk-ok</property>
++ <property name="label" translatable="yes">_OK</property>
++ <property name="use_underline">True</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+- <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+@@ -2318,13 +2311,15 @@
+ <property name="modal">True</property>
+ <property name="type_hint">dialog</property>
+ <child internal-child="vbox">
+- <object class="GtkVBox" id="dialog-vbox3">
++ <object class="GtkBox" id="dialog-vbox3">
+ <property name="visible">True</property>
++ <property name="orientation">vertical</property>
+ <property name="border_width">5</property>
+ <property name="spacing">6</property>
+ <child>
+- <object class="GtkHBox" id="hbox_for_combobox_custom_key_table">
++ <object class="GtkBox" id="hbox_for_combobox_custom_key_table">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="border_width">5</property>
+ <property name="spacing">6</property>
+ <child>
+@@ -2359,8 +2354,9 @@
+ </packing>
+ </child>
+ <child>
+- <object class="GtkHBox" id="hbox301">
++ <object class="GtkBox" id="hbox301">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="border_width">5</property>
+ <property name="spacing">6</property>
+ <child>
+@@ -2371,6 +2367,8 @@
+ <property name="hscrollbar_policy">automatic</property>
+ <property name="vscrollbar_policy">automatic</property>
+ <property name="shadow_type">in</property>
++ <property name="width_request">250</property>
++ <property name="height_request">300</property>
+ <child>
+ <object class="GtkTreeView" id="treeview_custom_key_table">
+ <property name="visible">True</property>
+@@ -2383,8 +2381,9 @@
+ </packing>
+ </child>
+ <child>
+- <object class="GtkVButtonBox" id="vbutton301">
++ <object class="GtkButtonBox" id="vbutton301">
+ <property name="visible">True</property>
++ <property name="orientation">vertical</property>
+ <property name="layout_style">start</property>
+ <property name="spacing">6</property>
+ <child>
+@@ -2470,12 +2469,12 @@
+ <child>
+ <object class="GtkButton" id="button_add_custom_key">
+ <property name="visible">True</property>
+- <property name="label">gtk-add</property>
++ <property name="label" translatable="yes">_Add</property>
++ <property name="use_underline">True</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+- <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="position">8</property>
+@@ -2484,12 +2483,12 @@
+ <child>
+ <object class="GtkButton" id="button_remove_custom_key">
+ <property name="visible">True</property>
+- <property name="label">gtk-remove</property>
++ <property name="label" translatable="yes">_Remove</property>
++ <property name="use_underline">True</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+- <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="position">9</property>
+@@ -2508,16 +2507,17 @@
+ </packing>
+ </child>
+ <child internal-child="action_area">
+- <object class="GtkHButtonBox" id="dialog-action_area3">
++ <object class="GtkButtonBox" id="dialog-action_area3">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="closebutton301">
+ <property name="visible">True</property>
+- <property name="label">gtk-close</property>
++ <property name="label" translatable="yes">_Close</property>
++ <property name="use_underline">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+- <property name="use_stock">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+@@ -2551,12 +2551,14 @@
+ <property name="text">Confirmation</property>
+ <property name="secondary_text">You are about to close the setup dialog, is that OK?</property>
+ <child internal-child="vbox">
+- <object class="GtkVBox" id="dialog-vbox6">
++ <object class="GtkBox" id="dialog-vbox6">
+ <property name="visible">True</property>
++ <property name="orientation">vertical</property>
+ <property name="spacing">2</property>
+ <child internal-child="action_area">
+- <object class="GtkHButtonBox" id="dialog-action_area6">
++ <object class="GtkButtonBox" id="dialog-action_area6">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="layout_style">end</property>
+ <child>
+ <placeholder/>
+@@ -2586,12 +2588,14 @@
+ <property name="text">Notice!</property>
+ <property name="secondary_text">You are about to close the setup dialog without saving your changes, is that OK?</property>
+ <child internal-child="vbox">
+- <object class="GtkVBox" id="dialog-vbox7">
++ <object class="GtkBox" id="dialog-vbox7">
+ <property name="visible">True</property>
++ <property name="orientation">vertical</property>
+ <property name="spacing">2</property>
+ <child internal-child="action_area">
+- <object class="GtkHButtonBox" id="dialog-action_area7">
++ <object class="GtkButtonBox" id="dialog-action_area7">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="layout_style">end</property>
+ <child>
+ <placeholder/>
+@@ -2622,12 +2626,14 @@
+ <signal handler="on_key_input_dialog_key_press_event" name="key_press_event"/>
+ <signal handler="on_key_input_dialog_key_release_event" name="key_release_event"/>
+ <child internal-child="vbox">
+- <object class="GtkVBox" id="dialog-vbox8">
++ <object class="GtkBox" id="dialog-vbox8">
+ <property name="visible">True</property>
++ <property name="orientation">vertical</property>
+ <property name="spacing">2</property>
+ <child internal-child="action_area">
+- <object class="GtkHButtonBox" id="dialog-action_area8">
++ <object class="GtkButtonBox" id="dialog-action_area8">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="layout_style">end</property>
+ <child>
+ <placeholder/>
+@@ -2657,12 +2663,14 @@
+ <property name="text">Invalid keysym</property>
+ <property name="secondary_text">This keysym is not valid</property>
+ <child internal-child="vbox">
+- <object class="GtkVBox" id="dialog-vbox9">
++ <object class="GtkBox" id="dialog-vbox9">
+ <property name="visible">True</property>
++ <property name="orientation">vertical</property>
+ <property name="spacing">2</property>
+ <child internal-child="action_area">
+- <object class="GtkHButtonBox" id="dialog-action_area9">
++ <object class="GtkButtonBox" id="dialog-action_area9">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="layout_style">end</property>
+ <child>
+ <placeholder/>
+@@ -2680,8 +2688,9 @@
+ </object>
+ </child>
+ </object>
+- <object class="GtkVBox" id="dict:add_extra_vbox">
++ <object class="GtkBox" id="dict:add_extra_vbox">
+ <property name="visible">True</property>
++ <property name="orientation">vertical</property>
+ <property name="no_show_all">True</property>
+ <property name="spacing">10</property>
+ <child>
+@@ -2800,8 +2809,8 @@
+ <property name="program-name">IBus-Anthy</property>
+ <property name="copyright">Copyright © 2007–2008 Peng Huang
+ Copyright © 2009 Hideaki ABE
+-Copyright © 2009–2013 Takao Fujiwara
+-Copyright © 2007–2013 Red Hat, Inc.</property>
++Copyright © 2009–2014 Takao Fujiwara
++Copyright © 2007–2014 Red Hat, Inc.</property>
+ <property name="comments" translatable="yes">The Anthy engine for the IBus input platform</property>
+ <property name="license">GPL</property>
+ <property name="website">http://code.google.com/p/ibus/</property>
+diff --git a/setup/python3/main.py b/setup/python3/main.py
+index fec03a6..2073f59 100644
+--- a/setup/python3/main.py
++++ b/setup/python3/main.py
+@@ -1410,14 +1410,14 @@ class AnthySetup(object):
+ dlg = Gtk.FileChooserDialog(title=_("Open Dictionary File"),
+ parent=self.__builder.get_object('main'),
+ action=Gtk.FileChooserAction.OPEN,
+- buttons=(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
+- Gtk.STOCK_OPEN, Gtk.ResponseType.OK))
++ buttons=(_("_Cancel"), Gtk.ResponseType.CANCEL,
++ _("_Open"), Gtk.ResponseType.OK))
+ if Gtk.Buildable.get_name(widget) == 'dict:btn_edit':
+ dlg = Gtk.Dialog(title=_("Edit Dictionary File"),
+ parent=self.__builder.get_object('main'),
+ flags=Gtk.DialogFlags.MODAL,
+- buttons=(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
+- Gtk.STOCK_OK, Gtk.ResponseType.OK))
++ buttons=(_("_Cancel"), Gtk.ResponseType.CANCEL,
++ _("_OK"), Gtk.ResponseType.OK))
+
+ vbox = self.__builder.get_object('dict:add_extra_vbox')
+ if Gtk.Buildable.get_name(widget) == 'dict:btn_add':
+@@ -1512,7 +1512,7 @@ class AnthySetup(object):
+ dlg = Gtk.Dialog(title=_("View Dictionary File"),
+ parent=self.__builder.get_object('main'),
+ flags=Gtk.DialogFlags.MODAL,
+- buttons=(Gtk.STOCK_OK, Gtk.ResponseType.OK))
++ buttons=(_("_OK"), Gtk.ResponseType.OK))
+ buffer = Gtk.TextBuffer()
+ buffer.set_text (lines)
+ text_view = Gtk.TextView.new_with_buffer(buffer)
+diff --git a/setup/python3/setup.ui b/setup/python3/setup.ui
+index d9ec626..dc5e7e1 100644
+--- a/setup/python3/setup.ui
++++ b/setup/python3/setup.ui
+@@ -195,16 +195,18 @@
+ <property name="type_hint">dialog</property>
+ <signal handler="on_main_delete" name="delete_event"/>
+ <child internal-child="vbox">
+- <object class="GtkVBox" id="dialog-vbox1">
++ <object class="GtkBox" id="dialog-vbox1">
+ <property name="visible">True</property>
++ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkNotebook" id="notebook1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="border_width">6</property>
+ <child>
+- <object class="GtkVBox" id="vbox1">
++ <object class="GtkBox" id="vbox1">
+ <property name="visible">True</property>
++ <property name="orientation">vertical</property>
+ <property name="border_width">8</property>
+ <child>
+ <object class="GtkFrame" id="frame11">
+@@ -355,8 +357,9 @@
+ <property name="bottom_padding">8</property>
+ <property name="left_padding">12</property>
+ <child>
+- <object class="GtkVBox" id="vbox12">
++ <object class="GtkBox" id="vbox12">
+ <property name="visible">True</property>
++ <property name="orientation">vertical</property>
+ <property name="border_width">4</property>
+ <property name="spacing">4</property>
+ <child>
+@@ -409,8 +412,9 @@
+ </packing>
+ </child>
+ <child>
+- <object class="GtkVBox" id="vbox2">
++ <object class="GtkBox" id="vbox2">
+ <property name="visible">True</property>
++ <property name="orientation">vertical</property>
+ <property name="border_width">8</property>
+ <child>
+ <object class="GtkFrame" id="frame21">
+@@ -637,8 +641,9 @@
+ <property name="column_spacing">8</property>
+ <property name="row_spacing">4</property>
+ <child>
+- <object class="GtkHBox" id="hbox4">
++ <object class="GtkBox" id="hbox4">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="spacing">8</property>
+ <child>
+ <object class="GtkLabel" id="label109">
+@@ -773,13 +778,15 @@
+ </packing>
+ </child>
+ <child>
+- <object class="GtkVBox" id="vbox3">
++ <object class="GtkBox" id="vbox3">
+ <property name="visible">True</property>
++ <property name="orientation">vertical</property>
+ <property name="border_width">4</property>
+ <property name="spacing">4</property>
+ <child>
+- <object class="GtkHBox" id="hbox1">
++ <object class="GtkBox" id="hbox1">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="spacing">8</property>
+ <child>
+ <object class="GtkLabel" id="label21">
+@@ -828,6 +835,7 @@
+ <property name="hscrollbar_policy">automatic</property>
+ <property name="vscrollbar_policy">automatic</property>
+ <property name="shadow_type">in</property>
++ <property name="height_request">300</property>
+ <child>
+ <object class="GtkTreeView" id="shortcut">
+ <property name="visible">True</property>
+@@ -843,53 +851,20 @@
+ </packing>
+ </child>
+ <child>
+- <object class="GtkHButtonBox" id="hbuttonbox31">
++ <object class="GtkButtonBox" id="hbuttonbox31">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="spacing">4</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="btn_default">
++ <property name="label" translatable="yes">De_fault</property>
++ <property name="use_underline">True</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+ <signal handler="on_btn_default_clicked" name="clicked"/>
+- <child>
+- <object class="GtkAlignment" id="alignment31">
+- <property name="visible">True</property>
+- <property name="xscale">0</property>
+- <property name="yscale">0</property>
+- <child>
+- <object class="GtkHBox" id="hbox5">
+- <property name="visible">True</property>
+- <property name="spacing">2</property>
+- <child>
+- <object class="GtkImage" id="image1">
+- <property name="visible">True</property>
+- <property name="stock">gtk-undo</property>
+- </object>
+- <packing>
+- <property name="expand">False</property>
+- <property name="fill">False</property>
+- <property name="position">0</property>
+- </packing>
+- </child>
+- <child>
+- <object class="GtkLabel" id="label27">
+- <property name="visible">True</property>
+- <property name="label" translatable="yes">De_fault</property>
+- <property name="use_underline">True</property>
+- </object>
+- <packing>
+- <property name="expand">False</property>
+- <property name="fill">False</property>
+- <property name="position">1</property>
+- </packing>
+- </child>
+- </object>
+- </child>
+- </object>
+- </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+@@ -899,12 +874,12 @@
+ </child>
+ <child>
+ <object class="GtkButton" id="btn_edit">
+- <property name="label">gtk-edit</property>
++ <property name="label" translatable="yes">_Edit</property>
++ <property name="use_underline">True</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+- <property name="use_stock">True</property>
+ <signal handler="on_btn_edit_clicked" name="clicked"/>
+ </object>
+ <packing>
+@@ -1352,8 +1327,9 @@
+ </packing>
+ </child>
+ <child>
+- <object class="GtkHBox" id="hbox51">
++ <object class="GtkBox" id="hbox51">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="spacing">8</property>
+ <child>
+ <object class="GtkLabel" id="label30">
+@@ -1393,13 +1369,14 @@
+ </packing>
+ </child>
+ <child>
+- <object class="GtkHBox" id="hbox52">
++ <object class="GtkBox" id="hbox52">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="spacing">8</property>
+ <child>
+ <object class="GtkImage" id="image2">
+ <property name="visible">True</property>
+- <property name="stock">gtk-dialog-info</property>
++ <property name="icon_name">dialog-information</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+@@ -1429,8 +1406,9 @@
+ </packing>
+ </child>
+ <child>
+- <object class="GtkHBox" id="hbox11">
++ <object class="GtkBox" id="hbox11">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="spacing">8</property>
+ <child>
+ <object class="GtkLabel" id="label33">
+@@ -1471,13 +1449,14 @@
+ </packing>
+ </child>
+ <child>
+- <object class="GtkHBox" id="hbox53">
++ <object class="GtkBox" id="hbox53">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="spacing">8</property>
+ <child>
+ <object class="GtkImage" id="image4">
+ <property name="visible">True</property>
+- <property name="stock">gtk-dialog-info</property>
++ <property name="icon_name">dialog-information</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+@@ -1605,8 +1584,9 @@
+ </packing>
+ </child>
+ <child>
+- <object class="GtkVBox" id="vbox6">
++ <object class="GtkBox" id="vbox6">
+ <property name="visible">True</property>
++ <property name="orientation">vertical</property>
+ <property name="border_width">8</property>
+ <property name="spacing">4</property>
+ <child>
+@@ -1620,8 +1600,9 @@
+ <property name="top_padding">4</property>
+ <property name="left_padding">0</property>
+ <child>
+- <object class="GtkVBox" id="vbox61">
++ <object class="GtkBox" id="vbox61">
+ <property name="visible">True</property>
++ <property name="orientation">vertical</property>
+ <property name="border_width">4</property>
+ <property name="spacing">4</property>
+ <child>
+@@ -1777,8 +1758,9 @@
+ <property name="top_padding">4</property>
+ <property name="left_padding">0</property>
+ <child>
+- <object class="GtkVBox" id="vbox71">
++ <object class="GtkBox" id="vbox71">
+ <property name="visible">True</property>
++ <property name="orientation">vertical</property>
+ <property name="border_width">4</property>
+ <property name="spacing">4</property>
+ <child>
+@@ -1801,8 +1783,9 @@
+ </packing>
+ </child>
+ <child>
+- <object class="GtkHButtonBox" id="hbuttonbox71">
++ <object class="GtkButtonBox" id="hbuttonbox71">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="spacing">4</property>
+ <property name="layout_style">end</property>
+ <child>
+@@ -1823,12 +1806,12 @@
+ </child>
+ <child>
+ <object class="GtkButton" id="dict:btn_add">
+- <property name="label">gtk-add</property>
++ <property name="label" translatable="yes">_Add</property>
++ <property name="use_underline">True</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+- <property name="use_stock">True</property>
+ <signal handler="on_btn_dict_add_clicked" name="clicked"/>
+ </object>
+ <packing>
+@@ -1839,12 +1822,12 @@
+ </child>
+ <child>
+ <object class="GtkButton" id="dict:btn_edit">
+- <property name="label">gtk-edit</property>
++ <property name="label" translatable="yes">_Edit</property>
++ <property name="use_underline">True</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+- <property name="use_stock">True</property>
+ <signal handler="on_btn_dict_add_clicked" name="clicked"/>
+ </object>
+ <packing>
+@@ -1855,12 +1838,12 @@
+ </child>
+ <child>
+ <object class="GtkButton" id="dict:btn_delete">
+- <property name="label">gtk-delete</property>
++ <property name="label" translatable="yes">_Delete</property>
++ <property name="use_underline">True</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+- <property name="use_stock">True</property>
+ <signal handler="on_btn_dict_delete_clicked" name="clicked"/>
+ </object>
+ <packing>
+@@ -1877,19 +1860,20 @@
+ </packing>
+ </child>
+ <child>
+- <object class="GtkHButtonBox" id="hbuttonbox72">
++ <object class="GtkButtonBox" id="hbuttonbox72">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="spacing">4</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="dict:btn_up">
+- <property name="label">gtk-go-up</property>
++ <property name="label" translatable="yes">_Up</property>
++ <property name="use_underline">True</property>
+ <property name="tooltip_text" translatable="yes">You can change the order on language bar</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+- <property name="use_stock">True</property>
+ <signal handler="on_btn_dict_order_clicked" name="clicked"/>
+ </object>
+ <packing>
+@@ -1900,13 +1884,13 @@
+ </child>
+ <child>
+ <object class="GtkButton" id="dict:btn_down">
+- <property name="label">gtk-go-down</property>
++ <property name="label" translatable="yes">_Down</property>
++ <property name="use_underline">True</property>
+ <property name="tooltip_text" translatable="yes">You can change the order on language bar</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+- <property name="use_stock">True</property>
+ <signal handler="on_btn_dict_order_clicked" name="clicked"/>
+ </object>
+ <packing>
+@@ -1953,7 +1937,7 @@
+ </packing>
+ </child>
+ <child>
+- <object class="GtkVBox" id="about_vbox">
++ <object class="GtkBox" id="about_vbox">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <property name="border_width">10</property>
+@@ -1979,18 +1963,19 @@
+ </packing>
+ </child>
+ <child internal-child="action_area">
+- <object class="GtkHButtonBox" id="dialog-action_area1">
++ <object class="GtkButtonBox" id="dialog-action_area1">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="btn_apply">
+- <property name="label">gtk-apply</property>
++ <property name="label" translatable="yes">_Apply</property>
++ <property name="use_underline">True</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+- <property name="use_stock">True</property>
+ <signal handler="on_btn_apply_clicked" name="clicked"/>
+ </object>
+ <packing>
+@@ -2001,12 +1986,12 @@
+ </child>
+ <child>
+ <object class="GtkButton" id="btn_cancel">
+- <property name="label">gtk-cancel</property>
++ <property name="label" translatable="yes">_Cancel</property>
++ <property name="use_underline">True</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+- <property name="use_stock">True</property>
+ <signal handler="on_btn_cancel_clicked" name="clicked"/>
+ </object>
+ <packing>
+@@ -2017,12 +2002,12 @@
+ </child>
+ <child>
+ <object class="GtkButton" id="btn_ok">
+- <property name="label">gtk-ok</property>
++ <property name="label" translatable="yes">_OK</property>
++ <property name="use_underline">True</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+- <property name="use_stock">True</property>
+ <signal handler="on_btn_ok_clicked" name="clicked"/>
+ </object>
+ <packing>
+@@ -2053,11 +2038,13 @@
+ <property name="modal">True</property>
+ <property name="type_hint">dialog</property>
+ <child internal-child="vbox">
+- <object class="GtkVBox" id="dialog-vbox2">
++ <object class="GtkBox" id="dialog-vbox2">
+ <property name="visible">True</property>
++ <property name="orientation">vertical</property>
+ <child>
+- <object class="GtkVBox" id="vbox101">
++ <object class="GtkBox" id="vbox101">
+ <property name="visible">True</property>
++ <property name="orientation">vertical</property>
+ <property name="border_width">5</property>
+ <property name="spacing">6</property>
+ <child>
+@@ -2068,6 +2055,7 @@
+ <property name="hscrollbar_policy">automatic</property>
+ <property name="vscrollbar_policy">automatic</property>
+ <property name="shadow_type">in</property>
++ <property name="height_request">150</property>
+ <child>
+ <object class="GtkTreeView" id="es:treeview">
+ <property name="visible">True</property>
+@@ -2081,8 +2069,9 @@
+ </packing>
+ </child>
+ <child>
+- <object class="GtkHBox" id="hbox101">
++ <object class="GtkBox" id="hbox101">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="spacing">8</property>
+ <child>
+ <object class="GtkLabel" id="label1001">
+@@ -2128,8 +2117,9 @@
+ </packing>
+ </child>
+ <child>
+- <object class="GtkHBox" id="hbox102">
++ <object class="GtkBox" id="hbox102">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="spacing">8</property>
+ <child>
+ <object class="GtkLabel" id="label1002">
+@@ -2143,8 +2133,9 @@
+ </packing>
+ </child>
+ <child>
+- <object class="GtkHBox" id="hbox103">
++ <object class="GtkBox" id="hbox103">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <child>
+ <object class="GtkCheckButton" id="es:checkbutton_alt">
+ <property name="label" translatable="yes">A_lternate</property>
+@@ -2197,19 +2188,20 @@
+ </packing>
+ </child>
+ <child>
+- <object class="GtkHButtonBox" id="hbuttonbox101">
++ <object class="GtkButtonBox" id="hbuttonbox101">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="spacing">6</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="es:button_add">
+- <property name="label">gtk-add</property>
++ <property name="label" translatable="yes">_Add</property>
++ <property name="use_underline">True</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+- <property name="use_stock">True</property>
+ <signal handler="on_es_button_add_clicked" name="clicked"/>
+ </object>
+ <packing>
+@@ -2220,12 +2212,12 @@
+ </child>
+ <child>
+ <object class="GtkButton" id="es:button_refresh">
+- <property name="label">gtk-refresh</property>
++ <property name="label" translatable="yes">_Refresh</property>
++ <property name="use_underline">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+- <property name="use_stock">True</property>
+ <signal handler="on_es_button_refresh_clicked" name="clicked"/>
+ </object>
+ <packing>
+@@ -2236,13 +2228,13 @@
+ </child>
+ <child>
+ <object class="GtkButton" id="es:button_del">
+- <property name="label">gtk-delete</property>
++ <property name="label" translatable="yes">_Delete</property>
++ <property name="use_underline">True</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+- <property name="use_stock">True</property>
+ <signal handler="on_es_button_del_clicked" name="clicked"/>
+ </object>
+ <packing>
+@@ -2264,17 +2256,18 @@
+ </packing>
+ </child>
+ <child internal-child="action_area">
+- <object class="GtkHButtonBox" id="dialog-action_area2">
++ <object class="GtkButtonBox" id="dialog-action_area2">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="cancelbutton101">
+- <property name="label">gtk-cancel</property>
++ <property name="label" translatable="yes">_Cancel</property>
++ <property name="use_underline">True</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+- <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+@@ -2284,12 +2277,12 @@
+ </child>
+ <child>
+ <object class="GtkButton" id="okbutton101">
+- <property name="label">gtk-ok</property>
++ <property name="label" translatable="yes">_OK</property>
++ <property name="use_underline">True</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+- <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+@@ -2318,13 +2311,15 @@
+ <property name="modal">True</property>
+ <property name="type_hint">dialog</property>
+ <child internal-child="vbox">
+- <object class="GtkVBox" id="dialog-vbox3">
++ <object class="GtkBox" id="dialog-vbox3">
+ <property name="visible">True</property>
++ <property name="orientation">vertical</property>
+ <property name="border_width">5</property>
+ <property name="spacing">6</property>
+ <child>
+- <object class="GtkHBox" id="hbox_for_combobox_custom_key_table">
++ <object class="GtkBox" id="hbox_for_combobox_custom_key_table">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="border_width">5</property>
+ <property name="spacing">6</property>
+ <child>
+@@ -2359,8 +2354,9 @@
+ </packing>
+ </child>
+ <child>
+- <object class="GtkHBox" id="hbox301">
++ <object class="GtkBox" id="hbox301">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="border_width">5</property>
+ <property name="spacing">6</property>
+ <child>
+@@ -2371,6 +2367,8 @@
+ <property name="hscrollbar_policy">automatic</property>
+ <property name="vscrollbar_policy">automatic</property>
+ <property name="shadow_type">in</property>
++ <property name="width_request">250</property>
++ <property name="height_request">300</property>
+ <child>
+ <object class="GtkTreeView" id="treeview_custom_key_table">
+ <property name="visible">True</property>
+@@ -2383,8 +2381,9 @@
+ </packing>
+ </child>
+ <child>
+- <object class="GtkVButtonBox" id="vbutton301">
++ <object class="GtkButtonBox" id="vbutton301">
+ <property name="visible">True</property>
++ <property name="orientation">vertical</property>
+ <property name="layout_style">start</property>
+ <property name="spacing">6</property>
+ <child>
+@@ -2470,12 +2469,12 @@
+ <child>
+ <object class="GtkButton" id="button_add_custom_key">
+ <property name="visible">True</property>
+- <property name="label">gtk-add</property>
++ <property name="label" translatable="yes">_Add</property>
++ <property name="use_underline">True</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+- <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="position">8</property>
+@@ -2484,12 +2483,12 @@
+ <child>
+ <object class="GtkButton" id="button_remove_custom_key">
+ <property name="visible">True</property>
+- <property name="label">gtk-remove</property>
++ <property name="label" translatable="yes">_Remove</property>
++ <property name="use_underline">True</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+- <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="position">9</property>
+@@ -2508,16 +2507,17 @@
+ </packing>
+ </child>
+ <child internal-child="action_area">
+- <object class="GtkHButtonBox" id="dialog-action_area3">
++ <object class="GtkButtonBox" id="dialog-action_area3">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="closebutton301">
+ <property name="visible">True</property>
+- <property name="label">gtk-close</property>
++ <property name="label" translatable="yes">_Close</property>
++ <property name="use_underline">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+- <property name="use_stock">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+@@ -2551,12 +2551,14 @@
+ <property name="text">Confirmation</property>
+ <property name="secondary_text">You are about to close the setup dialog, is that OK?</property>
+ <child internal-child="vbox">
+- <object class="GtkVBox" id="dialog-vbox6">
++ <object class="GtkBox" id="dialog-vbox6">
+ <property name="visible">True</property>
++ <property name="orientation">vertical</property>
+ <property name="spacing">2</property>
+ <child internal-child="action_area">
+- <object class="GtkHButtonBox" id="dialog-action_area6">
++ <object class="GtkButtonBox" id="dialog-action_area6">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="layout_style">end</property>
+ <child>
+ <placeholder/>
+@@ -2586,12 +2588,14 @@
+ <property name="text">Notice!</property>
+ <property name="secondary_text">You are about to close the setup dialog without saving your changes, is that OK?</property>
+ <child internal-child="vbox">
+- <object class="GtkVBox" id="dialog-vbox7">
++ <object class="GtkBox" id="dialog-vbox7">
+ <property name="visible">True</property>
++ <property name="orientation">vertical</property>
+ <property name="spacing">2</property>
+ <child internal-child="action_area">
+- <object class="GtkHButtonBox" id="dialog-action_area7">
++ <object class="GtkButtonBox" id="dialog-action_area7">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="layout_style">end</property>
+ <child>
+ <placeholder/>
+@@ -2622,12 +2626,14 @@
+ <signal handler="on_key_input_dialog_key_press_event" name="key_press_event"/>
+ <signal handler="on_key_input_dialog_key_release_event" name="key_release_event"/>
+ <child internal-child="vbox">
+- <object class="GtkVBox" id="dialog-vbox8">
++ <object class="GtkBox" id="dialog-vbox8">
+ <property name="visible">True</property>
++ <property name="orientation">vertical</property>
+ <property name="spacing">2</property>
+ <child internal-child="action_area">
+- <object class="GtkHButtonBox" id="dialog-action_area8">
++ <object class="GtkButtonBox" id="dialog-action_area8">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="layout_style">end</property>
+ <child>
+ <placeholder/>
+@@ -2657,12 +2663,14 @@
+ <property name="text">Invalid keysym</property>
+ <property name="secondary_text">This keysym is not valid</property>
+ <child internal-child="vbox">
+- <object class="GtkVBox" id="dialog-vbox9">
++ <object class="GtkBox" id="dialog-vbox9">
+ <property name="visible">True</property>
++ <property name="orientation">vertical</property>
+ <property name="spacing">2</property>
+ <child internal-child="action_area">
+- <object class="GtkHButtonBox" id="dialog-action_area9">
++ <object class="GtkButtonBox" id="dialog-action_area9">
+ <property name="visible">True</property>
++ <property name="orientation">horizontal</property>
+ <property name="layout_style">end</property>
+ <child>
+ <placeholder/>
+@@ -2680,8 +2688,9 @@
+ </object>
+ </child>
+ </object>
+- <object class="GtkVBox" id="dict:add_extra_vbox">
++ <object class="GtkBox" id="dict:add_extra_vbox">
+ <property name="visible">True</property>
++ <property name="orientation">vertical</property>
+ <property name="no_show_all">True</property>
+ <property name="spacing">10</property>
+ <child>
+@@ -2800,8 +2809,8 @@
+ <property name="program-name">IBus-Anthy</property>
+ <property name="copyright">Copyright © 2007–2008 Peng Huang
+ Copyright © 2009 Hideaki ABE
+-Copyright © 2009–2013 Takao Fujiwara
+-Copyright © 2007–2013 Red Hat, Inc.</property>
++Copyright © 2009–2014 Takao Fujiwara
++Copyright © 2007–2014 Red Hat, Inc.</property>
+ <property name="comments" translatable="yes">The Anthy engine for the IBus input platform</property>
+ <property name="license">GPL</property>
+ <property name="website">http://code.google.com/p/ibus/</property>
+--
+1.8.0
+
+From 4d605b873bf4b0af2a337cd076175c8d0a703346 Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1 at gmail.com>
+Date: Thu, 27 Feb 2014 18:32:01 +0900
+Subject: [PATCH] Added another status icon for input mode.
+
+---
+ engine/python2/Makefile.am | 5 +-
+ engine/python2/engine.py | 94 ++++++++-
+ engine/python2/propertyicon.py | 81 ++++++++
+ engine/python3/Makefile.am | 5 +-
+ engine/python3/engine.py | 92 ++++++++-
+ engine/python3/propertyicon.py | 81 ++++++++
+ po/ibus-anthy.pot | 426 +++++++++++++++++++++--------------------
+ setup/python2/anthyprefs.py.in | 6 +-
+ setup/python2/main.py | 6 +-
+ setup/python2/prefs.py | 32 +++-
+ setup/python2/setup.ui | 19 +-
+ setup/python3/anthyprefs.py.in | 2 +
+ setup/python3/main.py | 6 +-
+ setup/python3/prefs.py | 28 ++-
+ setup/python3/setup.ui | 19 +-
+ 15 files changed, 658 insertions(+), 244 deletions(-)
+ create mode 100644 engine/python2/propertyicon.py
+ create mode 100644 engine/python3/propertyicon.py
+
+diff --git a/engine/python2/Makefile.am b/engine/python2/Makefile.am
+index a96f831..965d534 100644
+--- a/engine/python2/Makefile.am
++++ b/engine/python2/Makefile.am
+@@ -3,8 +3,8 @@
+ # ibus-anthy - The Anthy engine for IBus
+ #
+ # Copyright (c) 2007-2008 Peng Huang <shawn.p.huang at gmail.com>
+-# Copyright (c) 2010-2013 Takao Fujiwara <takao.fujiwara1 at gmail.com>
+-# Copyright (c) 2007-2013 Red Hat, Inc.
++# Copyright (c) 2010-2014 Takao Fujiwara <takao.fujiwara1 at gmail.com>
++# Copyright (c) 2007-2014 Red Hat, Inc.
+ #
+ # This program is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+@@ -29,6 +29,7 @@ engine_anthy_PYTHON = \
+ jastring.py \
+ kana.py \
+ main.py \
++ propertyicon.py \
+ romaji.py \
+ segment.py \
+ tables.py \
+diff --git a/engine/python2/engine.py b/engine/python2/engine.py
+index 90a5750..c7a6fb3 100644
+--- a/engine/python2/engine.py
++++ b/engine/python2/engine.py
+@@ -4,8 +4,8 @@
+ # ibus-anthy - The Anthy engine for IBus
+ #
+ # Copyright (c) 2007-2008 Peng Huang <shawn.p.huang at gmail.com>
+-# Copyright (c) 2010-2013 Takao Fujiwara <takao.fujiwara1 at gmail.com>
+-# Copyright (c) 2007-2013 Red Hat, Inc.
++# Copyright (c) 2010-2014 Takao Fujiwara <takao.fujiwara1 at gmail.com>
++# Copyright (c) 2007-2014 Red Hat, Inc.
+ #
+ # This program is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+@@ -35,6 +35,7 @@ try:
+ except:
+ pass
+
++from gi.repository import Gio
+ from gi.repository import GLib
+ from gi.repository import IBus
+
+@@ -117,6 +118,7 @@ class Engine(IBus.EngineSimple):
+ __keybind = {}
+ __thumb = None
+ __latin_with_shift = True
++ __input_mode_icon = None
+
+ def __init__(self, bus, object_path):
+ super(Engine, self).__init__(engine_name="anthy",
+@@ -170,6 +172,8 @@ class Engine(IBus.EngineSimple):
+ ibus_config.connect('value-changed',
+ self.__config_value_changed_cb)
+
++ self.__run_input_mode_icon()
++
+ def __get_ibus_version(self):
+ if self.__ibus_version == 0.0:
+ self.__ibus_version = \
+@@ -258,6 +262,73 @@ class Engine(IBus.EngineSimple):
+ signal.signal(signum, signal.SIG_DFL)
+ os.kill(os.getpid(), signum)
+
++ def __is_gnome_shell_running(self):
++ connection = None
++ variant = None
++
++ try:
++ connection = Gio.bus_get_sync(Gio.BusType.SESSION, None)
++ variant = connection.call_sync('org.gnome.Shell',
++ '/org/gnome/Shell',
++ 'org.freedesktop.DBus.Peer',
++ 'Ping',
++ None,
++ None,
++ Gio.DBusCallFlags.NONE,
++ -1,
++ None)
++ except GLib.GError as e:
++ pass
++
++ if connection != None:
++ try:
++ connection.flush_sync(None)
++ except GLib.GError as e:
++ printerr('GDBusConnection flush failed: ' + str(e))
++
++ if variant == None:
++ return False
++ return True
++
++ def __run_input_mode_icon(self):
++ self.__input_mode_icon = None
++
++ if self.__is_gnome_shell_running():
++ return
++ try:
++ from gi.repository import Gdk
++ if Gdk.Display.get_default() == None:
++ return
++ except Exception as e:
++ printerr('import Gdk failed: ' + str(e))
++ return
++
++ if not self.__prefs.get_value('common', 'show-input-mode-icon'):
++ return
++
++ rgba = Gdk.RGBA(red = 0.0, green = 0.0, blue = 0.0, alpha = 1.0)
++ spec = self.__prefs.get_value('common', 'icon-str-rgba')
++ if not rgba.parse(spec):
++ printerr('invalid icon-str-rgba: %s' % spec)
++ rgba = Gdk.RGBA(red = 0.0, green = 0.0, blue = 0.0, alpha = 1.0)
++
++ modes = {
++ INPUT_MODE_HIRAGANA : 'あ',
++ INPUT_MODE_KATAKANA : 'ア',
++ INPUT_MODE_HALF_WIDTH_KATAKANA : '_ア',
++ INPUT_MODE_LATIN : '_A',
++ INPUT_MODE_WIDE_LATIN : 'A',
++ }
++
++ try:
++ import propertyicon
++ self.__input_mode_icon = propertyicon.PropertyIcon(rgba)
++ self.__input_mode_icon.set_visible(True)
++ self.__input_mode_icon.set_from_symbol(modes[self.__input_mode])
++ except Exception as e:
++ printerr('import PropertyIcon failed: ' + str(e))
++ return
++
+ def __set_input_mode_props(self, anthy_props):
+ # The class method is kept even if the engine is switched.
+ if Engine.__input_mode == None:
+@@ -847,6 +918,9 @@ class Engine(IBus.EngineSimple):
+ prop.set_label(IBus.Text.new_from_string(label))
+ self.update_property(prop)
+
++ if self.__input_mode_icon != None:
++ self.__input_mode_icon.set_from_symbol(symbol)
++
+ self.__reset()
+ self.__invalidate()
+
+@@ -1030,6 +1104,7 @@ class Engine(IBus.EngineSimple):
+ # It seems do_destroy() is called when launch_engine() is called.
+ #self.__remove_dict_files()
+ # It seems super.destroy() does not unref the engine.
++ self.__input_mode_icon = None
+
+ def __join_all_segments(self):
+ while True:
+@@ -1109,7 +1184,7 @@ class Engine(IBus.EngineSimple):
+
+ # fill lookup_table
+ self.__lookup_table.clear()
+- for i in xrange(0, seg_stat.nr_predictions):
++ for i in xrange(0, nr_predictions):
+ buf = self.__context.get_prediction(i)
+ candidate = UN(buf)
+ self.__lookup_table.append_candidate(IBus.Text.new_from_string(candidate))
+@@ -1220,6 +1295,12 @@ class Engine(IBus.EngineSimple):
+ def __update_anthy_convert_chars(self):
+ self.__convert_chars = u''
+ pos = 0
++
++ (seg_index, text) = self.__segments[self.__cursor_pos]
++ # prediction lookup window + BackSpace will return None
++ if text == None:
++ return
++
+ for i, (seg_index, text) in enumerate(self.__segments):
+ self.__convert_chars += text
+ if i < self.__cursor_pos:
+@@ -2110,6 +2191,13 @@ class Engine(IBus.EngineSimple):
+ self.__fetch_dict_values(base_sec)
+ self.__prefs.set_value(base_sec, name, value)
+ self.__set_dict_mode_props(self.__prop_list, True)
++ elif base_sec == 'common':
++ if name == 'show_input_mode_icon':
++ name = 'show-input-mode-icon'
++ self.__prefs.set_value(base_sec, name, value)
++ self.__run_input_mode_icon()
++ else:
++ self.__prefs.set_value(base_sec, name, value)
+ elif base_sec:
+ self.__prefs.set_value(base_sec, name, value)
+ else:
+diff --git a/engine/python2/propertyicon.py b/engine/python2/propertyicon.py
+new file mode 100644
+index 0000000..fa5f34f
+--- /dev/null
++++ b/engine/python2/propertyicon.py
+@@ -0,0 +1,81 @@
++# vim:set et sts=4 sw=4:
++# -*- coding: utf-8 -*-
++#
++# ibus-anthy - The Anthy engine for IBus
++#
++# Copyright (c) 2014 Takao Fujiwara <takao.fujiwara1 at gmail.com>
++# Copyright (c) 2014 Red Hat, Inc.
++#
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2 of the License, or
++# (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License along
++# with this program; if not, write to the Free Software Foundation, Inc.,
++# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
++
++# for python2
++from __future__ import print_function
++
++import cairo
++import sys
++
++from gi.repository import Gdk
++from gi.repository import Gio
++from gi.repository import GLib
++from gi.repository import Gtk
++from gi.repository import Pango
++from gi.repository import PangoCairo
++
++class PropertyIcon(Gtk.StatusIcon):
++ __xkb_icon_pixbufs = {}
++ __xkb_icon_rgba = None
++
++ def __init__(self, rgba):
++ super(Gtk.StatusIcon, self).__init__()
++ self.__xkb_icon_rgba = rgba
++
++ def __context_render_string(self, cr, symbol, image_width, image_height):
++ lwidth = 0
++ lheight = 0
++ desc = Pango.FontDescription.from_string('Monospace Bold 22')
++ layout = PangoCairo.create_layout(cr)
++
++ layout.set_font_description(desc)
++ layout.set_text(symbol, -1)
++ (lwidth, lheight) = layout.get_size()
++ cr.move_to((image_width - lwidth / Pango.SCALE) / 2,
++ (image_height - lheight / Pango.SCALE) / 2)
++ cr.set_source_rgba(self.__xkb_icon_rgba.red,
++ self.__xkb_icon_rgba.green,
++ self.__xkb_icon_rgba.blue,
++ self.__xkb_icon_rgba.alpha)
++ PangoCairo.show_layout(cr, layout)
++
++ def __create_icon_pixbuf_with_string(self, symbol):
++ if symbol in self.__xkb_icon_pixbufs:
++ return self.__xkb_icon_pixbufs[symbol]
++
++ image = cairo.ImageSurface(cairo.FORMAT_ARGB32, 48, 48)
++ cr = cairo.Context(image)
++ width = image.get_width()
++ height = image.get_height()
++
++ cr.set_source_rgba(0.0, 0.0, 0.0, 0.0)
++ cr.set_operator(cairo.OPERATOR_SOURCE)
++ cr.paint()
++ cr.set_operator(cairo.OPERATOR_OVER)
++ self.__context_render_string(cr, symbol, width, height)
++ pixbuf = Gdk.pixbuf_get_from_surface(image, 0, 0, width, height)
++ self.__xkb_icon_pixbufs[symbol] = pixbuf
++ return pixbuf
++
++ def set_from_symbol(self, symbol):
++ pixbuf = self.__create_icon_pixbuf_with_string(symbol)
++ self.set_from_pixbuf(pixbuf)
+diff --git a/engine/python3/Makefile.am b/engine/python3/Makefile.am
+index a96f831..965d534 100644
+--- a/engine/python3/Makefile.am
++++ b/engine/python3/Makefile.am
+@@ -3,8 +3,8 @@
+ # ibus-anthy - The Anthy engine for IBus
+ #
+ # Copyright (c) 2007-2008 Peng Huang <shawn.p.huang at gmail.com>
+-# Copyright (c) 2010-2013 Takao Fujiwara <takao.fujiwara1 at gmail.com>
+-# Copyright (c) 2007-2013 Red Hat, Inc.
++# Copyright (c) 2010-2014 Takao Fujiwara <takao.fujiwara1 at gmail.com>
++# Copyright (c) 2007-2014 Red Hat, Inc.
+ #
+ # This program is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+@@ -29,6 +29,7 @@ engine_anthy_PYTHON = \
+ jastring.py \
+ kana.py \
+ main.py \
++ propertyicon.py \
+ romaji.py \
+ segment.py \
+ tables.py \
+diff --git a/engine/python3/engine.py b/engine/python3/engine.py
+index 7eadf23..6563087 100644
+--- a/engine/python3/engine.py
++++ b/engine/python3/engine.py
+@@ -36,6 +36,7 @@ try:
+ except:
+ pass
+
++from gi.repository import Gio
+ from gi.repository import GLib
+ from gi.repository import IBus
+
+@@ -118,6 +119,7 @@ class Engine(IBus.EngineSimple):
+ __keybind = {}
+ __thumb = None
+ __latin_with_shift = True
++ __input_mode_icon = None
+
+ def __init__(self, bus, object_path):
+ super(Engine, self).__init__(engine_name="anthy",
+@@ -171,6 +173,8 @@ class Engine(IBus.EngineSimple):
+ ibus_config.connect('value-changed',
+ self.__config_value_changed_cb)
+
++ self.__run_input_mode_icon()
++
+ def __get_ibus_version(self):
+ if self.__ibus_version == 0.0:
+ self.__ibus_version = \
+@@ -259,6 +263,73 @@ class Engine(IBus.EngineSimple):
+ signal.signal(signum, signal.SIG_DFL)
+ os.kill(os.getpid(), signum)
+
++ def __is_gnome_shell_running(self):
++ connection = None
++ variant = None
++
++ try:
++ connection = Gio.bus_get_sync(Gio.BusType.SESSION, None)
++ variant = connection.call_sync('org.gnome.Shell',
++ '/org/gnome/Shell',
++ 'org.freedesktop.DBus.Peer',
++ 'Ping',
++ None,
++ None,
++ Gio.DBusCallFlags.NONE,
++ -1,
++ None)
++ except GLib.GError as e:
++ pass
++
++ if connection != None:
++ try:
++ connection.flush_sync(None)
++ except GLib.GError as e:
++ printerr('GDBusConnection flush failed: ' + str(e))
++
++ if variant == None:
++ return False
++ return True
++
++ def __run_input_mode_icon(self):
++ self.__input_mode_icon = None
++
++ if self.__is_gnome_shell_running():
++ return
++ try:
++ from gi.repository import Gdk
++ if Gdk.Display.get_default() == None:
++ return
++ except Exception as e:
++ printerr('import Gdk failed: ' + str(e))
++ return
++
++ if not self.__prefs.get_value('common', 'show-input-mode-icon'):
++ return
++
++ rgba = Gdk.RGBA(red = 0.0, green = 0.0, blue = 0.0, alpha = 1.0)
++ spec = self.__prefs.get_value('common', 'icon-str-rgba')
++ if not rgba.parse(spec):
++ printerr('invalid icon-str-rgba: %s' % spec)
++ rgba = Gdk.RGBA(red = 0.0, green = 0.0, blue = 0.0, alpha = 1.0)
++
++ modes = {
++ INPUT_MODE_HIRAGANA : 'あ',
++ INPUT_MODE_KATAKANA : 'ア',
++ INPUT_MODE_HALF_WIDTH_KATAKANA : '_ア',
++ INPUT_MODE_LATIN : '_A',
++ INPUT_MODE_WIDE_LATIN : 'A',
++ }
++
++ try:
++ import propertyicon
++ self.__input_mode_icon = propertyicon.PropertyIcon(rgba)
++ self.__input_mode_icon.set_visible(True)
++ self.__input_mode_icon.set_from_symbol(modes[self.__input_mode])
++ except Exception as e:
++ printerr('import PropertyIcon failed: ' + str(e))
++ return
++
+ def __set_input_mode_props(self, anthy_props):
+ # The class method is kept even if the engine is switched.
+ if Engine.__input_mode == None:
+@@ -842,6 +913,9 @@ class Engine(IBus.EngineSimple):
+ prop.set_label(IBus.Text.new_from_string(label))
+ self.update_property(prop)
+
++ if self.__input_mode_icon != None:
++ self.__input_mode_icon.set_from_symbol(symbol)
++
+ self.__reset()
+ self.__invalidate()
+
+@@ -1025,6 +1099,7 @@ class Engine(IBus.EngineSimple):
+ # It seems do_destroy() is called when launch_engine() is called.
+ #self.__remove_dict_files()
+ # It seems super.destroy() does not unref the engine.
++ self.__input_mode_icon = None
+
+ def __join_all_segments(self):
+ while True:
+@@ -1104,7 +1179,7 @@ class Engine(IBus.EngineSimple):
+
+ # fill lookup_table
+ self.__lookup_table.clear()
+- for i in range(0, seg_stat.nr_predictions):
++ for i in range(0, nr_predictions):
+ buf = self.__context.get_prediction(i)
+ candidate = buf
+ self.__lookup_table.append_candidate(IBus.Text.new_from_string(candidate))
+@@ -1215,6 +1290,12 @@ class Engine(IBus.EngineSimple):
+ def __update_anthy_convert_chars(self):
+ self.__convert_chars = ''
+ pos = 0
++
++ (seg_index, text) = self.__segments[self.__cursor_pos]
++ # prediction lookup window + BackSpace will return None
++ if text == None:
++ return
++
+ for i, (seg_index, text) in enumerate(self.__segments):
+ self.__convert_chars += text
+ if i < self.__cursor_pos:
+@@ -2104,6 +2185,13 @@ class Engine(IBus.EngineSimple):
+ self.__fetch_dict_values(base_sec)
+ self.__prefs.set_value(base_sec, name, value)
+ self.__set_dict_mode_props(self.__prop_list, True)
++ elif base_sec == 'common':
++ if name == 'show_input_mode_icon':
++ name = 'show-input-mode-icon'
++ self.__prefs.set_value(base_sec, name, value)
++ self.__run_input_mode_icon()
++ else:
++ self.__prefs.set_value(base_sec, name, value)
+ elif base_sec:
+ self.__prefs.set_value(base_sec, name, value)
+ else:
+@@ -2312,7 +2400,7 @@ class Engine(IBus.EngineSimple):
+ nr_predictions = self.__context.get_nr_predictions()
+
+ # for i in range(nr_predictions):
+-# print self.__context.get_prediction(i)
++# print(self.__context.get_prediction(i))
+
+ buf = self.__context.get_prediction(0)
+ if not buf:
+diff --git a/engine/python3/propertyicon.py b/engine/python3/propertyicon.py
+new file mode 100644
+index 0000000..fa5f34f
+--- /dev/null
++++ b/engine/python3/propertyicon.py
+@@ -0,0 +1,81 @@
++# vim:set et sts=4 sw=4:
++# -*- coding: utf-8 -*-
++#
++# ibus-anthy - The Anthy engine for IBus
++#
++# Copyright (c) 2014 Takao Fujiwara <takao.fujiwara1 at gmail.com>
++# Copyright (c) 2014 Red Hat, Inc.
++#
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2 of the License, or
++# (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License along
++# with this program; if not, write to the Free Software Foundation, Inc.,
++# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
++
++# for python2
++from __future__ import print_function
++
++import cairo
++import sys
++
++from gi.repository import Gdk
++from gi.repository import Gio
++from gi.repository import GLib
++from gi.repository import Gtk
++from gi.repository import Pango
++from gi.repository import PangoCairo
++
++class PropertyIcon(Gtk.StatusIcon):
++ __xkb_icon_pixbufs = {}
++ __xkb_icon_rgba = None
++
++ def __init__(self, rgba):
++ super(Gtk.StatusIcon, self).__init__()
++ self.__xkb_icon_rgba = rgba
++
++ def __context_render_string(self, cr, symbol, image_width, image_height):
++ lwidth = 0
++ lheight = 0
++ desc = Pango.FontDescription.from_string('Monospace Bold 22')
++ layout = PangoCairo.create_layout(cr)
++
++ layout.set_font_description(desc)
++ layout.set_text(symbol, -1)
++ (lwidth, lheight) = layout.get_size()
++ cr.move_to((image_width - lwidth / Pango.SCALE) / 2,
++ (image_height - lheight / Pango.SCALE) / 2)
++ cr.set_source_rgba(self.__xkb_icon_rgba.red,
++ self.__xkb_icon_rgba.green,
++ self.__xkb_icon_rgba.blue,
++ self.__xkb_icon_rgba.alpha)
++ PangoCairo.show_layout(cr, layout)
++
++ def __create_icon_pixbuf_with_string(self, symbol):
++ if symbol in self.__xkb_icon_pixbufs:
++ return self.__xkb_icon_pixbufs[symbol]
++
++ image = cairo.ImageSurface(cairo.FORMAT_ARGB32, 48, 48)
++ cr = cairo.Context(image)
++ width = image.get_width()
++ height = image.get_height()
++
++ cr.set_source_rgba(0.0, 0.0, 0.0, 0.0)
++ cr.set_operator(cairo.OPERATOR_SOURCE)
++ cr.paint()
++ cr.set_operator(cairo.OPERATOR_OVER)
++ self.__context_render_string(cr, symbol, width, height)
++ pixbuf = Gdk.pixbuf_get_from_surface(image, 0, 0, width, height)
++ self.__xkb_icon_pixbufs[symbol] = pixbuf
++ return pixbuf
++
++ def set_from_symbol(self, symbol):
++ pixbuf = self.__create_icon_pixbuf_with_string(symbol)
++ self.set_from_pixbuf(pixbuf)
+diff --git a/setup/python2/anthyprefs.py.in b/setup/python2/anthyprefs.py.in
+index a685da1..883fb23 100644
+--- a/setup/python2/anthyprefs.py.in
++++ b/setup/python2/anthyprefs.py.in
+@@ -5,8 +5,8 @@
+ #
+ # Copyright (c) 2007-2008 Peng Huang <shawn.p.huang at gmail.com>
+ # Copyright (c) 2009 Hideaki ABE <abe.sendai at gmail.com>
+-# Copyright (c) 2010-2013 Takao Fujiwara <takao.fujiwara1 at gmail.com>
+-# Copyright (c) 2007-2013 Red Hat, Inc.
++# Copyright (c) 2010-2014 Takao Fujiwara <takao.fujiwara1 at gmail.com>
++# Copyright (c) 2007-2014 Red Hat, Inc.
+ #
+ # This program is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+@@ -362,6 +362,8 @@ _config = {
+ 'show-dict-mode': True,
+ 'show-dict-config': False,
+ 'show-preferences': True,
++ 'show-input-mode-icon': True,
++ 'icon-str-rgba': '#41507a',
+
+ 'period_style': 0,
+ 'symbol_style': 1,
+diff --git a/setup/python2/main.py b/setup/python2/main.py
+index 7c403b8..0e7c62e 100644
+--- a/setup/python2/main.py
++++ b/setup/python2/main.py
+@@ -144,7 +144,8 @@ class AnthySetup(object):
+ 'half_width_symbol', 'half_width_number', 'half_width_space',
+ 'latin_with_shift',
+ 'thumb:keyboard_layout_mode', 'thumb:keyboard_layout',
+- 'thumb:fmv_extension', 'thumb:handakuten']:
++ 'thumb:fmv_extension', 'thumb:handakuten',
++ 'show_input_mode_icon']:
+ section, key = self.__get_section_key(name)
+ builder.get_object(name).set_active(prefs.get_value(section, key))
+
+@@ -322,6 +323,9 @@ class AnthySetup(object):
+ else:
+ section = 'common'
+ key = name
++ if section == 'common':
++ if name == 'show_input_mode_icon':
++ key = 'show-input-mode-icon'
+ return (section, key)
+
+ def __run_message_dialog(self, message, type=Gtk.MessageType.INFO):
+diff --git a/setup/python2/prefs.py b/setup/python2/prefs.py
+index 1b88908..9a147ee 100644
+--- a/setup/python2/prefs.py
++++ b/setup/python2/prefs.py
+@@ -4,8 +4,8 @@
+ #
+ # Copyright (c) 2007-2008 Peng Huang <shawn.p.huang at gmail.com>
+ # Copyright (c) 2009 Hideaki ABE <abe.sendai at gmail.com>
+-# Copyright (c) 2010-2013 Takao Fujiwara <takao.fujiwara1 at gmail.com>
+-# Copyright (c) 2007-2013 Red Hat, Inc.
++# Copyright (c) 2010-2014 Takao Fujiwara <takao.fujiwara1 at gmail.com>
++# Copyright (c) 2007-2014 Red Hat, Inc.
+ #
+ # This program is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+@@ -145,15 +145,27 @@ class Prefs(object):
+ variant = self._config.get_values(s)
+ for key in variant.keys():
+ v = variant[key]
++ # FIXME: ibus-dconf converts the keys.
++ #if key.find('_') >= 0:
++ # key = key.replace('_', '-')
++ if section == 'common':
++ if key == 'show_input_mode':
++ key = 'show-input-mode'
++ elif key == 'show_typing_method':
++ key = 'show-typing-method'
++ elif key == 'show_segment_mode':
++ key = 'show-segment-mode'
++ elif key == 'show_dict_mode':
++ key = 'show-dict-mode'
++ elif key == 'show_dict_config':
++ key = 'show-dict-config'
++ elif key == 'show_preferences':
++ key = 'show-preferences'
++ elif key == 'show_input_mode_icon':
++ key = 'show-input-mode-icon'
++ elif key == 'icon_str_rgba':
++ key = 'icon-str-rgba'
+ self.modified.setdefault(section, {})[key] = v if v != [''] else []
+- # FIXME: ibus-dconf converts the keys.
+- if section == 'common':
+- self.fetch_item(section, 'show-input-mode')
+- self.fetch_item(section, 'show-typing-method')
+- self.fetch_item(section, 'show-segment-mode')
+- self.fetch_item(section, 'show-dict-mode')
+- self.fetch_item(section, 'show-dict-config')
+- self.fetch_item(section, 'show-preferences')
+
+ def fetch_item(self, section, key, readonly=False):
+ if self._config == None:
+diff --git a/setup/python2/setup.ui b/setup/python2/setup.ui
+index dc5e7e1..edd6cfa 100644
+--- a/setup/python2/setup.ui
++++ b/setup/python2/setup.ui
+@@ -346,6 +346,23 @@
+ </packing>
+ </child>
+ <child>
++ <object class="GtkCheckButton" id="show_input_mode_icon">
++ <property name="label" translatable="yes">_Show input mode icon</property>
++ <property name="visible">True</property>
++ <property name="can_focus">True</property>
++ <property name="receives_default">False</property>
++ <property name="use_underline">True</property>
++ <property name="draw_indicator">True</property>
++ <signal handler="on_ck_toggled" name="toggled"/>
++ <accelerator key="S" modifiers="GDK_MOD1_MASK" signal="grab_focus"/>
++ </object>
++ <packing>
++ <property name="expand">False</property>
++ <property name="fill">False</property>
++ <property name="position">1</property>
++ </packing>
++ </child>
++ <child>
+ <object class="GtkFrame" id="frame12">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+@@ -396,7 +413,7 @@
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+- <property name="position">1</property>
++ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+diff --git a/setup/python3/anthyprefs.py.in b/setup/python3/anthyprefs.py.in
+index 53c9d1d..b9032f2 100644
+--- a/setup/python3/anthyprefs.py.in
++++ b/setup/python3/anthyprefs.py.in
+@@ -355,6 +355,8 @@ _config = {
+ 'show-dict-mode': True,
+ 'show-dict-config': False,
+ 'show-preferences': True,
++ 'show-input-mode-icon': True,
++ 'icon-str-rgba': '#41507a',
+
+ 'period_style': 0,
+ 'symbol_style': 1,
+diff --git a/setup/python3/main.py b/setup/python3/main.py
+index 2073f59..f70bc1f 100644
+--- a/setup/python3/main.py
++++ b/setup/python3/main.py
+@@ -147,7 +147,8 @@ class AnthySetup(object):
+ 'half_width_symbol', 'half_width_number', 'half_width_space',
+ 'latin_with_shift',
+ 'thumb:keyboard_layout_mode', 'thumb:keyboard_layout',
+- 'thumb:fmv_extension', 'thumb:handakuten']:
++ 'thumb:fmv_extension', 'thumb:handakuten',
++ 'show_input_mode_icon']:
+ section, key = self.__get_section_key(name)
+ builder.get_object(name).set_active(prefs.get_value(section, key))
+
+@@ -325,6 +326,9 @@ class AnthySetup(object):
+ else:
+ section = 'common'
+ key = name
++ if section == 'common':
++ if name == 'show_input_mode_icon':
++ key = 'show-input-mode-icon'
+ return (section, key)
+
+ def __run_message_dialog(self, message, type=Gtk.MessageType.INFO):
+diff --git a/setup/python3/prefs.py b/setup/python3/prefs.py
+index a4af88d..2b3f4ea 100644
+--- a/setup/python3/prefs.py
++++ b/setup/python3/prefs.py
+@@ -145,15 +145,27 @@ class Prefs(object):
+ variant = self._config.get_values(s)
+ for key in list(variant.keys()):
+ v = variant[key]
++ # FIXME: ibus-dconf converts the keys.
++ #if key.find('_') >= 0:
++ # key = key.replace('_', '-')
++ if section == 'common':
++ if key == 'show_input_mode':
++ key = 'show-input-mode'
++ elif key == 'show_typing_method':
++ key = 'show-typing-method'
++ elif key == 'show_segment_mode':
++ key = 'show-segment-mode'
++ elif key == 'show_dict_mode':
++ key = 'show-dict-mode'
++ elif key == 'show_dict_config':
++ key = 'show-dict-config'
++ elif key == 'show_preferences':
++ key = 'show-preferences'
++ elif key == 'show_input_mode_icon':
++ key = 'show-input-mode-icon'
++ elif key == 'icon_str_rgba':
++ key = 'icon-str-rgba'
+ self.modified.setdefault(section, {})[key] = v if v != [''] else []
+- # FIXME: ibus-dconf converts the keys.
+- if section == 'common':
+- self.fetch_item(section, 'show-input-mode')
+- self.fetch_item(section, 'show-typing-method')
+- self.fetch_item(section, 'show-segment-mode')
+- self.fetch_item(section, 'show-dict-mode')
+- self.fetch_item(section, 'show-dict-config')
+- self.fetch_item(section, 'show-preferences')
+
+ def fetch_item(self, section, key, readonly=False):
+ if self._config == None:
+diff --git a/setup/python3/setup.ui b/setup/python3/setup.ui
+index dc5e7e1..edd6cfa 100644
+--- a/setup/python3/setup.ui
++++ b/setup/python3/setup.ui
+@@ -346,6 +346,23 @@
+ </packing>
+ </child>
+ <child>
++ <object class="GtkCheckButton" id="show_input_mode_icon">
++ <property name="label" translatable="yes">_Show input mode icon</property>
++ <property name="visible">True</property>
++ <property name="can_focus">True</property>
++ <property name="receives_default">False</property>
++ <property name="use_underline">True</property>
++ <property name="draw_indicator">True</property>
++ <signal handler="on_ck_toggled" name="toggled"/>
++ <accelerator key="S" modifiers="GDK_MOD1_MASK" signal="grab_focus"/>
++ </object>
++ <packing>
++ <property name="expand">False</property>
++ <property name="fill">False</property>
++ <property name="position">1</property>
++ </packing>
++ </child>
++ <child>
+ <object class="GtkFrame" id="frame12">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+@@ -396,7 +413,7 @@
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+- <property name="position">1</property>
++ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+--
+1.8.0
diff --git a/ibus-anthy.spec b/ibus-anthy.spec
index 48acd6d..2ad29d4 100644
--- a/ibus-anthy.spec
+++ b/ibus-anthy.spec
@@ -14,7 +14,7 @@
Name: ibus-anthy
Version: 1.5.5
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: The Anthy engine for IBus input platform
License: GPLv2+
Group: System Environment/Libraries
@@ -24,6 +24,7 @@ Source0: %{name}-%{version}.tar.gz
# Upstreamed patches.
# Patch0: %%{name}-HEAD.patch
+Patch0: %{name}-HEAD.patch
BuildRequires: anthy-devel
BuildRequires: desktop-file-utils
@@ -40,9 +41,12 @@ BuildRequires: python3-gobject
Requires: ibus >= %{require_ibus_version}
Requires: kasumi
Requires: anthy
-Requires: python3-gobject
%if %with_python_pkg
Requires: %{name}-python = %{version}-%{release}
+%else
+Requires: gtk3
+Requires: python3-cairo
+Requires: python3-gobject
%endif
%description
@@ -55,6 +59,9 @@ Summary: Anthy Python files for IBus
Group: System Environment/Libraries
BuildArch: noarch
Requires: %{name} = %{version}-%{release}
+Requires: gtk3
+Requires: python3-cairo
+Requires: python3-gobject
%description python
This package contains the Anthy Python files for IBus
@@ -74,8 +81,10 @@ for developers.
%prep
%setup -q
# %%patch0 -p1
+%patch0 -p1
%build
+autoreconf
%configure \
%if %have_default_layout
--with-layout='default' \
@@ -148,6 +157,9 @@ touch --no-create %{_datadir}/icons/hicolor || :
%{_libdir}/libanthygobject-%{sub_version}.so
%changelog
+* Thu Feb 27 2014 Takao Fujiwara <tfujiwar at redhat.com> - 1.5.5-2
+- Updated ibus-anthy-HEAD.patch to enable property icon.
+
* Wed Feb 05 2014 Takao Fujiwara <tfujiwar at redhat.com> - 1.5.5-1
- Bumped to 1.5.5
- Enabled python3.
More information about the scm-commits
mailing list