diff options
Diffstat (limited to 'src/fringlib/fringrenderer.py')
-rw-r--r-- | src/fringlib/fringrenderer.py | 41 |
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 |