# -*- 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 # 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/trinity/share/apps/desktop-effects-tde/" def checkInstalled(self): progress = OpProgress() cache = apt_pkg.GetCache(progress) for pkg in cache.Packages: if pkg.Name == "compiz-kde-trinity": 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("~/.trinity/share/config/compizasWM")): compizasWM = open(os.path.expanduser("~/.trinity/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/trinity/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(['tdesudo', '-c' '/opt/trinity/bin/adept_batch install compiz-kde-trinity compiz-fusion-plugins-main-trinity compiz-fusion-plugins-extra-trinity']) 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(['tdesudo', '-c' '/opt/trinity/bin/adept_batch remove compiz-kde-trinity compiz-fusion-plugins-main-trinity compiz-fusion-plugins-extra-trinity']) 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("~/.trinity/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("~/.trinity/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("~/.trinity/share/config/compizasWM")): enable = open(os.path.expanduser("~/.trinity/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("~/.trinity/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("~/.trinity/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()