class UpdateManager(gtk.Window): time_count = 1 def __init__(self, parent = None): gtk.Window.__init__(self) self.__settings = TweakSettings() self.set_modal(True) self.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG) self.set_size_request(360, 40) self.set_title(_('Update Manager')) self.connect('destroy', lambda *w: self.destroy()) if parent: self.set_transient_for(parent) self.progress_bar = gtk.ProgressBar() self.add(self.progress_bar) self.downloader = Downloader() self.downloader.connect('downloading', self.on_downloading) self.show_all() self.start_download(self.__settings.get_url()) def on_downloading(self, widget): percentage = self.downloader.percentage if percentage < 1: self.progress_bar.set_text(_('Downloading...%d') % int(percentage * 100)+ '%') self.progress_bar.set_fraction(percentage) return True else: gobject.timeout_add(1000, self.on_start_install) def on_start_install(self): thread.start_new_thread(self.start_install, ()) def start_install(self): gtk.gdk.threads_enter() os.system('gdebi-gtk %s &' % self.downloader.save_to) gtk.main_quit() gtk.gdk.threads_leave() def start_download(self, url): thread.start_new_thread(self.download_thread, (url,)) def download_thread(self, url): self.downloader.start(url) def check_percentage(self): percentage = self.downloader.percentage if percentage < 1: self.progress_bar.set_text(_("Downloading...%d") % int(percentage * 100)+ '%') self.progress_bar.set_fraction(percentage) return True else: self.progress_bar.set_text(_("Finished")) self.progress_bar.set_fraction(1) gobject.timeout_add(1000, self.on_start_install) def main(self): gtk.gdk.threads_enter() gtk.main() gtk.gdk.threads_leave()