result src/pkgsearch.py to p-a-c view
author“Alexandr <“popov2al@gmail.com”>
Thu, 2 Apr 2009 21:35:47 +0000 (01:35 +0400)
committer“Alexandr <“popov2al@gmail.com”>
Thu, 2 Apr 2009 21:35:47 +0000 (01:35 +0400)
src/pkgsearch.py

index a2f1c40..0c46f9d 100644 (file)
@@ -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())