From 3440d89e8cea73838b75b08e0d78a83e5556ecb4 Mon Sep 17 00:00:00 2001 From: Huang Peng Date: Wed, 2 Jul 2008 19:27:39 +0800 Subject: [PATCH] Group input methods and translate lang to readable text. --- panel/lang.py | 113 +++++++++++++++++++++++++++++++++++++++++++++++-- panel/panel.py | 30 +++++++++++-- 2 files changed, 135 insertions(+), 8 deletions(-) diff --git a/panel/lang.py b/panel/lang.py index 98c29882..5c9424b7 100644 --- a/panel/lang.py +++ b/panel/lang.py @@ -20,8 +20,113 @@ # Boston, MA 02111-1307 USA LANGUAGES = { - "zh" : "Chinese", - "zh_CN" : "Chinese (Simplified)", - "en" : "English", - "ja" : "Japanese" + "C" : "English/Keyboard", + "am_ET" : "Amharic", + "ar" : "Arabic", + "ar_EG" : "Arabic (Egypt)", + "ar_LB" : "Arabic (Lebanon)", + "as_IN" : "Assamese", + "az_AZ" : "Azerbaijani", + "be_BY" : "Belarusian", + "bg_BG" : "Bulgarian", + "bn" : "Bengali", + "bn_BD" : "Bengali", + "bn_IN" : "Bengali (India)", + "bo" : "Tibetan", + "bs_BA" : "Bosnian", + "ca_ES" : "Catalan", + "cs_CZ" : "Czech", + "cy_GB" : "Welsh", + "da_DK" : "Danish", + "de_DE" : "German", + "dv_MV" : "Divehi", + "el_GR" : "Greek", + "en" : "English", + "en_AU" : "English (Australian)", + "en_CA" : "English (Canadian)", + "en_GB" : "English (British)", + "en_IE" : "English (Ireland)", + "en_US" : "English (American)", + "es" : "Spanish", + "es_ES" : "Spanish", + "es_MX" : "Spanish (Mexico)", + "et_EE" : "Estonian", + "eu_ES" : "Basque", + "fa_IR" : "Persian", + "fi_FI" : "Finnish", + "fr_FR" : "French", + "ga_IE" : "Irish", + "gl_ES" : "Galician", + "gu_IN" : "Gujarati", + "he_IL" : "Hebrew", + "hi_IN" : "Hindi", + "hr_HR" : "Croatian", + "hu_HU" : "Hungarian", + "hy_AM" : "Armenian", + "ia" : "Interlingua", + "id_ID" : "Indonesian", + "is_IS" : "Icelandic", + "it_IT" : "Italian", + "iw_IL" : "Hebrew", + "ja_JP" : "Japanese", + "ka_GE" : "Georgian", + "kk_KZ" : "Kazakh", + "km" : "Cambodian", + "kn_IN" : "Kannada", + "ko_KR" : "Korean", + "lo_LA" : "Laothian", + "lt_LT" : "Lithuanian", + "lv_LV" : "Latvian", + "mk_MK" : "Macedonian", + "ml_IN" : "Malayalam", + "mn_MN" : "Mongolian", + "mr_IN" : "Marathi", + "ms_MY" : "Malay", + "my_MM" : "Burmese", + "ne_NP" : "Nepali", + "nl_NL" : "Dutch", + "nn_NO" : "Norwegian (nynorsk)", + "no_NO" : "Norwegian (bokmal)", + "or_IN" : "Oriya", + "pa_IN" : "Punjabi", + "pl_PL" : "Polish", + "pt" : "Portuguese", + "pt_BR" : "Portuguese (Brazil)", + "pt_PT" : "Portuguese", + "ro_RO" : "Romanian", + "ru_RU" : "Russian", + "si_LK" : "Sinhala", + "sk_SK" : "Slovak", + "sl_SI" : "Slovenian", + "sq_AL" : "Albanian", + "sr" : "Serbian", + "sr_CS" : "Serbian", + "sr_YU" : "Serbian", + "sv" : "Swedish", + "sv_FI" : "Swedish (Finland)", + "sv_SE" : "Swedish", + "ta_IN" : "Tamil", + "te_IN" : "Telugu", + "th_TH" : "Thai", + "tr_TR" : "Turkish", + "ug" : "Uighur", + "uk_UA" : "Ukrainian", + "ur_PK" : "Urdu", + "uz_UZ" : "Uzbek", + "vi_VN" : "Vietnamese", + "wa_BE" : "Walloon", + "yi" : "Yiddish", + "yi_US" : "Yiddish", + "zh" : "Chinese", + "zh_CN" : "Chinese (simplified)", + "zh_HK" : "Chinese (traditional)", + "zh_TW" : "Chinese (traditional)", } + +for k in LANGUAGES.keys (): + try: + lang, local = k.split ("_") + if lang not in LANGUAGES: + LANGUAGES[lang] = LANGUAGES [k] + except: + pass diff --git a/panel/panel.py b/panel/panel.py index 89c4d8e1..b6862886 100644 --- a/panel/panel.py +++ b/panel/panel.py @@ -149,19 +149,41 @@ class Panel (ibus.Object): def _create_im_menu (self): menu = gtk.Menu () factories = self._ibus.GetFactories () + if not factories: item = gtk.MenuItem (label = "no engine") item.set_sensitive (False) menu.add (item) else: + tmp = {} for factory in factories: name, lang, icon, authors, credits = self._ibus.GetFactoryInfo (factory) - item = gtk.ImageMenuItem ("%s - %s" % (LANGUAGES.get (lang, lang), name)) + lang = LANGUAGES.get (lang, lang) if not icon: icon = "engine-default" - item.set_image (gtk.image_new_from_icon_name (icon, gtk.ICON_SIZE_MENU)) - item.connect ("activate", self._menu_item_activate_cb, factory) - menu.add (item) + if lang not in tmp: + tmp[lang] = [] + tmp[lang].append ((name, lang, icon, authors, credits, factory)) + + langs = tmp.keys () + langs.sort () + for lang in langs: + if len (tmp[lang]) == 1: + item = gtk.ImageMenuItem ("%s - %s" % (lang, name)) + item.set_image (gtk.image_new_from_icon_name (icon, gtk.ICON_SIZE_MENU)) + item.connect ("activate", self._menu_item_activate_cb, factory) + menu.add (item) + else: + item = gtk.MenuItem (lang) + menu.add (item) + submenu = gtk.Menu () + item.set_submenu (submenu) + for name, _lang, icon, authors, credits, factory in tmp[lang]: + item = gtk.ImageMenuItem (name) + item.set_image (gtk.image_new_from_icon_name (icon, gtk.ICON_SIZE_MENU)) + item.connect ("activate", self._menu_item_activate_cb, factory) + submenu.add (item) + menu.show_all () menu.set_take_focus (False) -- 2.34.1