Bug 3018: ImportGrdb: remove calls to keys() dictionary method where possible
svn: r12572
This commit is contained in:
parent
51f65aa02f
commit
5eb7e18dc6
@ -155,8 +155,7 @@ class StandardCustomSelector(object):
|
||||
"""
|
||||
Fill with data
|
||||
"""
|
||||
keys = self.mapping.keys()
|
||||
keys.sort(self.by_value)
|
||||
keys = sorted(self.mapping, self.by_value)
|
||||
index = 0
|
||||
for key in keys:
|
||||
if key != self.custom_key:
|
||||
|
@ -951,10 +951,10 @@ class StyleSheetList(object):
|
||||
xml_file = open(self.file,"w")
|
||||
xml_file.write("<?xml version=\"1.0\"?>\n")
|
||||
xml_file.write('<stylelist>\n')
|
||||
for name in self.map.keys():
|
||||
|
||||
for name, sheet in self.map.iteritems():
|
||||
if name == "default":
|
||||
continue
|
||||
sheet = self.map[name]
|
||||
xml_file.write('<sheet name="%s">\n' % escxml(name))
|
||||
for p_name in sheet.get_paragraph_style_names():
|
||||
para = sheet.get_paragraph_style(p_name)
|
||||
@ -1031,17 +1031,13 @@ class StyleSheet(object):
|
||||
self.cell_styles = {}
|
||||
self.name = ""
|
||||
if obj is not None:
|
||||
for style_name in obj.para_styles.keys():
|
||||
style = obj.para_styles[style_name]
|
||||
for style_name, style in obj.para_styles.iteritems():
|
||||
self.para_styles[style_name] = ParagraphStyle(style)
|
||||
for style_name in obj.draw_styles.keys():
|
||||
style = obj.draw_styles[style_name]
|
||||
for style_name, style in obj.draw_styles.iteritems():
|
||||
self.draw_styles[style_name] = GraphicsStyle(style)
|
||||
for style_name in obj.table_styles.keys():
|
||||
style = obj.table_styles[style_name]
|
||||
for style_name, style in obj.table_styles.iteritems():
|
||||
self.table_styles[style_name] = TableStyle(style)
|
||||
for style_name in obj.cell_styles.keys():
|
||||
style = obj.cell_styles[style_name]
|
||||
for style_name, style in obj.cell_styles.iteritems():
|
||||
self.cell_styles[style_name] = TableCellStyle(style)
|
||||
|
||||
def set_name(self, name):
|
||||
|
@ -221,8 +221,7 @@ class NameDisplay(object):
|
||||
"""
|
||||
the_list = []
|
||||
|
||||
keys = self.name_formats.keys()
|
||||
keys.sort(self._sort_name_format)
|
||||
keys = sorted(self.name_formats, self._sort_name_format)
|
||||
|
||||
for num in keys:
|
||||
if ((also_default or num) and
|
||||
@ -340,12 +339,12 @@ class NameDisplay(object):
|
||||
# key-word replacement. Just replace ikeywords with
|
||||
# %codes (ie, replace "irstnamefay" with "%f", and
|
||||
# "IRSTNAMEFAY" for %F)
|
||||
|
||||
if (len(format_str) > 2 and
|
||||
format_str[0] == '"' and
|
||||
format_str[-1] == '"'):
|
||||
format_str[0] == format_str[-1] == '"'):
|
||||
pass
|
||||
else:
|
||||
d_keys = [(code, d[code][2]) for code in d.keys()]
|
||||
d_keys = [(code, _tuple[2]) for code, _tuple in d.iteritems()]
|
||||
d_keys.sort(_make_cmp) # reverse sort by ikeyword
|
||||
for (code, ikeyword) in d_keys:
|
||||
exp, keyword, ikeyword = d[code]
|
||||
@ -358,11 +357,10 @@ class NameDisplay(object):
|
||||
# %codes (ie, replace "firstname" with "%f", and
|
||||
# "FIRSTNAME" for %F)
|
||||
if (len(format_str) > 2 and
|
||||
format_str[0] == '"' and
|
||||
format_str[-1] == '"'):
|
||||
format_str = format_str[1:-1]
|
||||
format_str[0] == format_str[-1] == '"'):
|
||||
pass
|
||||
else:
|
||||
d_keys = [(code, d[code][1]) for code in d.keys()]
|
||||
d_keys = [(code, _tuple[1]) for code, _tuple in d.iteritems()]
|
||||
d_keys.sort(_make_cmp) # reverse sort by keyword
|
||||
# if in double quotes, just use % codes
|
||||
for (code, keyword) in d_keys:
|
||||
@ -372,7 +370,7 @@ class NameDisplay(object):
|
||||
format_str = format_str.replace(keyword.title(),"%"+ code)
|
||||
format_str = format_str.replace(keyword.upper(),"%"+ code.upper())
|
||||
# Get lower and upper versions of codes:
|
||||
codes = d.keys() + [c.upper() for c in d.keys()]
|
||||
codes = d.keys() + [c.upper() for c in d]
|
||||
# Next, list out the matching patterns:
|
||||
# If it starts with "!" however, treat the punctuation verbatim:
|
||||
if len(format_str) > 0 and format_str[0] == "!":
|
||||
|
@ -98,12 +98,10 @@ class IniKeyClient(object):
|
||||
fp = open(filename, "w")
|
||||
fp.write(";; Gramps key file" + NL)
|
||||
fp.write((";; Automatically created at %s" % time.strftime("%Y/%m/%d %H:%M:%S")) + NL + NL)
|
||||
sections = self.data.keys()
|
||||
sections.sort()
|
||||
sections = sorted(self.data)
|
||||
for section in sections:
|
||||
fp.write(("[%s]" + NL) % section)
|
||||
keys = self.data[section].keys()
|
||||
keys.sort()
|
||||
keys = sorted(self.data[section])
|
||||
for key in keys:
|
||||
fp.write(("%s=%s" + NL)% (key, self.data[section][key]))
|
||||
fp.write(NL)
|
||||
|
@ -92,9 +92,7 @@ class NodeTreeMap(object):
|
||||
self.temp_sname_sub = {}
|
||||
|
||||
def build_toplevel(self):
|
||||
mylist = self.temp_sname_sub.keys()
|
||||
mylist.sort(locale.strcoll)
|
||||
self.temp_top_path2iter = mylist
|
||||
self.temp_top_path2iter = sorted(self.temp_sname_sub, locale.strcoll)
|
||||
for name in self.temp_top_path2iter:
|
||||
self.build_sub_entry(name)
|
||||
|
||||
|
@ -540,9 +540,7 @@ class EditRule(ManagedWindow.ManagedWindow):
|
||||
else:
|
||||
self.sel_class = None
|
||||
|
||||
keys = the_map.keys()
|
||||
keys.sort(by_rule_name)
|
||||
keys.reverse()
|
||||
keys = sorted(the_map, by_rule_name, reverse=True)
|
||||
catlist = []
|
||||
for class_obj in keys:
|
||||
category = class_obj.category
|
||||
|
@ -128,6 +128,6 @@ class RelationshipPathBetween(Rule):
|
||||
self.map[e] = 1
|
||||
|
||||
def get_intersection(self,target, map1, map2):
|
||||
for e in map1.keys():
|
||||
for e in map1:
|
||||
if e in map2:
|
||||
target[e] = map2[e]
|
||||
|
@ -272,16 +272,13 @@ class GedcomInfoDB(object):
|
||||
return self.standard
|
||||
|
||||
def get_from_source_tag(self, name):
|
||||
for k in self.map.keys():
|
||||
val = self.map[k]
|
||||
for k, val in self.map.iteritems():
|
||||
if val.get_dest() == name:
|
||||
return val
|
||||
return self.standard
|
||||
|
||||
def get_name_list(self):
|
||||
mylist = self.map.keys()
|
||||
mylist.sort()
|
||||
return ["GEDCOM 5.5 standard"] + mylist
|
||||
return ["GEDCOM 5.5 standard"] + sorted(self.map)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
|
@ -54,19 +54,16 @@ LOG = logging.getLogger(".GedcomImport")
|
||||
#-------------------------------------------------------------------------
|
||||
|
||||
GED2GRAMPS = {}
|
||||
for __val in personalConstantEvents.keys():
|
||||
__key = personalConstantEvents[__val]
|
||||
for __val, __key in personalConstantEvents.iteritems():
|
||||
if __key != "":
|
||||
GED2GRAMPS[__key] = __val
|
||||
|
||||
for __val in familyConstantEvents.keys():
|
||||
__key = familyConstantEvents[__val]
|
||||
for __val, __key in familyConstantEvents.iteritems():
|
||||
if __key != "":
|
||||
GED2GRAMPS[__key] = __val
|
||||
|
||||
GED2ATTR = {}
|
||||
for __val in personalConstantAttributes.keys():
|
||||
__key = personalConstantAttributes[__val]
|
||||
for __val, __key in personalConstantAttributes.iteritems():
|
||||
if __key != "":
|
||||
GED2ATTR[__key] = __val
|
||||
|
||||
|
@ -197,14 +197,14 @@ MEDIA_MAP = {
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
GED_2_GRAMPS = {}
|
||||
for _val in GedcomInfo.personalConstantEvents.keys():
|
||||
_key = GedcomInfo.personalConstantEvents[_val]
|
||||
for _val, _key in GedcomInfo.personalConstantEvents.iteritems():
|
||||
#_key = GedcomInfo.personalConstantEvents[_val]
|
||||
if _key != "":
|
||||
GED_2_GRAMPS[_key] = _val
|
||||
|
||||
GED_2_FAMILY = {}
|
||||
for _val in GedcomInfo.familyConstantEvents.keys():
|
||||
_key = GedcomInfo.familyConstantEvents[_val]
|
||||
for _val, _key in GedcomInfo.familyConstantEvents.iteritems():
|
||||
#_key = GedcomInfo.familyConstantEvents[_val]
|
||||
if _key != "":
|
||||
GED_2_FAMILY[_key] = _val
|
||||
|
||||
@ -786,8 +786,8 @@ class GedcomParser(UpdateCallback):
|
||||
|
||||
self.attrs = amap.values()
|
||||
self.gedattr = {}
|
||||
for val in amap.keys():
|
||||
self.gedattr[amap[val]] = val
|
||||
for val, key in amap.iteritems():
|
||||
self.gedattr[key] = val
|
||||
self.search_paths = []
|
||||
|
||||
def parse_gedcom_file(self, use_trans=False):
|
||||
@ -807,9 +807,7 @@ class GedcomParser(UpdateCallback):
|
||||
self.dbase.add_source(self.def_src, self.trans)
|
||||
self.__parse_record()
|
||||
self.__parse_trailer()
|
||||
|
||||
for title in self.inline_srcs.keys():
|
||||
handle = self.inline_srcs[title]
|
||||
for title, handle in self.inline_srcs.iteritems():
|
||||
src = gen.lib.Source()
|
||||
src.set_handle(handle)
|
||||
src.set_title(title)
|
||||
|
@ -91,8 +91,7 @@ class LdsTemples(object):
|
||||
"""
|
||||
returns a list of temple codes, temple name tuples
|
||||
"""
|
||||
return [ (self.__temple_codes[name], name) \
|
||||
for name in self.__temple_codes.keys() ]
|
||||
return [(code, name) for name, code in self.__temple_codes.iteritems()]
|
||||
|
||||
def __start_element(self, tag, attrs):
|
||||
"""
|
||||
|
@ -152,7 +152,7 @@ class MergeSources(ManagedWindow.ManagedWindow):
|
||||
|
||||
src2_map = self.s2.get_data_map()
|
||||
src1_map = self.s1.get_data_map()
|
||||
for key in src2_map.keys():
|
||||
for key in src2_map:
|
||||
if key not in src1_map:
|
||||
src1_map[key] = src2_map[key]
|
||||
|
||||
|
@ -198,20 +198,20 @@ class OptionListCollection(object):
|
||||
option_list = self.get_option_list(module_name)
|
||||
f.write('<module name=%s>\n' % quoteattr(module_name))
|
||||
options = option_list.get_options()
|
||||
for option_name in options.keys():
|
||||
if isinstance(options[option_name], (list, tuple)):
|
||||
for option_name, option_data in options.iteritems():
|
||||
if isinstance(option_data, (list, tuple)):
|
||||
f.write(' <option name=%s value="" length="%d">\n' % (
|
||||
quoteattr(option_name),
|
||||
len(options[option_name]) ) )
|
||||
for list_index in range(len(options[option_name])):
|
||||
len(option_data) ) )
|
||||
for list_index, list_data in enumerate(option_data):
|
||||
f.write(' <listitem number="%d" value=%s/>\n' % (
|
||||
list_index,
|
||||
quoteattr(unicode(options[option_name][list_index]))) )
|
||||
quoteattr(unicode(list_data))) )
|
||||
f.write(' </option>\n')
|
||||
else:
|
||||
f.write(' <option name=%s value=%s/>\n' % (
|
||||
quoteattr(option_name),
|
||||
quoteattr(unicode(options[option_name]))) )
|
||||
quoteattr(unicode(option_data))) )
|
||||
|
||||
self.write_module_common(f, option_list)
|
||||
|
||||
@ -334,7 +334,7 @@ class OptionHandler(object):
|
||||
# First we set options_dict values based on the saved options
|
||||
options = self.saved_option_list.get_options()
|
||||
bad_opts = []
|
||||
for option_name in options.keys():
|
||||
for option_name, option_data in options.iteritems():
|
||||
if option_name not in self.options_dict:
|
||||
print "Option %s is present in the %s but is not known "\
|
||||
"to the module." % (option_name,
|
||||
@ -344,7 +344,7 @@ class OptionHandler(object):
|
||||
continue
|
||||
try:
|
||||
converter = Utils.get_type_converter(self.options_dict[option_name])
|
||||
self.options_dict[option_name] = converter(options[option_name])
|
||||
self.options_dict[option_name] = converter(option_data)
|
||||
except ValueError:
|
||||
pass
|
||||
except TypeError:
|
||||
@ -368,8 +368,8 @@ class OptionHandler(object):
|
||||
"""
|
||||
|
||||
# First we save options from options_dict
|
||||
for option_name in self.options_dict.keys():
|
||||
if self.options_dict[option_name] == self.default_options_dict[option_name]:
|
||||
for option_name, option_data in self.options_dict.iteritems():
|
||||
if option_data == self.default_options_dict[option_name]:
|
||||
self.saved_option_list.remove_option(option_name)
|
||||
else:
|
||||
self.saved_option_list.set_option(option_name,self.options_dict[option_name])
|
||||
|
@ -72,7 +72,6 @@ class PluginDialog(ManagedWindow.ManagedWindow):
|
||||
reports. This is used to build the selection tree on the left
|
||||
hand side of the dialog box.
|
||||
"""
|
||||
|
||||
self.active = state.active
|
||||
self.imap = {}
|
||||
self.msg = msg
|
||||
@ -189,7 +188,6 @@ class PluginDialog(ManagedWindow.ManagedWindow):
|
||||
Items in the same category are grouped under the same submenu.
|
||||
The categories must be dicts from integer to string.
|
||||
"""
|
||||
|
||||
ilist = []
|
||||
self.store.clear()
|
||||
|
||||
@ -207,9 +205,8 @@ class PluginDialog(ManagedWindow.ManagedWindow):
|
||||
|
||||
# add a submenu for each category, and populate it with the
|
||||
# GtkTreeItems that are associated with it.
|
||||
key_list = [ item for item in item_hash.keys() if item != _UNSUPPORTED]
|
||||
key_list.sort()
|
||||
key_list.reverse()
|
||||
key_list = [item for item in item_hash if item != _UNSUPPORTED]
|
||||
key_list.sort(reverse=True)
|
||||
|
||||
prev = None
|
||||
if _UNSUPPORTED in item_hash:
|
||||
@ -228,7 +225,7 @@ class PluginDialog(ManagedWindow.ManagedWindow):
|
||||
node = self.store.insert_after(None, prev)
|
||||
self.store.set(node, 0, key)
|
||||
next = None
|
||||
data.sort(lambda x, y: cmp(x[2], y[2]))
|
||||
data.sort(key=lambda k:k[2])
|
||||
for item in data:
|
||||
next = self.store.insert_after(node, next)
|
||||
ilist.append((next, item))
|
||||
|
@ -210,20 +210,17 @@ class DocReportDialog(ReportDialog):
|
||||
yoptions=gtk.SHRINK)
|
||||
|
||||
self.template_combo = gtk.combo_box_new_text()
|
||||
tlist = _template_map.keys()
|
||||
tlist.sort()
|
||||
tlist = sorted(_template_map)
|
||||
|
||||
template_name = self.options.handler.get_template_name()
|
||||
|
||||
self.template_combo.append_text(_default_template)
|
||||
template_index = 1
|
||||
active_index = 0
|
||||
for template in tlist:
|
||||
for template_index, template in enumerate(sorted(_template_map)):
|
||||
if template != _user_template:
|
||||
self.template_combo.append_text(template)
|
||||
if _template_map[template] == os.path.basename(template_name):
|
||||
active_index = template_index
|
||||
template_index = template_index + 1
|
||||
self.template_combo.append_text(_user_template)
|
||||
|
||||
self.template_combo.connect('changed',self.html_file_enable)
|
||||
|
@ -59,18 +59,14 @@ class StyleComboBox(gtk.ComboBox):
|
||||
self.store = gtk.ListStore(gobject.TYPE_STRING)
|
||||
self.set_model(self.store)
|
||||
self.style_map = style_map
|
||||
keys = style_map.keys()
|
||||
keys.sort()
|
||||
index = 0
|
||||
start_index = 0
|
||||
for key in keys:
|
||||
for index, key in enumerate(sorted(style_map)):
|
||||
if key == "default":
|
||||
self.store.append(row=[_('default')])
|
||||
else:
|
||||
self.store.append(row=[key])
|
||||
if key == default:
|
||||
start_index = index
|
||||
index += 1
|
||||
|
||||
self.set_active(start_index)
|
||||
|
||||
|
@ -103,10 +103,9 @@ class TipFromFunction(object):
|
||||
o = self._fetch_function()
|
||||
|
||||
# check if we have a handler for the object type returned
|
||||
for cls in CLASS_MAP.keys():
|
||||
for cls, handler in CLASS_MAP.iteritems():
|
||||
if isinstance(o,cls):
|
||||
return CLASS_MAP[cls](self._db, o)()
|
||||
|
||||
return handler(self._db, o)()
|
||||
return "no tip"
|
||||
|
||||
__call__ = get_tip
|
||||
|
@ -1389,7 +1389,7 @@ class ViewManager(object):
|
||||
(item[0], item[1], item[2], item[4], item[3], item[10])]
|
||||
|
||||
# Sort categories, skipping the unsupported
|
||||
catlist = [item for item in hash_data.keys()
|
||||
catlist = [item for item in hash_data
|
||||
if item != _UNSUPPORTED]
|
||||
catlist.sort()
|
||||
for key in catlist:
|
||||
|
@ -1,4 +1,4 @@
|
||||
#
|
||||
k#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2000-2004 Donald N. Allingham
|
||||
@ -111,10 +111,9 @@ class ODSDoc(SpreadSheetDoc):
|
||||
self.f.write('style:font-family-generic="swiss" ')
|
||||
self.f.write('style:font-pitch="variable"/>\n')
|
||||
self.f.write('</office:font-face-decls>\n')
|
||||
|
||||
self.f.write('<office:automatic-styles>\n')
|
||||
for key in self.table_styles.keys():
|
||||
table = self.table_styles[key]
|
||||
|
||||
for key, table in self.table_styles.iteritems():
|
||||
self.f.write('<style:style style:name="')
|
||||
self.f.write(key)
|
||||
self.f.write('" style:family="table" ')
|
||||
@ -133,8 +132,7 @@ class ODSDoc(SpreadSheetDoc):
|
||||
self.f.write('<style:table-row-properties fo:break-before="auto"/>\n')
|
||||
self.f.write('</style:style>\n')
|
||||
|
||||
for key in self.style_list.keys():
|
||||
style = self.style_list[key]
|
||||
for key, style in self.style_list.iteritems():
|
||||
font = style.get_font()
|
||||
self.f.write('<style:style style:name="')
|
||||
self.f.write(key)
|
||||
|
@ -106,8 +106,8 @@ class OpenSpreadSheet(SpreadSheetDoc):
|
||||
self.f.write('style:font-pitch="variable"/>\n')
|
||||
self.f.write('</office:font-decls>\n')
|
||||
self.f.write('<office:automatic-styles>\n')
|
||||
for key in self.table_styles.keys():
|
||||
table = self.table_styles[key]
|
||||
|
||||
for key, table in self.table_styles.iteritems():
|
||||
self.f.write('<style:style style:name="')
|
||||
self.f.write(key)
|
||||
self.f.write('" style:family="table">\n')
|
||||
@ -125,9 +125,8 @@ class OpenSpreadSheet(SpreadSheetDoc):
|
||||
self.f.write('<style:style style:name="ro1" style:family="table-row">\n')
|
||||
self.f.write('<style:properties fo:break-before="auto"/>\n')
|
||||
self.f.write('</style:style>\n')
|
||||
|
||||
for key in self.style_list.keys():
|
||||
style = self.style_list[key]
|
||||
|
||||
for key, style in self.style_list.iteritems():
|
||||
font = style.get_font()
|
||||
self.f.write('<style:style style:name="')
|
||||
self.f.write(key)
|
||||
|
@ -204,7 +204,7 @@ def eval_func(dateval, e1, e2, e3):
|
||||
def suite3():
|
||||
suite = unittest.TestSuite()
|
||||
count = 1
|
||||
for testset in date_tests.keys():
|
||||
for testset in date_tests:
|
||||
for format in range( len( DateHandler.get_date_formats())):
|
||||
DateHandler.set_format(format)
|
||||
for dateval in date_tests[testset]:
|
||||
|
@ -123,7 +123,7 @@ class Menu(object):
|
||||
|
||||
@return: an Option instance or None on failure.
|
||||
"""
|
||||
for category in self.__options.keys():
|
||||
for category in self.__options:
|
||||
for (oname, option) in self.__options[category]:
|
||||
if oname == name:
|
||||
return option
|
||||
|
@ -371,9 +371,9 @@ class ReferencedProxyDb(ProxyDbBase):
|
||||
last_count = 0
|
||||
while has_unreferenced_handles:
|
||||
current_count = 0
|
||||
for object_type in object_types.keys():
|
||||
unref_list = object_types[object_type]['unref_list']
|
||||
handle_list = object_types[object_type]['handle_list']()
|
||||
for object_type, object_dict in object_types.iteritems():
|
||||
unref_list = object_dict['unref_list']
|
||||
handle_list = object_dict['handle_list']()
|
||||
for handle in handle_list:
|
||||
ref_handles = [i for i in \
|
||||
self.find_backlink_handles(handle)]
|
||||
|
@ -252,10 +252,9 @@ def db_copy(from_db,to_db,callback):
|
||||
|
||||
# Start batch transaction to use async TXN and other tricks
|
||||
trans = to_db.transaction_begin("", batch=True)
|
||||
|
||||
for table_name in tables.keys():
|
||||
cursor_func = tables[table_name]['cursor_func']
|
||||
add_func = tables[table_name]['add_func']
|
||||
for table_name, table_dict in tables.iteritems():
|
||||
cursor_func = table_dict['cursor_func']
|
||||
add_func = table_dict['add_func']
|
||||
|
||||
cursor = cursor_func()
|
||||
item = cursor.first()
|
||||
|
@ -421,8 +421,7 @@ class BookList(object):
|
||||
f = open(self.file, "w")
|
||||
f.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n")
|
||||
f.write('<booklist>\n')
|
||||
|
||||
for name in self.bookmap.keys():
|
||||
for name in self.bookmap:
|
||||
book = self.get_book(name)
|
||||
dbname = book.get_dbname()
|
||||
f.write('<book name="%s" database="%s">\n' % (name, dbname) )
|
||||
@ -430,14 +429,13 @@ class BookList(object):
|
||||
f.write(' <item name="%s" trans_name="%s">\n' %
|
||||
(item.get_name(),item.get_translated_name() ) )
|
||||
options = item.option_class.handler.options_dict
|
||||
for option_name in options.keys():
|
||||
option_value = options[option_name]
|
||||
for option_name, option_value in options.iteritems():
|
||||
if isinstance(option_value, (list, tuple)):
|
||||
f.write(' <option name="%s" value="" '
|
||||
'length="%d">\n' % (
|
||||
escape(option_name),
|
||||
len(options[option_name]) ) )
|
||||
for list_index in range(len(options[option_name])):
|
||||
for list_index in range(len(option_value)):
|
||||
option_type = \
|
||||
Utils.type_name(option_value[list_index])
|
||||
value = escape(unicode(option_value[list_index]))
|
||||
|
@ -279,12 +279,12 @@ class PrintPreview(object):
|
||||
self._drawing_area.queue_draw()
|
||||
|
||||
self._zoom_in_button.set_sensitive(self._zoom !=
|
||||
max(self.zoom_factors.keys()))
|
||||
max(self.zoom_factors))
|
||||
self._zoom_out_button.set_sensitive(self._zoom !=
|
||||
min(self.zoom_factors.keys()))
|
||||
min(self.zoom_factors))
|
||||
|
||||
def __zoom_in(self):
|
||||
zoom = [z for z in self.zoom_factors.keys() if z > self._zoom]
|
||||
zoom = [z for z in self.zoom_factors if z > self._zoom]
|
||||
|
||||
if zoom:
|
||||
return min(zoom)
|
||||
@ -292,7 +292,7 @@ class PrintPreview(object):
|
||||
return self._zoom
|
||||
|
||||
def __zoom_out(self):
|
||||
zoom = [z for z in self.zoom_factors.keys() if z < self._zoom]
|
||||
zoom = [z for z in self.zoom_factors if z < self._zoom]
|
||||
|
||||
if zoom:
|
||||
return max(zoom)
|
||||
|
@ -340,13 +340,13 @@ class HtmlDoc(BaseDoc.BaseDoc,BaseDoc.TextDoc):
|
||||
|
||||
def write_support_files(self):
|
||||
if self.map:
|
||||
for name in self.map.keys():
|
||||
for name, handle in self.map.iteritems():
|
||||
if name == 'template.html':
|
||||
continue
|
||||
fname = '%s%s%s' % (self.base, os.path.sep, name)
|
||||
try:
|
||||
f = open(fname, 'wb')
|
||||
f.write(self.map[name].read())
|
||||
f.write(handle.read())
|
||||
f.close()
|
||||
except IOError,msg:
|
||||
errmsg = "%s\n%s" % (_("Could not create %s") % fname, msg)
|
||||
|
@ -123,16 +123,14 @@ class GenChart(object):
|
||||
self.array[y][x] = value
|
||||
|
||||
def dimensions(self):
|
||||
return (max(self.array.keys())+1, self.max_x+1)
|
||||
return (max(self.array)+1, self.max_x+1)
|
||||
|
||||
def compress(self):
|
||||
new_map = {}
|
||||
new_array = {}
|
||||
old_y = 0
|
||||
new_y = 0
|
||||
|
||||
for key in self.array.keys():
|
||||
i = self.array[key]
|
||||
for key, i in self.array.iteritems():
|
||||
old_y = key
|
||||
if self.not_blank(i.values()):
|
||||
self.compress_map[old_y] = new_y
|
||||
@ -203,14 +201,12 @@ class AncestorTree(Report):
|
||||
self.scale = 1
|
||||
|
||||
self.apply_filter(center_person.get_handle(), 1)
|
||||
|
||||
keys = self.map.keys()
|
||||
keys.sort()
|
||||
keys = sorted(self.map)
|
||||
max_key = log2(keys[-1])
|
||||
|
||||
self.genchart = GenChart(max_key+1)
|
||||
for key in self.map.keys():
|
||||
self.genchart.set(key,self.map[key])
|
||||
for key, chart in self.map.iteritems():
|
||||
self.genchart.set(key, chart)
|
||||
self.calc()
|
||||
|
||||
if self.force_fit:
|
||||
|
@ -200,8 +200,7 @@ class AgeStatsGramplet(Gramplet):
|
||||
|
||||
def compute_stats(self, hash):
|
||||
""" Returns the statistics of a dictionary of data """
|
||||
hashkeys = hash.keys()
|
||||
hashkeys.sort()
|
||||
hashkeys = sorted(hash)
|
||||
count = sum(hash.values())
|
||||
sumval = sum([k * hash[k] for k in hash])
|
||||
minval = min(hashkeys)
|
||||
@ -241,8 +240,8 @@ class AgeStatsGramplet(Gramplet):
|
||||
"""
|
||||
# first, binify:
|
||||
bin = [0] * (max_val/bin_size)
|
||||
for value in hash.keys():
|
||||
bin[value/bin_size] += hash[value]
|
||||
for value, hash_value in hash.iteritems():
|
||||
bin[value/bin_size] += hash_value
|
||||
text = ""
|
||||
max_bin = float(max(bin))
|
||||
if max_bin != 0:
|
||||
|
@ -101,8 +101,7 @@ class GivenNameCloudGramplet(Gramplet):
|
||||
totals = {}
|
||||
for (count, givensubname) in cloud_names: # givensubname_sort:
|
||||
totals[count] = totals.get(count, 0) + 1
|
||||
sums = totals.keys()
|
||||
sums.sort()
|
||||
sums = sorted(totals)
|
||||
sums.reverse()
|
||||
total = 0
|
||||
include_greater_than = 0
|
||||
|
@ -236,8 +236,7 @@ class PedigreeGramplet(Gramplet):
|
||||
self.process_person(active_person.handle, 1, "f") # father
|
||||
self.process_person(active_person.handle, 0, "a") # active #FIXME: should be 1?
|
||||
self.process_person(active_person.handle, 1, "m") # mother
|
||||
gens = self._generations.keys()
|
||||
gens.sort()
|
||||
gens = sorted(self._generations)
|
||||
self.append_text(_("\nBreakdown by generation:\n"))
|
||||
all = [active_person.handle]
|
||||
percent_sign = _("percent sign or text string|%")
|
||||
|
@ -80,7 +80,7 @@ class PluginManagerGramplet(Gramplet):
|
||||
types[row[1]] = 1
|
||||
self.set_text("")
|
||||
# name, type, ver, desc, gver, use, rating, contact, download
|
||||
for type in types.keys():
|
||||
for type in types:
|
||||
self.render_text("<b>%s Plugins</b>\n" % _(type))
|
||||
row_count = 1
|
||||
for row in rows:
|
||||
|
@ -114,8 +114,7 @@ class SurnameCloudGramplet(Gramplet):
|
||||
totals = {}
|
||||
for (count, givensubname) in cloud_names: # givensubname_sort:
|
||||
totals[count] = totals.get(count, 0) + 1
|
||||
sums = totals.keys()
|
||||
sums.sort()
|
||||
sums = sorted(totals)
|
||||
sums.reverse()
|
||||
total = 0
|
||||
include_greater_than = 0
|
||||
|
@ -147,10 +147,8 @@ def run(database, document, filter_name, *args, **kwargs):
|
||||
surnames = list(set([name.get_group_name() for name in names]))
|
||||
for surname in surnames:
|
||||
namelist[surname] = namelist.get(surname, 0) + 1
|
||||
surnames = namelist.keys()
|
||||
surnames.sort()
|
||||
stab.columns(_("Surname"), _("Count"))
|
||||
for name in surnames:
|
||||
for name in sorted(namelist):
|
||||
stab.row(name, namelist[name])
|
||||
matches += 1
|
||||
stab.set_callback("leftdouble",
|
||||
|
@ -166,11 +166,9 @@ class AncestorReport(Report):
|
||||
|
||||
# get the entries out of the map, and sort them.
|
||||
|
||||
keys = self.map.keys()
|
||||
keys.sort()
|
||||
generation = 0
|
||||
|
||||
for key in keys :
|
||||
for key in sorted(self.map):
|
||||
|
||||
# check the index number to see if we need to start a new generation
|
||||
if generation == log2(key):
|
||||
|
@ -154,12 +154,10 @@ class DetAncestorReport(Report):
|
||||
self.doc.write_text(title,mark)
|
||||
self.doc.end_paragraph()
|
||||
|
||||
keys = self.map.keys()
|
||||
keys.sort()
|
||||
generation = 0
|
||||
need_header = 1
|
||||
|
||||
for key in keys :
|
||||
for key in sorted(self.map):
|
||||
if generation == 0 or key >= 2**generation:
|
||||
if self.pgbrk and generation > 0:
|
||||
self.doc.page_break()
|
||||
@ -221,9 +219,7 @@ class DetAncestorReport(Report):
|
||||
|
||||
if self.dupperson:
|
||||
# Check for duplicate record (result of distant cousins marrying)
|
||||
keys = self.map.keys()
|
||||
keys.sort()
|
||||
for dkey in keys:
|
||||
for dkey in sorted(self.map):
|
||||
if dkey >= key:
|
||||
break
|
||||
if self.map[key] == self.map[dkey]:
|
||||
|
@ -157,7 +157,7 @@ class DetDescendantReport(Report):
|
||||
for family_handle in person.get_family_handle_list():
|
||||
family = self.database.get_family_from_handle(family_handle)
|
||||
for child_ref in family.get_child_ref_list():
|
||||
ix = max(self.map.keys())
|
||||
ix = max(self.map)
|
||||
self.apply_henry_filter(child_ref.ref, ix+1,
|
||||
pid+HENRY[index], cur_gen+1)
|
||||
index += 1
|
||||
@ -178,7 +178,7 @@ class DetDescendantReport(Report):
|
||||
for family_handle in person.get_family_handle_list():
|
||||
family = self.database.get_family_from_handle(family_handle)
|
||||
for child_ref in family.get_child_ref_list():
|
||||
ix = max(self.map.keys())
|
||||
ix = max(self.map)
|
||||
self.apply_mod_reg_filter_aux(child_ref.ref, ix+1, cur_gen+1)
|
||||
|
||||
def apply_mod_reg_filter(self,person_handle):
|
||||
@ -209,8 +209,7 @@ class DetDescendantReport(Report):
|
||||
self.doc.write_text(title, mark)
|
||||
self.doc.end_paragraph()
|
||||
|
||||
keys = self.map.keys()
|
||||
keys.sort()
|
||||
keys = sorted(self.map)
|
||||
generation = 0
|
||||
|
||||
for generation in xrange(len(self.gen_keys)):
|
||||
@ -289,9 +288,7 @@ class DetDescendantReport(Report):
|
||||
|
||||
if self.dubperson:
|
||||
# Check for duplicate record (result of distant cousins marrying)
|
||||
keys = self.map.keys()
|
||||
keys.sort()
|
||||
for dkey in keys:
|
||||
for dkey in sorted(self.map):
|
||||
if dkey >= key:
|
||||
break
|
||||
if self.map[key] == self.map[dkey]:
|
||||
|
@ -142,12 +142,11 @@ class EndOfLineReport(Report):
|
||||
self.doc.end_paragraph()
|
||||
|
||||
self.doc.start_table('EolTable','EOL-Table')
|
||||
|
||||
for generation in self.eol_map.keys():
|
||||
for generation, handles in self.eol_map.iteritems():
|
||||
self.write_generation_row(generation)
|
||||
for person_handle in self.eol_map[generation].keys():
|
||||
for person_handle, pedigrees in handles.iteritems():
|
||||
self.write_person_row(person_handle)
|
||||
for pedigree in self.eol_map[generation][person_handle]:
|
||||
for pedigree in pedigrees:
|
||||
self.write_pedigree_row(pedigree)
|
||||
self.doc.end_table()
|
||||
|
||||
|
@ -113,8 +113,8 @@ class KinshipReport(Report):
|
||||
self.traverse_up(self.person.get_handle(), 1, 0)
|
||||
|
||||
# Write Kin
|
||||
for Ga in self.kinship_map.keys():
|
||||
for Gb in self.kinship_map[Ga]:
|
||||
for Ga, Gbs in self.kinship_map.iteritems():
|
||||
for Gb in Gbs:
|
||||
# To understand these calculations, see:
|
||||
# http://en.wikipedia.org/wiki/Cousin#Mathematical_definitions
|
||||
x = min (Ga,Gb)
|
||||
|
@ -111,7 +111,7 @@ class NumberOfAncestorsReport(Report):
|
||||
|
||||
temp = thisgen
|
||||
thisgen = {}
|
||||
for person_handle in temp.keys():
|
||||
for person_handle, person_data in temp.iteritems():
|
||||
person = self.__db.get_person_from_handle(person_handle)
|
||||
family_handle = person.get_main_parents_family_handle()
|
||||
if family_handle:
|
||||
@ -120,16 +120,16 @@ class NumberOfAncestorsReport(Report):
|
||||
mother_handle = family.get_mother_handle()
|
||||
if father_handle:
|
||||
thisgen[father_handle] = \
|
||||
thisgen.get(father_handle, 0) + temp[person_handle]
|
||||
thisgen.get(father_handle, 0) + person_data
|
||||
all_people[father_handle] = \
|
||||
all_people.get(father_handle, 0) + \
|
||||
temp[person_handle]
|
||||
person_data
|
||||
if mother_handle:
|
||||
thisgen[mother_handle] = \
|
||||
thisgen.get(mother_handle, 0) + temp[person_handle]
|
||||
thisgen.get(mother_handle, 0) + person_data
|
||||
all_people[mother_handle] = \
|
||||
all_people.get(mother_handle, 0) + \
|
||||
temp[person_handle]
|
||||
person_data
|
||||
|
||||
if( total_theoretical != 1 ):
|
||||
percent = '(%3.2f%%)' % (( sum(all_people.values()) / (total_theoretical-1) ) * 100)
|
||||
@ -142,7 +142,7 @@ class NumberOfAncestorsReport(Report):
|
||||
"%(last_generation)d is %(count)d. %(percent)s") % {
|
||||
'second_generation' : 2,
|
||||
'last_generation' : gen,
|
||||
'count' : len(all_people.keys()),
|
||||
'count' : len(all_people),
|
||||
'percent' : percent}
|
||||
|
||||
self.doc.start_paragraph('NOA-Normal')
|
||||
|
@ -49,11 +49,10 @@ class DumpGenderStats(Tool.Tool, ManagedWindow.ManagedWindow):
|
||||
self.__class__)
|
||||
|
||||
stats_list = []
|
||||
|
||||
for name in dbstate.db.genderStats.stats.keys():
|
||||
for name, value in dbstate.db.genderStats.stats.iteritems():
|
||||
stats_list.append(
|
||||
(name,)
|
||||
+ dbstate.db.genderStats.stats[name]
|
||||
+ value
|
||||
+ (_GENDER[dbstate.db.genderStats.guess_gender(name)],)
|
||||
)
|
||||
|
||||
@ -81,10 +80,10 @@ class DumpGenderStats(Tool.Tool, ManagedWindow.ManagedWindow):
|
||||
self.show()
|
||||
|
||||
else:
|
||||
print "\t%s\t%s\t%s\t%s\t%s\n" % (
|
||||
'Name','Male','Female','Unknown','Guess')
|
||||
print '\t%s'*5 % ('Name','Male','Female','Unknown','Guess')
|
||||
print
|
||||
for entry in stats_list:
|
||||
print "\t%s\t%s\t%s\t%s\t%s" % entry
|
||||
print '\t%s'*5 % entry
|
||||
|
||||
def build_menu_names(self, obj):
|
||||
return (self.label,None)
|
||||
|
@ -358,8 +358,8 @@ class DisplayChart(ManagedWindow.ManagedWindow):
|
||||
else:
|
||||
the_map[name] = 1
|
||||
|
||||
unsort_list = [ (the_map[item], item) for item in the_map.keys() ]
|
||||
unsort_list.sort(by_value)
|
||||
unsort_list = sorted([(d, k) for k,d in the_map.iteritems()],by_value)
|
||||
|
||||
sort_list = [ item[1] for item in unsort_list ]
|
||||
## Presently there's no Birth and Death. Instead there's Birth Date and
|
||||
## Birth Place, as well as Death Date and Death Place.
|
||||
|
@ -110,9 +110,7 @@ class Merge(Tool.Tool,ManagedWindow.ManagedWindow):
|
||||
use_soundex = self.options.handler.options_dict['soundex']
|
||||
|
||||
my_menu = gtk.ListStore(str, object)
|
||||
vals = _val2label.keys()
|
||||
vals.sort()
|
||||
for val in vals:
|
||||
for val in sorted(_val2label):
|
||||
my_menu.append([_val2label[val], val])
|
||||
|
||||
self.soundex_obj = top.get_object("soundex")
|
||||
@ -243,8 +241,7 @@ class Merge(Tool.Tool,ManagedWindow.ManagedWindow):
|
||||
else:
|
||||
self.map[p1key] = (p2key,chance)
|
||||
|
||||
self.list = self.map.keys()
|
||||
self.list.sort()
|
||||
self.list = sorted(self.map)
|
||||
self.length = len(self.list)
|
||||
self.progress.close()
|
||||
|
||||
@ -575,10 +572,10 @@ class ShowMatches(ManagedWindow.ManagedWindow):
|
||||
GrampsDisplay.help(WIKI_HELP_PAGE , WIKI_HELP_SEC)
|
||||
def redraw(self):
|
||||
list = []
|
||||
for p1key in self.map.keys():
|
||||
for p1key, p1data in self.map.iteritems():
|
||||
if p1key in self.dellist:
|
||||
continue
|
||||
(p2key,c) = self.map[p1key]
|
||||
(p2key,c) = p1data
|
||||
if p1key == p2key:
|
||||
continue
|
||||
list.append((c,p1key,p2key))
|
||||
@ -608,8 +605,8 @@ class ShowMatches(ManagedWindow.ManagedWindow):
|
||||
|
||||
def on_update(self):
|
||||
self.dellist[self.p2] = self.p1
|
||||
for key in self.dellist.keys():
|
||||
if self.dellist[key] == self.p2:
|
||||
for key, data in self.dellist.iteritems():
|
||||
if data == self.p2:
|
||||
self.dellist[key] = self.p1
|
||||
self.update()
|
||||
self.redraw()
|
||||
|
@ -127,7 +127,7 @@ class PHPGedViewConnector(object):
|
||||
result = []
|
||||
types = []
|
||||
if type == self.TYPE_ALL:
|
||||
for entry in self.type_trans.keys():
|
||||
for entry in self.type_trans:
|
||||
types.append(entry)
|
||||
else:
|
||||
types.append(type)
|
||||
|
@ -349,7 +349,7 @@ class MonitoredDataType(object):
|
||||
|
||||
map = get_val().get_map().copy()
|
||||
if ignore_values :
|
||||
for key in map.keys():
|
||||
for key in map:
|
||||
try :
|
||||
i = ignore_values.index(key)
|
||||
except ValueError:
|
||||
@ -535,14 +535,12 @@ class MonitoredComboSelectedEntry(object):
|
||||
Fill combo with data
|
||||
"""
|
||||
self.store = gtk.ListStore(gobject.TYPE_INT, gobject.TYPE_STRING)
|
||||
keys = self.mapping.keys()
|
||||
keys.sort(self.__by_value)
|
||||
index = 0
|
||||
for key in keys:
|
||||
keys = sorted(self.mapping.keys(), self.__by_value)
|
||||
|
||||
for index, key in enumerate(keys):
|
||||
self.store.append(row=[key, self.mapping[key]])
|
||||
if key == self.active_key:
|
||||
self.active_index = index
|
||||
index = index + 1
|
||||
|
||||
def __by_value(self, first, second):
|
||||
"""
|
||||
|
@ -426,9 +426,9 @@ class StyledTextBuffer(gtk.TextBuffer):
|
||||
def _remove_style_from_selection(self, style):
|
||||
start, end = self._get_selection()
|
||||
tags = self._get_tag_from_range(start.get_offset(), end.get_offset())
|
||||
for tag_name in tags.keys():
|
||||
for tag_name, tag_data in tags.iteritems():
|
||||
if tag_name.startswith(str(style)):
|
||||
for start, end in tags[tag_name]:
|
||||
for start, end in tag_data:
|
||||
self.remove_tag_by_name(tag_name,
|
||||
self.get_iter_at_offset(start),
|
||||
self.get_iter_at_offset(end+1))
|
||||
|
@ -220,10 +220,10 @@ class StyledTextEditor(gtk.TextView):
|
||||
Handle formatting shortcuts.
|
||||
|
||||
"""
|
||||
for accel in self.action_accels.keys():
|
||||
for accel, accel_name in self.action_accels.iteritems():
|
||||
key, mod = gtk.accelerator_parse(accel)
|
||||
if (event.keyval, event.state) == (key, mod):
|
||||
action_name = self.action_accels[accel]
|
||||
action_name = accel_name
|
||||
action = self.action_group.get_action(action_name)
|
||||
action.activate()
|
||||
return True
|
||||
@ -523,18 +523,18 @@ class StyledTextEditor(gtk.TextView):
|
||||
|
||||
def _on_buffer_style_changed(self, buffer, changed_styles):
|
||||
"""Synchronize actions as the format changes at the buffer's cursor."""
|
||||
for style in changed_styles.keys():
|
||||
for style, style_value in changed_styles.iteritems():
|
||||
if str(style) in self.toggle_actions:
|
||||
action = self.action_group.get_action(str(style))
|
||||
self._internal_style_change = True
|
||||
action.set_active(changed_styles[style])
|
||||
action.set_active(style_value)
|
||||
self._internal_style_change = False
|
||||
|
||||
if ((style == StyledTextTagType.FONTFACE) or
|
||||
(style == StyledTextTagType.FONTSIZE)):
|
||||
action = self.action_group.get_action(str(style))
|
||||
self._internal_style_change = True
|
||||
action.set_value(changed_styles[style])
|
||||
action.set_value(style_value)
|
||||
self._internal_style_change = False
|
||||
|
||||
def _spell_change_cb(self, menuitem, language):
|
||||
|
Loading…
x
Reference in New Issue
Block a user