Viewing file: ProgressDialog.py (2.55 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
import gtk import gtk.glade import os
from Progress import Progress, ProgressCanceled from config import *
class ProgressDialog (Progress): def __init__ (self, parent=None): Progress.__init__ (self) self.parent = parent if parent: self.dialog.set_transient_for (parent)
def prepare_block (self, block_size, info=None): Progress.prepare_block (self, block_size, info) if self.dialog == None: return
if info: self.info_label.set_markup ("<i>"+info+"</i>") self.progressbar.set_fraction (self.block_start)
while gtk.events_pending (): gtk.main_iteration() # Raise an exception if it gets set during the mainiteration if self.canceled: raise ProgressCanceled
def clear (self): Progress.clear (self) self.info_label.set_markup ("<i> </i>") while gtk.events_pending (): gtk.main_iteration() # Raise an exception if it gets set during the mainiteration if self.canceled: raise ProgressCanceled
def update (self, percent): fraction = self.fraction Progress.update (self, percent) if self.dialog == None: return
# Only update if it's changed a significant amount if int (self.fraction*100) == int (fraction*100): return self.progressbar.set_fraction (self.fraction)
while gtk.events_pending (): gtk.main_iteration() if self.canceled: raise ProgressCanceled
def destroy (self): if self.dialog == None: return
while gtk.events_pending (): gtk.main_iteration() self.dialog.destroy () self.dialog = None
def get_dialog (self): return self.dialog
# Simple usable Progress Dialog class SimpleProgressDialog (ProgressDialog): def __init__ (self, message, info, title, parent=None): glade_file = 'ProgressDialog.glade' if not os.path.isfile(glade_file): glade_file = GLADEDIR + glade_file xml = gtk.glade.XML (glade_file, domain=PROGNAME)
#Get the necessary widgets self.label = xml.get_widget ('progress_label') self.info_label = xml.get_widget ('progress_info_label') self.progressbar = xml.get_widget ('progress_progressbar') self.dialog = xml.get_widget ('progress_dialog')
ProgressDialog.__init__ (self, parent)
self.label.set_markup (message) self.info_label.set_markup ("<i>" + info + "</i>") self.dialog.set_title (title)
|