Fix Fan Chart(s) so they don't crash when opened as last view (#571)

Fixes #10440
This commit is contained in:
Paul Culley 2018-03-04 21:34:55 -06:00 committed by Sam Manzi
parent 7180806afd
commit 51df2c188d

View File

@ -93,6 +93,11 @@ from gramps.gen.const import (
_ = glocale.translation.gettext _ = glocale.translation.gettext
from ..utilscairo import warpPath from ..utilscairo import warpPath
# following are used in name_displayer format def
# (must not conflict with standard defs)
TWO_LINE_FORMAT_1 = 100
TWO_LINE_FORMAT_2 = 101
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
# FanChartBaseWidget # FanChartBaseWidget
@ -120,8 +125,12 @@ class FanChartBaseWidget(Gtk.DrawingArea):
self.last_x, self.last_y = None, None self.last_x, self.last_y = None, None
self.fontdescr = "Sans" self.fontdescr = "Sans"
self.fontsize = 8 self.fontsize = 8
self.twolineformat_nums=(name_displayer.add_name_format('fanchart_name_line1', '%l'), # add parts of a two line name format to the displayer. We add them
name_displayer.add_name_format('fanchart_name_line2', '%f %s')) # as standard names, but set them inactive so they don't show up in
# name editor or selector.
name_displayer.set_name_format(
[(TWO_LINE_FORMAT_1, 'fanchart_name_line1', '%l', False),
(TWO_LINE_FORMAT_2, 'fanchart_name_line2', '%f %s', False)])
self.connect("button_release_event", self.on_mouse_up) self.connect("button_release_event", self.on_mouse_up)
self.connect("motion_notify_event", self.on_mouse_move) self.connect("motion_notify_event", self.on_mouse_move)
self.connect("button-press-event", self.on_mouse_down) self.connect("button-press-event", self.on_mouse_down)
@ -171,10 +180,6 @@ class FanChartBaseWidget(Gtk.DrawingArea):
self.reset() self.reset()
self.set_size_request(120, 120) self.set_size_request(120, 120)
def __del__(self):
for num in self.twolineformat_nums:
name_displayer.del_name_format(num)
def reset(self): def reset(self):
""" """
Reset the fan chart. This should trigger computation of all data Reset the fan chart. This should trigger computation of all data
@ -578,8 +583,8 @@ class FanChartBaseWidget(Gtk.DrawingArea):
fontcolor, bold) fontcolor, bold)
else: else:
text=name_displayer.display(person) text=name_displayer.display(person)
text_line1=name_displayer.display_format(person,self.twolineformat_nums[0]) text_line1=name_displayer.display_format(person, TWO_LINE_FORMAT_1)
text_line2=name_displayer.display_format(person,self.twolineformat_nums[1]) text_line2=name_displayer.display_format(person, TWO_LINE_FORMAT_2)
if draw_radial: if draw_radial:
split_frac_line1=0.5 split_frac_line1=0.5
flipped = can_flip and ((math.degrees((start+stop)/2.0) + self.rotate_value - 90) % 360 < 179 and self.flipupsidedownname) flipped = can_flip and ((math.degrees((start+stop)/2.0) + self.rotate_value - 90) % 360 < 179 and self.flipupsidedownname)