summaryrefslogtreecommitdiffstats
path: root/src/fringlib/fringrenderer.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/fringlib/fringrenderer.py')
-rw-r--r--src/fringlib/fringrenderer.py57
1 files changed, 30 insertions, 27 deletions
diff --git a/src/fringlib/fringrenderer.py b/src/fringlib/fringrenderer.py
index c5fd5ee..59ea2a3 100644
--- a/src/fringlib/fringrenderer.py
+++ b/src/fringlib/fringrenderer.py
@@ -6,26 +6,29 @@ import os
class Hotspot:
- def __init__(self, is_dir, path, size, value):
+ def __init__(self, is_dir, path, sumlist, value):
self.is_dir = is_dir
self.path = path
- self.size = size
+ self.sumlist = sumlist
self.value = value
self.percentage = value*100
+
class SideLink(Hotspot):
- def __init__(self, is_dir, path, size, value, minpos, maxpos):
- Hotspot.__init__(self, is_dir, path, size, value)
+ def __init__(self, is_dir, path, sumlist, value, minpos, maxpos):
+ Hotspot.__init__(self, is_dir, path, sumlist, value)
self.minx,self.miny = minpos
self.maxx,self.maxy = maxpos
+
class Segment(Hotspot):
- def __init__(self, is_dir, path, size, start, end):
- Hotspot.__init__(self, is_dir, path, size, end-start)
+ def __init__(self, is_dir, path, sumlist, start, end):
+ Hotspot.__init__(self, is_dir, path, sumlist, end-start)
self.start, self.end = start, end
+
class FringRenderer:
@@ -59,13 +62,8 @@ class FringRenderer:
self.linklayout.set_font_description(pango.FontDescription("sans 8"))
def draw_segment(self,ctx, ring, start_angle, end_angle, start_hue, end_hue, data, previouspath=""):
-
if data is None: return
- dataname = data[0]
- datacontents = data[1]
- datasize = data[2]
-
if ring == 0:
self.lookup_data = []
self.side_links = []
@@ -76,27 +74,26 @@ class FringRenderer:
CENTERX, CENTERY = self.WIDTH/2, self.HEIGHT/2
ctx.move_to(CENTERX, CENTERY)
- n = len(datacontents)
+ n = len(data.children)
i = 0
accumulated = 0
last = start_angle
- for entry in datacontents:
- fn, contents, value = entry
+ for entry in data.children:
- hasContents = contents != None
+ hasContents = entry.children != None
start = last
- accumulated += value
+ accumulated += entry.size
- if datasize == 0: continue
- end = start_angle+(end_angle - start_angle)*1.0*accumulated/datasize
+ if data.size == 0: continue
+ end = start_angle+(end_angle - start_angle)*1.0*accumulated/data.size
if end-start >= .005:
- p = previouspath+os.sep+fn
- self.lookup_data[ring].append( Segment(hasContents , p, value, start, end) )
+ p = previouspath+os.sep+entry.name
+ self.lookup_data[ring].append( Segment(hasContents , p, entry, start, end) )
color = self._choose_color(start_hue + (end_hue-start_hue)*1.0*i/n, ring)
@@ -117,7 +114,7 @@ class FringRenderer:
self.draw_segment(ctx, ring+1, start, end,
start_hue + (end_hue-start_hue)*1.0*i/n,
start_hue + (end_hue-start_hue)*1.0*(i+1)/n, entry,
- previouspath+os.sep+fn)
+ previouspath+os.sep+entry.name)
r += self.RING_RADIUS/2
middle = CENTERX+r*cos((start+end)*pi), CENTERY+r*sin((start+end)*pi)
@@ -149,12 +146,18 @@ class FringRenderer:
else: ctx.set_source_rgb(*self.FILE_LABEL_COLOR)
# todo: cut down label size if longer than WIDTH/2 - ring*ringradius - innerradius
- label = fn
+ label = entry.name
width,height = self._draw_centered_text(ctx, label, align_x)
if align_x == 0: width *= -1 #TODO change this...
- self.__register_side_link(hasContents,p,value,end-start,x,y+(height/2),x+(width),y-(height/2))
+
+ self.__register_side_link(
+ hasContents,
+ p,
+ entry,
+ end-start,
+ x,y+(height/2),x+(width),y-(height/2))
# draw line
ctx.move_to(*point_a)
@@ -172,7 +175,7 @@ class FringRenderer:
ctx.set_source_rgb(0, 0, 0)
percent = (end-start)*100
if percent >= 8:
- #self._draw_centered_text2(ctx, "%.0f%%" % ((end-start)*100), pretty_size(value))
+ #self._draw_centered_text2(ctx, "%.0f%%" % ((end-start)*100), pretty_size(entry.size))
self._draw_centered_text(ctx, "%.0f%%" %percent)
last = end
@@ -180,7 +183,7 @@ class FringRenderer:
if ring == 0:
ctx.set_source_rgb(.3,.3,.3)
- i = format_disk_space(datasize)
+ i = format_disk_space(data.size)
ctx.move_to(CENTERX, CENTERY)
width,height = self._draw_centered_text(ctx, i[0], .5, 1 )
ctx.move_to(CENTERX, CENTERY+height)
@@ -239,10 +242,10 @@ class FringRenderer:
p = np # Funny!
- def __register_side_link(self,is_dir,path,size,value,x0,y0,x1,y1):
+ def __register_side_link(self,is_dir,path,sumlist,value,x0,y0,x1,y1):
if x1 < x0: x0,x1 = x1,x0 # swap
if y1 < y0: y0,y1 = y1,y0
- self.side_links.append(SideLink(is_dir, path, size, value, (x0,y0), (x1,y1)))
+ self.side_links.append(SideLink(is_dir, path, sumlist, value, (x0,y0), (x1,y1)))
def hsv2rgb(self,h,s,v):
if s<=0: