Config = {}
Config['search'] = 'files'
-Config['outtype'] = 'outtable'
+Config['outtype'] = 'out_table'
# files
Config['ignore_dirs'] = ['/dev', '/proc', '/sys', '/mnt']
--- /dev/null
+#!/usr/bin/env python
+# -*-coding: utf-8 -*-
+# vim: sw=4 ts=4 expandtab ai
+
+from random import random
+from math import pi, cos, sin, sqrt
+import os.path
+
+#==============================================================================
+
+class Cli_Presentation(object):
+ pass
+
+#==============================================================================
+
+class Gtk_Presentation(object):
+ def __init__(self, filelist, maxdata=10):
+ import gtk
+ import cairo; global cairo
+ import pycha.bar; global pycha
+
+ drawing = gtk.DrawingArea()
+ drawing.connect('expose-event', self.expose_event)
+
+ # `maxdata` biggest files from list
+ filelist.sort(reverse=True)
+ filelist = filelist[:maxdata]
+
+ # only byte sizes
+ self.data = (
+ ('sizes',
+ [(i, d[0]) for i, d in enumerate(filelist)]),
+ )
+
+ # labels for bar chart
+ ticks = [dict(v=i, label=os.path.basename(d[1])) for i, d in enumerate(filelist)]
+
+ self.options = {
+ 'axis': {
+ 'x': {
+ 'ticks': ticks,
+ 'tickCount': 7,
+ 'rotate': 90,
+ },
+ 'y': {
+ 'tickCount': 5,
+ 'tickPrecision' : 0,
+ },
+ },
+ 'background': {
+ 'chartColor': '#d8e7ec',
+ 'baseColor': '#efebe7',
+ 'lineColor': '#444444'
+# 'hide': True,
+ },
+ 'padding': {
+ 'left': 40,
+ 'right': 10,
+ 'top': 20,
+ 'bottom': 60,
+ },
+ 'legend': {
+ 'hide': True,
+ },
+ }
+
+ self.toplevel = drawing
+
+ def expose_event(self, widget, event):
+ x, y, w, h, _ = widget.window.get_geometry()
+ surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, w, h)
+
+ cr = widget.window.cairo_create() # cairo context
+ cr.set_source_surface(surface, 0, 0)
+
+ chart = pycha.bar.VerticalBarChart(surface, self.options)
+ chart.addDataset(self.data)
+ chart.render()
+
+ cr.paint()
--- /dev/null
+#!/usr/bin/env python
+# -*-coding: utf-8 -*-
+# vim: sw=4 ts=4 expandtab ai
+
+from random import random
+from math import pi, cos, sin, sqrt
+import os.path
+
+#==============================================================================
+
+class Cli_Presentation(object):
+ pass
+
+#==============================================================================
+
+class Gtk_Presentation(object):
+ def __init__(self, filelist, maxdata=10):
+ import gtk
+ import cairo
+
+ drawing = gtk.DrawingArea()
+
+ # `maxdata` biggest files from list
+ filelist.sort(reverse=True)
+ del filelist[maxdata:]
+ self.filelist = filelist
+
+ # sum of sizes
+ fullsize = sum((f[0] for f in filelist))
+
+ # sectors list
+ sectors = []
+ start_angle = 0
+ for bsize, name, size in filelist:
+ delta_angle = (float(bsize)/fullsize)*2*pi
+ end_angle = start_angle + delta_angle
+ color = self.rand_color()
+ sectors.append((start_angle, end_angle, color))
+ start_angle += delta_angle
+
+ drawing.connect('expose-event', self.expose_event, sectors)
+
+ self.toplevel = drawing
+
+ def expose_event(self, widget, event, sectors):
+ x, y, w, h, _ = widget.window.get_geometry()
+ R = min(w-w/3, h)/2 - 10
+
+ cr = widget.window.cairo_create() # cairo context
+ cr.rectangle(0, 0, w, h)
+ cr.set_source_rgb(1, 1, 1)
+ cr.fill()
+ cr.set_source_rgb(0, 0, 0)
+ cr.rectangle(0, 0, w, h)
+ cr.stroke()
+
+ cr.translate(w/2-w/6, h/2) # moving coordinates
+
+ # drawing pie chart
+ for i, (start_angle, end_angle, color) in enumerate(sectors):
+ # drawing sector
+ cr.move_to(0, 0)
+ cr.set_source_rgb(*color)
+ cr.arc(0, 0, R, start_angle, end_angle)
+ cr.fill()
+
+ # to cartesian coordinates
+ delta_angle = end_angle - start_angle
+ x = R/1.7 * cos(start_angle+delta_angle/2)
+ y = R/1.7 * sin(start_angle+delta_angle/2)
+ area = 0.5*(delta_angle*R**2) # sector area
+
+ # drawing text
+ cr.set_font_size(sqrt(area)/2) # text size
+ text = str(i+1) # text string
+ xbearing, ybearing, textw, texth = cr.text_extents(text)[:4]
+ cr.move_to(x-(xbearing+textw/2), y-(ybearing+texth/2)) # text center
+ cr.set_source_rgb(.3, .3, .3) # text color
+ cr.show_text(text)
+
+ cr.set_font_size(14)
+ cr.translate(R+40, -h/2+40) # moving coordinates
+ cr.move_to(0, 0)
+
+ # drawing files list
+ for i, (bsize, name, size) in enumerate(self.filelist):
+ color = sectors[i][2]
+ cr.set_source_rgb(*color)
+ cr.rectangle(-20, 20*i+3, 14, -14)
+ cr.fill()
+
+ text = str(i+1) + '. ' + os.path.basename(name) + ' (' + str(size) + ')'
+ cr.move_to(0, 20*i)
+ cr.set_source_rgb(0, 0, 0)
+ cr.show_text(text)
+
+ def rand_color(self):
+ return random(), random(), random()
--- /dev/null
+#!/usr/bin/env python
+# -*-coding: utf-8 -*-
+# vim: sw=4 ts=4 expandtab ai
+
+from random import random
+from math import pi, cos, sin, sqrt
+import os.path
+
+#==============================================================================
+
+class Cli_Presentation(object):
+ pass
+
+#==============================================================================
+
+class Gtk_Presentation(object):
+ def __init__(self, filelist, maxdata=10):
+ import gtk
+ import cairo; global cairo
+ import pycha.pie; global pycha
+
+ drawing = gtk.DrawingArea()
+ drawing.connect('expose-event', self.expose_event)
+
+ # `maxdata` biggest files from list
+ filelist.sort(reverse=True)
+ filelist = filelist[:maxdata]
+
+ # only byte sizes
+ self.data = [(path, [[0, bsize]]) for bsize, path, size in filelist]
+
+ # labels for pie chart
+ ticks = [dict(v=i, label=os.path.basename(d[0])) for i, d in enumerate(self.data)]
+
+ self.options = {
+ 'axis': {
+ 'x': {
+ 'ticks': ticks,
+ }
+ },
+ 'background': {
+ 'hide': True,
+ },
+ 'padding': {
+ 'left': 10,
+ 'right': 10,
+ 'top': 10,
+ 'bottom': 10,
+ },
+ 'legend': {
+ 'hide': True,
+ }
+ }
+
+ self.toplevel = drawing
+
+ def expose_event(self, widget, event):
+ x, y, w, h, _ = widget.window.get_geometry()
+ surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, w, h)
+
+ cr = widget.window.cairo_create() # cairo context
+
+ cr.rectangle(0, 0, w, h)
+ cr.set_source_rgb(1, 1, 1)
+ cr.fill()
+ cr.set_source_rgb(0, 0, 0)
+ cr.rectangle(0, 0, w, h)
+ cr.stroke()
+
+ cr.set_source_surface(surface, 0, 0)
+
+ chart = pycha.pie.PieChart(surface, self.options)
+ chart.addDataset(self.data)
+ chart.render()
+
+ cr.paint()
--- /dev/null
+#!/usr/bin/env python
+# -*-coding: utf-8 -*-
+# vim: sw=4 ts=4 expandtab ai
+
+from misc import _
+
+#==============================================================================
+
+# class OutTable_Control(object):
+# def __init__(self):
+# self.table_present = Gtk_Presentation()
+#
+# def show(self, filelist, flsize):
+# self.table_present.show_result(filelist, flsize)
+#
+# def get_ui(self):
+# return self.table_present.get_toplevel()
+#
+#
+# #==============================================================================
+#
+# class OutTable_Abstraction(object):
+# pass
+
+#==============================================================================
+
+class Cli_Presentation(object):
+ def __init__(self, filelist): ###
+ self.toplevel = self.print_results(filelist)
+
+ def print_results(self, filelist):
+ for bsize, path, size in filelist:
+ print '%10d' % bsize, path
+
+#==============================================================================
+
+class Gtk_Presentation(object):
+ def __init__(self, filelist): ###
+ import gtk
+ import gobject
+
+ # Определяем переменную в которой будет храниться выводимый список
+ self.liststore = gtk.ListStore(str, str, gobject.TYPE_INT64)
+
+ for bsize, path, size in filelist:
+ self.liststore.append([path, size, bsize])
+
+ treeview = gtk.TreeView(self.liststore)
+
+ # Создаем и настраиваем колонку с размером файла
+ size_col = gtk.TreeViewColumn(_('Size'))
+ cell1 = gtk.CellRendererText()
+ cell1.set_property('width', 90)
+ size_col.pack_start(cell1, True)
+ size_col.add_attribute(cell1, 'text', 1)
+ treeview.append_column(size_col)
+ # Создаем и настраиваем колонку с именем файла
+ path_col = gtk.TreeViewColumn(_('Path'))
+ cell2 = gtk.CellRendererText()
+ path_col.pack_start(cell2, True)
+ path_col.add_attribute(cell2, 'text', 0)
+ treeview.append_column(path_col)
+
+ # Добавляем сортировку для колонок
+ treeview.set_search_column(1)
+ path_col.set_sort_column_id(0)
+ size_col.set_sort_column_id(2)
+
+ self.swin = gtk.ScrolledWindow()
+ self.swin.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+ self.swin.add(treeview)
+### self.swin.show_all()
+ self.toplevel = self.swin
+
+# #=== Functions ============================================================
+# def show_results(self, filelist):
+# self.liststore.clear()
+# for path, size, bsize in filelist:
+# print path, size, bsize
+# self.liststore.append([path, size, bsize])
+
+#==============================================================================
+
+class Hildon_Presentation(object):
+ def __init__(self, filelist): ###
+ import gtk
+ import gobject
+ import hildon
+
+ # На таблетке не отображаються заголовки столбцов по умолчанию -
+ # след строка заставляет их отображаться принудительно
+ treeview.set_headers_visible(1)
+++ /dev/null
-#!/usr/bin/env python
-# -*-coding: utf-8 -*-
-# vim: sw=4 ts=4 expandtab ai
-
-from random import random
-from math import pi, cos, sin, sqrt
-import os.path
-
-#==============================================================================
-
-class Cli_Presentation(object):
- pass
-
-#==============================================================================
-
-class Gtk_Presentation(object):
- def __init__(self, filelist, maxdata=10):
- import gtk
- import cairo
-
- drawing = gtk.DrawingArea()
-
- # `maxdata` biggest files from list
- filelist.sort(reverse=True)
- del filelist[maxdata:]
- self.filelist = filelist
-
- # sum of sizes
- fullsize = sum((f[0] for f in filelist))
-
- # sectors list
- sectors = []
- start_angle = 0
- for bsize, name, size in filelist:
- delta_angle = (float(bsize)/fullsize)*2*pi
- end_angle = start_angle + delta_angle
- color = self.rand_color()
- sectors.append((start_angle, end_angle, color))
- start_angle += delta_angle
-
- drawing.connect('expose-event', self.expose_event, sectors)
-
- self.toplevel = drawing
-
- def expose_event(self, widget, event, sectors):
- x, y, w, h, _ = widget.window.get_geometry()
- R = min(w-w/3, h)/2 - 10
-
- cr = widget.window.cairo_create() # cairo context
- cr.rectangle(0, 0, w, h)
- cr.set_source_rgb(1, 1, 1)
- cr.fill()
- cr.set_source_rgb(0, 0, 0)
- cr.rectangle(0, 0, w, h)
- cr.stroke()
-
- cr.translate(w/2-w/6, h/2) # moving coordinates
-
- # drawing pie chart
- for i, (start_angle, end_angle, color) in enumerate(sectors):
- # drawing sector
- cr.move_to(0, 0)
- cr.set_source_rgb(*color)
- cr.arc(0, 0, R, start_angle, end_angle)
- cr.fill()
-
- # to cartesian coordinates
- delta_angle = end_angle - start_angle
- x = R/1.7 * cos(start_angle+delta_angle/2)
- y = R/1.7 * sin(start_angle+delta_angle/2)
- area = 0.5*(delta_angle*R**2) # sector area
-
- # drawing text
- cr.set_font_size(sqrt(area)/2) # text size
- text = str(i+1) # text string
- xbearing, ybearing, textw, texth = cr.text_extents(text)[:4]
- cr.move_to(x-(xbearing+textw/2), y-(ybearing+texth/2)) # text center
- cr.set_source_rgb(.3, .3, .3) # text color
- cr.show_text(text)
-
- cr.set_font_size(14)
- cr.translate(R+40, -h/2+40) # moving coordinates
- cr.move_to(0, 0)
-
- # drawing files list
- for i, (bsize, name, size) in enumerate(self.filelist):
- color = sectors[i][2]
- cr.set_source_rgb(*color)
- cr.rectangle(-20, 20*i+3, 14, -14)
- cr.fill()
-
- text = str(i+1) + '. ' + os.path.basename(name) + ' (' + str(size) + ')'
- cr.move_to(0, 20*i)
- cr.set_source_rgb(0, 0, 0)
- cr.show_text(text)
-
- def rand_color(self):
- return random(), random(), random()
+++ /dev/null
-#!/usr/bin/env python
-# -*-coding: utf-8 -*-
-# vim: sw=4 ts=4 expandtab ai
-
-from misc import _
-
-#==============================================================================
-
-# class OutTable_Control(object):
-# def __init__(self):
-# self.table_present = Gtk_Presentation()
-#
-# def show(self, filelist, flsize):
-# self.table_present.show_result(filelist, flsize)
-#
-# def get_ui(self):
-# return self.table_present.get_toplevel()
-#
-#
-# #==============================================================================
-#
-# class OutTable_Abstraction(object):
-# pass
-
-#==============================================================================
-
-class Cli_Presentation(object):
- def __init__(self, filelist): ###
- self.toplevel = self.print_results(filelist)
-
- def print_results(self, filelist):
- for bsize, path, size in filelist:
- print '%10d' % bsize, path
-
-#==============================================================================
-
-class Gtk_Presentation(object):
- def __init__(self, filelist): ###
- import gtk
- import gobject
-
- # Определяем переменную в которой будет храниться выводимый список
- self.liststore = gtk.ListStore(str, str, gobject.TYPE_INT64)
-
- for bsize, path, size in filelist:
- self.liststore.append([path, size, bsize])
-
- treeview = gtk.TreeView(self.liststore)
-
- # Создаем и настраиваем колонку с размером файла
- size_col = gtk.TreeViewColumn(_('Size'))
- cell1 = gtk.CellRendererText()
- cell1.set_property('width', 90)
- size_col.pack_start(cell1, True)
- size_col.add_attribute(cell1, 'text', 1)
- treeview.append_column(size_col)
- # Создаем и настраиваем колонку с именем файла
- path_col = gtk.TreeViewColumn(_('Path'))
- cell2 = gtk.CellRendererText()
- path_col.pack_start(cell2, True)
- path_col.add_attribute(cell2, 'text', 0)
- treeview.append_column(path_col)
-
- # Добавляем сортировку для колонок
- treeview.set_search_column(1)
- path_col.set_sort_column_id(0)
- size_col.set_sort_column_id(2)
-
- self.swin = gtk.ScrolledWindow()
- self.swin.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
- self.swin.add(treeview)
-### self.swin.show_all()
- self.toplevel = self.swin
-
-# #=== Functions ============================================================
-# def show_results(self, filelist):
-# self.liststore.clear()
-# for path, size, bsize in filelist:
-# print path, size, bsize
-# self.liststore.append([path, size, bsize])
-
-#==============================================================================
-
-class Hildon_Presentation(object):
- def __init__(self, filelist): ###
- import gtk
- import gobject
- import hildon
-
- # На таблетке не отображаються заголовки столбцов по умолчанию -
- # след строка заставляет их отображаться принудительно
- treeview.set_headers_visible(1)
self.stop_btn.connect('clicked', self.stop_btn_clicked)
# Output selection
- outtable_rbtn = gtk.RadioButton(None, _('Table'))
- outtable_rbtn.set_name('outtable')
- outdiagram_rbtn = gtk.RadioButton(outtable_rbtn, _('Diagram'))
- outdiagram_rbtn.set_name('outdiagram')
- out1_rbtn = gtk.RadioButton(outtable_rbtn, 'Another 1')
- out1_rbtn.set_name('outanother1')
- self.out_rbtns = [outtable_rbtn, outdiagram_rbtn, out1_rbtn]
+ out_table_rbtn = gtk.RadioButton(None, _('Table'))
+ out_table_rbtn.set_name('out_table')
+ out_diabar_rbtn = gtk.RadioButton(out_table_rbtn, _('Bar chart'))
+ out_diabar_rbtn.set_name('out_diabar')
+ out_diapie_rbtn = gtk.RadioButton(out_table_rbtn, _('Pie chart'))
+ out_diapie_rbtn.set_name('out_diapie')
+ out_diaold_rbtn = gtk.RadioButton(out_table_rbtn, _('Old chart'))
+ out_diaold_rbtn.set_name('out_diaold')
+ self.out_rbtns = [
+ out_table_rbtn, out_diabar_rbtn, out_diapie_rbtn, out_diaold_rbtn
+ ]
hbox = gtk.HBox(False, 4)
hbox.pack_start(qty_label, False, False, 0)