home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / lib / python2.4 / site-packages / AppInstall / Progress.py < prev    next >
Encoding:
Python Source  |  2006-08-02  |  1.6 KB  |  46 lines

  1. # (c) 2005 Canonical - GPL
  2. #
  3.  
  4. import apt
  5. import apt_pkg
  6. import gtk
  7.  
  8. # intervals of the start up progress
  9. # 4x caching and menu creation
  10. STEPS_UPDATE_CACHE = [ 12, 25, 37, 50, 100 ]
  11.  
  12. class GtkOpProgressWindow(apt.progress.OpProgress):
  13.     def __init__(self, glade, parent, steps=STEPS_UPDATE_CACHE):
  14.         self.steps = steps[:]
  15.         self.base = 0
  16.         self.old = 0 
  17.         self.next = int(self.steps.pop(0))
  18.         self.window_progress = glade.get_widget("window_progress")
  19.         self.progressbar_cache = glade.get_widget("progressbar_cache")
  20.         self.label_action = glade.get_widget("label_action")
  21.         self.window_progress.realize()
  22.         self.window_progress.window.set_functions(gtk.gdk.FUNC_MOVE)
  23.         self.window_progress.set_transient_for(parent)
  24.  
  25.     def update(self, percent):
  26.         self.window_progress.show()
  27.         # if the old percent was higher, a new progress was started
  28.         if self.old > percent:
  29.             # set the borders to the next interval
  30.             self.base = self.next
  31.             try:
  32.                 self.next = int(self.steps.pop(0))
  33.             except:
  34.                 pass
  35.         progress = self.base + percent/100 * (self.next - self.base)
  36.         self.old = percent
  37.         self.progressbar_cache.set_fraction(progress/100)
  38.         self.label_action.set_markup("<i>"+"%s" % self.subOp+"</i>")
  39.         while gtk.events_pending():
  40.             gtk.main_iteration()
  41.     # using __del__ here sucks (because of eventual GC lazines)
  42.     # but there is no "complete" callback in apt yet and "Done"
  43.     # is called for each subOp
  44.     def __del__(self):
  45.         self.window_progress.hide()
  46.