#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# 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, see .
#
# Copyright 2007-2008 Martin Böhm
# Copyright 2007-2008 Michael Anderson
import sys
import os
from optparse import OptionParser
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QtSvg import *
from DesktopEffectsQt4Dialog import Ui_Dialog
from DesktopEffectsCommon import DesktopEffectsCommon
import gettext
def _(str):
''' the traditional gettext function '''
return unicode(gettext.gettext(str), 'UTF-8')
def __(catalog,str):
''' selects a different catalog for the str translation;
useful when you want to use the standard KDE labels. '''
return unicode(gettext.dgettext(catalog, str), 'UTF-8')
def utf8(str):
if isinstance(str, unicode):
return str
return unicode(str, 'UTF-8')
class DesktopEffectsKDE4(DesktopEffectsCommon):
def __init__(self):
'''launches the app, draws the window '''
# needed for all Qt actions
app = QApplication (sys.argv)
# Qt4 explanations:
# self.qd is the link to the main QDialog (what you can see)
# self.ui is its UI (the UI defined in Qt-Designer
self.qd = QDialog()
self.ui = Ui_Dialog()
self.ui.setupUi(self.qd)
localesApp="desktop-effects-kde"
localesDir="/opt/kde3/share/locale"
gettext.bindtextdomain(localesApp, localesDir)
gettext.textdomain(localesApp)
# the Common class triggers some UI text settings, so we need to
# init the UI first
DesktopEffectsCommon.__init__(self)
self.radioGroup = QButtonGroup(self.qd)
self.radioGroup.setExclusive(True)
self.radioGroup.addButton(self.ui.noEffectsButton)
self.radioGroup.addButton(self.ui.stdEffectsButton)
self.radioGroup.addButton(self.ui.extraEffectsButton)
self.radioGroup.addButton(self.ui.customEffectsButton)
# connect signals and slots -- we have to do it ourselves in Qt4
QObject.connect(self.ui.installButton, SIGNAL("clicked()"), self.btnInstallClicked)
QObject.connect(self.ui.done, SIGNAL("clicked()"), self.done)
QObject.connect(self.ui.apply, SIGNAL("clicked()"), self.apply)
# connect radio buttons - methods provided by the Common class
QObject.connect(self.ui.noEffectsButton, SIGNAL("clicked()"), self.noEffects)
QObject.connect(self.ui.stdEffectsButton, SIGNAL("clicked()"), self.standardEffects)
QObject.connect(self.ui.extraEffectsButton, SIGNAL("clicked()"), self.extraEffects)
QObject.connect(self.ui.customEffectsButton, SIGNAL("clicked()"), self.customEffects)
self.ui.installButton.setText(_("Install"))
self.ui.warningText.setText(_("Desktop Effects are a great way to enjoy a modern desktop experience without transitioning to KDE4"))
self.ui.groupBox.setTitle(_("Effects Level"))
self.ui.noEffectsButton.setText(_("No Effects"))
self.ui.label_6.setText(_("All effects are disabled and KDE Window manager is used. This is the default behaviour."))
self.ui.stdEffectsButton.setText(_("Standard Effects"))
self.ui.label_12.setText(_("Some simple effects."))
self.ui.extraEffectsButton.setText(_("Extra Effects"))
self.ui.label_14.setText(_("You\'ll need sunglasses"))
self.ui.customEffectsButton.setText(_("Custom Effects"))
self.ui.label_16.setText(_("Use custom settings from another settings manager. Switching from this option to another will back up any custom settings"))
self.ui.apply.setText(_("Apply"))
self.ui.done.setText(_("Done"))
self.qd.show()
sys.exit(self.qd.exec_())
def check(self):
''' overrides the DesktopEffectsCommon.check() method, does some painting '''
DesktopEffectsCommon.check(self)
self.ui.packageText.setText(self.pText)
self.ui.installButton.setText(self.ibText)
if os.path.exists(os.path.expanduser("~/.kde3/share/config/compizasWM")):
compizasWM = open(os.path.expanduser("~/.kde3/share/config/compizasWM"))
state = compizasWM.readline()
if state == "standardeffects":
self.action = 2
self.ui.stdEffectsButton.toggle()
elif state == "extraeffects":
self.action = 3
self.ui.extraEffectsButton.toggle()
elif state == "custom":
self.action = 4
self.ui.customEffectsButton.toggle()
else:
self.action = 1
self.ui.noEffectsButton.toggle()
def apply(self):
DesktopEffectsCommon.apply(self)
if self.action == 1:
print "hi"
os.popen("kwin --replace &")
def showWarning(self):
''' shows the warning box if the package is installed '''
self.ui.warningText.show()
self.ui.warningIcon.show()
def hideWarning(self):
''' hides the warning because the package is not yet there '''
self.ui.warningText.hide()
self.ui.warningIcon.hide()
def enable(self):
''' enables the radio boxes, compiz is installed '''
self.ui.groupBox.setDisabled(False)
def disable(self):
''' disables the group box, you have to install compiz first '''
self.ui.groupBox.setDisabled(True)
def close(self):
''' triggers the QDialog to close '''
self.qd.close()