Пример #1
0
    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)
Пример #2
0
    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
                })
Пример #3
0
 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])
Пример #4
0
    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)
Пример #5
0
 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)
Пример #6
0
 def on_update_work_finished(self, transaction, status, kwargs):
     parent = kwargs['parent']
     proxy.update_apt_cache(True)
     if proxy.is_package_upgradable(self.current_app) or \
        (not proxy.is_package_installed(self.current_app) and \
         proxy.is_package_avaiable(self.current_app)):
         worker = AptWorker(self.get_toplevel(),
                            finish_handler=self.on_package_work_finished,
                            data={'parent': self})
         worker.install_packages([self.current_app])
     else:
         unset_busy(parent)
         self.reset_install_button()
Пример #7
0
    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',
                  {})
Пример #8
0
 def on_update_button_clicked(self, widget):
     self.set_busy()
     daemon = AptWorker(widget.get_toplevel(),
                        lambda t, s, d: self.unset_busy())
     daemon.update_cache()