2007-12-06 Douglas S.Blank <dblank@cs.brynmawr.edu>

* src/plugins/CalculateEstimatedDates.py: experimental click in text
	* src/PluginUtils/_PluginWindows.py: experimental write_results_link()



svn: r9448
This commit is contained in:
Doug Blank 2007-12-06 06:33:21 +00:00
parent 69fff5654a
commit 8be73592d6
3 changed files with 47 additions and 4 deletions

View File

@ -1,3 +1,7 @@
2007-12-06 Douglas S.Blank <dblank@cs.brynmawr.edu>
* src/plugins/CalculateEstimatedDates.py: experimental click in text
* src/PluginUtils/_PluginWindows.py: experimental write_results_link()
2007-12-05 Douglas S.Blank <dblank@cs.brynmawr.edu>
* src/plugins/CalculateEstimatedDates.py: set quality CALCULATED on
added dates

View File

@ -241,6 +241,19 @@ class ToolManagedWindowBase(ManagedWindow.ManagedWindow):
def initial_frame(self):
return None
def link_callback(self, button, person):
self.dbstate.change_active_person(person)
def results_write_link(self, text, person):
buffer = self.results_text.get_buffer()
iter = buffer.get_end_iter()
anchor = buffer.create_child_anchor(iter)
child = gtk.Button(text)
child.connect("clicked",
lambda button: self.link_callback(button, person))
self.results_text.add_child_at_anchor(child, anchor)
self.results_text.show_all()
def results_write(self, text):
buffer = self.results_text.get_buffer()
mark = buffer.create_mark("end", buffer.get_end_iter())
@ -365,12 +378,16 @@ class ToolManagedWindowBase(ManagedWindow.ManagedWindow):
def add_results_frame(self,frame_name="Results"):
if frame_name not in self.frames:
widget = (frame_name, self.results_text)
self.frames[frame_name] = [widget]
window = gtk.ScrolledWindow()
window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
window.add(self.results_text)
window.set_shadow_type(gtk.SHADOW_IN)
window.show_all()
self.frames[frame_name] = [[frame_name, window]]
self.frame_names.append(frame_name)
l = gtk.Label("<b>%s</b>" % _(frame_name))
l.set_use_markup(True)
self.notebook.append_page(widget[1], l)
self.notebook.append_page(window, l)
self.window.show_all()
else:
self.results_clear()

View File

@ -40,7 +40,13 @@ from PluginUtils import Tool, register_tool, PluginWindows, \
NumberOption
import gen.lib
import Config
from BasicUtils import name_displayer
#------------------------------------------------------------------------
#
# Tool Classes
#
#------------------------------------------------------------------------
class CalcEstDateOptions(MenuToolOptions):
""" Calculate Estimated Date options """
@ -70,6 +76,10 @@ class CalcEstDateOptions(MenuToolOptions):
death.set_help(_("Add estimated death dates"))
menu.add_option(category_name, "add_death", death)
display_details = BooleanOption(_("Display detailed results"), False)
display_details.set_help(_("Show details for every date entered"))
menu.add_option(category_name, "display_details", display_details)
# -----------------------------------------------------
category_name = _("Config")
num = NumberOption(_("Maximum age"),
@ -114,6 +124,7 @@ class CalcToolManagedWindow(PluginWindows.ToolManagedWindowBatch):
add_birth = self.options.handler.options_dict['add_birth']
add_death = self.options.handler.options_dict['add_death']
remove_old = self.options.handler.options_dict['remove']
display_details = self.options.handler.options_dict['display_details']
self.MIN_GENERATION_YEARS = self.options.handler.options_dict['MIN_GENERATION_YEARS']
self.MAX_SIB_AGE_DIFF = self.options.handler.options_dict['MAX_SIB_AGE_DIFF']
@ -168,6 +179,7 @@ class CalcToolManagedWindow(PluginWindows.ToolManagedWindowBatch):
source = self.get_or_create_source(source_text)
for person_handle in people:
self.progress.step()
added_birth, added_death = 0, 0
person = self.db.get_person_from_handle(person_handle)
birth_ref = person.get_birth_ref()
death_ref = person.get_death_ref()
@ -183,12 +195,13 @@ class CalcToolManagedWindow(PluginWindows.ToolManagedWindowBatch):
event_ref.set_reference_handle(birth.get_handle())
person.set_birth_ref(event_ref)
self.db.commit_person(person, self.trans)
added_birth = 1
if not death_ref and add_death and date2:
current_date = gen.lib.Date()
current_date.set_yr_mon_day(*time.localtime(time.time())[0:3])
if current_date.match( date2, "<<"):
# don't add events in the future!
pass
pass # FIXME: sometimes adds one in future?
else:
#print "added death"
death = self.create_event("Estimated death date",
@ -198,6 +211,15 @@ class CalcToolManagedWindow(PluginWindows.ToolManagedWindowBatch):
event_ref.set_reference_handle(death.get_handle())
person.set_death_ref(event_ref)
self.db.commit_person(person, self.trans)
added_death = 1
if (added_birth or added_death) and display_details:
self.results_write_link(name_displayer.display(person),
person)
if added_birth:
self.results_write(" added birth on %s" % date1)
if added_death:
self.results_write(" added death on %s" % date2)
self.results_write("\n")
self.db.transaction_commit(self.trans, _("Calculate date estimates"))
self.db.enable_signals()
self.db.request_rebuild()