# -*-coding: utf-8 -*-
# vim: sw=4 ts=4 expandtab ai
-import gtk
-#import apt_pkg
+import apt_pkg
from heapq import nlargest
from misc import *
class Control(object):
def __init__(self, ui):
- count = 7
+ count = 12
print ui
if ui == 'cli':
self.abstrac = Abstraction(self.present)
def start_search(self, get_data):
- deblist = [0, 0]
-# for size, name in nlargest(count, self.abstrac.pkggetter()):
-# deblist.append([name, size_hum_read(psize), size])
-
- self.search_present.show_out_toplevel(None, 'outtable', deblist)
+ deblist = []
+ count, outtype = get_data()
+ search_func = self.abstrac.pkggetter()
+ for size, name in nlargest(count, search_func):
+ deblist.append([int(size), name, size_hum_read(size)])
+ self.present.show_out_toplevel(None, outtype, deblist)
def run(self):
return self.present.toplevel
class Abstraction(object):
def __init__(self, presentation):
self.presentation = presentation
-# apt_pkg.InitConfig()
-# apt_pkg.InitSystem()
-# self.cache = apt_pkg.GetCache()
-#
-# def pkggetter(self):
-# self.fullsize = 0
-# for pkg in self.cache.Packages:
-# # pkg is from a list of packages, sorted by name.
-# if pkg.CurrentState == apt_pkg.CurStateInstalled:
-# pkgsize = [version.InstalledSize for version in pkg.VersionList][0]
-# self.fullsize = self.fullsize + pkgsize
-# yield pkgsize, pkg.Name
-#
-# def full(self):
-# return self.fullsize
+ apt_pkg.InitConfig()
+ apt_pkg.InitSystem()
+ self.cache = apt_pkg.GetCache()
+
+ def pkggetter(self):
+ self.fullsize = 0
+ for pkg in self.cache.Packages:
+ # pkg is from a list of packages, sorted by name.
+ if pkg.CurrentState == apt_pkg.CurStateInstalled:
+ pkgsize = [version.InstalledSize for version in pkg.VersionList][0]
+ self.fullsize = self.fullsize + pkgsize
+ yield pkgsize, pkg.Name
+
+ def full(self):
+ return self.fullsize
#==============================================================================
qty_label = gtk.Label('Debian packages quantity')
# "Packages quantity" spin
- qty_spin = gtk.SpinButton()
- qty_spin.set_numeric(True)
- qty_spin.set_range(0, 65536)
- qty_spin.set_increments(1, 10)
+ self.qty_spin = gtk.SpinButton()
+ self.qty_spin.set_numeric(True)
+ self.qty_spin.set_range(0, 65536)
+ self.qty_spin.set_increments(1, 10)
+ self.qty_spin.set_value(count)
# "Start" button
start_btn = gtk.Button('Start')
- start_btn.connect('released', self.start_btn_released)
+ start_btn.connect('released', self.start_btn_released, start_func)
# Output selection
- outtable_rbtn = gtk.RadioButton(None, 'Table')
- outdiagram_rbtn = gtk.RadioButton(outtable_rbtn, 'Diagram')
- out1_rbtn = gtk.RadioButton(outtable_rbtn, 'Another 1')
- out_rbtns = [outtable_rbtn, outdiagram_rbtn, out1_rbtn]
+ self.outtable_rbtn = gtk.RadioButton(None, 'Table')
+ self.outtable_rbtn.set_name('outtable')
+ outdiagram_rbtn = gtk.RadioButton(self.outtable_rbtn, 'Diagram')
+ outdiagram_rbtn.set_name('outdiagram')
+ out1_rbtn = gtk.RadioButton(self.outtable_rbtn, 'Another 1')
+ out1_rbtn.set_name('outanother1')
+ out_rbtns = [self.outtable_rbtn, outdiagram_rbtn, out1_rbtn]
hbox = gtk.HBox(False, 4)
hbox.pack_start(qty_label, False, False, 0)
- hbox.pack_start(qty_spin, False, False, 0)
+ hbox.pack_start(self.qty_spin, False, False, 0)
hbox.pack_start(start_btn, False, False, 0)
for btn in reversed(out_rbtns):
hbox.pack_end(btn, False, False, 0)
#=== Functions ============================================================
def start_btn_released(self, btn, start_func):
self.stopit = False
- self.butt_stop.set_sensitive(True)
- self.butt_start.set_sensitive(False)
- start_func(self.get_data, self.get_stopit, self.currfilelbl, self.kill_wind)
+ start_func(self.get_data)
def get_data(self):
- return int(self.qty_spin.get_value())
+ for btn in self.outtable_rbtn.get_group():
+ if btn.get_active():
+ out = btn.get_name()
+ return int(self.qty_spin.get_value()), out
#=== Output type selecting ================================================
- def show_out_toplevel(self, btn, outtype):
+ def show_out_toplevel(self, btn, outtype, results):
print 'Entering <' + outtype + '> output mode...'
-
- out_present = __import__('files.' + outtype, None, None, outtype) ###
- toplevel = out_present.Gtk_Presentation().get_toplevel()
- ###self.vbox.remove(self.vbox.get_children()[2])
- #self.vbox.add(toplevel)
- self.vbox.pack_start(toplevel)
-
-# def run(self):
-# self.show_all()
-# gtk.main()
+ out_submodule = __import__('debs.' + outtype, None, None, outtype)
+
+ try:
+ self.current_outtoplevel.destroy()
+ except:
+ pass
+
+ out_toplevel = out_submodule.Gtk_Presentation(results).toplevel
+ self.current_outtoplevel = out_toplevel
+ self.vbox.add(out_toplevel)
+ out_toplevel.show_all()
+# out_submodule.Gtk_Presentation().show_results(results)