def on_apply_button_clicked(self, widget, data=None): @log_func(log) def on_install_finished(transaction, status, kwargs): to_add, to_rm = kwargs['add_and_rm'] if to_rm: worker = AptWorker( self.get_toplevel(), finish_handler=self.on_package_work_finished, data=kwargs) worker.remove_packages(to_rm) else: self.on_package_work_finished(None, None, kwargs) to_rm = self.appview.to_rm to_add = self.appview.to_add log.debug("on_apply_button_clicked: to_rm: %s, to_add: %s" % (to_rm, to_add)) if to_add or to_rm: set_busy(self) if to_add: worker = AptWorker(self.get_toplevel(), finish_handler=on_install_finished, data={ 'add_and_rm': (to_add, to_rm), 'parent': self }) worker.install_packages(to_add) else: on_install_finished(None, None, { 'add_and_rm': (to_add, to_rm), 'parent': self })
def clean_cruft(self, parent=None, cruft_list=[]): set_busy(parent) worker = AptWorker(parent, finish_handler=self.on_clean_finished, error_handler=self.on_error, data=parent) worker.remove_packages([cruft.get_package_name() for cruft in cruft_list])
def on_apply_button_clicked(self, widget, data=None): @log_func(log) def on_install_finished(transaction, status, kwargs): to_add, to_rm = kwargs['add_and_rm'] if to_rm: worker = AptWorker(self.get_toplevel(), finish_handler=self.on_package_work_finished, data=kwargs) worker.remove_packages(to_rm) else: self.on_package_work_finished(None, None, kwargs) to_rm = self.appview.to_rm to_add = self.appview.to_add log.debug("on_apply_button_clicked: to_rm: %s, to_add: %s" % (to_rm, to_add)) if to_add or to_rm: set_busy(self) if to_add: worker = AptWorker(self.get_toplevel(), finish_handler=on_install_finished, data={'add_and_rm': (to_add, to_rm), 'parent': self}) worker.install_packages(to_add) else: on_install_finished(None, None, {'add_and_rm': (to_add, to_rm), 'parent': self})
def clean_cruft(self, parent, cruft_list): set_busy(parent) dialog = CleanConfigDialog(parent, [cruft.get_name() for cruft in cruft_list]) dialog.run() dialog.destroy() self.emit('cleaned', True) unset_busy(parent)
def on_purge_ppa_button_clicked(self, widget): # name_list is to display the name of PPA # url_list is to identify the ppa set_busy(self) name_list = [] url_list = [] log.debug("self.sourceview.to_purge: %s" % self.sourceview.to_purge) for url in self.sourceview.to_purge: name_list.append(ppa.get_short_name(url)) url_list.append(url) log.debug("PPAs to purge: url_list: %s" % url_list) package_view = DowngradeView(self) package_view.update_downgrade_model(url_list) sw = Gtk.ScrolledWindow(shadow_type=Gtk.ShadowType.IN) sw.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC) select_pkgs = package_view.get_downgrade_packages() sw.add(package_view) #TODO the logic is a little ugly, need to improve the BaseMessageDialog if not select_pkgs: message = _( "It's safe to purge the PPA, no packages need to be downgraded." ) sw.hide() else: message = _( "To safely purge the PPA, the following packages must be downgraded." ) sw.show_all() sw.set_size_request(500, 100) dialog = QuestionDialog(title=_("You're going to purge \"%s\":") % ', '.join(name_list), message=message) dialog.set_resizable(True) dialog.get_content_area().pack_start(sw, True, True, 0) dialog.show_all() response = dialog.run() dialog.destroy() # Workflow # 1. Downgrade all the PPA packages to offical packages #TODO Maybe not official? Because anther ppa which is enabled may have newer packages then offical # 2. If succeed, disable PPA, or keep it if response == Gtk.ResponseType.YES: log.debug("The select pkgs is: %s", str(select_pkgs)) worker = AptWorker(widget.get_toplevel(), finish_handler=self.on_package_work_finished, data={ 'parent': self, 'url_list': url_list }) worker.downgrade_packages(select_pkgs) else: unset_busy(self)
def on_button_clicked(self, widget): set_busy(widget.get_toplevel()) try: yield self._action.do_authenticate() except Exception, e: import logging logging.getLogger('PolkitButton').debug(e) unset_busy(widget.get_toplevel()) return
def clean_cruft(self, parent, cruft_list): set_busy(parent) # name_list is to display the name of PPA # url_list is to identify the ppa name_list = [] url_list = [] for cruft in cruft_list: name_list.append(ppa.get_short_name(cruft.get_uri())) url_list.append(cruft.get_uri()) package_view = DowngradeView(self) package_view.update_model(url_list) sw = Gtk.ScrolledWindow(shadow_type=Gtk.ShadowType.IN) sw.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC) select_pkgs = package_view.get_downgrade_packages() sw.add(package_view) #TODO the logic is a little ugly, need to improve the BaseMessageDialog if not select_pkgs: message = _("It's safe to purge the PPA, no packages need to be downgraded.") sw.hide() else: message = _("To safely purge the PPA, the following packages must be downgraded.") sw.show_all() sw.set_size_request(500, 100) dialog = QuestionDialog(message=message, title=_("You're going to purge: %s") % ', '.join(name_list)) dialog.set_resizable(True) dialog.get_content_area().pack_start(sw, True, True, 0) dialog.show() response = dialog.run() dialog.destroy() # Workflow # 1. Downgrade all the PPA packages to offical packages #TODO Maybe not official? Because anther ppa which is enabled may have newer packages then offical # 2. If succeed, disable PPA, or keep it if response == Gtk.ResponseType.YES: log.debug("The select pkgs is: %s", str(select_pkgs)) dialog = CleanPpaDialog(parent, select_pkgs, url_list) dialog.run() dialog.destroy() if dialog.error: log.error("Error: %s" % dialog.error) ErrorDialog(dialog.error).launch() # TODO refresh source? self.emit('cleaned', True) unset_busy(parent)
def on_purge_ppa_button_clicked(self, widget): # name_list is to display the name of PPA # url_list is to identify the ppa set_busy(self) name_list = [] url_list = [] log.debug("self.sourceview.to_purge: %s" % self.sourceview.to_purge) for url in self.sourceview.to_purge: name_list.append(ppa.get_short_name(url)) url_list.append(url) log.debug("PPAs to purge: url_list: %s" % url_list) package_view = DowngradeView(self) package_view.update_downgrade_model(url_list) sw = Gtk.ScrolledWindow(shadow_type=Gtk.ShadowType.IN) sw.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC) select_pkgs = package_view.get_downgrade_packages() sw.add(package_view) #TODO the logic is a little ugly, need to improve the BaseMessageDialog if not select_pkgs: message = _("It's safe to purge the PPA, no packages need to be downgraded.") sw.hide() else: message = _("To safely purge the PPA, the following packages must be downgraded.") sw.show_all() sw.set_size_request(500, 100) dialog = QuestionDialog(title=_("You're going to purge \"%s\":") % ', '.join(name_list), message=message) dialog.set_resizable(True) dialog.get_content_area().pack_start(sw, True, True, 0) dialog.show_all() response = dialog.run() dialog.destroy() # Workflow # 1. Downgrade all the PPA packages to offical packages #TODO Maybe not official? Because anther ppa which is enabled may have newer packages then offical # 2. If succeed, disable PPA, or keep it if response == Gtk.ResponseType.YES: log.debug("The select pkgs is: %s", str(select_pkgs)) worker = AptWorker(widget.get_toplevel(), finish_handler=self.on_package_work_finished, data={'parent': self, 'url_list': url_list}) worker.downgrade_packages(select_pkgs) else: unset_busy(self)
def on_update_button_clicked(self, widget): @log_func(log) def on_update_finished(transaction, status, parent): log.debug("on_update_finished") unset_busy(parent) set_busy(self) daemon = AptWorker(widget.get_toplevel(), finish_handler=on_update_finished, data=self) daemon.update_cache() self.emit('call', 'ubuntutweak.modules.appcenter', 'update_app_data', {}) self.emit('call', 'ubuntutweak.modules.updatemanager', 'update_list', {})
def do_action_for_app(self, pkgname, action_id, *args): action_id = int(action_id) if action_id == self.INSTALL_ACTION: set_busy(self) worker = AptWorker(self.get_toplevel(), finish_handler=self.on_package_work_finished, data={'parent': self}) worker.install_packages([pkgname]) self.update_action_button(self.INSTALLING_ACTION) elif action_id == self.UNINSTALL_ACTION: set_busy(self) worker = AptWorker(self.get_toplevel(), finish_handler=self.on_package_work_finished, data={'parent': self}) worker.remove_packages([pkgname]) self.update_action_button(self.UNINSTALLING_ACTION) elif action_id == self.UPDATE_ACTION: set_busy(self) worker = AptWorker(self.get_toplevel(), finish_handler=self.on_update_work_finished, data={'parent': self}) worker.update_cache() self.update_action_button(self.UPDATING_ACTION)
def clean_cruft(self, parent, cruft_list): set_busy(parent) worker = AptWorker(parent, self.on_clean_finished, parent) worker.remove_packages([cruft.get_package_name() for cruft in cruft_list])
def set_busy(self): set_busy(self.parent_window)