3 # vim: sw=4 ts=4 expandtab ai
5 from random import random
6 from math import pi, cos, sin, sqrt
9 from misc import size_hum_read
11 #==============================================================================
13 class Cli_Presentation(object):
16 #==============================================================================
18 class Gtk_Presentation(object):
19 def __init__(self, filelist, maxdata=10):
21 import cairo; global cairo
22 import pycha.bar; global pycha
24 drawing = gtk.DrawingArea()
25 drawing.connect('expose-event', self.expose_event)
27 # `maxdata` biggest files from list
28 filelist.sort(reverse=True)
29 filelist = filelist[:maxdata]
32 maximum = max([bsize for bsize, path, size in filelist])
37 [(i, d[0]) for i, d in enumerate(filelist)]),
40 # labels for bar chart
41 ticks = [dict(v=i, label=os.path.basename(d[1])) for i, d in enumerate(filelist)]
43 #yticks = [dict(v=i*1000, label=`i` + 'Kb') for i in range(maximum/1000)]
44 #interval = (maximum/1024)*100
45 # print 'maximum:', maximum
46 # print 'interval:', interval
59 #'tickCount': maximum/(1000*10),
62 #'interval' : interval,
66 'chartColor': '#d8e7ec',
67 'baseColor': '#ffffff',
68 'lineColor': '#444444',
83 'fontColor' : '#ffffff',
87 self.toplevel = drawing
89 def expose_event(self, widget, event):
90 x, y, w, h, _ = widget.window.get_geometry()
91 surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, w, h)
93 chart = pycha.bar.HorizontalBarChart(surface, self.options)
94 chart.addDataset(self.data)
97 cr = widget.window.cairo_create() # cairo context
98 cr.set_source_surface(surface, 0, 0)
102 cr.set_source_rgb(0, 0, 0)
103 cr.rectangle(0, 0, w, h)