def extract_display_keyvalues(self): """ Updates the display values, based on current include files, layout """ for counter in Common.keysegmentslist: self.dvalues[counter] = copy.copy(self.keyvalues[counter]) if self.keycode in KeyDict.IgnoreKeys: continue if self.keyvalues[counter].getType() == Common.keyvaluetype.NOSYMBOL: for layout in activated_variants.keys(): for variant in activated_variants[layout].keys(): if activated_variants[layout][variant].has_key(self.keycode): if activated_variants[layout][variant][self.keycode].has_key(counter): self.dvalues_inherited[counter] = True self.dvalues[counter] = copy.copy(activated_variants[layout][variant][self.keycode][counter]) if self.dvalues[counter].getType() == Common.keyvaluetype.NOSYMBOL: self.dvalues_inherited[counter] = False self.dvalues[counter] = copy.copy(self.keyvalues[counter])
def create_layout(self, layoutcode, layoutvariant, layoutcountry, layoutname, layoutkeys): """ Creates an lxml construct with the layout. Makes use of KeyDict.included_files, KeyDict.activated_variants """ self.new_layout = etree.Element("layout", layoutname=layoutcode) self.symbols = etree.SubElement(self.new_layout, "symbols") self.mapoption = etree.SubElement(self.symbols, "mapoption") self.mapoption.text = "xkb_symbols" self.mapname = etree.SubElement(self.symbols, "mapname") self.mapname.text = layoutvariant self.mapmaterial = etree.SubElement(self.symbols, "mapmaterial") self.tokenname = etree.SubElement(self.mapmaterial, "tokenname") self.tokenname.attrib["name"] = layoutname for includefile in activated_variants.keys(): for variant in activated_variants[includefile].keys(): self.tokinclude = etree.SubElement(self.mapmaterial, "tokeninclude") self.tokinclude.text = includefile + '(' + variant + ')' for keycodename in layoutkeys.keys(): if keycodename in KeyDict.IgnoreKeys: #print "keycodename", keycodename, "is in ignorekeys" continue votes_empty = 0 for counter in Common.keysegmentslist: if layoutkeys[keycodename].key.keyvalues[counter].getType( ) == Common.keyvaluetype.NOSYMBOL: votes_empty += 1 if votes_empty == len(Common.keysegmentslist): # print "Keycode", keycodename, "is empty, skipping" continue else: # print keycodename, "we only had", votes_empty, "votes," for counter in Common.keysegmentslist: pass #print layoutkeys[keycodename].key.keyvalues[counter].getValue(), #print #print layoutkeys[keycodename].key.keyvalues[Common.keysegments.ONE].getValue() self.tokenkey = etree.SubElement(self.mapmaterial, "tokenkey") self.tokenkey.attrib["override"] = "False" self.keycodename = etree.SubElement(self.tokenkey, "keycodename") self.keycodename.text = keycodename self.keysymgroup = etree.SubElement(self.tokenkey, "keysymgroup") self.symbolsgroup = etree.SubElement(self.keysymgroup, "symbolsgroup") # print "Counting elems in key:", for counter in Common.keysegmentslistreverse: max_index = counter if layoutkeys[keycodename].key.keyvalues[counter].getType( ) == Common.keyvaluetype.NOSYMBOL: #print "O", continue else: break #print #print "Doing look between", Common.keysegments.ONE, "and", max_index for counter in range(Common.keysegments.ONE, max_index + 1): sym = etree.SubElement(self.symbolsgroup, "symbol") sym.text = layoutkeys[keycodename].key.keyvalues[ counter].getValue() if sym.text == "": sym.text = "NoSymbol" # print "sym.text", sym.text return self.new_layout
def create_layout(self, layoutcode, layoutvariant, layoutcountry, layoutname, layoutkeys): """ Creates an lxml construct with the layout. Makes use of KeyDict.included_files, KeyDict.activated_variants """ self.new_layout = etree.Element("layout", layoutname = layoutcode) self.symbols = etree.SubElement(self.new_layout, "symbols") self.mapoption = etree.SubElement(self.symbols, "mapoption") self.mapoption.text = "xkb_symbols" self.mapname = etree.SubElement(self.symbols, "mapname") self.mapname.text = layoutvariant self.mapmaterial = etree.SubElement(self.symbols, "mapmaterial") self.tokenname = etree.SubElement(self.mapmaterial, "tokenname") self.tokenname.attrib["name"] = layoutname for includefile in activated_variants.keys(): for variant in activated_variants[includefile].keys(): self.tokinclude = etree.SubElement(self.mapmaterial, "tokeninclude") self.tokinclude.text = includefile + '(' + variant + ')' for keycodename in layoutkeys.keys(): if keycodename in KeyDict.IgnoreKeys: #print "keycodename", keycodename, "is in ignorekeys" continue votes_empty = 0 for counter in Common.keysegmentslist: if layoutkeys[keycodename].key.keyvalues[counter].getType() == Common.keyvaluetype.NOSYMBOL: votes_empty += 1 if votes_empty == len(Common.keysegmentslist): # print "Keycode", keycodename, "is empty, skipping" continue else: # print keycodename, "we only had", votes_empty, "votes," for counter in Common.keysegmentslist: pass #print layoutkeys[keycodename].key.keyvalues[counter].getValue(), #print #print layoutkeys[keycodename].key.keyvalues[Common.keysegments.ONE].getValue() self.tokenkey = etree.SubElement(self.mapmaterial, "tokenkey") self.tokenkey.attrib["override"] = "False" self.keycodename = etree.SubElement(self.tokenkey, "keycodename") self.keycodename.text = keycodename self.keysymgroup = etree.SubElement(self.tokenkey, "keysymgroup") self.symbolsgroup = etree.SubElement(self.keysymgroup, "symbolsgroup") # print "Counting elems in key:", for counter in Common.keysegmentslistreverse: max_index = counter if layoutkeys[keycodename].key.keyvalues[counter].getType() == Common.keyvaluetype.NOSYMBOL: #print "O", continue else: break #print #print "Doing look between", Common.keysegments.ONE, "and", max_index for counter in range(Common.keysegments.ONE, max_index + 1): sym = etree.SubElement(self.symbolsgroup, "symbol") sym.text = layoutkeys[keycodename].key.keyvalues[counter].getValue() if sym.text == "": sym.text = "NoSymbol" # print "sym.text", sym.text return self.new_layout