mambabase/mambabase.py
2014-11-04 21:41:15 +01:00

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_())