3 # vim: sw=4 ts=4 expandtab ai
7 from heapq import nlargest
8 from misc import size_hum_read
10 class Search_Pkg_Control(object):
12 def __init__(self, config, show_funct):
13 win_width = config.get('window_width')
14 win_height = config.get('window_height')
15 count = config.get('default_pkg_count')
16 self.show_func = show_funct
17 self.abstr = Search_Pkg_Abstraction()
18 self.present = Search_Pkg_Presentation(win_width, win_height, count, self.start_search)
20 def start_search(self, count, kill_func):
22 for psize, packg in nlargest(count, self.abstr.pkggetter()):
23 pkglist.append([packg, size_hum_read(psize), psize])
25 self.show_func.show(pkglist, self.abstr.full())
32 class Search_Pkg_Abstraction(object):
37 self.cache = apt_pkg.GetCache()
41 for pkg in self.cache.Packages:
42 # pkg is from a list of packages, sorted by name.
43 if pkg.CurrentState == apt_pkg.CurStateInstalled:
44 pkgsize = [version.InstalledSize for version in pkg.VersionList][0]
45 self.fullsize = self.fullsize + pkgsize
46 yield pkgsize, pkg.Name
52 class Search_Pkg_Presentation(gtk.Window):
54 def __init__(self, win_width, win_height, count, st_func):
55 """Create MainWindow."""
57 gtk.Window.__init__(self)
58 self.set_default_size(win_width, win_height)
59 self.set_border_width(4)
60 self.connect('delete_event', gtk.main_quit)
62 label1 = gtk.Label('Files quantity')
63 # Окошко ввода количества файлов, мин значение=1 макс=65536 по умолчанию 10
64 adj = gtk.Adjustment(count, 1, 65536, 1, 5, 0)
65 self.file_cnt = gtk.SpinButton(adj, 0, 0)
67 hbox = gtk.HBox(False, 0)
68 hbox.pack_start(label1, False, False, 5)
69 hbox.pack_start(self.file_cnt, False, False, 0)
71 self.butt_start = gtk.Button('Go >')
72 self.butt_start.connect('released', self.start_srch, st_func)
74 self.butt_prev = gtk.Button('< Previous')
75 #self.butt_prev.connect('released', self.show_prev, prev_window)
77 hbox1 = gtk.HBox(False, 0)
78 hbox1.pack_start(self.butt_prev, False, False, 5)
79 hbox1.pack_start(self.butt_start, False, False, 5)
81 vbox = gtk.VBox(False, 0)
82 vbox.pack_start(hbox, False, False, 5)
83 vbox.pack_start(hbox1, False, False, 5)
92 return int( self.file_cnt.get_value() )
98 def start_srch(self, widget, start_func):
99 start_func(self.get_data(), self.kill_wind)