summaryrefslogtreecommitdiffstats
path: root/DesktopEffects/DesktopEffectsCommon.py
diff options
context:
space:
mode:
Diffstat (limited to 'DesktopEffects/DesktopEffectsCommon.py')
-rw-r--r--DesktopEffects/DesktopEffectsCommon.py230
1 files changed, 230 insertions, 0 deletions
diff --git a/DesktopEffects/DesktopEffectsCommon.py b/DesktopEffects/DesktopEffectsCommon.py
new file mode 100644
index 0000000..2212b02
--- /dev/null
+++ b/DesktopEffects/DesktopEffectsCommon.py
@@ -0,0 +1,230 @@
+# -*- 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 <http://www.gnu.org/licenses/>.
+#
+# Copyright 2007-2008 Martin Böhm <martin.bohm@kubuntu.org>
+# Copyright 2007-2008 Michael Anderson <nosrednaekim@gmail.com>
+
+# a class hosting the desktop-independent methods for the Desktop
+# Effects Dialog
+
+import sys
+import os
+from optparse import OptionParser
+
+# for adept batch launching
+import subprocess
+# for compiz-kde package checking
+import apt_pkg
+from apt.progress import OpProgress
+
+import gettext
+def _(str):
+ return unicode(gettext.gettext(str), 'UTF-8')
+def __(catalog,str):
+ return unicode(gettext.dgettext(catalog, str), 'UTF-8')
+def utf8(str):
+ if isinstance(str, unicode):
+ return str
+ return unicode(str, 'UTF-8')
+
+class DesktopEffectsCommon(object):
+ def __init__(self):
+ self.action = 0
+ self.ibText = ""
+ self.check()
+ self.DATADIR = "/opt/kde3/share/apps/desktop-effects-kde/"
+
+ def checkInstalled(self):
+ progress = OpProgress()
+ cache = apt_pkg.GetCache(progress)
+ for pkg in cache.Packages:
+ if pkg.Name == "compiz-kde-kde3":
+ if pkg.CurrentVer is not None:
+ return True
+ # otherwise
+ return False
+
+ def checkEnabled(self):
+ '''checks if the compizasWM file is present, and if so, reads what mode we are in'''
+ if os.path.exists(os.path.expanduser("~/.kde3/share/config/compizasWM")):
+ compizasWM = open(os.path.expanduser("~/.kde3/share/config/compizasWM"))
+ state = compizasWM.readline()
+ return state
+ else:
+ return False
+
+ def check(self):
+ ''' checks the state and changes the UI accordingly. '''
+ self.installed = self.checkInstalled()
+ self.enabled = self.checkEnabled()
+ if(self.installed == True):
+ self.ibText = _("&Remove Desktop Effects")
+ self.showWarning()
+ self.enable()
+ self.pText = _("The Compiz engine is installed in your system.")
+ # remove, not install
+ self.rm = True
+ else:
+ self.pText = _("In order for Compiz Desktop Effects to work,"
+ " the Compiz engine must be installed on your system.")
+ self.ibText = _("&Install Desktop Effects")
+ self.hideWarning()
+ self.disable()
+ # install, not remove
+ self.rm = False
+ #self.effectsBox.setDisabled(True)
+
+ def showWarning(self):
+ ''' shows the warning information, should be implemented in the UI class '''
+ raise NotImplementedError
+
+ def hideWarning(self):
+ ''' hides the warning, should be implemented in the UI class '''
+ raise NotImplementedError
+
+ def disable(self):
+ ''' disables the options, should be implemented in the UI '''
+ raise NotImplementedError
+
+ def enable(self):
+ ''' enables the options, should be implemented in the UI '''
+ raise NotImplementedError
+
+ def done(self):
+ ''' action to be done after the user clicks the "cancel" button '''
+ print "signalled" # DEBUG
+ self.close()
+
+ def apply(self):
+ ''' action to be done after the user clicks the "apply button '''
+ print "apply clicked" #DEBUG
+ if self.action > 0:
+ if self.action == 1:
+ self.disableEffects()
+
+ elif self.action == 2:
+ self.enableStandardEffects()
+ elif self.action == 3:
+ self.enableExtraEffects()
+ elif self.action == 4:
+ self.enableCustomEffects()
+ if not self.enabled and not self.action == 1:
+ os.spawnl(os.P_NOWAIT, "/opt/kde3/bin/compiz", "--replace")
+ self.enabled = True
+
+ def btnInstallClicked(self):
+ if self.installed == True:
+ self.remove()
+ return
+ try:
+ ''' Installs the Compiz package. Not very nice as it is distribution dependent. '''
+ subprocess.call(['kdesudo', '-c' '/opt/kde3/bin/adept_batch install compiz-kde-kde3 compiz-fusion-plugins-main-kde3 compiz-fusion-plugins-extra-kde3'])
+ except:
+ subprocess.call(['kdialog', '--sorry', 'Adept Batch is not installed on this system'])
+ self.check()
+
+
+ # the functions toggled by radio boxes
+ def noEffects(self):
+ print "radio toggled" # DEBUG
+ self.action = 1
+# self.apply()
+ def standardEffects(self):
+ print "radio toggled" # DEBUG
+ self.action = 2
+# self.apply()
+ def extraEffects(self):
+ print "radio toggled" # DEBUG
+ self.action = 3
+ def customEffects(self):
+ print "radio toggled" # DEBUG
+ self.action = 4
+# self.apply()
+
+ def remove(self):
+ removeAnswer = subprocess.call(['kdialog', "--warningyesno", "Are you sure you wish to remove Compiz KDE?"])
+ if removeAnswer == 0:
+ try:
+ ''' Remove the Compiz package. Not very nice as it is distribution dependent. '''
+ subprocess.call(['kdesudo', '-c' '/opt/kde3/bin/adept_batch remove compiz-kde-kde3 compiz-fusion-plugins-main-kde3 compiz-fusion-plugins-extra-kde3'])
+ except:
+ subprocess.call(['kdialog', '--sorry', 'Adept Batch is not installed on this system'])
+
+
+ def disableEffects(self):
+ '''remove compiz as the default WM'''
+ os.remove(os.path.expanduser("~/.kde3/share/config/compizasWM"))
+ self.enabled = False
+
+
+ def enableStandardEffects(self):
+ '''copy the .ini to Default.ini and enable compiz as default WM'''
+ code = os.system('mkdir -p ~/.config/compiz/compizconfig')
+ try:
+ enable = open(os.path.expanduser("~/.kde3/share/config/compizasWM"),"w")
+ if enable.readline() == "custom":
+ customeffects = open(os.path.expanduser("~/.config/compiz/compizconfig/Default.ini"),"r")
+ backupfile = open(os.path.expanduser("~/.config/compiz/compizconfig/Custom.ini"),"w")
+ backupfile.write(customeffects)
+ backupfile.close()
+ customeffects.close()
+ except:
+ print "error"
+ enable.write("standardeffects")
+ enable.close()
+ config = open(os.path.join(self.DATADIR,"MediumEffects.ini"),"r")
+ dest = open(os.path.expanduser("~/.config/compiz/compizconfig/Default.ini"),"w")
+ dest.write(config.read())
+ dest.close()
+ config.close()
+ print "standardEffects enabled" #DEBUG
+
+ def enableExtraEffects(self):
+ ''' copy the extraeffects.ini to Default.ini and enable compiz as defaultWM'''
+ code = os.system('mkdir -p ~/.config/compiz/compizconfig')
+ if os.path.exists(os.path.expanduser("~/.kde3/share/config/compizasWM")):
+ enable = open(os.path.expanduser("~/.kde3/share/config/compizasWM"),"r")
+ if enable.readline() == "custom":
+ customeffects = open(os.path.expanduser("~/.config/compiz/compizconfig/Default.ini"),"r")
+ backupfile = open(os.path.expanduser("~/.config/compiz/compizconfig/Custom.ini"),"w")
+ backupfile.write(customeffects)
+ backupfile.close()
+ customeffects.close()
+ enable.close()
+
+ enable = open(os.path.expanduser("~/.kde3/share/config/compizasWM"),"w")
+ enable.write("extraeffects")
+ enable.close()
+ config = open(os.path.join(self.DATADIR,"HighEffects.ini"),"r")
+ dest = open(os.path.expanduser("~/.config/compiz/compizconfig/Default.ini"),"w")
+ dest.write(config.read())
+ dest.close()
+ config.close()
+ print "extraEffects enabled" #DEBUG
+
+ def enableCustomEffects(self):
+ code = os.system('mkdir -p ~/.config/compiz/compizconfig')
+ try:
+ config = open(os.path.expanduser("~/.config/compiz/compizconfig/Custom.ini"),"r")
+ except:
+ print "no custom effects file, creating blank .ini" #DEBUG
+ config = open(os.path.join(self.DATADIR,"BlankEffects.ini"),"r")
+ enable = open(os.path.expanduser("~/.kde3/share/config/compizasWM"),"w")
+ enable.write("custom")
+ enable.close()
+ dest = open(os.path.expanduser("~/.config/compiz/compizconfig/Default.ini"),"w")
+ dest.write(config.read())
+ dest.close()
+ config.close()