From 3b1fa34318607c522d52cbb29ac4f2dec79cd2ff Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E2=80=9CAlexandr?= <“popov2al@gmail.com”> Date: Fri, 3 Apr 2009 01:35:47 +0400 Subject: [PATCH] result src/pkgsearch.py to p-a-c view --- src/pkgsearch.py | 98 +++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 79 insertions(+), 19 deletions(-) diff --git a/src/pkgsearch.py b/src/pkgsearch.py index a2f1c40..0c46f9d 100644 --- a/src/pkgsearch.py +++ b/src/pkgsearch.py @@ -4,24 +4,84 @@ import apt_pkg from heapq import nlargest - from misc import size_hum_read -def pkggetter(cache): - for pkg in cache.Packages: - # pkg is from a list of packages, sorted by name. - if pkg.CurrentState == apt_pkg.CurStateInstalled: - yield [version.InstalledSize for version in pkg.VersionList][0], pkg.Name - -def main(): - """The main function.""" - apt_pkg.InitConfig() - apt_pkg.InitSystem() - - cache = apt_pkg.GetCache() - count = 50 - for size, packg in nlargest(count, pkggetter(cache)): - print packg, size_hum_read(size) - -if __name__ == "__main__": - main() +class Search_Pkg_Control(object): + + def __init__(self, config, show_funct): + win_width = config.get('window_width') + win_height = config.get('window_height') + self.show_func = show_funct + self.abstr = Search_Pkg_Abstraction() + self.present = Search_Pkg_Presentation(win_width, win_height, self.start_search) + + def start_search(self, count): + pkglist = [] + for psize, packg in nlargest(count, self.abstr.pkggetter()): + pkglist.append([packg, size_hum_read(psize), psize]) + self.show_func(pkglist) + + +class Search_Pkg_Abstraction(object): + + def __init__(self): + apt_pkg.InitConfig() + apt_pkg.InitSystem() + self.cache = apt_pkg.GetCache() + + def pkggetter(self): + for pkg in self.cache.Packages: + # pkg is from a list of packages, sorted by name. + if pkg.CurrentState == apt_pkg.CurStateInstalled: + yield [version.InstalledSize for version in pkg.VersionList][0], pkg.Name + + +class Search_Pkg_Presentation(gtk.Window): + + def __init__(self, win_width, win_height, st_func): + """Create MainWindow.""" + # Создаем новое окно + gtk.Window.__init__(self) + self.set_default_size(win_width, win_height) + self.set_border_width(4) + self.connect('delete_event', gtk.main_quit) + + label1 = gtk.Label('Files quantity') + # Окошко ввода количества файлов, мин значение=1 макс=65536 по умолчанию 10 + adj = gtk.Adjustment(count, 1, 65536, 1, 5, 0) + self.file_cnt = gtk.SpinButton(adj, 0, 0) + + hbox = gtk.HBox(False, 0) + hbox.pack_start(label1, False, False, 5) + hbox.pack_start(self.file_cnt, False, False, 0) + + self.butt_start = gtk.Button('Go >') + self.butt_start.connect('released', self.start_srch, st_func) + + self.butt_prev = gtk.Button('< Previous') + self.butt_prev.connect('released', self.show_prev, prev_window) + + hbox1 = gtk.HBox(False, 0) + hbox1.pack_start(self.butt_prev, False, False, 5) + hbox1.pack_start(self.butt_start, False, False, 5) + + vbox = gtk.VBox(False, 0) + vbox.pack_start(hbox, False, False, 5) + vbox.pack_start(self.butt_start, False, False, 5) + + self.add(vbox) + + def get_ui(self): + return self + + def get_data(self): + return int( self.file_cnt.get_value() ) + + def run(self): + self.show_all() + gtk.main() + + def start_srch(self, widget, start_func): + self.destroy + gtk.main_quit() + start_func(self.get_data()) -- 1.7.9.5