代码拉取完成,页面将自动刷新
同步操作将从 openKylin/aptdaemon 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
Provides a graphical demo application for aptdaemon
"""
# Copyright (C) 2008-2009 Sebastian Heinlein <sevel@glatzor.de>
#
# Licensed under the GNU General Public License Version 2
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
__author__ = "Sebastian Heinlein <devel@glatzor.de>"
from optparse import OptionParser
import logging
# uncomment to use GTK 2.0
#import gi
#gi.require_version('Gtk', '2.0')
#gi.require_version('Vte', '0.0')
from gi.repository import GLib, Gtk
import aptdaemon.client
from aptdaemon.enums import *
from aptdaemon.gtk3widgets import AptErrorDialog, \
AptConfirmDialog, \
AptProgressDialog
import aptdaemon.errors
class AptDaemonDemo(object):
"""Provides a graphical test application."""
def _run_transaction(self, transaction):
dia = AptProgressDialog(transaction, parent=self.win)
dia.run(close_on_finished=True, show_error=True,
reply_handler=lambda: True,
error_handler=self._on_error)
def _simulate_trans(self, trans):
trans.simulate(reply_handler=lambda: self._confirm_deps(trans),
error_handler=self._on_error)
def _confirm_deps(self, trans):
if [pkgs for pkgs in trans.dependencies if pkgs]:
dia = AptConfirmDialog(trans, parent=self.win)
res = dia.run()
dia.hide()
if res != Gtk.ResponseType.OK:
return
self._run_transaction(trans)
def _on_error(self, error):
if isinstance(error, aptdaemon.errors.NotAuthorizedError):
# Silently ignore auth failures
return
elif not isinstance(error, aptdaemon.errors.TransactionFailed):
# Catch internal errors of the client
error = aptdaemon.errors.TransactionFailed(ERROR_UNKNOWN,
str(error))
dia = AptErrorDialog(error)
dia.run()
dia.hide()
def _on_upgrade_clicked(self, *args):
self.ac.upgrade_system(safe_mode=False,
reply_handler=self._simulate_trans,
error_handler=self._on_error)
def _on_update_clicked(self, *args):
self.ac.update_cache(reply_handler=self._run_transaction,
error_handler=self._on_error)
def _on_install_clicked(self, *args):
self.ac.install_packages([self.package],
reply_handler=self._simulate_trans,
error_handler=self._on_error)
def _on_install_file_clicked(self, *args):
chooser = Gtk.FileChooserDialog(parent=self.win,
action=Gtk.FileChooserAction.OPEN,
buttons=(Gtk.STOCK_CANCEL,
Gtk.ResponseType.CANCEL,
Gtk.STOCK_OPEN,
Gtk.ResponseType.OK))
chooser.set_local_only(True)
chooser.run()
chooser.hide()
path = chooser.get_filename()
self.ac.install_file(path, reply_handler=self._simulate_trans,
error_handler=self._on_error)
def _on_remove_clicked(self, *args):
self.ac.remove_packages([self.package],
reply_handler=self._simulate_trans,
error_handler=self._on_error)
def __init__(self, package):
self.win = Gtk.Window()
self.package = package
self.win.set_resizable(False)
self.win.set_title("Aptdaemon Demo")
icon_theme = Gtk.IconTheme.get_default()
try:
Gtk.window_set_default_icon(icon_theme.load_icon("aptdaemon-setup",
32, 0))
except (GLib.GError, AttributeError):
pass
button_update = Gtk.Button.new_with_mnemonic("_Update")
button_install = Gtk.Button.new_with_mnemonic("_Install %s" % self.package)
button_install_file = Gtk.Button.new_with_mnemonic("Install _file...")
button_remove = Gtk.Button.new_with_mnemonic("_Remove %s" % self.package)
button_upgrade = Gtk.Button.new_with_mnemonic("Upgrade _System")
button_update.connect("clicked", self._on_update_clicked)
button_install.connect("clicked", self._on_install_clicked)
button_install_file.connect("clicked", self._on_install_file_clicked)
button_remove.connect("clicked", self._on_remove_clicked)
button_upgrade.connect("clicked", self._on_upgrade_clicked)
vbox = Gtk.VBox()
vbox.add(button_update)
vbox.add(button_install)
vbox.add(button_install_file)
vbox.add(button_remove)
vbox.add(button_upgrade)
self.win.add(vbox)
self.loop = GLib.MainLoop()
self.win.connect("delete-event", lambda w, e: self.loop.quit())
self.win.show_all()
self.ac = aptdaemon.client.AptClient()
def run(self):
self.loop.run()
def main():
parser = OptionParser()
parser.add_option("-p", "--package", default="cw", action="store",
dest="package",
help="Use this package for installation and removal")
parser.add_option("-d", "--debug", default=False, action="store_true",
help="Verbose debugging")
options, args = parser.parse_args()
if options.debug:
logging.basicConfig(level=logging.DEBUG)
demo = AptDaemonDemo(options.package)
demo.run()
if __name__ == "__main__":
main()
# vim:ts=4:sw=4:et
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。