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.py41
1 files changed, 27 insertions, 14 deletions
diff --git a/src/fringlib/fringrenderer.py b/src/fringlib/fringrenderer.py
index 59ea2a3..9fe889a 100644
--- a/src/fringlib/fringrenderer.py
+++ b/src/fringlib/fringrenderer.py
@@ -140,15 +140,27 @@ class FringRenderer:
point_b = CENTERX+leg_radius*cos((start+end)*pi), CENTERY+leg_radius*sin((start+end)*pi)
point_c = x,y
- # draw the side link label
+ # draw the side link label -------------------------------------------
ctx.move_to(x+xmod,y)
if hasContents: ctx.set_source_rgb(*self.LINK_LABEL_COLOR)
else: ctx.set_source_rgb(*self.FILE_LABEL_COLOR)
-
- # todo: cut down label size if longer than WIDTH/2 - ring*ringradius - innerradius
- label = entry.name
-
- width,height = self._draw_centered_text(ctx, label, align_x)
+
+ # find out how large the label will be
+ label = unicode(entry.name)
+ self.linklayout.set_text( unicode(entry.name) )
+ width, height = self.linklayout.get_pixel_size()
+
+ # if label too long, truncate by one until it fits
+ m = self.WIDTH/2 - (self.RINGS_MAX*self.RING_RADIUS) - self.INNER_RADIUS
+ while width > m and m > 0:
+ label = label[:-1]
+ self.linklayout.set_text( label+"..." )
+ width, height = self.linklayout.get_pixel_size()
+ if len(label) < 3: width = 0 # emergency escape
+
+ # print the labet
+ ctx.rel_move_to(-width*(1-align_x), -height*.5)
+ ctx.show_layout(self.linklayout)
if align_x == 0: width *= -1 #TODO change this...
@@ -169,14 +181,15 @@ class FringRenderer:
ctx.set_line_width(self.LEG_LINE_WIDTH)
ctx.stroke()
- # write disk usage on segments
- if self.RING_RADIUS >= ctx.text_extents("55%")[3]:
- ctx.move_to(*middle)
- 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(entry.size))
- self._draw_centered_text(ctx, "%.0f%%" %percent)
+ # write disk usage on segments -------------------------------------------
+ if ring == 0: # only draw percents on the first ring
+ if self.RING_RADIUS >= ctx.text_extents("55%")[3]:
+ ctx.move_to(*middle)
+ 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(entry.size))
+ self._draw_centered_text(ctx, "%.0f%%" %percent)
last = end
i += 1