101 lines
5.2 KiB
Python
Executable File
101 lines
5.2 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
from PyQt4 import QtCore
|
|
from PyQt4 import QtGui
|
|
from PyQt4.QtCore import pyqtProperty
|
|
from gi.repository import PackageKitGlib as packagekit
|
|
|
|
from mambabase_ui import *
|
|
import subprocess
|
|
|
|
PackageGroups = [ \
|
|
{ 'name':'inst_base', 'group': 'BASE', 'description': 'System base packages (recommended)'}, \
|
|
{ 'name':'inst_office', 'group': 'OFFICE', 'description': 'Office packages (OpenOffice, Groupware, PDA Syncronization, ...)'}, \
|
|
{ 'name':'inst_players', 'group': 'MULTIMEDIA_PLAYERS', 'description': 'Audio and Video players (amarok, xmms, vlc, kaffeine, miro, ...)'}, \
|
|
{ 'name':'inst_multimedia_editing', 'group': 'MULTIMEDIA_EDITING', 'description': 'Multimedia editing and production (kino, audacity, rosegarden, mixxx, ...)'}, \
|
|
{ 'name':'inst_internet', 'group': 'INTERNET', 'description': 'Internet communication and p2p (kopete, pidgin, ekiga, aMule, ...)'}, \
|
|
{ 'name':'inst_graphics', 'group': 'GRAPHICS', 'description': 'Graphics software (gimp, digikam, blender, sodipodi, ...)'}, \
|
|
{ 'name':'inst_games', 'group': 'GAMES', 'description': 'Games (turacer, pingus, ksudoku, ...)'}, \
|
|
{ 'name':'inst_virtualization', 'group': 'VIRTUALIZATION', 'description': 'Emulation and virtuali&zation (VirtualBox, kvm, QtEmu, wine, ...)'}, \
|
|
{ 'name':'inst_server', 'group': 'SERVER', 'description': 'Base server packages (apache, postfix, vsftpd, php, mysql, ...)'}, \
|
|
{ 'name':'inst_devel', 'group': 'DEVEL', 'description': 'Base development packages (gcc, glibc-devel, kernel sources, ...)'}, \
|
|
]
|
|
|
|
ProprietaryPackages = [ \
|
|
{ 'name':'inst_nvidia', 'pkg': 'xorg-drv-video-nvidia', 'description': 'NVIDIA proprietary video driver from openmamba.org'}, \
|
|
{ 'name':'inst_nvidia_legacy', 'pkg': 'xorg-drv-video-nvidia_304', 'description': 'NVIDIA proprietary video driver (legacy) from openmamba.org'}, \
|
|
{ 'name':'inst_fglrx', 'pkg': 'xorg-drv-video-fglrx', 'description': 'AMD/ATI proprietary video driver from openmamba.org'}, \
|
|
{ 'name':'inst_fglrx_legacy', 'pkg': 'xorg-drv-video-fglrx-legacy', 'description': 'AMD/ATI proprietary video driver (legacy) from openmamba.org'}, \
|
|
{ 'name':'inst_broadcom_sta', 'pkg': 'broadcom-sta', 'description': 'Broadcom-sta proprietary wireless driver from openmamba.org'}, \
|
|
{ 'name':'inst_b43', 'pkg': 'b43-firmware', 'description': 'Broadcom B43 proprietary firmware from openwrt.org'}, \
|
|
{ 'name':'inst_flash', 'pkg': 'flashplugin', 'description': 'Flash plugin from adobe.com'}, \
|
|
{ 'name':'inst_msttcf', 'pkg': 'msttcorefonts', 'description': 'MS TrueType core fonts from sourceforge'}, \
|
|
{ 'name':'inst_codecs', 'pkg': 'win32codecs', 'description': 'Win32 codecs from mplayerhq.hu'}, \
|
|
{ 'name':'inst_java', 'pkg': 'sun-java7', 'description': 'Oracle Java 7 from oracle.com'}, \
|
|
{ 'name':'inst_skype', 'pkg': 'skype', 'description': 'Skype from skype.com'}, \
|
|
{ 'name':'inst_spotify', 'pkg': 'spotify', 'description': 'Spotify from spotify.com'}, \
|
|
{ 'name':'inst_virtualbox', 'pkg': 'virtualbox-extension-pack', 'description': 'Virtualbox extension pack from virtualbox.org'}, \
|
|
]
|
|
|
|
def progress_cb(status, typ, data=None):
|
|
if status.get_property('package'):
|
|
print "Pachet ", status.get_property('package'), status.get_property('package-id')
|
|
if status.get_property('package'):
|
|
print status.get_property('package').get_name()
|
|
# print typ, status.get_property('package')
|
|
|
|
class MyWizard(QtGui.QWizard):
|
|
def __init__(self, parent=None):
|
|
QtGui.QWizard.__init__(self, parent)
|
|
|
|
def resolve_group(group):
|
|
p = subprocess.check_output("/bin/bash -c \"source /usr/share/openmamba/pkggroups.db;echo \$"+group+"_PKGS\"",\
|
|
shell=True, stderr=subprocess.PIPE)
|
|
return p
|
|
|
|
if __name__ == "__main__":
|
|
import sys
|
|
app = QtGui.QApplication(sys.argv)
|
|
Wizard = MyWizard()
|
|
ui = Ui_Wizard()
|
|
ui.setupUi(Wizard)
|
|
|
|
Wizard.show()
|
|
|
|
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.WaitCursor))
|
|
Wizard.button(QtGui.QWizard.NextButton).setEnabled(0)
|
|
pkclient = packagekit.Client()
|
|
for p in PackageGroups:
|
|
app.processEvents()
|
|
item_0 = QtGui.QTreeWidgetItem(ui.treeWidget)
|
|
item_0.setText(0, p['description'])
|
|
item_0.setCheckState(0, QtCore.Qt.Unchecked)
|
|
gpkgs = resolve_group(p['group'])
|
|
for d in gpkgs.split(" "):
|
|
print d
|
|
item_1 = QtGui.QTreeWidgetItem(item_0)
|
|
item_1.setText(0, d)
|
|
result = pkclient.resolve(packagekit.FilterEnum.INSTALLED, d, None, progress_cb, None)
|
|
pkgs = result.get_package_array()
|
|
if len(pkgs) > 0:
|
|
item_1.setCheckState(0, QtCore.Qt.Checked)
|
|
else:
|
|
item_1.setCheckState(0, QtCore.Qt.Unchecked)
|
|
|
|
for p in ProprietaryPackages:
|
|
app.processEvents()
|
|
item_0 = QtGui.QTreeWidgetItem(ui.treeWidget_2)
|
|
item_0.setText(0, p['description'])
|
|
result = pkclient.resolve(packagekit.FilterEnum.INSTALLED, [p['pkg'],], None, progress_cb, None)
|
|
pkgs = result.get_package_array()
|
|
if len(pkgs) > 0:
|
|
item_0.setCheckState(0, QtCore.Qt.Checked)
|
|
item_0.setDisabled(1)
|
|
else:
|
|
item_0.setCheckState(0, QtCore.Qt.Unchecked)
|
|
QtGui.QApplication.restoreOverrideCursor()
|
|
Wizard.button(QtGui.QWizard.NextButton).setEnabled(1)
|
|
|
|
sys.exit(app.exec_())
|
|
|