A couple of bugs left
svn: r11662
This commit is contained in:
@@ -268,24 +268,88 @@ class FanChartGramplet(Gramplet):
|
|||||||
print "expanding", generation, selected
|
print "expanding", generation, selected
|
||||||
if generation >= self.generations: return
|
if generation >= self.generations: return
|
||||||
selected = 2 * selected
|
selected = 2 * selected
|
||||||
start,stop,male,state = self.gui.fan.angle[generation][selected]
|
if to_right:
|
||||||
slice = (stop - start) * 2.0
|
start,stop,male,state = self.gui.fan.angle[generation][selected]
|
||||||
current = start
|
current = start
|
||||||
if state > 0:
|
if state > 0:
|
||||||
if to_right:
|
slice = (stop - start) * 2.0
|
||||||
current = start+slice
|
current = start+slice
|
||||||
self.gui.fan.angle[generation][selected] = start,current,male,state
|
self.gui.fan.angle[generation][selected] = [start,current,male,state]
|
||||||
else:
|
self.expand_parents(generation + 1, selected, to_right)
|
||||||
current = stop - slice
|
start,stop,male,state = self.gui.fan.angle[generation][selected+1]
|
||||||
self.gui.fan.angle[generation][selected] = current,stop,male,state
|
if state > 0:
|
||||||
self.expand_parents(generation + 1, selected, to_right)
|
slice = (stop - start) * 2.0
|
||||||
start,stop,male,state = self.gui.fan.angle[generation][selected+1]
|
self.gui.fan.angle[generation][selected+1] = [current,current+slice,male,state]
|
||||||
if state > 0:
|
self.expand_parents(generation + 1, selected+1, to_right)
|
||||||
self.gui.fan.angle[generation][selected+1] = current,current+slice,male,state
|
else: # expand to left
|
||||||
self.expand_parents(generation + 1, selected+1, to_right)
|
start,stop,male,state = self.gui.fan.angle[generation][selected+1]
|
||||||
|
current = stop
|
||||||
|
if state > 0:
|
||||||
|
slice = (stop - start) * 2.0
|
||||||
|
current = stop-slice
|
||||||
|
self.gui.fan.angle[generation][selected+1] = [current,stop,male,state]
|
||||||
|
self.expand_parents(generation + 1, selected+1, to_right)
|
||||||
|
start,stop,male,state = self.gui.fan.angle[generation][selected]
|
||||||
|
if state > 0:
|
||||||
|
slice = (stop - start) * 2.0
|
||||||
|
self.gui.fan.angle[generation][selected] = [current-slice,current,male,state]
|
||||||
|
self.expand_parents(generation + 1, selected, to_right)
|
||||||
|
|
||||||
|
def show_parents(self, generation, selected, angle):
|
||||||
|
if generation >= self.generations: return
|
||||||
|
slice = 360.0 / (2 ** generation)
|
||||||
|
selected = selected * 2
|
||||||
|
self.gui.fan.angle[generation][selected][0] = angle
|
||||||
|
self.gui.fan.angle[generation][selected][1] = angle + slice
|
||||||
|
self.gui.fan.angle[generation][selected][3] = 1
|
||||||
|
self.show_parents(generation+1, selected, angle)
|
||||||
|
self.gui.fan.angle[generation][selected+1][0] = angle + slice
|
||||||
|
self.gui.fan.angle[generation][selected+1][1] = angle + slice + slice
|
||||||
|
self.gui.fan.angle[generation][selected+1][3] = 1
|
||||||
|
self.show_parents(generation+1, selected + 1, angle)
|
||||||
|
|
||||||
|
def hide_parents(self, generation, selected, angle):
|
||||||
|
if generation >= self.generations: return
|
||||||
|
selected = 2 * selected
|
||||||
|
self.gui.fan.angle[generation][selected][0] = angle
|
||||||
|
self.gui.fan.angle[generation][selected][1] = angle
|
||||||
|
self.gui.fan.angle[generation][selected][3] = 0
|
||||||
|
self.hide_parents(generation + 1, selected, angle)
|
||||||
|
self.gui.fan.angle[generation][selected+1][0] = angle
|
||||||
|
self.gui.fan.angle[generation][selected+1][1] = angle
|
||||||
|
self.gui.fan.angle[generation][selected+1][3] = 0
|
||||||
|
self.hide_parents(generation + 1, selected+1, angle)
|
||||||
|
|
||||||
def shrink_parents(self, generation, selected, from_right):
|
def shrink_parents(self, generation, selected, from_right):
|
||||||
pass
|
print "shrinking", generation, selected
|
||||||
|
if generation >= self.generations: return
|
||||||
|
selected = 2 * selected
|
||||||
|
if from_right:
|
||||||
|
start,stop,male,state = self.gui.fan.angle[generation][selected]
|
||||||
|
current = start
|
||||||
|
if state > 0:
|
||||||
|
slice = (stop - start) / 2.0
|
||||||
|
current = start+slice
|
||||||
|
self.gui.fan.angle[generation][selected] = [start,current,male,state]
|
||||||
|
self.shrink_parents(generation + 1, selected, from_right)
|
||||||
|
start,stop,male,state = self.gui.fan.angle[generation][selected+1]
|
||||||
|
if state > 0:
|
||||||
|
slice = (stop - start) / 2.0
|
||||||
|
self.gui.fan.angle[generation][selected+1] = [current,current+slice,male,state]
|
||||||
|
self.shrink_parents(generation + 1, selected+1, from_right)
|
||||||
|
else: # shrink from left
|
||||||
|
start,stop,male,state = self.gui.fan.angle[generation][selected+1]
|
||||||
|
current = stop
|
||||||
|
if state > 0:
|
||||||
|
slice = (stop - start) / 2.0
|
||||||
|
current = stop-slice
|
||||||
|
self.gui.fan.angle[generation][selected+1] = [current,stop,male,state]
|
||||||
|
self.shrink_parents(generation + 1, selected+1, from_right)
|
||||||
|
start,stop,male,state = self.gui.fan.angle[generation][selected]
|
||||||
|
if state > 0:
|
||||||
|
slice = (stop - start) / 2.0
|
||||||
|
self.gui.fan.angle[generation][selected] = [current-slice,current,male,state]
|
||||||
|
self.shrink_parents(generation + 1, selected, from_right)
|
||||||
|
|
||||||
def change_slice(self, generation, selected):
|
def change_slice(self, generation, selected):
|
||||||
gstart, gstop, gmale, gstate = self.gui.fan.angle[generation][selected]
|
gstart, gstop, gmale, gstate = self.gui.fan.angle[generation][selected]
|
||||||
@@ -296,14 +360,16 @@ class FanChartGramplet(Gramplet):
|
|||||||
self.gui.fan.angle[generation][selected] = [gstart,stop,gmale,2]
|
self.gui.fan.angle[generation][selected] = [gstart,stop,gmale,2]
|
||||||
start,stop,male,state = self.gui.fan.angle[generation][selected+1]
|
start,stop,male,state = self.gui.fan.angle[generation][selected+1]
|
||||||
self.gui.fan.angle[generation][selected+1] = [stop,stop,male,0]
|
self.gui.fan.angle[generation][selected+1] = [stop,stop,male,0]
|
||||||
|
self.hide_parents(generation+1, selected+1, stop)
|
||||||
else:
|
else:
|
||||||
# go to left
|
# go to left
|
||||||
start = gstart - (gstop - gstart)
|
start = gstart - (gstop - gstart)
|
||||||
self.gui.fan.angle[generation][selected] = [start,gstop,gmale,2]
|
self.gui.fan.angle[generation][selected] = [start,gstop,gmale,2]
|
||||||
start,stop,male,state = self.gui.fan.angle[generation][selected-1]
|
start,stop,male,state = self.gui.fan.angle[generation][selected-1]
|
||||||
self.gui.fan.angle[generation][selected-1] = [start,start,male,0]
|
self.gui.fan.angle[generation][selected-1] = [start,start,male,0]
|
||||||
|
self.hide_parents(generation+1, selected-1, start)
|
||||||
# now we need to expand each of the slices outward:
|
# now we need to expand each of the slices outward:
|
||||||
#self.expand_parents(generation + 1, selected, gmale)
|
self.expand_parents(generation + 1, selected, gmale)
|
||||||
elif gstate == 2: # expanded, let's shrink
|
elif gstate == 2: # expanded, let's shrink
|
||||||
if gmale:
|
if gmale:
|
||||||
# shrink from right
|
# shrink from right
|
||||||
@@ -312,6 +378,7 @@ class FanChartGramplet(Gramplet):
|
|||||||
self.gui.fan.angle[generation][selected] = [gstart,stop,gmale,1]
|
self.gui.fan.angle[generation][selected] = [gstart,stop,gmale,1]
|
||||||
start,stop,male,state = self.gui.fan.angle[generation][selected+1]
|
start,stop,male,state = self.gui.fan.angle[generation][selected+1]
|
||||||
self.gui.fan.angle[generation][selected+1] = [stop-slice,stop,male,1]
|
self.gui.fan.angle[generation][selected+1] = [stop-slice,stop,male,1]
|
||||||
|
self.show_parents(generation+1, selected+1, stop-slice)
|
||||||
else:
|
else:
|
||||||
# shrink from left
|
# shrink from left
|
||||||
slice = (gstop - gstart)/2.0
|
slice = (gstop - gstart)/2.0
|
||||||
@@ -319,8 +386,9 @@ class FanChartGramplet(Gramplet):
|
|||||||
self.gui.fan.angle[generation][selected] = [start,gstop,gmale,1]
|
self.gui.fan.angle[generation][selected] = [start,gstop,gmale,1]
|
||||||
start,stop,male,state = self.gui.fan.angle[generation][selected-1]
|
start,stop,male,state = self.gui.fan.angle[generation][selected-1]
|
||||||
self.gui.fan.angle[generation][selected-1] = [start,start+slice,male,1]
|
self.gui.fan.angle[generation][selected-1] = [start,start+slice,male,1]
|
||||||
|
self.show_parents(generation+1, selected-1, start)
|
||||||
# now we need to shrink each of the slices outward:
|
# now we need to shrink each of the slices outward:
|
||||||
#self.shrink_parents(self, generation + 1, selected, gmale)
|
self.shrink_parents(generation + 1, selected, gmale)
|
||||||
|
|
||||||
def on_mouse_down(self, widget, e):
|
def on_mouse_down(self, widget, e):
|
||||||
# compute angle, radius, find out who would be there (rotated)
|
# compute angle, radius, find out who would be there (rotated)
|
||||||
|
Reference in New Issue
Block a user