Ejemplo n.º 1
0
    def __init__(self, parent, parentWin=None, inputWidgetW=widgetW, inputSaveMode=IlUtil.NS):

        # class variable(just for comments)
        self.parent = parent  # the parent(class)
        self.window = parentWin  # the window which include MainWidget(gtk.Window)
        cbW = inputWidgetW - 2 * sideW  # combobox width
        self.saveMode = inputSaveMode  # the current save mode(IlUtil.NS/IlUtil.IS)
        self.widget = None  # the main widget for return(gtk.Alignment)

        self.ilList = []  # input language list([il1,il2,...])
        self.kbList = []  # keyboard list([kb1,kb2,...])

        self.oriIl = None  # original input language(string)
        self.oriKb = None  # original keyboard(string)
        self.oriEnableIm = None  # original im flag(true/false)
        self.oriImInfoDic = {}  # original IM info dictionary({uuid:ImInfo})

        self.curIl = None  # current input language(string)
        self.curKb = None  # current keyboard(string)
        self.curEnableIm = None  # current im flag(true/false)
        self.curImInfoDic = {}  # current IM info dictionary({uuid:ImInfo})

        self.ilCb = None  # input language combobox(gtk.ComboBox)
        self.kbCb = None  # keyboard combobox(gtk.ComboBox)
        self.imCBtn = None  # input method check btn(gtk.CheckButton)
        self.imLs = None  # input method listStore(gtk.ListStore)
        self.imCb = None  # input method combobox(gtk.ComboBox)
        self.imCbIndexDic = {}  # input method combobox index directory
        # =index:im info(list)/"LangLabel"(string)/"AddRemoveBtn"(string)
        self.detailBtn = None  # input method detail btn(gtk.Button)
        self.detailHandlerId = None  # detail btn press handler
        self.advBtn = None  # advance btn(gtk.Button)

        self.detailChange = dict([(value, False) for value in IlUtil.SetupModuleDic.keys()])
        self.advanceChange = False

        # -----data initiailize-----

        # get env variables
        self.ilList = IlUtil.getInputLangList()
        self.kbList = IlUtil.getKeyboardList()
        self.curIl = Util.get_env_param("INPUTLANG")
        if self.curIl == None or self.curIl == "":
            self.curIl = Util.get_env_param("LANGNAME")
            Util.set_env_param("INPUTLANG", self.curIl)
        self.curKb = Util.get_env_param("KEYBOARD")
        if self.curKb not in self.kbList:
            if self.curKb == "U.S.English":
                self.curKb = "English U.S."
                Util.set_env_param("KEYBOARD", self.curKb)
            elif self.curKb == "United Kingdom":
                self.curKb = "English U.K."
                Util.set_env_param("KEYBOARD", self.curKb)
            elif self.curKb == "Arabic(001)":
                self.curKb = "Arabic (001)"
                Util.set_env_param("KEYBOARD", self.curKb)
            elif self.curKb == "Arabic(002)":
                self.curKb = "Arabic (002)"
                Util.set_env_param("KEYBOARD", self.curKb)
            elif self.curKb == "Czech(QWERTY)":
                self.curKb = "Czech (QWERTY)"
                Util.set_env_param("KEYBOARD", self.curKb)
            elif self.curKb == "Polish(programmers)":
                self.curKb = "Polish (programmers)"
                Util.set_env_param("KEYBOARD", self.curKb)
            elif self.curKb == "Portuguese(Brazilian ABNT)":
                self.curKb = "Portuguese (Brazilian ABNT)"
                Util.set_env_param("KEYBOARD", self.curKb)
            elif self.curKb == "Slovak(QWERTY)":
                self.curKb = "Slovak (QWERTY)"
                Util.set_env_param("KEYBOARD", self.curKb)
            else:
                pass
        curNoIm = Util.get_env_param("NO_IM")
        if curNoIm == "" or curNoIm == "no":
            self.curEnableIm = True
        else:
            self.curEnableIm = False
        self.curImInfoDic = IlUtil.getImInfoDicWithLang(self.curIl).copy()

        # store initial data
        self.storeCurToOri()

        # -----ui initiailize-----

        # initiailize locale
        gettext.bindtextdomain(IlUtil.RcDomain, IlUtil.LocaleDir)
        gettext.textdomain(IlUtil.RcDomain)
        gettext.install(IlUtil.RcDomain, IlUtil.LocaleDir, unicode=1)

        # ---mid area---

        # create ilBox and the return widget
        ilBox = gtk.VBox(False, IlUtil.padW * 2)
        ilBox.set_size_request(inputWidgetW, -1)
        ilAlign = gtk.Alignment(0.5, 0.5, 0, 0)
        ilAlign.add(ilBox)
        self.widget = ilAlign

        # create langSelect set
        langSelectBox = gtk.VBox(False, IlUtil.padW * 2)
        langSelectBox.set_size_request(cbW, -1)
        langSelectBoxAlign = gtk.Alignment(0.5, 0.5, 0, 0)
        langSelectBoxAlign.add(langSelectBox)
        ilBox.pack_start(langSelectBoxAlign, False, True)

        langSelectLb = gtk.Label(_("Input Language:"))
        langSelectLbAlign = gtk.Alignment(0, 0.8, 0, 0)
        langSelectLbAlign.add(langSelectLb)
        langSelectBox.pack_start(langSelectLbAlign, False, True)

        ilCb = gtk.combo_box_new_text()
        for il in self.ilList:
            ilCb.append_text(_(il))
        if self.curIl not in self.ilList:
            # if previous setting not in list, set English
            if "English" in self.ilList:
                i = self.ilList.index("English")
                ilCb.set_active(i)
            else:
                ilCb.set_active(0)
        else:
            i = self.ilList.index(self.curIl)
            ilCb.set_active(i)
        ilCb.connect("changed", self.onIlComboBoxChanged)
        langSelectBox.pack_start(ilCb, True, True)
        self.ilCb = ilCb

        # create kbAndIm set
        kbAndImFrame = gtk.Frame()
        kbAndImFrame.set_shadow_type(gtk.SHADOW_OUT)
        ilBox.pack_start(kbAndImFrame, True, True)
        kbAndImBox = gtk.VBox(True, IlUtil.padW)
        kbAndImBox.set_border_width(IlUtil.padW * 2)
        kbAndImBox.set_size_request(cbW + (IlUtil.padW * 2) * 2, -1)
        kbAndImBoxAlign = gtk.Alignment(0.5, 0.5, 0, 0)
        kbAndImBoxAlign.add(kbAndImBox)
        kbAndImFrame.add(kbAndImBoxAlign)

        # create keyboardSelect set
        kbLb = gtk.Label(_("Keyboard:"))
        kbLbAlign = gtk.Alignment(0, 0.8, 0, 0)
        kbLbAlign.add(kbLb)
        kbAndImBox.pack_start(kbLbAlign, False, True)
        kbCb = gtk.combo_box_new_text()
        kbCb.connect("changed", self.onKbComboBoxChanged)
        for kb in self.kbList:
            kbCb.append_text(_(kb))
        kbAndImBox.pack_start(kbCb, False, True)
        self.kbCb = kbCb
        # setup keyboard
        self.kbCb.set_active(self.kbList.index(self.curKb))

        # create imSelect set
        imCBtn = gtk.CheckButton(_("Input Method:"))
        imCBtn.connect("toggled", self.onImCheckBtnToggled)
        self.imCBtn = imCBtn
        imLbAlign = gtk.Alignment(0, 0.8, 0, 0)
        imLbAlign.add(imCBtn)
        kbAndImBox.pack_start(imLbAlign, False, True)

        imFunBox = gtk.HBox(False, IlUtil.padW)
        kbAndImBox.pack_start(imFunBox, False, True)

        imLs = gtk.ListStore(gobject.TYPE_STRING, gtk.gdk.Pixbuf, gobject.TYPE_STRING, gobject.TYPE_STRING)
        self.imLs = imLs
        imCb = gtk.ComboBox(imLs)
        imCb.connect("changed", self.onImComboBoxChanged)
        titleCell = gtk.CellRendererText()
        # titleCell.set_properties(scale_set=True,scale=0.9)
        titleCell.set_property("scale_set", True)
        titleCell.set_property("scale", 0.9)
        iconCell = gtk.CellRendererPixbuf()
        imnameCell = gtk.CellRendererText()
        actionCell = gtk.CellRendererText()
        # actionCell.set_properties(scale_set=True,scale=0.9,\
        # underline_set=True,underline=pango.UNDERLINE_LOW)
        actionCell.set_property("scale_set", True)
        actionCell.set_property("scale", 0.9)
        actionCell.set_property("underline_set", True)
        actionCell.set_property("underline", pango.UNDERLINE_LOW)
        imCb.pack_start(titleCell, False)
        imCb.pack_start(iconCell, False)
        imCb.pack_start(imnameCell, True)
        imCb.pack_start(actionCell, False)
        imCb.add_attribute(titleCell, "text", LangCol)
        imCb.add_attribute(iconCell, "pixbuf", IconCol)
        imCb.add_attribute(imnameCell, "text", NameCol)
        imCb.add_attribute(actionCell, "text", FunCol)
        imFunBox.pack_start(imCb, True, True)
        self.imCb = imCb

        detailBtn = gtk.Button(_("..."))
        detailBtn.set_sensitive(False)
        imFunBox.pack_start(detailBtn, False, False)
        self.detailBtn = detailBtn

        # create advance btn
        advBtn = gtk.Button(_("Advanced"))
        advBtn.set_size_request(IlUtil.btnW, IlUtil.btnH)
        advBtn.connect("button-press-event", self.onAdvBtnPressed)
        advBtnAlign = gtk.Alignment(1, 0.5, 0, 0)
        advBtnAlign.add(advBtn)
        kbAndImBox.pack_start(advBtnAlign, False, True)
        self.advBtn = advBtn

        # setup input method
        self.setupImComboBox()

        # setup disable/enable im
        self.setEnableImAndChangeUi(self.curEnableIm)