diff options
author | Izhar Firdaus <kagesenshi.87@gmail.com> | 2008-12-26 03:40:04 +0800 |
---|---|---|
committer | Izhar Firdaus <kagesenshi.87@gmail.com> | 2008-12-26 03:40:04 +0800 |
commit | d52056e943cead3d2e59022420191eff4b128300 (patch) | |
tree | ed17460a5618cb13f8cdbc1788291d0d584f98af /fusion-desktop-effects.in | |
download | fusion-desktop-effects-d52056e943cead3d2e59022420191eff4b128300.tar.gz fusion-desktop-effects-d52056e943cead3d2e59022420191eff4b128300.tar.xz fusion-desktop-effects-d52056e943cead3d2e59022420191eff4b128300.zip |
- initial import
Diffstat (limited to 'fusion-desktop-effects.in')
-rwxr-xr-x | fusion-desktop-effects.in | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/fusion-desktop-effects.in b/fusion-desktop-effects.in new file mode 100755 index 0000000..4a31d56 --- /dev/null +++ b/fusion-desktop-effects.in @@ -0,0 +1,145 @@ +#!/usr/bin/env python + +import gtk +import sys +import gobject +import gettext +import subprocess +import time +import gconf +_ = gettext.gettext + +gettext.bindtextdomain("fusion-desktop-effects", "@prefix@/share/locale") +gettext.textdomain("fusion-desktop-effects") +COMPIZ_LAUNCHER = "compiz-manager" +COMPIZ_WM = "compiz-fusion-gtk" +WM_KEY = "/desktop/gnome/session/required_components/windowmanager" +BANNER = "@datadir@/cf_logo.png" + +def enable_compiz(): + gc = gconf.client_get_default() + gc.set_string(WM_KEY,COMPIZ_WM) + +def compiz_enabled(): + gc = gconf.client_get_default() + return gc.get_string(WM_KEY) == COMPIZ_WM + +def enable_metacity(): + subprocess.Popen(["metacity","--replace"]) + gc = gconf.client_get_default() + gc.set_string(WM_KEY,"metacity") + + +class MainWindow: + def __init__(self): + self.window = gtk.Dialog() + self.window.set_title(_("Compiz Fusion")) + self.togglebutton = gtk.ToggleButton(_("Enable Compiz Fusion Desktop Effects")) + self.window.set_resizable(False) + if compiz_enabled(): + self.togglebutton.set_active(True) + self.togglebutton.connect('toggled',self.on_toggle) + + + heading = gtk.Label(_("<b>Desktop Effects</b>")) + heading.set_use_markup(True) + heading.set_alignment(0,0) + hbox = gtk.HBox(homogeneous=False,spacing=0) + self.window.vbox.pack_start(hbox,padding=10) + vbox = gtk.VBox(homogeneous=False,spacing=0) + + img = gtk.Image() + img.set_from_file(BANNER) + + vbox.pack_start(img) + hbox.pack_start(vbox,padding=10) + vbox.pack_start(heading) + vbox.pack_start(self.togglebutton) + + closebutton = self.window.add_button(gtk.STOCK_CLOSE,0) + closebutton.connect('clicked',self.destroy) + self.window.show_all() + + self.window.connect('destroy',self.destroy) + + def destroy(self,widget): + sys.exit(0) + + def on_toggle(self,widget): + if widget.get_active(): + process = subprocess.Popen([COMPIZ_LAUNCHER]) + procpoll = None + for i in range(0,5): + time.sleep(1) + procpoll = process.poll() + if not procpoll: + td = TimeoutDialog(self.togglebutton) + td.run() + else: + enable_metacity() + +class TimeoutDialog: + def __init__(self,togglebutton): + self.togglebutton = togglebutton + self.window = gtk.Dialog() + self.window.set_resizable(False) + self.window.set_position(gtk.WIN_POS_CENTER_ALWAYS) + self.window.set_title(_("Keep Settings")) + + mainbox = gtk.HBox(homogeneous=False,spacing=0) + self.window.vbox.pack_start(mainbox,padding=10) + + iconimg = gtk.Image() + iconimg.set_from_icon_name('gtk-dialog-question',6) + mainbox.pack_start(iconimg,padding=5) + + vbox = gtk.VBox(homogeneous=False,spacing=0) + heading = gtk.Label(_("<b>Do you want to keep these settings?</b>")) + heading.set_use_markup(True) + vbox.pack_start(heading) + self.label = gtk.Label(_("Testing the new settings. If you don't respond in 30 seconds, the previous settings will be restored.")) + self.label.set_line_wrap(True) + vbox.pack_start(self.label) + mainbox.pack_start(vbox) + + savebutton = self.window.add_button(_("Keep Settings"),0) + cancelbutton = self.window.add_button(_("Use Previous Settings"),0) + savebutton.connect('clicked',self.save) + cancelbutton.connect('clicked',self.cancel) + + self.window.show_all() + + def save(self,widget): + self._apply() + gobject.source_remove(self.timeoutloop) + self.window.destroy() + + def _apply(self): + enable_compiz() + + def cancel(self,widget): + self._revert() + self.window.destroy() + + def _revert(self): + enable_metacity() + + def run(self): + timerdata = dict(timer=0,endtime=30) + self.timeoutloop = gobject.timeout_add(1000, self.updatelabel,timerdata) + + def updatelabel(self,timerdata): + timeleft = timerdata['endtime'] - timerdata['timer'] + self.label.set_label(_("Testing the new settings. If you don't respond in %d seconds, the previous settings will be restored." % timeleft)) + timerdata['timer'] += 1 + if timeleft < 0: + self._revert() + return False + else: return True + + + +a = MainWindow() +gtk.main() + + |