refactored SimpleTable; QuickReports can return values; date diffs return Span

svn: r10578
This commit is contained in:
Doug Blank
2008-04-18 01:09:32 +00:00
parent e910a131a9
commit 2098a01f8d
13 changed files with 141 additions and 76 deletions

View File

@@ -38,7 +38,7 @@ def run(database, document, date):
# setup the simple access functions
sdb = SimpleAccess(database)
sdoc = SimpleDoc(document)
stab = SimpleTable(sdb, sdoc)
stab = SimpleTable(sdb)
if not date.get_valid():
sdoc.paragraph("Date is not a valid date.")
return
@@ -67,16 +67,12 @@ def run(database, document, date):
if ((death_date != None) or
(death_date == None and
diff_tuple[0] <= Config.get(Config.MAX_AGE_PROB_ALIVE))):
if diff_tuple[1] != 0:
birth_str = ((_("%d years") % diff_tuple[0])+ ", " +
(_("%d months") % diff_tuple[1]))
else:
birth_str = (_("%d years") % diff_tuple[0])
birth_sort = int(diff_tuple[0] * 12 + diff_tuple[1]) # months
birth_str = str(diff_tuple)
birth_sort = int(diff_tuple)
if birth_str != "":
stab.row(person, birth_str)
stab.row_sort_val(1, birth_sort)
stab.write()
stab.write(sdoc)
sdoc.paragraph("")
def get_event_date_from_ref(database, ref):

View File

@@ -712,6 +712,7 @@ class StatsGramplet(Gramplet):
class PythonGramplet(Gramplet):
def init(self):
self.prompt = ">"
self.tooltip = _("Enter Python expressions")
self.env = {"dbstate": self.gui.dbstate,
"uistate": self.gui.uistate,
@@ -720,7 +721,7 @@ class PythonGramplet(Gramplet):
}
# GUI setup:
self.gui.textview.set_editable(True)
self.set_text("Python %s\n> " % sys.version)
self.set_text("Python %s\n%s " % (sys.version, self.prompt))
self.gui.textview.connect('key-press-event', self.on_key_press)
def format_exception(self, max_tb_level=10):
@@ -729,6 +730,29 @@ class PythonGramplet(Gramplet):
retval += _("Error") + (" : %s %s" %(cla, exc))
return retval
def process_command(self, command):
# update states, in case of change:
self.env["dbstate"] = self.gui.dbstate
self.env["uistate"] = self.gui.uistate
_retval = None
if "_retval" in self.env:
del self.env["_retval"]
exp1 = """_retval = """ + command
exp2 = command.strip()
try:
_retval = eval(exp2, self.env)
except:
try:
exec exp1 in self.env
except:
try:
exec exp2 in self.env
except:
_retval = self.format_exception()
if "_retval" in self.env:
_retval = self.env["_retval"]
return _retval
def on_key_press(self, widget, event):
import gtk
if (event.keyval == gtk.keysyms.Home or
@@ -764,39 +788,20 @@ class PythonGramplet(Gramplet):
end = buffer.get_iter_at_line_offset(line_cnt, line_len)
line = buffer.get_text(start, end)
self.append_text("\n")
if line.startswith(">"):
if line.startswith(self.prompt):
line = line[1:].strip()
else:
self.append_text("> ")
self.append_text("%s " % self.prompt)
return True
if echo:
self.append_text("> " + line)
self.append_text(("%s " % self.prompt) + line)
end = buffer.get_end_iter()
buffer.place_cursor(end)
return True
# update states, in case of change:
self.env["dbstate"] = self.gui.dbstate
self.env["uistate"] = self.gui.uistate
_retval = None
if "_retval" in self.env:
del self.env["_retval"]
exp1 = """_retval = """ + line
exp2 = line.strip()
try:
_retval = eval(exp2, self.env)
except:
try:
exec exp1 in self.env
except:
try:
exec exp2 in self.env
except:
_retval = self.format_exception()
if "_retval" in self.env:
_retval = self.env["_retval"]
_retval = self.process_command(line)
if _retval != None:
self.append_text("%s" % str(_retval))
self.append_text("\n> ")
self.append_text("\n%s " % self.prompt)
end = buffer.get_end_iter()
buffer.place_cursor(end)
return True
@@ -985,6 +990,21 @@ class AgeOnDateGramplet(Gramplet):
'ageondate',
date)
class QueryGramplet(PythonGramplet):
def init(self):
self.prompt = "$"
self.tooltip = _("Enter SQL query")
# GUI setup:
self.gui.textview.set_editable(True)
self.set_text("Structured Query Language\n%s " % self.prompt)
self.gui.textview.connect('key-press-event', self.on_key_press)
def process_command(self, command):
retval = run_quick_report_by_name(self.gui.dbstate,
self.gui.uistate,
'query',
command)
return retval
register(type="gramplet",
name= "Top Surnames Gramplet",
@@ -1100,3 +1120,13 @@ register(type="gramplet",
title=_("FAQ"),
)
register(type="gramplet",
name="Query Gramplet",
tname=_("Query Gramplet"),
height=300,
content = QueryGramplet,
title=_("Query"),
detached_width = 600,
detached_height = 400,
)

View File

@@ -48,7 +48,7 @@ def run(database, document, filter_name, *args, **kwargs):
# setup the simple access functions
sdb = SimpleAccess(database)
sdoc = SimpleDoc(document)
stab = SimpleTable(sdb, sdoc)
stab = SimpleTable(sdb)
# display the title
sdoc.title(_("Filtering on %s") % _(filter_name)) # listed above
sdoc.paragraph("")
@@ -219,7 +219,7 @@ def run(database, document, filter_name, *args, **kwargs):
sdoc.paragraph(_("Filter matched %d records.") % matches)
sdoc.paragraph("")
if matches > 0:
stab.write()
stab.write(sdoc)
#------------------------------------------------------------------------
#

View File

@@ -63,11 +63,11 @@ def run(database, document, main_event):
# setup the simple access functions
sdb = SimpleAccess(database)
sdoc = SimpleDoc(document)
stab = SimpleTable(sdb, sdoc)
stab = SimpleTable(sdb)
stab.set_link_col(3)
yeartab = SimpleTable(sdb, sdoc)
yeartab = SimpleTable(sdb)
yeartab.set_link_col(3)
histab = SimpleTable(sdb, sdoc)
histab = SimpleTable(sdb)
histab.set_link_col(3)
# display the title
@@ -108,7 +108,7 @@ def run(database, document, main_event):
if stab.get_row_count() > 0:
sdoc.paragraph(_("Events on this exact date"))
stab.write()
stab.write(sdoc)
else:
sdoc.paragraph(_("No events on this exact date"))
sdoc.paragraph("")
@@ -116,7 +116,7 @@ def run(database, document, main_event):
if histab.get_row_count() > 0:
sdoc.paragraph(_("Other events on this month/day in history"))
histab.write()
histab.write(sdoc)
else:
sdoc.paragraph(_("No other events on this month/day in history"))
sdoc.paragraph("")
@@ -125,7 +125,7 @@ def run(database, document, main_event):
if yeartab.get_row_count() > 0:
sdoc.paragraph(_("Other events in %(year)d") %
{"year":main_date.get_year()})
yeartab.write()
yeartab.write(sdoc)
else:
sdoc.paragraph(_("No other events in %(year)d") %
{"year":main_date.get_year()})

View File

@@ -62,7 +62,7 @@ def run(database, document, object, item, trans):
# setup the simple access functions
sdb = SimpleAccess(database)
sdoc = SimpleDoc(document)
stab = SimpleTable(sdb, sdoc)
stab = SimpleTable(sdb)
# display the title
sdoc.title(_("References for this %s") % trans)
@@ -74,7 +74,7 @@ def run(database, document, object, item, trans):
stab.row(_(objclass), ref) # translation are explicit (above)
if stab.get_row_count() > 0:
stab.write()
stab.write(sdoc)
else:
sdoc.paragraph(_("No references for this %s") % trans)
sdoc.paragraph("")

View File

@@ -62,7 +62,7 @@ def run(database, document, person):
# setup the simple access functions
sdb = SimpleAccess(database)
sdoc = SimpleDoc(document)
stab = SimpleTable(sdb, sdoc)
stab = SimpleTable(sdb)
if type(person) == str:
surname = person
rsurname = person
@@ -88,7 +88,7 @@ def run(database, document, person):
str(person.get_primary_name().get_type()))
matches += 1
sdoc.paragraph(_("There are %d people with a matching name, or alternate name.\n") % matches)
stab.write()
stab.write(sdoc)
#------------------------------------------------------------------------
#

View File

@@ -37,7 +37,7 @@ def run(database, document, person):
sdb = SimpleAccess(database)
sdoc = SimpleDoc(document)
stab = SimpleTable(sdb, sdoc)
stab = SimpleTable(sdb)
# get the personal events
event_list = sdb.events(person)
@@ -61,7 +61,7 @@ def run(database, document, person):
stab.row(event,
sdb.event_date_obj(event),
sdb.event_place(event))
stab.write()
stab.write(sdoc)
def run_fam(database, document, family):
"""
@@ -71,7 +71,7 @@ def run_fam(database, document, family):
sdb = SimpleAccess(database)
sdoc = SimpleDoc(document)
stab = SimpleTable(sdb, sdoc)
stab = SimpleTable(sdb)
# get the family events
event_list = [(_('Family'), x) for x in sdb.events(family)]
@@ -106,9 +106,9 @@ def run_fam(database, document, family):
stab.row(person, sdb.event_type(event),
sdb.event_date_obj(event),
sdb.event_place(event))
stab.write()
stab.write(sdoc)
stab = SimpleTable(sdb, sdoc)
stab = SimpleTable(sdb)
sdoc.header1(_("Personal events of the children"))
stab.columns(_("Family Member"), _("Event Type"),
_("Event Date"), _("Event Place"))
@@ -116,7 +116,7 @@ def run_fam(database, document, family):
stab.row(person, sdb.event_type(event),
sdb.event_date_obj(event),
sdb.event_place(event))
stab.write()
stab.write(sdoc)
def fam_sort(event1, event2):
"""

View File

@@ -57,10 +57,10 @@ def run_father(database, document, person):
" People in this lineage all share the same Y-chromosone."
))
sd.paragraph("")
stab = SimpleTable(sa, sd)
stab = SimpleTable(sa)
stab.columns(_("Name Father"), _("Birth Date"), _("Death Date"), _("Remark"))
make_details(gen.lib.Person.MALE, person, sa, sd, database, stab)
stab.write()
stab.write(sd)
sd.paragraph("")
if person.gender == gen.lib.Person.FEMALE :
@@ -88,10 +88,10 @@ def run_mother(database, document, person):
))
sd.paragraph("")
stab = SimpleTable(sa, sd)
stab = SimpleTable(sa)
stab.columns(_("Name Mother"), _("Birth"), _("Death Date"), _("Remark"))
make_details(gen.lib.Person.FEMALE, person, sa, sd, database, stab)
stab.write()
stab.write(sd)
sd.paragraph("")
if person.gender == gen.lib.Person.MALE :

View File

@@ -36,7 +36,7 @@ def run(database, document, person):
# setup the simple access functions
sdb = SimpleAccess(database)
sdoc = SimpleDoc(document)
stab = SimpleTable(sdb, sdoc)
stab = SimpleTable(sdb)
rel_class = relationship_class()
# display the title
sdoc.title(_("Siblings of %s") % sdb.name(person))
@@ -60,7 +60,7 @@ def run(database, document, person):
sdb.gender(child),
sdb.birth_date_obj(child),
rel_str)
stab.write()
stab.write(sdoc)
#------------------------------------------------------------------------
#