3 # vim: sw=4 ts=4 expandtab ai
5 from random import random
6 from math import pi, cos, sin, sqrt
9 #==============================================================================
11 class Cli_Presentation(object):
14 #==============================================================================
16 class Gtk_Presentation(object):
17 def __init__(self, results, maxdata=10):
19 import cairo; global cairo
20 import pycha.pie; global pycha
22 filelist, start_path = results
24 # `maxdata` biggest files from list
25 filelist.sort(reverse=True)
26 filelist = filelist[:maxdata]
29 self.data = [(path, [[0, bsize]]) for bsize, path, size in filelist]
31 # labels for pie chart
32 ticks = [dict(v=i, label=os.path.basename(d[0])) for i, d in enumerate(self.data)]
42 'baseColor': '#ffffff',
55 drawing = gtk.DrawingArea()
56 drawing.connect('expose-event', self.expose_event)
58 self.toplevel = drawing
60 def expose_event(self, widget, event):
61 x, y, w, h, _ = widget.window.get_geometry()
62 surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, w, h)
64 chart = pycha.pie.PieChart(surface, self.options)
65 chart.addDataset(self.data)
68 cr = widget.window.cairo_create() # cairo context
69 cr.set_source_surface(surface, 0, 0)
73 cr.set_source_rgb(0, 0, 0)
74 cr.rectangle(0, 0, w, h)