Merge lp:~3v1n0/caffeine/screensaver-lock-support into lp:caffeine

Proposed by Marco Trevisan (Treviño)
Status: Rejected
Rejected by: Reuben Thomas
Proposed branch: lp:~3v1n0/caffeine/screensaver-lock-support
Merge into: lp:caffeine
Diff against target: 109 lines (+70/-0)
3 files modified
caffeine/core.py (+49/-0)
caffeine/main.py (+13/-0)
share/caffeine/glade/GUI.glade (+8/-0)
To merge this branch: bzr merge lp:~3v1n0/caffeine/screensaver-lock-support
Reviewer Review Type Date Requested Status
Isaiah Heyer Pending
Caffeine Developers Pending
Review via email: mp+52254@code.launchpad.net

Description of the change

Support for disabling ScreenSaver Lock

I've added some methods to disable the ScreenSaver lock; actually
I've implemented this just for Gnome, but it could be easily ported
to other screensaving systems which supports something similar.
(since the "public" core methods are generic)

Now, (when possible) from the Caffine Menu you can control if the
screensaver lock should be enabled or not.

To post a comment you must log in.
Revision history for this message
Reuben Thomas (rrt) wrote :

I don't think controlling the screensaver lock is really Caffeine's job.

Unmerged revisions

367. By Marco Trevisan (Treviño)

Support for disabling ScreenSaver Lock

I've added some methods to disable the ScreenSaver lock; actually
I've implemented this just for Gnome, but it could be easily ported
to other screensaving systems which supports something similar.
(since the "public" core methods are generic)

Now, (when possible) from the Caffine Menu you can control if the
screensaver lock should be enabled or not.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'caffeine/core.py'
2--- caffeine/core.py 2011-01-14 20:12:35 +0000
3+++ caffeine/core.py 2011-03-04 20:53:56 +0000
4@@ -279,6 +279,55 @@
5 if self.dbusDetectionTimer:
6 self.dbusDetectionTimer.cancel()
7
8+ def isLockAvailable(self):
9+ if self.screensaverAndPowersavingType == None:
10+ if self.attemptingToDetect == False:
11+ self.attemptingToDetect = True
12+ self._detectScreensaverAndPowersavingType()
13+
14+ if self.screensaverAndPowersavingType == "Gnome":
15+ return True
16+
17+ return False
18+
19+ def isLocking(self):
20+ if not self.isLockAvailable():
21+ return False
22+
23+ if self.screensaverAndPowersavingType == "Gnome":
24+ return self._get_gnome_lock()
25+
26+ return False
27+
28+ def lockEnable(self, enable):
29+ if not self.isLockAvailable():
30+ return
31+
32+ if self.screensaverAndPowersavingType == "Gnome":
33+ self._set_gnome_lock(enable)
34+
35+ def onLockChangeCb(self, toggle_func, data=None):
36+ if not self.isLockAvailable():
37+ return
38+
39+ if self.screensaverAndPowersavingType == "Gnome":
40+ self._register_gnome_lock_cb(toggle_func, data)
41+
42+ def _get_gnome_lock(self):
43+ return self.Conf.client.get_bool("/apps/gnome-screensaver/lock_enabled")
44+
45+ def _set_gnome_lock(self, enable):
46+ self.Conf.client.set_bool("/apps/gnome-screensaver/lock_enabled", enable)
47+
48+ def _register_gnome_lock_cb(self, toggle_func, data):
49+ self.Conf.client.notify_add("/apps/gnome-screensaver/lock_enabled",
50+ self._gnome_lock_option_changed, [toggle_func, data])
51+
52+ def _gnome_lock_option_changed(self, client, cnxn_id, entry, args):
53+ toggle_func = args[0]
54+ data = args[1]
55+ toggle_func(data)
56+
57 ## The following four methods deal with adding the correct syntax
58 ## for plural forms of time units. For example, 1 minute and 2
59 ## minutes. Will be obsolete once the application is
60
61=== modified file 'caffeine/main.py'
62--- caffeine/main.py 2011-01-14 20:50:42 +0000
63+++ caffeine/main.py 2011-03-04 20:53:56 +0000
64@@ -371,6 +371,12 @@
65
66
67 self.activate_menuitem = get("activate_menuitem")
68+ self.toggle_lock_menuitem = get("toggle_lock_menuitem")
69+
70+ if self.Core.isLockAvailable():
71+ self.toggle_lock_menuitem.show()
72+ self.lock_menuitem_set_label(self.toggle_lock_menuitem)
73+ self.Core.onLockChangeCb(self.on_lock_toggle, self.toggle_lock_menuitem)
74
75 self.set_icon_is_activated(self.Core.getActivated())
76
77@@ -626,6 +632,13 @@
78 label = [_("Disable Screensaver"), _("Enable Screensaver")]
79 menuitem.set_label (label[self.Core.getActivated()])
80
81+ def lock_menuitem_set_label(self, menuitem):
82+ label = [_("Disable Screensaver Lock"), _("Enable Screensaver Lock")]
83+ menuitem.set_label (label[not self.Core.isLocking()])
84+
85+ def on_lock_toggle (self, menuitem, data=None):
86+ self.Core.lockEnable(not self.Core.isLocking())
87+ self.lock_menuitem_set_label(menuitem)
88
89 def on_time_menuitem_activate(self, menuitem, data=None):
90
91
92=== modified file 'share/caffeine/glade/GUI.glade'
93--- share/caffeine/glade/GUI.glade 2011-01-14 20:50:42 +0000
94+++ share/caffeine/glade/GUI.glade 2011-03-04 20:53:56 +0000
95@@ -712,6 +712,14 @@
96 </object>
97 </child>
98 <child>
99+ <object class="GtkMenuItem" id="toggle_lock_menuitem">
100+ <property name="visible">False</property>
101+ <property name="label" translatable="yes">Disable Screensaver Lock</property>
102+ <property name="use_underline">True</property>
103+ <signal name="activate" handler="on_lock_toggle"/>
104+ </object>
105+ </child>
106+ <child>
107 <object class="GtkSeparatorMenuItem" id="menuitem2">
108 <property name="visible">True</property>
109 </object>

Subscribers

People subscribed via source and target branches