3 # vim: sw=4 ts=4 expandtab ai
7 from heapq import nlargest
12 #==============================================================================
14 class Control(object):
18 self.abstrac = Abstraction()
19 self.present = Gtk_Presentation(count, self.start_search)
21 def start_search(self, count):
23 # for size, name in nlargest(count, self.abstrac.pkggetter()):
24 # deblist.append([name, size_hum_read(psize), size])
26 self.search_present.show_out_toplevel(None, 'outtable', deblist)
29 return self.present.get_toplevel()
31 class Abstraction(object):
34 # apt_pkg.InitConfig()
35 # apt_pkg.InitSystem()
36 # self.cache = apt_pkg.GetCache()
38 # def pkggetter(self):
40 # for pkg in self.cache.Packages:
41 # # pkg is from a list of packages, sorted by name.
42 # if pkg.CurrentState == apt_pkg.CurStateInstalled:
43 # pkgsize = [version.InstalledSize for version in pkg.VersionList][0]
44 # self.fullsize = self.fullsize + pkgsize
45 # yield pkgsize, pkg.Name
48 # return self.fullsize
51 #==============================================================================
53 class Gtk_Presentation(object):
55 def __init__(self, count, start_func):
58 # "Packages quantity" label
59 qty_label = gtk.Label('Debian packages quantity')
61 # "Packages quantity" spin
62 qty_spin = gtk.SpinButton()
63 qty_spin.set_numeric(True)
64 qty_spin.set_range(0, 65536)
65 qty_spin.set_increments(1, 10)
68 start_btn = gtk.Button('Start')
69 start_btn.connect('released', self.start_search)
72 outtable_rbtn = gtk.RadioButton(None, 'Table')
73 outdiagram_rbtn = gtk.RadioButton(outtable_rbtn, 'Diagram')
74 out1_rbtn = gtk.RadioButton(outtable_rbtn, 'Another 1')
75 out_rbtns = [outtable_rbtn, outdiagram_rbtn, out1_rbtn]
77 hbox = gtk.HBox(False, 4)
78 hbox.pack_start(qty_label, False, False, 0)
79 hbox.pack_start(qty_spin, False, False, 0)
80 hbox.pack_start(start_btn, False, False, 0)
81 for btn in reversed(out_rbtns):
82 hbox.pack_end(btn, False, False, 0)
84 statusbar = gtk.Statusbar()
85 context_id = statusbar.get_context_id('Selected package')
86 statusbar.push(context_id, 'test')
88 self.vbox = gtk.VBox(False, 4)
89 self.vbox.set_border_width(4)
90 self.vbox.pack_start(hbox, False, False, 0)
91 self.vbox.pack_end(statusbar, False, False, 0)
93 self.show_out_toplevel(None, 'outtable') ###
94 self.frame = gtk.Frame('Deb packages search')
95 self.frame.add(self.vbox)
98 #=== Functions ============================================================
99 def start_search(self, widget, start_func):
101 self.butt_stop.set_sensitive(True)
102 self.butt_start.set_sensitive(False)
103 start_func(self.get_data, self.get_stopit, self.currfilelbl, self.kill_wind)
105 def stop_search(self, widget):
107 self.butt_stop.set_sensitive(False)
108 self.butt_start.set_sensitive(True)
110 def get_stopit(self):
113 #=== Toplevel widget for embedding to main window =========================
114 def get_toplevel(self):
115 return self.frame ###
117 #=== Output type selecting ================================================
118 def show_out_toplevel(self, btn, outtype):
119 print 'Entering <' + outtype + '> output mode...'
121 out_present = __import__('files.' + outtype, None, None, outtype) ###
122 toplevel = out_present.Gtk_Presentation().get_toplevel()
123 ###self.vbox.remove(self.vbox.get_children()[2])
124 #self.vbox.add(toplevel)
125 self.vbox.pack_start(toplevel)