refactored SimpleTable; QuickReports can return values; date diffs return Span
svn: r10578
This commit is contained in:
@@ -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):
|
||||
|
||||
@@ -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,
|
||||
)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
|
||||
@@ -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()})
|
||||
|
||||
@@ -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("")
|
||||
|
||||
@@ -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)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
|
||||
@@ -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):
|
||||
"""
|
||||
|
||||
@@ -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 :
|
||||
|
||||
@@ -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)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
|
||||
Reference in New Issue
Block a user