Added options to AgeStats; set order of options; aligned options; added copyright
svn: r11502
This commit is contained in:
parent
e95a318c1b
commit
bb5f463a50
@ -217,6 +217,7 @@ class Gramplet(object):
|
|||||||
self._need_to_update = False
|
self._need_to_update = False
|
||||||
self._tags = []
|
self._tags = []
|
||||||
self.option_dict = {}
|
self.option_dict = {}
|
||||||
|
self.option_order = []
|
||||||
self.tooltip = None
|
self.tooltip = None
|
||||||
self.link_cursor = gtk.gdk.Cursor(gtk.gdk.LEFT_PTR)
|
self.link_cursor = gtk.gdk.Cursor(gtk.gdk.LEFT_PTR)
|
||||||
self.standard_cursor = gtk.gdk.Cursor(gtk.gdk.XTERM)
|
self.standard_cursor = gtk.gdk.Cursor(gtk.gdk.XTERM)
|
||||||
@ -488,6 +489,7 @@ class Gramplet(object):
|
|||||||
widget, label = make_gui_option(option, None, self.dbstate,
|
widget, label = make_gui_option(option, None, self.dbstate,
|
||||||
self.gui.uistate,None)
|
self.gui.uistate,None)
|
||||||
self.option_dict.update({option.get_label(): (widget, option)})
|
self.option_dict.update({option.get_label(): (widget, option)})
|
||||||
|
self.option_order.append(option.get_label())
|
||||||
|
|
||||||
def save_update_options(self, obj):
|
def save_update_options(self, obj):
|
||||||
self.save_options()
|
self.save_options()
|
||||||
@ -746,12 +748,14 @@ class GuiGramplet:
|
|||||||
hbox = gtk.HBox()
|
hbox = gtk.HBox()
|
||||||
labels = gtk.VBox()
|
labels = gtk.VBox()
|
||||||
options = gtk.VBox()
|
options = gtk.VBox()
|
||||||
hbox.add(labels)
|
hbox.pack_start(labels, False)
|
||||||
hbox.add(options)
|
hbox.pack_start(options, True)
|
||||||
topbox.add(hbox)
|
topbox.add(hbox)
|
||||||
self.gvoptions.add(topbox)
|
self.gvoptions.add(topbox)
|
||||||
for item in self.pui.option_dict:
|
for item in self.pui.option_order:
|
||||||
labels.add(gtk.Label(item + ":"))
|
label = gtk.Label(item + ":")
|
||||||
|
label.set_alignment(1.0, 0.5)
|
||||||
|
labels.add(label)
|
||||||
options.add(self.pui.option_dict[item][0]) # widget
|
options.add(self.pui.option_dict[item][0]) # widget
|
||||||
save_button = gtk.Button(stock=gtk.STOCK_SAVE)
|
save_button = gtk.Button(stock=gtk.STOCK_SAVE)
|
||||||
topbox.add(save_button)
|
topbox.add(save_button)
|
||||||
|
@ -1,10 +1,69 @@
|
|||||||
|
#
|
||||||
|
# Gramps - a GTK+/GNOME based genealogy program
|
||||||
|
#
|
||||||
|
# Copyright (C) 2008 Douglas S. Blank
|
||||||
|
#
|
||||||
|
# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
|
"""
|
||||||
|
This Gramplet shows textual distributions of age breakdowns of various types.
|
||||||
|
"""
|
||||||
|
|
||||||
from DataViews import register, Gramplet
|
from DataViews import register, Gramplet
|
||||||
|
|
||||||
class AgeStatsGramplet(Gramplet):
|
class AgeStatsGramplet(Gramplet):
|
||||||
|
|
||||||
|
def init(self):
|
||||||
|
self.max_age = 120
|
||||||
|
self.max_mother_diff = 60
|
||||||
|
self.max_father_diff = 60
|
||||||
|
self.chart_width = 60
|
||||||
|
|
||||||
|
def build_options(self):
|
||||||
|
from gen.plug.menu import NumberOption
|
||||||
|
self.add_option(NumberOption(_("Max age"),
|
||||||
|
self.max_age, 1, 150))
|
||||||
|
self.add_option(NumberOption(_("Max age of Mother at birth"),
|
||||||
|
self.max_mother_diff, 1, 150))
|
||||||
|
self.add_option(NumberOption(_("Max age of Father at birth"),
|
||||||
|
self.max_father_diff, 1, 150))
|
||||||
|
self.add_option(NumberOption(_("Chart width"),
|
||||||
|
self.chart_width, 1, 150))
|
||||||
|
|
||||||
|
def save_options(self):
|
||||||
|
self.max_age = int(self.get_option(_("Max age")).get_value())
|
||||||
|
self.max_mother_diff = int(self.get_option(_("Max age of Mother at birth")).get_value())
|
||||||
|
self.max_father_diff = int(self.get_option(_("Max age of Father at birth")).get_value())
|
||||||
|
self.chart_width = int(self.get_option(_("Chart width")).get_value())
|
||||||
|
|
||||||
def on_load(self):
|
def on_load(self):
|
||||||
self.no_wrap()
|
self.no_wrap()
|
||||||
tag = self.gui.buffer.create_tag("fixed")
|
tag = self.gui.buffer.create_tag("fixed")
|
||||||
tag.set_property("font", "Courier 8")
|
tag.set_property("font", "Courier 8")
|
||||||
|
# FIXME: something wrong saving ordered data list?!
|
||||||
|
# if len(self.gui.data) > 0:
|
||||||
|
# self.max_age = int(self.gui.data[0])
|
||||||
|
# if len(self.gui.data) > 1:
|
||||||
|
# self.max_mother_diff = int(self.gui.data[1])
|
||||||
|
# if len(self.gui.data) > 2:
|
||||||
|
# self.max_father_diff = int(self.gui.data[2])
|
||||||
|
# if len(self.gui.data) > 3:
|
||||||
|
# self.chart_width = int(self.gui.data[3])
|
||||||
|
|
||||||
|
# def on_save(self):
|
||||||
|
# self.gui.data = [self.max_age, self.max_mother_diff, self.max_father_diff, self.chart_width]
|
||||||
|
|
||||||
def db_changed(self):
|
def db_changed(self):
|
||||||
self.update()
|
self.update()
|
||||||
@ -14,9 +73,9 @@ class AgeStatsGramplet(Gramplet):
|
|||||||
age_dict = {}
|
age_dict = {}
|
||||||
mother_dict = {}
|
mother_dict = {}
|
||||||
father_dict = {}
|
father_dict = {}
|
||||||
age_handles = [[] for age in range(120)]
|
age_handles = [[] for age in range(self.max_age)]
|
||||||
mother_handles = [[] for age in range(60)]
|
mother_handles = [[] for age in range(self.max_mother_diff)]
|
||||||
father_handles = [[] for age in range(60)]
|
father_handles = [[] for age in range(self.max_father_diff)]
|
||||||
text = ""
|
text = ""
|
||||||
handles = self.dbstate.db.get_person_handles(sort_handles=False)
|
handles = self.dbstate.db.get_person_handles(sort_handles=False)
|
||||||
for h in handles:
|
for h in handles:
|
||||||
@ -35,7 +94,7 @@ class AgeStatsGramplet(Gramplet):
|
|||||||
death_date = death_event.get_date_object()
|
death_date = death_event.get_date_object()
|
||||||
if death_date and birth_date and birth_date.get_year() != 0:
|
if death_date and birth_date and birth_date.get_year() != 0:
|
||||||
age = death_date.get_year() - birth_date.get_year()
|
age = death_date.get_year() - birth_date.get_year()
|
||||||
if age >= 0 and age < 120:
|
if age >= 0 and age < self.max_age:
|
||||||
age_dict[age] = age_dict.get(age, 0) + 1
|
age_dict[age] = age_dict.get(age, 0) + 1
|
||||||
age_handles[age].append(h)
|
age_handles[age].append(h)
|
||||||
#else:
|
#else:
|
||||||
@ -58,7 +117,7 @@ class AgeStatsGramplet(Gramplet):
|
|||||||
bdate = bevent.get_date_object()
|
bdate = bevent.get_date_object()
|
||||||
if bdate and birth_date and birth_date.get_year() != 0:
|
if bdate and birth_date and birth_date.get_year() != 0:
|
||||||
diff = birth_date.get_year() - bdate.get_year()
|
diff = birth_date.get_year() - bdate.get_year()
|
||||||
if diff >= 0 and diff < 60:
|
if diff >= 0 and diff < self.max_father_diff:
|
||||||
father_dict[diff] = father_dict.get(diff, 0) + 1
|
father_dict[diff] = father_dict.get(diff, 0) + 1
|
||||||
father_handles[diff].append(f_handle)
|
father_handles[diff].append(f_handle)
|
||||||
#else:
|
#else:
|
||||||
@ -73,18 +132,18 @@ class AgeStatsGramplet(Gramplet):
|
|||||||
bdate = bevent.get_date_object()
|
bdate = bevent.get_date_object()
|
||||||
if bdate and birth_date and birth_date.get_year() != 0:
|
if bdate and birth_date and birth_date.get_year() != 0:
|
||||||
diff = birth_date.get_year() - bdate.get_year()
|
diff = birth_date.get_year() - bdate.get_year()
|
||||||
if diff >= 0 and diff < 60:
|
if diff >= 0 and diff < self.max_mother_diff:
|
||||||
mother_dict[diff] = mother_dict.get(diff, 0) + 1
|
mother_dict[diff] = mother_dict.get(diff, 0) + 1
|
||||||
mother_handles[diff].append(m_handle)
|
mother_handles[diff].append(m_handle)
|
||||||
#else:
|
#else:
|
||||||
# print "Mother diff out of range: %d for %s" % (diff,
|
# print "Mother diff out of range: %d for %s" % (diff,
|
||||||
# p.get_primary_name().get_first_name()
|
# p.get_primary_name().get_first_name()
|
||||||
# + " " + p.get_primary_name().get_surname())
|
# + " " + p.get_primary_name().get_surname())
|
||||||
width = 60
|
width = self.chart_width
|
||||||
graph_width = width - 8
|
graph_width = width - 8
|
||||||
self.create_bargraph(age_dict, age_handles, "Lifespan Age Distribution", "Age", graph_width, 5, 120)
|
self.create_bargraph(age_dict, age_handles, "Lifespan Age Distribution", "Age", graph_width, 5, self.max_age)
|
||||||
self.create_bargraph(father_dict, father_handles, "Father - Child Age Diff Distribution", "Diff", graph_width, 5, 60)
|
self.create_bargraph(father_dict, father_handles, "Father - Child Age Diff Distribution", "Diff", graph_width, 5, self.max_father_diff)
|
||||||
self.create_bargraph(mother_dict, mother_handles, "Mother - Child Age Diff Distribution", "Diff", graph_width, 5, 60)
|
self.create_bargraph(mother_dict, mother_handles, "Mother - Child Age Diff Distribution", "Diff", graph_width, 5, self.max_mother_diff)
|
||||||
start, end = self.gui.buffer.get_bounds()
|
start, end = self.gui.buffer.get_bounds()
|
||||||
self.gui.buffer.apply_tag_by_name("fixed", start, end)
|
self.gui.buffer.apply_tag_by_name("fixed", start, end)
|
||||||
self.append_text("", scroll_to="begin")
|
self.append_text("", scroll_to="begin")
|
||||||
|
Loading…
Reference in New Issue
Block a user