Merge lp:~ted/indicator-me/make-it-me into lp:indicator-me
- make-it-me
- Merge into trunk
Proposed by
Ted Gould
Status: | Merged |
---|---|
Merged at revision: | not available |
Proposed branch: | lp:~ted/indicator-me/make-it-me |
Merge into: | lp:indicator-me |
Diff against target: |
6269 lines (+231/-5358) 46 files modified
.bzrignore (+10/-4) autogen.sh (+1/-1) configure.ac (+10/-31) data/Makefile.am (+3/-32) data/icons/16x16/Makefile.am (+1/-1) data/icons/16x16/actions/Makefile.am (+0/-10) data/icons/22x22/Makefile.am (+1/-1) data/icons/22x22/actions/Makefile.am (+0/-10) data/icons/24x24/Makefile.am (+1/-1) data/icons/24x24/actions/Makefile.am (+0/-10) data/icons/32x32/Makefile.am (+1/-1) data/icons/32x32/actions/Makefile.am (+0/-8) data/icons/scalable/Makefile.am (+1/-1) data/icons/scalable/actions/Makefile.am (+0/-10) data/icons/scalable/actions/system-log-out.svg (+0/-284) data/icons/scalable/actions/system-restart.svg (+0/-397) data/icons/scalable/actions/system-shutdown-panel.svg (+0/-247) data/icons/scalable/actions/system-shutdown.svg (+0/-247) data/indicator-me.service.in (+2/-2) data/indicator-session.schemas.in (+0/-17) data/indicator-session.service.in (+0/-3) data/indicator-users.service.in (+0/-3) po/POTFILES.in (+1/-8) src/Makefile.am (+36/-84) src/dbus-shared-names.h (+5/-12) src/gtk-dialog/Makefile.am (+0/-15) src/gtk-dialog/ck-pk-helper.c (+0/-222) src/gtk-dialog/ck-pk-helper.h (+0/-32) src/gtk-dialog/gconf-helper.c (+0/-73) src/gtk-dialog/gconf-helper.h (+0/-50) src/gtk-dialog/gtk-logout-helper.c (+0/-173) src/gtk-dialog/logout-dialog.c (+0/-371) src/gtk-dialog/logout-dialog.h (+0/-99) src/indicator-me.c (+101/-532) src/lock-helper.c (+0/-326) src/lock-helper.h (+0/-37) src/me-service-dbus.c (+10/-10) src/me-service.c (+19/-27) src/me-service.xml (+1/-1) src/session-service.c (+0/-339) src/status-provider-mc5.c (+27/-12) src/users-service-dbus.c (+0/-1147) src/users-service-dbus.h (+0/-84) src/users-service.c (+0/-326) src/users-service.list (+0/-1) src/users-service.xml (+0/-56) |
To merge this branch: | bzr merge lp:~ted/indicator-me/make-it-me |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Indicator Applet Developers | Pending | ||
Review via email: mp+16815@code.launchpad.net |
Commit message
Description of the change
To post a comment you must log in.
Revision history for this message
Ted Gould (ted) wrote : | # |
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file '.bzrignore' | |||
2 | --- .bzrignore 2009-10-08 14:45:29 +0000 | |||
3 | +++ .bzrignore 2010-01-04 21:25:21 +0000 | |||
4 | @@ -50,7 +50,13 @@ | |||
5 | 50 | src/users-service-client.h | 50 | src/users-service-client.h |
6 | 51 | src/users-service-marshal.c | 51 | src/users-service-marshal.c |
7 | 52 | src/users-service-marshal.h | 52 | src/users-service-marshal.h |
12 | 53 | indicator-session-[0-9].[0-9].[0-9].tar.gz | 53 | indicator-me-[0-9].[0-9].[0-9].tar.gz |
13 | 54 | indicator-session-[0-9].[0-9].tar.gz | 54 | indicator-me-[0-9].[0-9].tar.gz |
14 | 55 | indicator-session-[0-9].[0-9].[0-9].tar.gz.asc | 55 | indicator-me-[0-9].[0-9].[0-9].tar.gz.asc |
15 | 56 | indicator-session-[0-9].[0-9].tar.gz.asc | 56 | indicator-me-[0-9].[0-9].tar.gz.asc |
16 | 57 | src/indicator-me-service | ||
17 | 58 | src/libme.la | ||
18 | 59 | src/libme_la-indicator-me.lo | ||
19 | 60 | po/indicator-me.pot | ||
20 | 61 | src/me-service-client.h | ||
21 | 62 | src/me-service-server.h | ||
22 | 57 | 63 | ||
23 | === modified file 'autogen.sh' | |||
24 | --- autogen.sh 2009-08-18 14:17:32 +0000 | |||
25 | +++ autogen.sh 2010-01-04 21:25:21 +0000 | |||
26 | @@ -1,6 +1,6 @@ | |||
27 | 1 | #!/bin/sh | 1 | #!/bin/sh |
28 | 2 | 2 | ||
30 | 3 | PKG_NAME="indicator-session" | 3 | PKG_NAME="indicator-me" |
31 | 4 | 4 | ||
32 | 5 | which gnome-autogen.sh || { | 5 | which gnome-autogen.sh || { |
33 | 6 | echo "You need gnome-common from GNOME SVN" | 6 | echo "You need gnome-common from GNOME SVN" |
34 | 7 | 7 | ||
35 | === modified file 'configure.ac' | |||
36 | --- configure.ac 2009-11-04 22:14:49 +0000 | |||
37 | +++ configure.ac 2010-01-04 21:25:21 +0000 | |||
38 | @@ -1,10 +1,11 @@ | |||
39 | 1 | 1 | ||
41 | 2 | AC_INIT(src/indicator-session.c) | 2 | AC_INIT(indicator-me, 0.0.1, ted@canonical.com) |
42 | 3 | AC_COPYRIGHT([Copyright 2009 Canonical]) | ||
43 | 3 | 4 | ||
44 | 4 | AC_PREREQ(2.53) | 5 | AC_PREREQ(2.53) |
45 | 5 | 6 | ||
46 | 6 | AM_CONFIG_HEADER(config.h) | 7 | AM_CONFIG_HEADER(config.h) |
48 | 7 | AM_INIT_AUTOMAKE(indicator-session, 0.1.7) | 8 | AM_INIT_AUTOMAKE(indicator-me, 0.0.1) |
49 | 8 | 9 | ||
50 | 9 | AM_MAINTAINER_MODE | 10 | AM_MAINTAINER_MODE |
51 | 10 | 11 | ||
52 | @@ -27,7 +28,7 @@ | |||
53 | 27 | 28 | ||
54 | 28 | GTK_REQUIRED_VERSION=2.12 | 29 | GTK_REQUIRED_VERSION=2.12 |
55 | 29 | INDICATOR_REQUIRED_VERSION=0.3.0 | 30 | INDICATOR_REQUIRED_VERSION=0.3.0 |
57 | 30 | DBUSMENUGTK_REQUIRED_VERSION=0.1.1 | 31 | DBUSMENUGTK_REQUIRED_VERSION=0.2.0 |
58 | 31 | POLKIT_REQUIRED_VERSION=0.92 | 32 | POLKIT_REQUIRED_VERSION=0.92 |
59 | 32 | 33 | ||
60 | 33 | PKG_CHECK_MODULES(APPLET, gtk+-2.0 >= $GTK_REQUIRED_VERSION | 34 | PKG_CHECK_MODULES(APPLET, gtk+-2.0 >= $GTK_REQUIRED_VERSION |
61 | @@ -37,31 +38,15 @@ | |||
62 | 37 | AC_SUBST(APPLET_LIBS) | 38 | AC_SUBST(APPLET_LIBS) |
63 | 38 | 39 | ||
64 | 39 | DBUSMENUGLIB_REQUIRED_VERSION=0.1.1 | 40 | DBUSMENUGLIB_REQUIRED_VERSION=0.1.1 |
66 | 40 | LIBEMPATHY_REQUIRED_VERSION=2.27.0 | 41 | TELEPATHYGLIB_REQUIRED_VERSION=0.9.0 |
67 | 41 | 42 | ||
68 | 42 | PKG_CHECK_MODULES(STATUSSERVICE, dbusmenu-glib >= $DBUSMENUGLIB_REQUIRED_VERSION | 43 | PKG_CHECK_MODULES(STATUSSERVICE, dbusmenu-glib >= $DBUSMENUGLIB_REQUIRED_VERSION |
70 | 43 | libempathy >= $LIBEMPATHY_REQUIRED_VERSION) | 44 | indicator >= $INDICATOR_REQUIRED_VERSION |
71 | 45 | telepathy-glib >= $TELEPATHYGLIB_REQUIRED_VERSION) | ||
72 | 44 | 46 | ||
73 | 45 | AC_SUBST(STATUSERVICE_CFLAGS) | 47 | AC_SUBST(STATUSERVICE_CFLAGS) |
74 | 46 | AC_SUBST(STATUSERVICE_LIBS) | 48 | AC_SUBST(STATUSERVICE_LIBS) |
75 | 47 | 49 | ||
76 | 48 | PKG_CHECK_MODULES(USERSSERVICE, dbusmenu-glib >= $DBUSMENUGLIB_REQUIRED_VERSION) | ||
77 | 49 | |||
78 | 50 | AC_SUBST(USERSERVICE_CFLAGS) | ||
79 | 51 | AC_SUBST(USERSERVICE_LIBS) | ||
80 | 52 | |||
81 | 53 | PKG_CHECK_MODULES(SESSIONSERVICE, dbusmenu-glib >= $DBUSMENUGLIB_REQUIRED_VERSION) | ||
82 | 54 | |||
83 | 55 | AC_SUBST(SESSIONERVICE_CFLAGS) | ||
84 | 56 | AC_SUBST(SESSIONERVICE_LIBS) | ||
85 | 57 | |||
86 | 58 | PKG_CHECK_MODULES(GTKLOGOUTHELPER, gtk+-2.0 >= $GTK_REQUIRED_VERSION | ||
87 | 59 | polkit-gobject-1 >= $POLKIT_REQUIRED_VERSION) | ||
88 | 60 | |||
89 | 61 | |||
90 | 62 | AC_SUBST(GTKLOGOUTHELPER_CFLAGS) | ||
91 | 63 | AC_SUBST(GTKLOGOUTHELPER_LIBS) | ||
92 | 64 | |||
93 | 65 | AC_PATH_PROG(GCONFTOOL, gconftool-2) | 50 | AC_PATH_PROG(GCONFTOOL, gconftool-2) |
94 | 66 | dnl Specify the gconf configuration source, | 51 | dnl Specify the gconf configuration source, |
95 | 67 | dnl default to xml::$(sysconfdir)/gconf/gconf.xml.defaults | 52 | dnl default to xml::$(sysconfdir)/gconf/gconf.xml.defaults |
96 | @@ -84,7 +69,7 @@ | |||
97 | 84 | ########################### | 69 | ########################### |
98 | 85 | 70 | ||
99 | 86 | if test "x$with_localinstall" = "xyes"; then | 71 | if test "x$with_localinstall" = "xyes"; then |
101 | 87 | INDICATORDIR="${libdir}/indicators/2/" | 72 | INDICATORDIR="${libdir}/indicators/3/" |
102 | 88 | INDICATORICONSDIR="${datadir}/indicator-applet/icons/" | 73 | INDICATORICONSDIR="${datadir}/indicator-applet/icons/" |
103 | 89 | else | 74 | else |
104 | 90 | INDICATORDIR=`$PKG_CONFIG --variable=indicatordir indicator` | 75 | INDICATORDIR=`$PKG_CONFIG --variable=indicatordir indicator` |
105 | @@ -124,7 +109,7 @@ | |||
106 | 124 | # Internationalization | 109 | # Internationalization |
107 | 125 | ########################### | 110 | ########################### |
108 | 126 | 111 | ||
110 | 127 | GETTEXT_PACKAGE=indicator-session | 112 | GETTEXT_PACKAGE=indicator-me |
111 | 128 | AC_SUBST(GETTEXT_PACKAGE) | 113 | AC_SUBST(GETTEXT_PACKAGE) |
112 | 129 | AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Name of the default get text domain]) | 114 | AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Name of the default get text domain]) |
113 | 130 | AC_DEFINE_PATH(GNOMELOCALEDIR, "${datadir}/locale", [locale directory]) | 115 | AC_DEFINE_PATH(GNOMELOCALEDIR, "${datadir}/locale", [locale directory]) |
114 | @@ -138,26 +123,20 @@ | |||
115 | 138 | AC_OUTPUT([ | 123 | AC_OUTPUT([ |
116 | 139 | Makefile | 124 | Makefile |
117 | 140 | src/Makefile | 125 | src/Makefile |
118 | 141 | src/gtk-dialog/Makefile | ||
119 | 142 | data/Makefile | 126 | data/Makefile |
120 | 143 | data/icons/Makefile | 127 | data/icons/Makefile |
121 | 144 | data/icons/16x16/Makefile | 128 | data/icons/16x16/Makefile |
122 | 145 | data/icons/16x16/status/Makefile | 129 | data/icons/16x16/status/Makefile |
123 | 146 | data/icons/16x16/actions/Makefile | ||
124 | 147 | data/icons/22x22/Makefile | 130 | data/icons/22x22/Makefile |
125 | 148 | data/icons/22x22/status/Makefile | 131 | data/icons/22x22/status/Makefile |
126 | 149 | data/icons/22x22/actions/Makefile | ||
127 | 150 | data/icons/24x24/Makefile | 132 | data/icons/24x24/Makefile |
128 | 151 | data/icons/24x24/status/Makefile | 133 | data/icons/24x24/status/Makefile |
129 | 152 | data/icons/24x24/actions/Makefile | ||
130 | 153 | data/icons/32x32/Makefile | 134 | data/icons/32x32/Makefile |
131 | 154 | data/icons/32x32/status/Makefile | 135 | data/icons/32x32/status/Makefile |
132 | 155 | data/icons/32x32/actions/Makefile | ||
133 | 156 | data/icons/48x48/Makefile | 136 | data/icons/48x48/Makefile |
134 | 157 | data/icons/48x48/status/Makefile | 137 | data/icons/48x48/status/Makefile |
135 | 158 | data/icons/scalable/Makefile | 138 | data/icons/scalable/Makefile |
136 | 159 | data/icons/scalable/status/Makefile | 139 | data/icons/scalable/status/Makefile |
137 | 160 | data/icons/scalable/actions/Makefile | ||
138 | 161 | po/Makefile.in | 140 | po/Makefile.in |
139 | 162 | ]) | 141 | ]) |
140 | 163 | 142 | ||
141 | @@ -167,7 +146,7 @@ | |||
142 | 167 | 146 | ||
143 | 168 | AC_MSG_NOTICE([ | 147 | AC_MSG_NOTICE([ |
144 | 169 | 148 | ||
146 | 170 | SUS Indicator Configuration: | 149 | Me Indicator Configuration: |
147 | 171 | 150 | ||
148 | 172 | Prefix: $prefix | 151 | Prefix: $prefix |
149 | 173 | ]) | 152 | ]) |
150 | 174 | 153 | ||
151 | === modified file 'data/Makefile.am' | |||
152 | --- data/Makefile.am 2009-09-02 14:17:44 +0000 | |||
153 | +++ data/Makefile.am 2010-01-04 21:25:21 +0000 | |||
154 | @@ -1,45 +1,16 @@ | |||
155 | 1 | SUBDIRS = icons | 1 | SUBDIRS = icons |
156 | 2 | 2 | ||
157 | 3 | dbus_servicesdir = $(DBUSSERVICEDIR) | 3 | dbus_servicesdir = $(DBUSSERVICEDIR) |
161 | 4 | service_in_files = indicator-status.service.in \ | 4 | service_in_files = indicator-me.service.in |
159 | 5 | indicator-users.service.in \ | ||
160 | 6 | indicator-session.service.in | ||
162 | 7 | dbus_services_DATA = $(service_in_files:.service.in=.service) | 5 | dbus_services_DATA = $(service_in_files:.service.in=.service) |
163 | 8 | 6 | ||
164 | 9 | %.service: %.service.in | 7 | %.service: %.service.in |
165 | 10 | sed -e "s|\@libexecdir\@|$(libexecdir)|" $< > $@ | 8 | sed -e "s|\@libexecdir\@|$(libexecdir)|" $< > $@ |
166 | 11 | 9 | ||
167 | 12 | ############################## | ||
168 | 13 | # GConf Schema | ||
169 | 14 | ############################## | ||
170 | 15 | |||
171 | 16 | schemadir = \ | ||
172 | 17 | $(GCONF_SCHEMA_FILE_DIR) | ||
173 | 18 | |||
174 | 19 | schema_in_files = \ | ||
175 | 20 | indicator-session.schemas.in | ||
176 | 21 | |||
177 | 22 | schema_DATA = \ | ||
178 | 23 | $(schema_in_files:.schemas.in=.schemas) | ||
179 | 24 | |||
180 | 25 | @INTLTOOL_SCHEMAS_RULE@ | ||
181 | 26 | |||
182 | 27 | |||
183 | 28 | #$(dbus_services_DATA): $(service_in_files) Makefile | ||
184 | 29 | # sed -e "s|\@libexecdir\@|$(libexecdir)|" $< > $@ | ||
185 | 30 | 10 | ||
186 | 31 | EXTRA_DIST = \ | 11 | EXTRA_DIST = \ |
189 | 32 | $(service_in_files) \ | 12 | $(service_in_files) |
188 | 33 | $(schema_in_files) | ||
190 | 34 | 13 | ||
191 | 35 | CLEANFILES = \ | 14 | CLEANFILES = \ |
194 | 36 | $(dbus_services_DATA) \ | 15 | $(dbus_services_DATA) |
193 | 37 | $(schema_DATA) | ||
195 | 38 | 16 | ||
196 | 39 | if GCONF_SCHEMAS_INSTALL | ||
197 | 40 | install-data-local: | ||
198 | 41 | GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) \ | ||
199 | 42 | gconftool-2 --makefile-install-rule $(schema_DATA) | ||
200 | 43 | else | ||
201 | 44 | install-data-local: | ||
202 | 45 | endif | ||
203 | 46 | 17 | ||
204 | === modified file 'data/icons/16x16/Makefile.am' | |||
205 | --- data/icons/16x16/Makefile.am 2009-08-07 19:10:15 +0000 | |||
206 | +++ data/icons/16x16/Makefile.am 2010-01-04 21:25:21 +0000 | |||
207 | @@ -1,1 +1,1 @@ | |||
209 | 1 | SUBDIRS = status actions | 1 | SUBDIRS = status |
210 | 2 | 2 | ||
211 | === removed directory 'data/icons/16x16/actions' | |||
212 | === removed file 'data/icons/16x16/actions/Makefile.am' | |||
213 | --- data/icons/16x16/actions/Makefile.am 2009-10-06 22:51:09 +0000 | |||
214 | +++ data/icons/16x16/actions/Makefile.am 1970-01-01 00:00:00 +0000 | |||
215 | @@ -1,10 +0,0 @@ | |||
216 | 1 | |||
217 | 2 | iconsdir = $(INDICATORICONSDIR)/hicolor/16x16/actions | ||
218 | 3 | |||
219 | 4 | icons_DATA = \ | ||
220 | 5 | system-shutdown-panel.png \ | ||
221 | 6 | system-shutdown.png \ | ||
222 | 7 | system-restart.png \ | ||
223 | 8 | system-log-out.png | ||
224 | 9 | |||
225 | 10 | EXTRA_DIST = $(icons_DATA) | ||
226 | 11 | 0 | ||
227 | === removed file 'data/icons/16x16/actions/system-log-out.png' | |||
228 | 12 | Binary files data/icons/16x16/actions/system-log-out.png 2009-08-07 19:10:15 +0000 and data/icons/16x16/actions/system-log-out.png 1970-01-01 00:00:00 +0000 differ | 1 | Binary files data/icons/16x16/actions/system-log-out.png 2009-08-07 19:10:15 +0000 and data/icons/16x16/actions/system-log-out.png 1970-01-01 00:00:00 +0000 differ |
229 | === removed file 'data/icons/16x16/actions/system-restart.png' | |||
230 | 13 | Binary files data/icons/16x16/actions/system-restart.png 2009-08-07 19:10:15 +0000 and data/icons/16x16/actions/system-restart.png 1970-01-01 00:00:00 +0000 differ | 2 | Binary files data/icons/16x16/actions/system-restart.png 2009-08-07 19:10:15 +0000 and data/icons/16x16/actions/system-restart.png 1970-01-01 00:00:00 +0000 differ |
231 | === removed file 'data/icons/16x16/actions/system-shutdown-panel.png' | |||
232 | 14 | Binary files data/icons/16x16/actions/system-shutdown-panel.png 2009-10-06 22:51:09 +0000 and data/icons/16x16/actions/system-shutdown-panel.png 1970-01-01 00:00:00 +0000 differ | 3 | Binary files data/icons/16x16/actions/system-shutdown-panel.png 2009-10-06 22:51:09 +0000 and data/icons/16x16/actions/system-shutdown-panel.png 1970-01-01 00:00:00 +0000 differ |
233 | === removed file 'data/icons/16x16/actions/system-shutdown.png' | |||
234 | 15 | Binary files data/icons/16x16/actions/system-shutdown.png 2009-08-07 19:10:15 +0000 and data/icons/16x16/actions/system-shutdown.png 1970-01-01 00:00:00 +0000 differ | 4 | Binary files data/icons/16x16/actions/system-shutdown.png 2009-08-07 19:10:15 +0000 and data/icons/16x16/actions/system-shutdown.png 1970-01-01 00:00:00 +0000 differ |
235 | === modified file 'data/icons/16x16/status/user-invisible.png' (properties changed: +x to -x) | |||
236 | === modified file 'data/icons/22x22/Makefile.am' | |||
237 | --- data/icons/22x22/Makefile.am 2009-08-07 19:10:15 +0000 | |||
238 | +++ data/icons/22x22/Makefile.am 2010-01-04 21:25:21 +0000 | |||
239 | @@ -1,1 +1,1 @@ | |||
241 | 1 | SUBDIRS = status actions | 1 | SUBDIRS = status |
242 | 2 | 2 | ||
243 | === removed directory 'data/icons/22x22/actions' | |||
244 | === removed file 'data/icons/22x22/actions/Makefile.am' | |||
245 | --- data/icons/22x22/actions/Makefile.am 2009-10-06 22:51:09 +0000 | |||
246 | +++ data/icons/22x22/actions/Makefile.am 1970-01-01 00:00:00 +0000 | |||
247 | @@ -1,10 +0,0 @@ | |||
248 | 1 | |||
249 | 2 | iconsdir = $(INDICATORICONSDIR)/hicolor/22x22/actions | ||
250 | 3 | |||
251 | 4 | icons_DATA = \ | ||
252 | 5 | system-shutdown-panel.png \ | ||
253 | 6 | system-shutdown.png \ | ||
254 | 7 | system-restart.png \ | ||
255 | 8 | system-log-out.png | ||
256 | 9 | |||
257 | 10 | EXTRA_DIST = $(icons_DATA) | ||
258 | 11 | 0 | ||
259 | === removed file 'data/icons/22x22/actions/system-log-out.png' | |||
260 | 12 | Binary files data/icons/22x22/actions/system-log-out.png 2009-08-07 19:10:15 +0000 and data/icons/22x22/actions/system-log-out.png 1970-01-01 00:00:00 +0000 differ | 1 | Binary files data/icons/22x22/actions/system-log-out.png 2009-08-07 19:10:15 +0000 and data/icons/22x22/actions/system-log-out.png 1970-01-01 00:00:00 +0000 differ |
261 | === removed file 'data/icons/22x22/actions/system-restart.png' | |||
262 | 13 | Binary files data/icons/22x22/actions/system-restart.png 2009-08-07 19:10:15 +0000 and data/icons/22x22/actions/system-restart.png 1970-01-01 00:00:00 +0000 differ | 2 | Binary files data/icons/22x22/actions/system-restart.png 2009-08-07 19:10:15 +0000 and data/icons/22x22/actions/system-restart.png 1970-01-01 00:00:00 +0000 differ |
263 | === removed file 'data/icons/22x22/actions/system-shutdown-panel.png' | |||
264 | 14 | Binary files data/icons/22x22/actions/system-shutdown-panel.png 2009-10-06 22:51:09 +0000 and data/icons/22x22/actions/system-shutdown-panel.png 1970-01-01 00:00:00 +0000 differ | 3 | Binary files data/icons/22x22/actions/system-shutdown-panel.png 2009-10-06 22:51:09 +0000 and data/icons/22x22/actions/system-shutdown-panel.png 1970-01-01 00:00:00 +0000 differ |
265 | === removed file 'data/icons/22x22/actions/system-shutdown.png' | |||
266 | 15 | Binary files data/icons/22x22/actions/system-shutdown.png 2009-08-07 19:10:15 +0000 and data/icons/22x22/actions/system-shutdown.png 1970-01-01 00:00:00 +0000 differ | 4 | Binary files data/icons/22x22/actions/system-shutdown.png 2009-08-07 19:10:15 +0000 and data/icons/22x22/actions/system-shutdown.png 1970-01-01 00:00:00 +0000 differ |
267 | === modified file 'data/icons/22x22/status/user-invisible.png' (properties changed: +x to -x) | |||
268 | === modified file 'data/icons/24x24/Makefile.am' | |||
269 | --- data/icons/24x24/Makefile.am 2009-08-07 19:10:15 +0000 | |||
270 | +++ data/icons/24x24/Makefile.am 2010-01-04 21:25:21 +0000 | |||
271 | @@ -1,1 +1,1 @@ | |||
273 | 1 | SUBDIRS = status actions | 1 | SUBDIRS = status |
274 | 2 | 2 | ||
275 | === removed directory 'data/icons/24x24/actions' | |||
276 | === removed file 'data/icons/24x24/actions/Makefile.am' | |||
277 | --- data/icons/24x24/actions/Makefile.am 2009-10-06 22:51:09 +0000 | |||
278 | +++ data/icons/24x24/actions/Makefile.am 1970-01-01 00:00:00 +0000 | |||
279 | @@ -1,10 +0,0 @@ | |||
280 | 1 | |||
281 | 2 | iconsdir = $(INDICATORICONSDIR)/hicolor/24x24/actions | ||
282 | 3 | |||
283 | 4 | icons_DATA = \ | ||
284 | 5 | system-shutdown-panel.png \ | ||
285 | 6 | system-shutdown.png \ | ||
286 | 7 | system-restart.png \ | ||
287 | 8 | system-log-out.png | ||
288 | 9 | |||
289 | 10 | EXTRA_DIST = $(icons_DATA) | ||
290 | 11 | 0 | ||
291 | === removed file 'data/icons/24x24/actions/system-log-out.png' | |||
292 | 12 | Binary files data/icons/24x24/actions/system-log-out.png 2009-08-07 19:10:15 +0000 and data/icons/24x24/actions/system-log-out.png 1970-01-01 00:00:00 +0000 differ | 1 | Binary files data/icons/24x24/actions/system-log-out.png 2009-08-07 19:10:15 +0000 and data/icons/24x24/actions/system-log-out.png 1970-01-01 00:00:00 +0000 differ |
293 | === removed file 'data/icons/24x24/actions/system-restart.png' | |||
294 | 13 | Binary files data/icons/24x24/actions/system-restart.png 2009-08-07 19:10:15 +0000 and data/icons/24x24/actions/system-restart.png 1970-01-01 00:00:00 +0000 differ | 2 | Binary files data/icons/24x24/actions/system-restart.png 2009-08-07 19:10:15 +0000 and data/icons/24x24/actions/system-restart.png 1970-01-01 00:00:00 +0000 differ |
295 | === removed file 'data/icons/24x24/actions/system-shutdown-panel.png' | |||
296 | 14 | Binary files data/icons/24x24/actions/system-shutdown-panel.png 2009-10-06 22:51:09 +0000 and data/icons/24x24/actions/system-shutdown-panel.png 1970-01-01 00:00:00 +0000 differ | 3 | Binary files data/icons/24x24/actions/system-shutdown-panel.png 2009-10-06 22:51:09 +0000 and data/icons/24x24/actions/system-shutdown-panel.png 1970-01-01 00:00:00 +0000 differ |
297 | === removed file 'data/icons/24x24/actions/system-shutdown.png' | |||
298 | 15 | Binary files data/icons/24x24/actions/system-shutdown.png 2009-08-07 19:10:15 +0000 and data/icons/24x24/actions/system-shutdown.png 1970-01-01 00:00:00 +0000 differ | 4 | Binary files data/icons/24x24/actions/system-shutdown.png 2009-08-07 19:10:15 +0000 and data/icons/24x24/actions/system-shutdown.png 1970-01-01 00:00:00 +0000 differ |
299 | === modified file 'data/icons/24x24/status/user-invisible.png' (properties changed: +x to -x) | |||
300 | === modified file 'data/icons/32x32/Makefile.am' | |||
301 | --- data/icons/32x32/Makefile.am 2009-08-07 19:10:15 +0000 | |||
302 | +++ data/icons/32x32/Makefile.am 2010-01-04 21:25:21 +0000 | |||
303 | @@ -1,1 +1,1 @@ | |||
305 | 1 | SUBDIRS = status actions | 1 | SUBDIRS = status |
306 | 2 | 2 | ||
307 | === removed directory 'data/icons/32x32/actions' | |||
308 | === removed file 'data/icons/32x32/actions/Makefile.am' | |||
309 | --- data/icons/32x32/actions/Makefile.am 2009-08-13 04:47:41 +0000 | |||
310 | +++ data/icons/32x32/actions/Makefile.am 1970-01-01 00:00:00 +0000 | |||
311 | @@ -1,8 +0,0 @@ | |||
312 | 1 | |||
313 | 2 | iconsdir = $(INDICATORICONSDIR)/hicolor/32x32/actions | ||
314 | 3 | |||
315 | 4 | icons_DATA = \ | ||
316 | 5 | system-restart.png \ | ||
317 | 6 | system-log-out.png | ||
318 | 7 | |||
319 | 8 | EXTRA_DIST = $(icons_DATA) | ||
320 | 9 | 0 | ||
321 | === removed file 'data/icons/32x32/actions/system-log-out.png' | |||
322 | 10 | Binary files data/icons/32x32/actions/system-log-out.png 2009-08-07 19:10:15 +0000 and data/icons/32x32/actions/system-log-out.png 1970-01-01 00:00:00 +0000 differ | 1 | Binary files data/icons/32x32/actions/system-log-out.png 2009-08-07 19:10:15 +0000 and data/icons/32x32/actions/system-log-out.png 1970-01-01 00:00:00 +0000 differ |
323 | === removed file 'data/icons/32x32/actions/system-restart.png' | |||
324 | 11 | Binary files data/icons/32x32/actions/system-restart.png 2009-08-07 19:10:15 +0000 and data/icons/32x32/actions/system-restart.png 1970-01-01 00:00:00 +0000 differ | 2 | Binary files data/icons/32x32/actions/system-restart.png 2009-08-07 19:10:15 +0000 and data/icons/32x32/actions/system-restart.png 1970-01-01 00:00:00 +0000 differ |
325 | === modified file 'data/icons/32x32/status/user-invisible.png' (properties changed: +x to -x) | |||
326 | === modified file 'data/icons/48x48/status/user-invisible.png' (properties changed: +x to -x) | |||
327 | === modified file 'data/icons/scalable/Makefile.am' | |||
328 | --- data/icons/scalable/Makefile.am 2009-08-07 19:10:15 +0000 | |||
329 | +++ data/icons/scalable/Makefile.am 2010-01-04 21:25:21 +0000 | |||
330 | @@ -1,1 +1,1 @@ | |||
332 | 1 | SUBDIRS = status actions | 1 | SUBDIRS = status |
333 | 2 | 2 | ||
334 | === removed directory 'data/icons/scalable/actions' | |||
335 | === removed file 'data/icons/scalable/actions/Makefile.am' | |||
336 | --- data/icons/scalable/actions/Makefile.am 2009-10-06 22:51:09 +0000 | |||
337 | +++ data/icons/scalable/actions/Makefile.am 1970-01-01 00:00:00 +0000 | |||
338 | @@ -1,10 +0,0 @@ | |||
339 | 1 | |||
340 | 2 | iconsdir = $(INDICATORICONSDIR)/hicolor/scalable/actions | ||
341 | 3 | |||
342 | 4 | icons_DATA = \ | ||
343 | 5 | system-shutdown-panel.svg \ | ||
344 | 6 | system-restart.svg \ | ||
345 | 7 | system-log-out.svg \ | ||
346 | 8 | system-shutdown.svg | ||
347 | 9 | |||
348 | 10 | EXTRA_DIST = $(icons_DATA) | ||
349 | 11 | 0 | ||
350 | === removed file 'data/icons/scalable/actions/system-log-out.svg' | |||
351 | --- data/icons/scalable/actions/system-log-out.svg 2009-08-07 19:10:15 +0000 | |||
352 | +++ data/icons/scalable/actions/system-log-out.svg 1970-01-01 00:00:00 +0000 | |||
353 | @@ -1,284 +0,0 @@ | |||
354 | 1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
355 | 2 | <!-- Created with Inkscape (http://www.inkscape.org/) --> | ||
356 | 3 | <svg | ||
357 | 4 | xmlns:dc="http://purl.org/dc/elements/1.1/" | ||
358 | 5 | xmlns:cc="http://web.resource.org/cc/" | ||
359 | 6 | xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||
360 | 7 | xmlns:svg="http://www.w3.org/2000/svg" | ||
361 | 8 | xmlns="http://www.w3.org/2000/svg" | ||
362 | 9 | xmlns:xlink="http://www.w3.org/1999/xlink" | ||
363 | 10 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||
364 | 11 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||
365 | 12 | width="48" | ||
366 | 13 | height="48" | ||
367 | 14 | id="svg5157" | ||
368 | 15 | sodipodi:version="0.32" | ||
369 | 16 | inkscape:version="0.45" | ||
370 | 17 | version="1.0" | ||
371 | 18 | sodipodi:docname="system-log-out.svg" | ||
372 | 19 | sodipodi:docbase="/home/dobey/Projects/gnome-icon-theme/scalable/actions" | ||
373 | 20 | inkscape:output_extension="org.inkscape.output.svg.inkscape"> | ||
374 | 21 | <defs | ||
375 | 22 | id="defs5159"> | ||
376 | 23 | <linearGradient | ||
377 | 24 | inkscape:collect="always" | ||
378 | 25 | id="linearGradient7130"> | ||
379 | 26 | <stop | ||
380 | 27 | style="stop-color:#4e9a06;stop-opacity:1" | ||
381 | 28 | offset="0" | ||
382 | 29 | id="stop7132" /> | ||
383 | 30 | <stop | ||
384 | 31 | style="stop-color:#73d216;stop-opacity:1" | ||
385 | 32 | offset="1" | ||
386 | 33 | id="stop7134" /> | ||
387 | 34 | </linearGradient> | ||
388 | 35 | <linearGradient | ||
389 | 36 | id="linearGradient7121"> | ||
390 | 37 | <stop | ||
391 | 38 | style="stop-color:#ffffff;stop-opacity:1;" | ||
392 | 39 | offset="0" | ||
393 | 40 | id="stop7123" /> | ||
394 | 41 | <stop | ||
395 | 42 | style="stop-color:#8ae234;stop-opacity:1" | ||
396 | 43 | offset="1" | ||
397 | 44 | id="stop7125" /> | ||
398 | 45 | </linearGradient> | ||
399 | 46 | <linearGradient | ||
400 | 47 | id="linearGradient6998" | ||
401 | 48 | inkscape:collect="always"> | ||
402 | 49 | <stop | ||
403 | 50 | id="stop7000" | ||
404 | 51 | offset="0" | ||
405 | 52 | style="stop-color:#000000;stop-opacity:1;" /> | ||
406 | 53 | <stop | ||
407 | 54 | id="stop7002" | ||
408 | 55 | offset="1" | ||
409 | 56 | style="stop-color:#000000;stop-opacity:0;" /> | ||
410 | 57 | </linearGradient> | ||
411 | 58 | <linearGradient | ||
412 | 59 | inkscape:collect="always" | ||
413 | 60 | xlink:href="#linearGradient7130" | ||
414 | 61 | id="linearGradient7145" | ||
415 | 62 | gradientUnits="userSpaceOnUse" | ||
416 | 63 | x1="11.5" | ||
417 | 64 | y1="68.75" | ||
418 | 65 | x2="-13.247213" | ||
419 | 66 | y2="21.843145" /> | ||
420 | 67 | <linearGradient | ||
421 | 68 | inkscape:collect="always" | ||
422 | 69 | xlink:href="#linearGradient7121" | ||
423 | 70 | id="linearGradient7147" | ||
424 | 71 | gradientUnits="userSpaceOnUse" | ||
425 | 72 | x1="-33.040741" | ||
426 | 73 | y1="10.966461" | ||
427 | 74 | x2="-30.919424" | ||
428 | 75 | y2="17.448257" /> | ||
429 | 76 | <radialGradient | ||
430 | 77 | inkscape:collect="always" | ||
431 | 78 | xlink:href="#linearGradient6998" | ||
432 | 79 | id="radialGradient7161" | ||
433 | 80 | gradientUnits="userSpaceOnUse" | ||
434 | 81 | gradientTransform="matrix(1,0,0,0.3222749,0,20.728756)" | ||
435 | 82 | cx="19.688505" | ||
436 | 83 | cy="30.585787" | ||
437 | 84 | fx="19.688505" | ||
438 | 85 | fy="30.585787" | ||
439 | 86 | r="4.6624851" /> | ||
440 | 87 | <radialGradient | ||
441 | 88 | inkscape:collect="always" | ||
442 | 89 | xlink:href="#linearGradient6998" | ||
443 | 90 | id="radialGradient7163" | ||
444 | 91 | gradientUnits="userSpaceOnUse" | ||
445 | 92 | gradientTransform="matrix(1,0,0,0.3222749,0,20.728756)" | ||
446 | 93 | cx="19.688505" | ||
447 | 94 | cy="30.585787" | ||
448 | 95 | fx="19.688505" | ||
449 | 96 | fy="30.585787" | ||
450 | 97 | r="4.6624851" /> | ||
451 | 98 | </defs> | ||
452 | 99 | <sodipodi:namedview | ||
453 | 100 | id="base" | ||
454 | 101 | pagecolor="#ffffff" | ||
455 | 102 | bordercolor="#666666" | ||
456 | 103 | borderopacity="1.0" | ||
457 | 104 | gridtolerance="10000" | ||
458 | 105 | guidetolerance="10" | ||
459 | 106 | objecttolerance="10" | ||
460 | 107 | inkscape:pageopacity="0.0" | ||
461 | 108 | inkscape:pageshadow="2" | ||
462 | 109 | inkscape:zoom="1" | ||
463 | 110 | inkscape:cx="197.95843" | ||
464 | 111 | inkscape:cy="28.49025" | ||
465 | 112 | inkscape:document-units="px" | ||
466 | 113 | inkscape:current-layer="layer2" | ||
467 | 114 | width="48px" | ||
468 | 115 | height="48px" | ||
469 | 116 | inkscape:window-width="872" | ||
470 | 117 | inkscape:window-height="624" | ||
471 | 118 | inkscape:window-x="684" | ||
472 | 119 | inkscape:window-y="208" | ||
473 | 120 | showborder="false" | ||
474 | 121 | inkscape:showpageshadow="false" | ||
475 | 122 | showgrid="false" | ||
476 | 123 | showguides="true" | ||
477 | 124 | inkscape:guide-bbox="true" | ||
478 | 125 | gridspacingx="0.5px" | ||
479 | 126 | gridspacingy="0.5px" | ||
480 | 127 | gridempspacing="2" | ||
481 | 128 | inkscape:grid-points="true" /> | ||
482 | 129 | <metadata | ||
483 | 130 | id="metadata5162"> | ||
484 | 131 | <rdf:RDF> | ||
485 | 132 | <cc:Work | ||
486 | 133 | rdf:about=""> | ||
487 | 134 | <dc:format>image/svg+xml</dc:format> | ||
488 | 135 | <dc:type | ||
489 | 136 | rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | ||
490 | 137 | <dc:title>System-log-out</dc:title> | ||
491 | 138 | <dc:date>2007-08-27</dc:date> | ||
492 | 139 | <dc:creator> | ||
493 | 140 | <cc:Agent> | ||
494 | 141 | <dc:title>Lapo Calamandrei</dc:title> | ||
495 | 142 | </cc:Agent> | ||
496 | 143 | </dc:creator> | ||
497 | 144 | <dc:source /> | ||
498 | 145 | <cc:license | ||
499 | 146 | rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" /> | ||
500 | 147 | <dc:contributor> | ||
501 | 148 | <cc:Agent> | ||
502 | 149 | <dc:title>Kalle Persson</dc:title> | ||
503 | 150 | </cc:Agent> | ||
504 | 151 | </dc:contributor> | ||
505 | 152 | <dc:subject> | ||
506 | 153 | <rdf:Bag> | ||
507 | 154 | <rdf:li>logout</rdf:li> | ||
508 | 155 | <rdf:li>exit</rdf:li> | ||
509 | 156 | <rdf:li>man</rdf:li> | ||
510 | 157 | <rdf:li>sign</rdf:li> | ||
511 | 158 | <rdf:li>running</rdf:li> | ||
512 | 159 | </rdf:Bag> | ||
513 | 160 | </dc:subject> | ||
514 | 161 | </cc:Work> | ||
515 | 162 | <cc:License | ||
516 | 163 | rdf:about="http://creativecommons.org/licenses/GPL/2.0/"> | ||
517 | 164 | <cc:permits | ||
518 | 165 | rdf:resource="http://web.resource.org/cc/Reproduction" /> | ||
519 | 166 | <cc:permits | ||
520 | 167 | rdf:resource="http://web.resource.org/cc/Distribution" /> | ||
521 | 168 | <cc:requires | ||
522 | 169 | rdf:resource="http://web.resource.org/cc/Notice" /> | ||
523 | 170 | <cc:permits | ||
524 | 171 | rdf:resource="http://web.resource.org/cc/DerivativeWorks" /> | ||
525 | 172 | <cc:requires | ||
526 | 173 | rdf:resource="http://web.resource.org/cc/ShareAlike" /> | ||
527 | 174 | <cc:requires | ||
528 | 175 | rdf:resource="http://web.resource.org/cc/SourceCode" /> | ||
529 | 176 | </cc:License> | ||
530 | 177 | </rdf:RDF> | ||
531 | 178 | </metadata> | ||
532 | 179 | <g | ||
533 | 180 | inkscape:label="shadow" | ||
534 | 181 | inkscape:groupmode="layer" | ||
535 | 182 | id="layer1" | ||
536 | 183 | style="display:inline"> | ||
537 | 184 | <g | ||
538 | 185 | id="g6227" | ||
539 | 186 | transform="matrix(0.6759778,0,0,0.8422279,-72.059226,25.879981)" | ||
540 | 187 | style="opacity:0.33000004" /> | ||
541 | 188 | <g | ||
542 | 189 | id="g7008" | ||
543 | 190 | style="opacity:0.5" | ||
544 | 191 | transform="matrix(1.2209709,0,0,1.465165,4.32932,-3.7089664)"> | ||
545 | 192 | <path | ||
546 | 193 | transform="matrix(1.356682,0,0,1.1785115,-7.0105312,-5.8165354)" | ||
547 | 194 | d="M 24.35099 30.585787 A 4.6624851 1.5026019 0 1 1 15.02602,30.585787 A 4.6624851 1.5026019 0 1 1 24.35099 30.585787 z" | ||
548 | 195 | sodipodi:ry="1.5026019" | ||
549 | 196 | sodipodi:rx="4.6624851" | ||
550 | 197 | sodipodi:cy="30.585787" | ||
551 | 198 | sodipodi:cx="19.688505" | ||
552 | 199 | id="path6984" | ||
553 | 200 | style="opacity:0.5;fill:url(#radialGradient7161);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.80000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.69999992;stroke-opacity:1" | ||
554 | 201 | sodipodi:type="arc" /> | ||
555 | 202 | <path | ||
556 | 203 | transform="matrix(3.7061179,0,0,1.3310245,-58.247641,-11.710432)" | ||
557 | 204 | d="M 24.35099 30.585787 A 4.6624851 1.5026019 0 1 1 15.02602,30.585787 A 4.6624851 1.5026019 0 1 1 24.35099 30.585787 z" | ||
558 | 205 | sodipodi:ry="1.5026019" | ||
559 | 206 | sodipodi:rx="4.6624851" | ||
560 | 207 | sodipodi:cy="30.585787" | ||
561 | 208 | sodipodi:cx="19.688505" | ||
562 | 209 | id="path6986" | ||
563 | 210 | style="opacity:0.25;fill:url(#radialGradient7163);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.80000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.69999992;stroke-opacity:1" | ||
564 | 211 | sodipodi:type="arc" /> | ||
565 | 212 | </g> | ||
566 | 213 | </g> | ||
567 | 214 | <g | ||
568 | 215 | inkscape:groupmode="layer" | ||
569 | 216 | id="layer2" | ||
570 | 217 | inkscape:label="omino"> | ||
571 | 218 | <g | ||
572 | 219 | id="g7138" | ||
573 | 220 | transform="translate(40,0)"> | ||
574 | 221 | <g | ||
575 | 222 | id="g7094"> | ||
576 | 223 | <path | ||
577 | 224 | id="path5955" | ||
578 | 225 | d="M -7.5,5.5 C -9.708,5.5 -11.5,7.292 -11.5,9.5 C -11.5,11.708 -9.7080001,13.5 -7.5,13.5 C -5.292,13.5 -3.5000001,11.708 -3.5,9.5 C -3.5,7.292 -5.2920001,5.5 -7.5,5.5 z M -20.6875,11.5 C -21.228728,11.552698 -21.725172,11.823486 -22.0625,12.25 L -26.0625,17.25 C -26.752856,18.112945 -26.612945,19.372144 -25.75,20.0625 C -24.887055,20.752856 -23.627856,20.612945 -22.9375,19.75 L -19.53125,15.5 L -15.75,15.5 L -22.1875,23.3125 C -22.420945,23.645583 -22.50685,24.06221 -22.5,24.5 L -22.5,31.5 L -30.5,31.5 L -30.5,35.5 L -20.5,35.5 C -19.395476,35.49989 -18.50011,34.604524 -18.5,33.5 L -18.5,27.3125 L -13.5,32.3125 L -13.5,40.5 L -9.5,40.5 L -9.5,31.5 L -9.5,30.65625 L -10.09375,30.09375 L -14.84375,25.34375 L -11.5,21.28125 L -11.5,22.5 C -11.49989,23.604524 -10.604524,24.49989 -9.5,24.5 L -2.5,24.5 C -1.778728,24.510201 -1.113613,24.122995 -0.75,23.5 C -0.386387,22.877006 -0.386387,22.122995 -0.75,21.5 C -1.113613,20.877004 -1.778728,20.489799 -2.5,20.5 L -7.5,20.5 L -7.5,16 C -10.390638,16 -12.843604,14.110886 -13.6875,11.5 L -20.5,11.5 C -20.562466,11.497069 -20.625034,11.497069 -20.6875,11.5 z " | ||
579 | 226 | style="opacity:1;fill:url(#linearGradient7145);fill-opacity:1;fill-rule:evenodd;stroke:#4e9a06;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" /> | ||
580 | 227 | </g> | ||
581 | 228 | <path | ||
582 | 229 | d="M -20.625,12.5 C -20.883516,12.532601 -21.119099,12.669978 -21.28125,12.875 L -25.28125,17.875 C -25.632167,18.313646 -25.563646,18.930333 -25.125,19.28125 C -24.686354,19.632167 -24.069667,19.563646 -23.71875,19.125 L -20.3125,14.875 C -20.122073,14.638438 -19.834933,14.500611 -19.53125,14.5 L -15.75,14.5 C -15.36741,14.504084 -15.020291,14.724946 -14.854508,15.069775 C -14.688724,15.414605 -14.733008,15.823641 -14.96875,16.125 L -21.375,23.875 C -21.378721,23.880309 -21.37135,23.900494 -21.375,23.90625 L -21.40625,23.9375 C -21.46879,24.048638 -21.50412,24.205427 -21.5,24.46875 C -21.499838,24.479166 -21.499838,24.489584 -21.5,24.5 L -21.5,31.5 C -21.503016,32.051031 -21.948969,32.496984 -22.5,32.5 L -29.5,32.5 L -29.5,34.5 L -20.5,34.5 C -19.938773,34.499944 -19.500056,34.061227 -19.5,33.5 L -19.5,27.3125 C -19.504078,26.903415 -19.259899,26.532643 -18.882467,26.374807 C -18.505035,26.216972 -18.069603,26.303544 -17.78125,26.59375 L -12.78125,31.59375 C -12.595622,31.786381 -12.494406,32.045043 -12.5,32.3125 L -12.5,39.5 L -10.5,39.5 L -10.5,31.5 L -10.5,31.09375 L -10.78125,30.8125 C -10.791666,30.812662 -10.802084,30.812662 -10.8125,30.8125 L -15.5625,26.0625 C -15.923992,25.696513 -15.95096,25.116711 -15.625,24.71875 L -12.28125,20.65625 C -12.013038,20.330928 -11.570348,20.207488 -11.172497,20.347084 C -10.774646,20.486681 -10.506139,20.859664 -10.5,21.28125 L -10.5,22.5 C -10.499944,23.061227 -10.061227,23.499944 -9.5,23.5 L -2.5,23.5 C -2.1471898,23.50499 -1.8109749,23.318639 -1.625,23 C -1.439414,22.682027 -1.4394134,22.317974 -1.625,22 C -1.8109749,21.68136 -2.1471889,21.49501 -2.5,21.5 L -7.5,21.5 C -8.0510308,21.496984 -8.4969843,21.051031 -8.5,20.5 L -8.5,16.84375 C -11.109944,16.483168 -13.278833,14.83457 -14.3125,12.5 L -20.5,12.5 C -20.520828,12.500648 -20.541672,12.500648 -20.5625,12.5 C -20.578034,12.499271 -20.578204,12.5 -20.59375,12.5 C -20.609296,12.5 -20.609466,12.499271 -20.625,12.5 z " | ||
583 | 230 | id="path7104" | ||
584 | 231 | style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#8ae234;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" | ||
585 | 232 | inkscape:original="M -20.6875 11.5 C -21.228728 11.552698 -21.725172 11.823486 -22.0625 12.25 L -26.0625 17.25 C -26.752856 18.112945 -26.612945 19.372144 -25.75 20.0625 C -24.887055 20.752856 -23.627856 20.612945 -22.9375 19.75 L -19.53125 15.5 L -15.75 15.5 L -22.1875 23.3125 C -22.420945 23.645583 -22.50685 24.06221 -22.5 24.5 L -22.5 31.5 L -30.5 31.5 L -30.5 35.5 L -20.5 35.5 C -19.395476 35.49989 -18.50011 34.604524 -18.5 33.5 L -18.5 27.3125 L -13.5 32.3125 L -13.5 40.5 L -9.5 40.5 L -9.5 31.5 L -9.5 30.65625 L -10.09375 30.09375 L -14.84375 25.34375 L -11.5 21.28125 L -11.5 22.5 C -11.49989 23.604524 -10.604524 24.49989 -9.5 24.5 L -2.5 24.5 C -1.778728 24.510201 -1.113613 24.122995 -0.75 23.5 C -0.386387 22.877006 -0.386387 22.122995 -0.75 21.5 C -1.113613 20.877004 -1.778728 20.489799 -2.5 20.5 L -7.5 20.5 L -7.5 16 C -10.390638 16 -12.843604 14.110886 -13.6875 11.5 L -20.5 11.5 C -20.562466 11.497069 -20.625034 11.497069 -20.6875 11.5 z " | ||
586 | 233 | inkscape:radius="-1.0054175" | ||
587 | 234 | sodipodi:type="inkscape:offset" /> | ||
588 | 235 | <path | ||
589 | 236 | sodipodi:nodetypes="cccccccsscccscccccccccccccsccccc" | ||
590 | 237 | id="path7106" | ||
591 | 238 | d="M -1.625,22 C -1.810975,21.68136 -2.147189,21.49501 -2.5,21.5 L -7.5,21.5 C -8.051031,21.496984 -8.496984,21.051031 -8.5,20.5 L -8.5,16.84375 C -11.109944,16.483168 -13.278833,14.83457 -14.3125,12.5 L -20.5,12.5 C -20.520828,12.500648 -20.541672,12.500648 -20.5625,12.5 C -20.578034,12.499271 -20.578204,12.5 -20.59375,12.5 C -20.609296,12.5 -20.609466,12.499271 -20.625,12.5 C -20.883516,12.532601 -21.119099,12.669978 -21.28125,12.875 L -25.28125,17.875 C -25.632167,18.313646 -25.563646,18.930333 -25.125,19.28125 M -10.5,31.5 L -10.5,31.09375 L -10.78125,30.8125 C -10.791666,30.812662 -10.802084,30.812662 -10.8125,30.8125 L -15.5625,26.0625 C -15.923992,25.696513 -15.95096,25.116711 -15.625,24.71875 M -12.5,32.3125 L -12.5,39.5 M -14.854508,15.069775 C -14.688724,15.414605 -14.733008,15.823641 -14.96875,16.125 L -21.375,23.875 C -21.378721,23.880309 -21.37135,23.900494 -21.375,23.90625 L -21.40625,23.9375 C -21.46879,24.048638 -21.50412,24.205427 -21.5,24.46875 C -21.499838,24.479166 -21.499838,24.489584 -21.5,24.5 L -21.5,31.5 C -21.503016,32.051031 -21.948969,32.496984 -22.5,32.5 L -29.5,32.5 L -29.5,34.5" | ||
592 | 239 | style="opacity:0.3;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;display:inline" /> | ||
593 | 240 | <path | ||
594 | 241 | inkscape:export-ydpi="90" | ||
595 | 242 | inkscape:export-xdpi="90" | ||
596 | 243 | inkscape:export-filename="/home/kalle/Desktop/system-log-out.png" | ||
597 | 244 | sodipodi:type="arc" | ||
598 | 245 | style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient7147);stroke-width:0.6666649;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | ||
599 | 246 | id="path7119" | ||
600 | 247 | sodipodi:cx="-31.5" | ||
601 | 248 | sodipodi:cy="16" | ||
602 | 249 | sodipodi:rx="2" | ||
603 | 250 | sodipodi:ry="2" | ||
604 | 251 | d="M -29.5 16 A 2 2 0 1 1 -33.5,16 A 2 2 0 1 1 -29.5 16 z" | ||
605 | 252 | transform="matrix(1.500004,0,0,1.500004,39.750134,-14.500064)" /> | ||
606 | 253 | </g> | ||
607 | 254 | <g | ||
608 | 255 | id="g7055" | ||
609 | 256 | transform="translate(130,0)"> | ||
610 | 257 | <path | ||
611 | 258 | sodipodi:nodetypes="ccc" | ||
612 | 259 | id="path7045" | ||
613 | 260 | d="M -28.5,33.5 L -20.5,33.5 L -20.5,24.5" | ||
614 | 261 | style="opacity:0.4089219;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" /> | ||
615 | 262 | <path | ||
616 | 263 | sodipodi:nodetypes="ccc" | ||
617 | 264 | id="path7047" | ||
618 | 265 | d="M -24.5,18.5 L -20.5,13.5 L -11.5,13.5" | ||
619 | 266 | style="opacity:0.5;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | ||
620 | 267 | <path | ||
621 | 268 | sodipodi:nodetypes="ccc" | ||
622 | 269 | id="path7049" | ||
623 | 270 | d="M -2.5,22.5 L -9.5,22.5 L -9.5,13.5" | ||
624 | 271 | style="opacity:0.5;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | ||
625 | 272 | <path | ||
626 | 273 | sodipodi:nodetypes="ccc" | ||
627 | 274 | id="path7051" | ||
628 | 275 | d="M -11.5,38.5 L -11.5,31.5 L -18.5,24.5" | ||
629 | 276 | style="opacity:0.5;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | ||
630 | 277 | <path | ||
631 | 278 | sodipodi:nodetypes="cc" | ||
632 | 279 | id="path7053" | ||
633 | 280 | d="M -10,14 L -19.5,25.5" | ||
634 | 281 | style="opacity:0.5;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | ||
635 | 282 | </g> | ||
636 | 283 | </g> | ||
637 | 284 | </svg> | ||
638 | 285 | 0 | ||
639 | === removed file 'data/icons/scalable/actions/system-restart.svg' | |||
640 | --- data/icons/scalable/actions/system-restart.svg 2009-08-07 19:10:15 +0000 | |||
641 | +++ data/icons/scalable/actions/system-restart.svg 1970-01-01 00:00:00 +0000 | |||
642 | @@ -1,397 +0,0 @@ | |||
643 | 1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
644 | 2 | <!-- Created with Inkscape (http://www.inkscape.org/) --> | ||
645 | 3 | <svg | ||
646 | 4 | xmlns:dc="http://purl.org/dc/elements/1.1/" | ||
647 | 5 | xmlns:cc="http://web.resource.org/cc/" | ||
648 | 6 | xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||
649 | 7 | xmlns:svg="http://www.w3.org/2000/svg" | ||
650 | 8 | xmlns="http://www.w3.org/2000/svg" | ||
651 | 9 | xmlns:xlink="http://www.w3.org/1999/xlink" | ||
652 | 10 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||
653 | 11 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||
654 | 12 | inkscape:export-ydpi="90.000000" | ||
655 | 13 | inkscape:export-xdpi="90.000000" | ||
656 | 14 | inkscape:export-filename="c:\Tango\git\view-refresh.png" | ||
657 | 15 | width="48" | ||
658 | 16 | height="48" | ||
659 | 17 | id="svg11300" | ||
660 | 18 | sodipodi:version="0.32" | ||
661 | 19 | inkscape:version="0.45" | ||
662 | 20 | sodipodi:docbase="/home/dobey/Projects/gnome-icon-theme/scalable/actions" | ||
663 | 21 | sodipodi:docname="view-refresh.svg" | ||
664 | 22 | version="1.0" | ||
665 | 23 | inkscape:r_cx="true" | ||
666 | 24 | inkscape:r_cy="true" | ||
667 | 25 | inkscape:output_extension="org.inkscape.output.svg.inkscape"> | ||
668 | 26 | <defs | ||
669 | 27 | id="defs3"> | ||
670 | 28 | <linearGradient | ||
671 | 29 | inkscape:collect="always" | ||
672 | 30 | id="linearGradient5335"> | ||
673 | 31 | <stop | ||
674 | 32 | style="stop-color:#ffffff;stop-opacity:1;" | ||
675 | 33 | offset="0" | ||
676 | 34 | id="stop5337" /> | ||
677 | 35 | <stop | ||
678 | 36 | style="stop-color:#ffffff;stop-opacity:0;" | ||
679 | 37 | offset="1" | ||
680 | 38 | id="stop5339" /> | ||
681 | 39 | </linearGradient> | ||
682 | 40 | <linearGradient | ||
683 | 41 | id="linearGradient5313"> | ||
684 | 42 | <stop | ||
685 | 43 | id="stop5315" | ||
686 | 44 | offset="0" | ||
687 | 45 | style="stop-color:#99b8df;stop-opacity:1" /> | ||
688 | 46 | <stop | ||
689 | 47 | style="stop-color:#3969a8;stop-opacity:1;" | ||
690 | 48 | offset="0.23705086" | ||
691 | 49 | id="stop5333" /> | ||
692 | 50 | <stop | ||
693 | 51 | style="stop-color:#4f7eba;stop-opacity:1;" | ||
694 | 52 | offset="0.54706067" | ||
695 | 53 | id="stop5317" /> | ||
696 | 54 | <stop | ||
697 | 55 | id="stop5321" | ||
698 | 56 | offset="0.74557692" | ||
699 | 57 | style="stop-color:#96b6d7;stop-opacity:1" /> | ||
700 | 58 | <stop | ||
701 | 59 | style="stop-color:#a0bddc;stop-opacity:1" | ||
702 | 60 | offset="0.87321436" | ||
703 | 61 | id="stop5331" /> | ||
704 | 62 | <stop | ||
705 | 63 | id="stop5319" | ||
706 | 64 | offset="1" | ||
707 | 65 | style="stop-color:#729fcf;stop-opacity:1;" /> | ||
708 | 66 | </linearGradient> | ||
709 | 67 | <linearGradient | ||
710 | 68 | id="linearGradient8152"> | ||
711 | 69 | <stop | ||
712 | 70 | style="stop-color:#3465a4;stop-opacity:1;" | ||
713 | 71 | offset="0" | ||
714 | 72 | id="stop8154" /> | ||
715 | 73 | <stop | ||
716 | 74 | id="stop3174" | ||
717 | 75 | offset="0.5" | ||
718 | 76 | style="stop-color:#4f7eba;stop-opacity:1;" /> | ||
719 | 77 | <stop | ||
720 | 78 | style="stop-color:#729fcf;stop-opacity:1;" | ||
721 | 79 | offset="1" | ||
722 | 80 | id="stop8156" /> | ||
723 | 81 | </linearGradient> | ||
724 | 82 | <linearGradient | ||
725 | 83 | id="linearGradient3207"> | ||
726 | 84 | <stop | ||
727 | 85 | style="stop-color:#eeeeec;stop-opacity:0.47058824;" | ||
728 | 86 | offset="0" | ||
729 | 87 | id="stop3209" /> | ||
730 | 88 | <stop | ||
731 | 89 | style="stop-color:#eeeeec;stop-opacity:0;" | ||
732 | 90 | offset="1" | ||
733 | 91 | id="stop3211" /> | ||
734 | 92 | </linearGradient> | ||
735 | 93 | <linearGradient | ||
736 | 94 | inkscape:collect="always" | ||
737 | 95 | id="linearGradient2847"> | ||
738 | 96 | <stop | ||
739 | 97 | style="stop-color:#3465a4;stop-opacity:1;" | ||
740 | 98 | offset="0" | ||
741 | 99 | id="stop2849" /> | ||
742 | 100 | <stop | ||
743 | 101 | style="stop-color:#3465a4;stop-opacity:0;" | ||
744 | 102 | offset="1" | ||
745 | 103 | id="stop2851" /> | ||
746 | 104 | </linearGradient> | ||
747 | 105 | <linearGradient | ||
748 | 106 | id="linearGradient2831"> | ||
749 | 107 | <stop | ||
750 | 108 | style="stop-color:#3465a4;stop-opacity:1;" | ||
751 | 109 | offset="0" | ||
752 | 110 | id="stop2833" /> | ||
753 | 111 | <stop | ||
754 | 112 | id="stop2855" | ||
755 | 113 | offset="0.33333334" | ||
756 | 114 | style="stop-color:#5b86be;stop-opacity:1;" /> | ||
757 | 115 | <stop | ||
758 | 116 | style="stop-color:#83a8d8;stop-opacity:0;" | ||
759 | 117 | offset="1" | ||
760 | 118 | id="stop2835" /> | ||
761 | 119 | </linearGradient> | ||
762 | 120 | <linearGradient | ||
763 | 121 | inkscape:collect="always" | ||
764 | 122 | id="linearGradient8662"> | ||
765 | 123 | <stop | ||
766 | 124 | style="stop-color:#000000;stop-opacity:1;" | ||
767 | 125 | offset="0" | ||
768 | 126 | id="stop8664" /> | ||
769 | 127 | <stop | ||
770 | 128 | style="stop-color:#000000;stop-opacity:0;" | ||
771 | 129 | offset="1" | ||
772 | 130 | id="stop8666" /> | ||
773 | 131 | </linearGradient> | ||
774 | 132 | <linearGradient | ||
775 | 133 | inkscape:collect="always" | ||
776 | 134 | xlink:href="#linearGradient2831" | ||
777 | 135 | id="linearGradient1486" | ||
778 | 136 | gradientUnits="userSpaceOnUse" | ||
779 | 137 | gradientTransform="matrix(1.0818662,0,0,1.1166851,-0.8207482,-1.8622434)" | ||
780 | 138 | x1="13.478554" | ||
781 | 139 | y1="10.612206" | ||
782 | 140 | x2="15.419417" | ||
783 | 141 | y2="19.115122" /> | ||
784 | 142 | <linearGradient | ||
785 | 143 | inkscape:collect="always" | ||
786 | 144 | xlink:href="#linearGradient2847" | ||
787 | 145 | id="linearGradient1488" | ||
788 | 146 | gradientUnits="userSpaceOnUse" | ||
789 | 147 | gradientTransform="matrix(-1.0818662,0,0,-1.1166851,50.09459,49.644854)" | ||
790 | 148 | x1="37.128052" | ||
791 | 149 | y1="29.729605" | ||
792 | 150 | x2="37.40255" | ||
793 | 151 | y2="26.800913" /> | ||
794 | 152 | <radialGradient | ||
795 | 153 | inkscape:collect="always" | ||
796 | 154 | xlink:href="#linearGradient8662" | ||
797 | 155 | id="radialGradient1503" | ||
798 | 156 | gradientUnits="userSpaceOnUse" | ||
799 | 157 | gradientTransform="matrix(1,0,0,0.536723,0,16.87306)" | ||
800 | 158 | cx="24.837126" | ||
801 | 159 | cy="36.421127" | ||
802 | 160 | fx="24.837126" | ||
803 | 161 | fy="36.421127" | ||
804 | 162 | r="15.644737" /> | ||
805 | 163 | <linearGradient | ||
806 | 164 | inkscape:collect="always" | ||
807 | 165 | xlink:href="#linearGradient8152" | ||
808 | 166 | id="linearGradient8158" | ||
809 | 167 | x1="49.412277" | ||
810 | 168 | y1="37.904068" | ||
811 | 169 | x2="11.881318" | ||
812 | 170 | y2="19.776045" | ||
813 | 171 | gradientUnits="userSpaceOnUse" /> | ||
814 | 172 | <linearGradient | ||
815 | 173 | inkscape:collect="always" | ||
816 | 174 | xlink:href="#linearGradient2831" | ||
817 | 175 | id="linearGradient8170" | ||
818 | 176 | gradientUnits="userSpaceOnUse" | ||
819 | 177 | gradientTransform="matrix(-1.0818662,0,0,-1.1166851,48.639854,47.862243)" | ||
820 | 178 | x1="13.478554" | ||
821 | 179 | y1="10.612206" | ||
822 | 180 | x2="15.419417" | ||
823 | 181 | y2="19.115122" /> | ||
824 | 182 | <linearGradient | ||
825 | 183 | inkscape:collect="always" | ||
826 | 184 | xlink:href="#linearGradient2847" | ||
827 | 185 | id="linearGradient8172" | ||
828 | 186 | gradientUnits="userSpaceOnUse" | ||
829 | 187 | gradientTransform="matrix(1.0818662,0,0,1.1166851,-2.2754847,-3.644854)" | ||
830 | 188 | x1="37.128052" | ||
831 | 189 | y1="29.729605" | ||
832 | 190 | x2="37.40255" | ||
833 | 191 | y2="26.800913" /> | ||
834 | 192 | <linearGradient | ||
835 | 193 | inkscape:collect="always" | ||
836 | 194 | xlink:href="#linearGradient8152" | ||
837 | 195 | id="linearGradient8174" | ||
838 | 196 | gradientUnits="userSpaceOnUse" | ||
839 | 197 | x1="49.412277" | ||
840 | 198 | y1="37.904068" | ||
841 | 199 | x2="11.881318" | ||
842 | 200 | y2="19.776045" /> | ||
843 | 201 | <linearGradient | ||
844 | 202 | inkscape:collect="always" | ||
845 | 203 | xlink:href="#linearGradient3207" | ||
846 | 204 | id="linearGradient8178" | ||
847 | 205 | gradientUnits="userSpaceOnUse" | ||
848 | 206 | x1="5.8925977" | ||
849 | 207 | y1="20.540676" | ||
850 | 208 | x2="45.198921" | ||
851 | 209 | y2="27.721035" /> | ||
852 | 210 | <linearGradient | ||
853 | 211 | inkscape:collect="always" | ||
854 | 212 | xlink:href="#linearGradient5313" | ||
855 | 213 | id="linearGradient8180" | ||
856 | 214 | gradientUnits="userSpaceOnUse" | ||
857 | 215 | x1="61.572533" | ||
858 | 216 | y1="28.049652" | ||
859 | 217 | x2="10.969182" | ||
860 | 218 | y2="20.333939" /> | ||
861 | 219 | <linearGradient | ||
862 | 220 | inkscape:collect="always" | ||
863 | 221 | xlink:href="#linearGradient5335" | ||
864 | 222 | id="linearGradient5341" | ||
865 | 223 | x1="8.6878577" | ||
866 | 224 | y1="25.265626" | ||
867 | 225 | x2="52.122673" | ||
868 | 226 | y2="25.265626" | ||
869 | 227 | gradientUnits="userSpaceOnUse" /> | ||
870 | 228 | </defs> | ||
871 | 229 | <sodipodi:namedview | ||
872 | 230 | stroke="#3465a4" | ||
873 | 231 | fill="#729fcf" | ||
874 | 232 | id="base" | ||
875 | 233 | pagecolor="#ffffff" | ||
876 | 234 | bordercolor="#e8e8e8" | ||
877 | 235 | borderopacity="0.86666667" | ||
878 | 236 | inkscape:pageopacity="0.0" | ||
879 | 237 | inkscape:pageshadow="2" | ||
880 | 238 | inkscape:zoom="1" | ||
881 | 239 | inkscape:cx="48.628749" | ||
882 | 240 | inkscape:cy="21.704614" | ||
883 | 241 | inkscape:current-layer="layer1" | ||
884 | 242 | showgrid="true" | ||
885 | 243 | inkscape:grid-bbox="true" | ||
886 | 244 | inkscape:document-units="px" | ||
887 | 245 | inkscape:showpageshadow="false" | ||
888 | 246 | inkscape:window-width="892" | ||
889 | 247 | inkscape:window-height="938" | ||
890 | 248 | inkscape:window-x="374" | ||
891 | 249 | inkscape:window-y="37" | ||
892 | 250 | width="48px" | ||
893 | 251 | height="48px" | ||
894 | 252 | borderlayer="true" /> | ||
895 | 253 | <metadata | ||
896 | 254 | id="metadata4"> | ||
897 | 255 | <rdf:RDF> | ||
898 | 256 | <cc:Work | ||
899 | 257 | rdf:about=""> | ||
900 | 258 | <dc:format>image/svg+xml</dc:format> | ||
901 | 259 | <dc:type | ||
902 | 260 | rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | ||
903 | 261 | <dc:creator> | ||
904 | 262 | <cc:Agent> | ||
905 | 263 | <dc:title>Jakub Steiner</dc:title> | ||
906 | 264 | </cc:Agent> | ||
907 | 265 | </dc:creator> | ||
908 | 266 | <dc:source>http://jimmac.musichall.cz</dc:source> | ||
909 | 267 | <cc:license | ||
910 | 268 | rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" /> | ||
911 | 269 | <dc:title>View Refresh</dc:title> | ||
912 | 270 | <dc:subject> | ||
913 | 271 | <rdf:Bag> | ||
914 | 272 | <rdf:li>reload</rdf:li> | ||
915 | 273 | <rdf:li>refresh</rdf:li> | ||
916 | 274 | <rdf:li>view</rdf:li> | ||
917 | 275 | </rdf:Bag> | ||
918 | 276 | </dc:subject> | ||
919 | 277 | <dc:contributor> | ||
920 | 278 | <cc:Agent> | ||
921 | 279 | <dc:title>Ricardo 'Rick' González</dc:title> | ||
922 | 280 | </cc:Agent> | ||
923 | 281 | </dc:contributor> | ||
924 | 282 | </cc:Work> | ||
925 | 283 | <cc:License | ||
926 | 284 | rdf:about="http://creativecommons.org/licenses/GPL/2.0/"> | ||
927 | 285 | <cc:permits | ||
928 | 286 | rdf:resource="http://web.resource.org/cc/Reproduction" /> | ||
929 | 287 | <cc:permits | ||
930 | 288 | rdf:resource="http://web.resource.org/cc/Distribution" /> | ||
931 | 289 | <cc:requires | ||
932 | 290 | rdf:resource="http://web.resource.org/cc/Notice" /> | ||
933 | 291 | <cc:permits | ||
934 | 292 | rdf:resource="http://web.resource.org/cc/DerivativeWorks" /> | ||
935 | 293 | <cc:requires | ||
936 | 294 | rdf:resource="http://web.resource.org/cc/ShareAlike" /> | ||
937 | 295 | <cc:requires | ||
938 | 296 | rdf:resource="http://web.resource.org/cc/SourceCode" /> | ||
939 | 297 | </cc:License> | ||
940 | 298 | </rdf:RDF> | ||
941 | 299 | </metadata> | ||
942 | 300 | <g | ||
943 | 301 | id="layer1" | ||
944 | 302 | inkscape:label="Layer 1" | ||
945 | 303 | inkscape:groupmode="layer" | ||
946 | 304 | inkscape:r_cx="true" | ||
947 | 305 | inkscape:r_cy="true"> | ||
948 | 306 | <path | ||
949 | 307 | transform="matrix(-1.5146484,0,0,-0.7917058,60.923237,69.528413)" | ||
950 | 308 | d="M 40.481863 36.421127 A 15.644737 8.3968935 0 1 1 9.1923885,36.421127 A 15.644737 8.3968935 0 1 1 40.481863 36.421127 z" | ||
951 | 309 | sodipodi:ry="8.3968935" | ||
952 | 310 | sodipodi:rx="15.644737" | ||
953 | 311 | sodipodi:cy="36.421127" | ||
954 | 312 | sodipodi:cx="24.837126" | ||
955 | 313 | id="path8660" | ||
956 | 314 | style="opacity:0.36111109;color:#000000;fill:url(#radialGradient1503);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" | ||
957 | 315 | sodipodi:type="arc" | ||
958 | 316 | inkscape:r_cx="true" | ||
959 | 317 | inkscape:r_cy="true" /> | ||
960 | 318 | <path | ||
961 | 319 | style="color:#000000;fill:url(#linearGradient1486);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient1488);stroke-width:1.04300582000000008;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible;opacity:0.51807229" | ||
962 | 320 | d="M 20.478497,9.7711467 C 20.478497,9.7711467 12.632988,7.9438002 14.368023,21.024298 L 5.1028658,21.024298 C 5.1028658,21.024298 6.0085332,7.5377773 20.478497,9.7711467 z " | ||
963 | 321 | id="path2865" | ||
964 | 322 | inkscape:r_cx="true" | ||
965 | 323 | inkscape:r_cy="true" | ||
966 | 324 | sodipodi:nodetypes="cccc" /> | ||
967 | 325 | <g | ||
968 | 326 | id="g1878" | ||
969 | 327 | transform="matrix(-0.6129282,-0.5154381,-0.5178496,0.610074,58.686164,13.911361)" | ||
970 | 328 | inkscape:r_cx="true" | ||
971 | 329 | inkscape:r_cy="true" | ||
972 | 330 | style="fill:url(#linearGradient8158);fill-opacity:1;stroke:#204a87;stroke-width:1.24932528;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"> | ||
973 | 331 | <path | ||
974 | 332 | sodipodi:nodetypes="ccccccc" | ||
975 | 333 | id="path1880" | ||
976 | 334 | d="M 45.862102,50.273522 C 62.924432,34.96305 47.150241,15.929711 22.760624,12.513943 L 22.113577,3.1522143 L 7.613534,20.510135 L 22.703188,33.23244 C 22.703188,33.23244 22.454828,23.347105 22.454828,23.347105 C 41.289895,24.339584 54.775794,35.675041 45.862102,50.273522 z " | ||
977 | 335 | style="opacity:1;color:#000000;fill:url(#linearGradient8180);fill-opacity:1;fill-rule:nonzero;stroke:#204a87;stroke-width:1.24977946000000006;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | ||
978 | 336 | inkscape:r_cx="true" | ||
979 | 337 | inkscape:r_cy="true" /> | ||
980 | 338 | </g> | ||
981 | 339 | <g | ||
982 | 340 | style="fill:none;fill-opacity:1;stroke:url(#linearGradient5341);stroke-width:1.24928653000000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;opacity:0.54819277" | ||
983 | 341 | inkscape:r_cy="true" | ||
984 | 342 | inkscape:r_cx="true" | ||
985 | 343 | transform="matrix(-0.612811,-0.5154406,-0.5177506,0.6100769,58.675633,13.911365)" | ||
986 | 344 | id="g3185"> | ||
987 | 345 | <path | ||
988 | 346 | sodipodi:type="inkscape:offset" | ||
989 | 347 | inkscape:radius="-1.197237" | ||
990 | 348 | inkscape:original="M 22.125 3.15625 L 7.625 20.5 L 22.71875 33.21875 C 22.718749 33.21875 22.46875 23.34375 22.46875 23.34375 C 41.298509 24.342727 54.468144 35.661007 45.5625 50.25 C 62.614067 34.952315 46.852277 15.923275 22.46875 12.5 L 22.125 3.15625 z " | ||
991 | 349 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient5341);stroke-width:1.24928653000000001;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | ||
992 | 350 | id="path3189" | ||
993 | 351 | d="M 21.0625,6.3125 L 9.3125,20.34375 L 21.46875,30.59375 C 21.39688,27.754893 21.28125,23.375 21.28125,23.375 C 21.27502,23.044409 21.405774,22.725958 21.642519,22.495132 C 21.879264,22.264306 22.200923,22.141654 22.53125,22.15625 C 32.170255,22.667629 40.441027,25.773015 45.28125,30.875 C 48.676469,34.453835 50.102049,39.131532 49.125,44.21875 C 50.368339,42.205641 51.107893,40.194594 51.375,38.21875 C 51.870422,34.55401 50.856988,30.946652 48.5625,27.59375 C 43.973525,20.887947 34.236978,15.361613 22.3125,13.6875 C 21.732114,13.606381 21.295727,13.117098 21.28125,12.53125 L 21.0625,6.3125 z " | ||
994 | 352 | transform="translate(1.0080026e-6,8.5223784e-7)" /> | ||
995 | 353 | </g> | ||
996 | 354 | <g | ||
997 | 355 | id="g2424" | ||
998 | 356 | transform="matrix(0.190868,0.16126,0.16126,-0.190868,-0.719083,15.30613)" | ||
999 | 357 | inkscape:r_cx="true" | ||
1000 | 358 | inkscape:r_cy="true" | ||
1001 | 359 | style="opacity:0.5;fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1" /> | ||
1002 | 360 | <path | ||
1003 | 361 | sodipodi:nodetypes="cccc" | ||
1004 | 362 | inkscape:r_cy="true" | ||
1005 | 363 | inkscape:r_cx="true" | ||
1006 | 364 | id="path8160" | ||
1007 | 365 | d="M 27.340608,36.228853 C 27.340608,36.228853 35.186117,38.0562 33.451082,24.975702 L 42.71624,24.975702 C 42.71624,24.975702 41.810572,38.462223 27.340608,36.228853 z " | ||
1008 | 366 | style="color:#000000;fill:url(#linearGradient8170);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient8172);stroke-width:1.04300582000000008;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible;opacity:0.51807229" /> | ||
1009 | 367 | <g | ||
1010 | 368 | style="fill:url(#linearGradient8174);fill-opacity:1;stroke:#204a87;stroke-width:1.24932528;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
1011 | 369 | inkscape:r_cy="true" | ||
1012 | 370 | inkscape:r_cx="true" | ||
1013 | 371 | transform="matrix(0.6101332,0.5154999,0.5154881,-0.6101471,-10.618024,32.088556)" | ||
1014 | 372 | id="g8162"> | ||
1015 | 373 | <path | ||
1016 | 374 | inkscape:r_cy="true" | ||
1017 | 375 | inkscape:r_cx="true" | ||
1018 | 376 | style="opacity:1;color:#000000;fill:url(#linearGradient8180);fill-opacity:1;fill-rule:nonzero;stroke:#204a87;stroke-width:1.25256376;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible;enable-background:accumulate" | ||
1019 | 377 | d="M 45.862102,50.273522 C 62.924432,34.96305 47.150241,15.929711 22.760624,12.513943 L 22.113577,3.1522141 L 7.6135337,20.510135 L 22.703188,33.23244 C 22.703188,33.23244 22.454828,23.347105 22.454828,23.347105 C 41.289895,24.339584 54.775794,35.675041 45.862102,50.273522 z " | ||
1020 | 378 | id="path8164" | ||
1021 | 379 | sodipodi:nodetypes="ccccccc" /> | ||
1022 | 380 | </g> | ||
1023 | 381 | <g | ||
1024 | 382 | id="g8166" | ||
1025 | 383 | transform="matrix(0.6128107,0.5154406,0.5177504,-0.6100769,-10.856505,32.088635)" | ||
1026 | 384 | inkscape:r_cx="true" | ||
1027 | 385 | inkscape:r_cy="true" | ||
1028 | 386 | style="fill:none;fill-opacity:1;stroke:#204a87;stroke-width:1.24928653;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"> | ||
1029 | 387 | <path | ||
1030 | 388 | transform="matrix(0.9972307,-2.4605589e-3,-2.4605593e-3,0.9980642,0.2457029,0.2077351)" | ||
1031 | 389 | d="M 21.0625,6.3125 L 9.3125,20.34375 L 21.46875,30.59375 C 21.39688,27.754893 21.28125,23.375 21.28125,23.375 C 21.27502,23.044409 21.405774,22.725958 21.642519,22.495132 C 21.879264,22.264306 22.200923,22.141654 22.53125,22.15625 C 32.170255,22.667629 40.441027,25.773015 45.28125,30.875 C 48.676469,34.453835 50.102049,39.131532 49.125,44.21875 C 50.368339,42.205641 51.107893,40.194594 51.375,38.21875 C 51.870422,34.55401 50.856988,30.946652 48.5625,27.59375 C 43.973525,20.887947 34.236978,15.361613 22.3125,13.6875 C 21.732114,13.606381 21.295727,13.117098 21.28125,12.53125 L 21.0625,6.3125 z " | ||
1032 | 390 | id="path8168" | ||
1033 | 391 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient8178);stroke-width:1.24973191;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.70588235;visibility:visible;display:block;overflow:visible" | ||
1034 | 392 | inkscape:original="M 22.125 3.15625 L 7.625 20.5 L 22.71875 33.21875 C 22.718749 33.21875 22.46875 23.34375 22.46875 23.34375 C 41.298509 24.342727 54.468144 35.661007 45.5625 50.25 C 62.614067 34.952315 46.852277 15.923275 22.46875 12.5 L 22.125 3.15625 z " | ||
1035 | 393 | inkscape:radius="-1.197237" | ||
1036 | 394 | sodipodi:type="inkscape:offset" /> | ||
1037 | 395 | </g> | ||
1038 | 396 | </g> | ||
1039 | 397 | </svg> | ||
1040 | 398 | 0 | ||
1041 | === removed file 'data/icons/scalable/actions/system-shutdown-panel.svg' | |||
1042 | --- data/icons/scalable/actions/system-shutdown-panel.svg 2009-10-06 22:51:09 +0000 | |||
1043 | +++ data/icons/scalable/actions/system-shutdown-panel.svg 1970-01-01 00:00:00 +0000 | |||
1044 | @@ -1,247 +0,0 @@ | |||
1045 | 1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
1046 | 2 | <!-- Created with Inkscape (http://www.inkscape.org/) --> | ||
1047 | 3 | <svg | ||
1048 | 4 | xmlns:dc="http://purl.org/dc/elements/1.1/" | ||
1049 | 5 | xmlns:cc="http://web.resource.org/cc/" | ||
1050 | 6 | xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||
1051 | 7 | xmlns:svg="http://www.w3.org/2000/svg" | ||
1052 | 8 | xmlns="http://www.w3.org/2000/svg" | ||
1053 | 9 | xmlns:xlink="http://www.w3.org/1999/xlink" | ||
1054 | 10 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||
1055 | 11 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||
1056 | 12 | sodipodi:docname="gnome-shutdown.svg" | ||
1057 | 13 | sodipodi:docbase="/home/dobey/Projects/gnome-icon-theme/scalable/apps" | ||
1058 | 14 | inkscape:version="0.45" | ||
1059 | 15 | sodipodi:version="0.32" | ||
1060 | 16 | id="svg11142" | ||
1061 | 17 | height="48" | ||
1062 | 18 | width="48" | ||
1063 | 19 | version="1.0" | ||
1064 | 20 | inkscape:output_extension="org.inkscape.output.svg.inkscape"> | ||
1065 | 21 | <defs | ||
1066 | 22 | id="defs3"> | ||
1067 | 23 | <linearGradient | ||
1068 | 24 | id="linearGradient4749"> | ||
1069 | 25 | <stop | ||
1070 | 26 | id="stop4751" | ||
1071 | 27 | offset="0" | ||
1072 | 28 | style="stop-color:#ffffff;stop-opacity:1;" /> | ||
1073 | 29 | <stop | ||
1074 | 30 | style="stop-color:#ffffff;stop-opacity:0.0000000;" | ||
1075 | 31 | offset="0.50000000" | ||
1076 | 32 | id="stop4757" /> | ||
1077 | 33 | <stop | ||
1078 | 34 | id="stop4753" | ||
1079 | 35 | offset="1.0000000" | ||
1080 | 36 | style="stop-color:#ffffff;stop-opacity:1.0000000;" /> | ||
1081 | 37 | </linearGradient> | ||
1082 | 38 | <linearGradient | ||
1083 | 39 | id="linearGradient11264" | ||
1084 | 40 | inkscape:collect="always"> | ||
1085 | 41 | <stop | ||
1086 | 42 | id="stop11266" | ||
1087 | 43 | offset="0" | ||
1088 | 44 | style="stop-color:#000000;stop-opacity:1;" /> | ||
1089 | 45 | <stop | ||
1090 | 46 | id="stop11268" | ||
1091 | 47 | offset="1" | ||
1092 | 48 | style="stop-color:#000000;stop-opacity:0;" /> | ||
1093 | 49 | </linearGradient> | ||
1094 | 50 | <linearGradient | ||
1095 | 51 | id="linearGradient11178"> | ||
1096 | 52 | <stop | ||
1097 | 53 | style="stop-color:#d1d1cc;stop-opacity:1.0000000;" | ||
1098 | 54 | offset="0.0000000" | ||
1099 | 55 | id="stop11180" /> | ||
1100 | 56 | <stop | ||
1101 | 57 | id="stop4735" | ||
1102 | 58 | offset="0.50000000" | ||
1103 | 59 | style="stop-color:#d1d1d1;stop-opacity:1.0000000;" /> | ||
1104 | 60 | <stop | ||
1105 | 61 | style="stop-color:#b9b9b9;stop-opacity:1.0000000;" | ||
1106 | 62 | offset="1.0000000" | ||
1107 | 63 | id="stop11188" /> | ||
1108 | 64 | </linearGradient> | ||
1109 | 65 | <linearGradient | ||
1110 | 66 | id="linearGradient11164"> | ||
1111 | 67 | <stop | ||
1112 | 68 | id="stop11166" | ||
1113 | 69 | offset="0" | ||
1114 | 70 | style="stop-color:#eeeeec;stop-opacity:1;" /> | ||
1115 | 71 | <stop | ||
1116 | 72 | style="stop-color:#c6c6bf;stop-opacity:1.0000000;" | ||
1117 | 73 | offset="0.26988637" | ||
1118 | 74 | id="stop11172" /> | ||
1119 | 75 | <stop | ||
1120 | 76 | id="stop11176" | ||
1121 | 77 | offset="0.37900311" | ||
1122 | 78 | style="stop-color:#f9f9f8;stop-opacity:1.0000000;" /> | ||
1123 | 79 | <stop | ||
1124 | 80 | id="stop11174" | ||
1125 | 81 | offset="0.75000000" | ||
1126 | 82 | style="stop-color:#c8c8c2;stop-opacity:1.0000000;" /> | ||
1127 | 83 | <stop | ||
1128 | 84 | id="stop11168" | ||
1129 | 85 | offset="1.0000000" | ||
1130 | 86 | style="stop-color:#eeeeec;stop-opacity:1.0000000;" /> | ||
1131 | 87 | </linearGradient> | ||
1132 | 88 | <linearGradient | ||
1133 | 89 | gradientUnits="userSpaceOnUse" | ||
1134 | 90 | y2="23.071428" | ||
1135 | 91 | x2="42.471249" | ||
1136 | 92 | y1="23.071428" | ||
1137 | 93 | x1="7.1433797" | ||
1138 | 94 | id="linearGradient11170" | ||
1139 | 95 | xlink:href="#linearGradient11164" | ||
1140 | 96 | inkscape:collect="always" /> | ||
1141 | 97 | <radialGradient | ||
1142 | 98 | gradientTransform="matrix(1.364252,-9.115392e-17,9.115392e-17,1.364252,-9.47947,-5.618016)" | ||
1143 | 99 | gradientUnits="userSpaceOnUse" | ||
1144 | 100 | r="18.672388" | ||
1145 | 101 | fy="17.224812" | ||
1146 | 102 | fx="24.673435" | ||
1147 | 103 | cy="17.224812" | ||
1148 | 104 | cx="24.673435" | ||
1149 | 105 | id="radialGradient11234" | ||
1150 | 106 | xlink:href="#linearGradient11178" | ||
1151 | 107 | inkscape:collect="always" /> | ||
1152 | 108 | <radialGradient | ||
1153 | 109 | gradientUnits="userSpaceOnUse" | ||
1154 | 110 | r="18.214285" | ||
1155 | 111 | fy="23.071428" | ||
1156 | 112 | fx="25.785715" | ||
1157 | 113 | cy="23.071428" | ||
1158 | 114 | cx="25.785715" | ||
1159 | 115 | id="radialGradient11270" | ||
1160 | 116 | xlink:href="#linearGradient11264" | ||
1161 | 117 | inkscape:collect="always" /> | ||
1162 | 118 | <linearGradient | ||
1163 | 119 | gradientUnits="userSpaceOnUse" | ||
1164 | 120 | y2="8.5882788" | ||
1165 | 121 | x2="25.785715" | ||
1166 | 122 | y1="21.978363" | ||
1167 | 123 | x1="25.785715" | ||
1168 | 124 | id="linearGradient4755" | ||
1169 | 125 | xlink:href="#linearGradient4749" | ||
1170 | 126 | inkscape:collect="always" /> | ||
1171 | 127 | </defs> | ||
1172 | 128 | <sodipodi:namedview | ||
1173 | 129 | inkscape:window-y="423" | ||
1174 | 130 | inkscape:window-x="840" | ||
1175 | 131 | inkscape:window-height="606" | ||
1176 | 132 | inkscape:window-width="750" | ||
1177 | 133 | stroke="#555753" | ||
1178 | 134 | fill="#edd400" | ||
1179 | 135 | inkscape:showpageshadow="false" | ||
1180 | 136 | inkscape:document-units="px" | ||
1181 | 137 | inkscape:grid-bbox="true" | ||
1182 | 138 | showgrid="false" | ||
1183 | 139 | inkscape:current-layer="layer1" | ||
1184 | 140 | inkscape:cy="-10.815272" | ||
1185 | 141 | inkscape:cx="85.353158" | ||
1186 | 142 | inkscape:zoom="1" | ||
1187 | 143 | inkscape:pageshadow="2" | ||
1188 | 144 | inkscape:pageopacity="0.0" | ||
1189 | 145 | borderopacity="0.32941176" | ||
1190 | 146 | bordercolor="#666666" | ||
1191 | 147 | pagecolor="#ffffff" | ||
1192 | 148 | id="base" | ||
1193 | 149 | showguides="true" | ||
1194 | 150 | inkscape:guide-bbox="true" /> | ||
1195 | 151 | <metadata | ||
1196 | 152 | id="metadata4"> | ||
1197 | 153 | <rdf:RDF> | ||
1198 | 154 | <cc:Work | ||
1199 | 155 | rdf:about=""> | ||
1200 | 156 | <dc:format>image/svg+xml</dc:format> | ||
1201 | 157 | <dc:type | ||
1202 | 158 | rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | ||
1203 | 159 | <dc:title>Shutdown</dc:title> | ||
1204 | 160 | <dc:creator> | ||
1205 | 161 | <cc:Agent> | ||
1206 | 162 | <dc:title>Jakub Steiner</dc:title> | ||
1207 | 163 | </cc:Agent> | ||
1208 | 164 | </dc:creator> | ||
1209 | 165 | <cc:license | ||
1210 | 166 | rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" /> | ||
1211 | 167 | <dc:source>http://jimmac.musichall.cz</dc:source> | ||
1212 | 168 | <dc:subject> | ||
1213 | 169 | <rdf:Bag> | ||
1214 | 170 | <rdf:li>lock</rdf:li> | ||
1215 | 171 | <rdf:li>key</rdf:li> | ||
1216 | 172 | <rdf:li>secure</rdf:li> | ||
1217 | 173 | </rdf:Bag> | ||
1218 | 174 | </dc:subject> | ||
1219 | 175 | </cc:Work> | ||
1220 | 176 | <cc:License | ||
1221 | 177 | rdf:about="http://creativecommons.org/licenses/GPL/2.0/"> | ||
1222 | 178 | <cc:permits | ||
1223 | 179 | rdf:resource="http://web.resource.org/cc/Reproduction" /> | ||
1224 | 180 | <cc:permits | ||
1225 | 181 | rdf:resource="http://web.resource.org/cc/Distribution" /> | ||
1226 | 182 | <cc:requires | ||
1227 | 183 | rdf:resource="http://web.resource.org/cc/Notice" /> | ||
1228 | 184 | <cc:permits | ||
1229 | 185 | rdf:resource="http://web.resource.org/cc/DerivativeWorks" /> | ||
1230 | 186 | <cc:requires | ||
1231 | 187 | rdf:resource="http://web.resource.org/cc/ShareAlike" /> | ||
1232 | 188 | <cc:requires | ||
1233 | 189 | rdf:resource="http://web.resource.org/cc/SourceCode" /> | ||
1234 | 190 | </cc:License> | ||
1235 | 191 | </rdf:RDF> | ||
1236 | 192 | </metadata> | ||
1237 | 193 | <g | ||
1238 | 194 | inkscape:groupmode="layer" | ||
1239 | 195 | inkscape:label="Layer 1" | ||
1240 | 196 | id="layer1"> | ||
1241 | 197 | <path | ||
1242 | 198 | sodipodi:type="arc" | ||
1243 | 199 | style="opacity:1;color:#000000;fill:url(#radialGradient11270);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.8505457;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" | ||
1244 | 200 | id="path11262" | ||
1245 | 201 | sodipodi:cx="25.785715" | ||
1246 | 202 | sodipodi:cy="23.071428" | ||
1247 | 203 | sodipodi:rx="18.214285" | ||
1248 | 204 | sodipodi:ry="18.214285" | ||
1249 | 205 | d="M 44 23.071428 A 18.214285 18.214285 0 1 1 7.5714302,23.071428 A 18.214285 18.214285 0 1 1 44 23.071428 z" | ||
1250 | 206 | transform="matrix(1.269833,0,0,1.269833,-9.24356,-4.225444)" /> | ||
1251 | 207 | <path | ||
1252 | 208 | transform="matrix(1.175715,0,0,1.175715,-6.816669,-3.911156)" | ||
1253 | 209 | d="M 44 23.071428 A 18.214285 18.214285 0 1 1 7.5714302,23.071428 A 18.214285 18.214285 0 1 1 44 23.071428 z" | ||
1254 | 210 | sodipodi:ry="18.214285" | ||
1255 | 211 | sodipodi:rx="18.214285" | ||
1256 | 212 | sodipodi:cy="23.071428" | ||
1257 | 213 | sodipodi:cx="25.785715" | ||
1258 | 214 | id="path11152" | ||
1259 | 215 | style="opacity:1;color:#000000;fill:url(#linearGradient11170);fill-opacity:1;fill-rule:evenodd;stroke:#74796e;stroke-width:0.8505457;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" | ||
1260 | 216 | sodipodi:type="arc" /> | ||
1261 | 217 | <path | ||
1262 | 218 | sodipodi:type="arc" | ||
1263 | 219 | style="opacity:1;color:#000000;fill:url(#radialGradient11234);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.93590021;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" | ||
1264 | 220 | id="path11154" | ||
1265 | 221 | sodipodi:cx="25.785715" | ||
1266 | 222 | sodipodi:cy="23.071428" | ||
1267 | 223 | sodipodi:rx="18.214285" | ||
1268 | 224 | sodipodi:ry="18.214285" | ||
1269 | 225 | d="M 44 23.071428 A 18.214285 18.214285 0 1 1 7.5714302,23.071428 A 18.214285 18.214285 0 1 1 44 23.071428 z" | ||
1270 | 226 | transform="matrix(1.06849,0,0,1.06849,-4.051771,-2.437299)" /> | ||
1271 | 227 | <path | ||
1272 | 228 | sodipodi:nodetypes="czs" | ||
1273 | 229 | id="path4743" | ||
1274 | 230 | d="M 19.1468,14.674063 C 12.154448,18.486901 15.316371,29.412893 23.310313,29.412893 C 31.220984,29.412893 34.766419,19.054547 27.473824,14.674063" | ||
1275 | 231 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#555753;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" /> | ||
1276 | 232 | <path | ||
1277 | 233 | id="path4745" | ||
1278 | 234 | d="M 23.364832,19.364034 L 23.364832,11.95091" | ||
1279 | 235 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#555753;stroke-width:2.99999905;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" /> | ||
1280 | 236 | <path | ||
1281 | 237 | transform="matrix(1.04555,0,0,1.04555,-3.460245,-1.908039)" | ||
1282 | 238 | d="M 44 23.071428 A 18.214285 18.214285 0 1 1 7.5714302,23.071428 A 18.214285 18.214285 0 1 1 44 23.071428 z" | ||
1283 | 239 | sodipodi:ry="18.214285" | ||
1284 | 240 | sodipodi:rx="18.214285" | ||
1285 | 241 | sodipodi:cy="23.071428" | ||
1286 | 242 | sodipodi:cx="25.785715" | ||
1287 | 243 | id="path4747" | ||
1288 | 244 | style="opacity:0.88235294;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4755);stroke-width:0.95643449;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" | ||
1289 | 245 | sodipodi:type="arc" /> | ||
1290 | 246 | </g> | ||
1291 | 247 | </svg> | ||
1292 | 248 | 0 | ||
1293 | === removed file 'data/icons/scalable/actions/system-shutdown.svg' | |||
1294 | --- data/icons/scalable/actions/system-shutdown.svg 2009-08-07 19:10:15 +0000 | |||
1295 | +++ data/icons/scalable/actions/system-shutdown.svg 1970-01-01 00:00:00 +0000 | |||
1296 | @@ -1,247 +0,0 @@ | |||
1297 | 1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
1298 | 2 | <!-- Created with Inkscape (http://www.inkscape.org/) --> | ||
1299 | 3 | <svg | ||
1300 | 4 | xmlns:dc="http://purl.org/dc/elements/1.1/" | ||
1301 | 5 | xmlns:cc="http://web.resource.org/cc/" | ||
1302 | 6 | xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||
1303 | 7 | xmlns:svg="http://www.w3.org/2000/svg" | ||
1304 | 8 | xmlns="http://www.w3.org/2000/svg" | ||
1305 | 9 | xmlns:xlink="http://www.w3.org/1999/xlink" | ||
1306 | 10 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||
1307 | 11 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||
1308 | 12 | sodipodi:docname="gnome-shutdown.svg" | ||
1309 | 13 | sodipodi:docbase="/home/dobey/Projects/gnome-icon-theme/scalable/apps" | ||
1310 | 14 | inkscape:version="0.45" | ||
1311 | 15 | sodipodi:version="0.32" | ||
1312 | 16 | id="svg11142" | ||
1313 | 17 | height="48" | ||
1314 | 18 | width="48" | ||
1315 | 19 | version="1.0" | ||
1316 | 20 | inkscape:output_extension="org.inkscape.output.svg.inkscape"> | ||
1317 | 21 | <defs | ||
1318 | 22 | id="defs3"> | ||
1319 | 23 | <linearGradient | ||
1320 | 24 | id="linearGradient4749"> | ||
1321 | 25 | <stop | ||
1322 | 26 | id="stop4751" | ||
1323 | 27 | offset="0" | ||
1324 | 28 | style="stop-color:#ffffff;stop-opacity:1;" /> | ||
1325 | 29 | <stop | ||
1326 | 30 | style="stop-color:#ffffff;stop-opacity:0.0000000;" | ||
1327 | 31 | offset="0.50000000" | ||
1328 | 32 | id="stop4757" /> | ||
1329 | 33 | <stop | ||
1330 | 34 | id="stop4753" | ||
1331 | 35 | offset="1.0000000" | ||
1332 | 36 | style="stop-color:#ffffff;stop-opacity:1.0000000;" /> | ||
1333 | 37 | </linearGradient> | ||
1334 | 38 | <linearGradient | ||
1335 | 39 | id="linearGradient11264" | ||
1336 | 40 | inkscape:collect="always"> | ||
1337 | 41 | <stop | ||
1338 | 42 | id="stop11266" | ||
1339 | 43 | offset="0" | ||
1340 | 44 | style="stop-color:#000000;stop-opacity:1;" /> | ||
1341 | 45 | <stop | ||
1342 | 46 | id="stop11268" | ||
1343 | 47 | offset="1" | ||
1344 | 48 | style="stop-color:#000000;stop-opacity:0;" /> | ||
1345 | 49 | </linearGradient> | ||
1346 | 50 | <linearGradient | ||
1347 | 51 | id="linearGradient11178"> | ||
1348 | 52 | <stop | ||
1349 | 53 | style="stop-color:#d1d1cc;stop-opacity:1.0000000;" | ||
1350 | 54 | offset="0.0000000" | ||
1351 | 55 | id="stop11180" /> | ||
1352 | 56 | <stop | ||
1353 | 57 | id="stop4735" | ||
1354 | 58 | offset="0.50000000" | ||
1355 | 59 | style="stop-color:#d1d1d1;stop-opacity:1.0000000;" /> | ||
1356 | 60 | <stop | ||
1357 | 61 | style="stop-color:#b9b9b9;stop-opacity:1.0000000;" | ||
1358 | 62 | offset="1.0000000" | ||
1359 | 63 | id="stop11188" /> | ||
1360 | 64 | </linearGradient> | ||
1361 | 65 | <linearGradient | ||
1362 | 66 | id="linearGradient11164"> | ||
1363 | 67 | <stop | ||
1364 | 68 | id="stop11166" | ||
1365 | 69 | offset="0" | ||
1366 | 70 | style="stop-color:#eeeeec;stop-opacity:1;" /> | ||
1367 | 71 | <stop | ||
1368 | 72 | style="stop-color:#c6c6bf;stop-opacity:1.0000000;" | ||
1369 | 73 | offset="0.26988637" | ||
1370 | 74 | id="stop11172" /> | ||
1371 | 75 | <stop | ||
1372 | 76 | id="stop11176" | ||
1373 | 77 | offset="0.37900311" | ||
1374 | 78 | style="stop-color:#f9f9f8;stop-opacity:1.0000000;" /> | ||
1375 | 79 | <stop | ||
1376 | 80 | id="stop11174" | ||
1377 | 81 | offset="0.75000000" | ||
1378 | 82 | style="stop-color:#c8c8c2;stop-opacity:1.0000000;" /> | ||
1379 | 83 | <stop | ||
1380 | 84 | id="stop11168" | ||
1381 | 85 | offset="1.0000000" | ||
1382 | 86 | style="stop-color:#eeeeec;stop-opacity:1.0000000;" /> | ||
1383 | 87 | </linearGradient> | ||
1384 | 88 | <linearGradient | ||
1385 | 89 | gradientUnits="userSpaceOnUse" | ||
1386 | 90 | y2="23.071428" | ||
1387 | 91 | x2="42.471249" | ||
1388 | 92 | y1="23.071428" | ||
1389 | 93 | x1="7.1433797" | ||
1390 | 94 | id="linearGradient11170" | ||
1391 | 95 | xlink:href="#linearGradient11164" | ||
1392 | 96 | inkscape:collect="always" /> | ||
1393 | 97 | <radialGradient | ||
1394 | 98 | gradientTransform="matrix(1.364252,-9.115392e-17,9.115392e-17,1.364252,-9.47947,-5.618016)" | ||
1395 | 99 | gradientUnits="userSpaceOnUse" | ||
1396 | 100 | r="18.672388" | ||
1397 | 101 | fy="17.224812" | ||
1398 | 102 | fx="24.673435" | ||
1399 | 103 | cy="17.224812" | ||
1400 | 104 | cx="24.673435" | ||
1401 | 105 | id="radialGradient11234" | ||
1402 | 106 | xlink:href="#linearGradient11178" | ||
1403 | 107 | inkscape:collect="always" /> | ||
1404 | 108 | <radialGradient | ||
1405 | 109 | gradientUnits="userSpaceOnUse" | ||
1406 | 110 | r="18.214285" | ||
1407 | 111 | fy="23.071428" | ||
1408 | 112 | fx="25.785715" | ||
1409 | 113 | cy="23.071428" | ||
1410 | 114 | cx="25.785715" | ||
1411 | 115 | id="radialGradient11270" | ||
1412 | 116 | xlink:href="#linearGradient11264" | ||
1413 | 117 | inkscape:collect="always" /> | ||
1414 | 118 | <linearGradient | ||
1415 | 119 | gradientUnits="userSpaceOnUse" | ||
1416 | 120 | y2="8.5882788" | ||
1417 | 121 | x2="25.785715" | ||
1418 | 122 | y1="21.978363" | ||
1419 | 123 | x1="25.785715" | ||
1420 | 124 | id="linearGradient4755" | ||
1421 | 125 | xlink:href="#linearGradient4749" | ||
1422 | 126 | inkscape:collect="always" /> | ||
1423 | 127 | </defs> | ||
1424 | 128 | <sodipodi:namedview | ||
1425 | 129 | inkscape:window-y="423" | ||
1426 | 130 | inkscape:window-x="840" | ||
1427 | 131 | inkscape:window-height="606" | ||
1428 | 132 | inkscape:window-width="750" | ||
1429 | 133 | stroke="#555753" | ||
1430 | 134 | fill="#edd400" | ||
1431 | 135 | inkscape:showpageshadow="false" | ||
1432 | 136 | inkscape:document-units="px" | ||
1433 | 137 | inkscape:grid-bbox="true" | ||
1434 | 138 | showgrid="false" | ||
1435 | 139 | inkscape:current-layer="layer1" | ||
1436 | 140 | inkscape:cy="-10.815272" | ||
1437 | 141 | inkscape:cx="85.353158" | ||
1438 | 142 | inkscape:zoom="1" | ||
1439 | 143 | inkscape:pageshadow="2" | ||
1440 | 144 | inkscape:pageopacity="0.0" | ||
1441 | 145 | borderopacity="0.32941176" | ||
1442 | 146 | bordercolor="#666666" | ||
1443 | 147 | pagecolor="#ffffff" | ||
1444 | 148 | id="base" | ||
1445 | 149 | showguides="true" | ||
1446 | 150 | inkscape:guide-bbox="true" /> | ||
1447 | 151 | <metadata | ||
1448 | 152 | id="metadata4"> | ||
1449 | 153 | <rdf:RDF> | ||
1450 | 154 | <cc:Work | ||
1451 | 155 | rdf:about=""> | ||
1452 | 156 | <dc:format>image/svg+xml</dc:format> | ||
1453 | 157 | <dc:type | ||
1454 | 158 | rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | ||
1455 | 159 | <dc:title>Shutdown</dc:title> | ||
1456 | 160 | <dc:creator> | ||
1457 | 161 | <cc:Agent> | ||
1458 | 162 | <dc:title>Jakub Steiner</dc:title> | ||
1459 | 163 | </cc:Agent> | ||
1460 | 164 | </dc:creator> | ||
1461 | 165 | <cc:license | ||
1462 | 166 | rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" /> | ||
1463 | 167 | <dc:source>http://jimmac.musichall.cz</dc:source> | ||
1464 | 168 | <dc:subject> | ||
1465 | 169 | <rdf:Bag> | ||
1466 | 170 | <rdf:li>lock</rdf:li> | ||
1467 | 171 | <rdf:li>key</rdf:li> | ||
1468 | 172 | <rdf:li>secure</rdf:li> | ||
1469 | 173 | </rdf:Bag> | ||
1470 | 174 | </dc:subject> | ||
1471 | 175 | </cc:Work> | ||
1472 | 176 | <cc:License | ||
1473 | 177 | rdf:about="http://creativecommons.org/licenses/GPL/2.0/"> | ||
1474 | 178 | <cc:permits | ||
1475 | 179 | rdf:resource="http://web.resource.org/cc/Reproduction" /> | ||
1476 | 180 | <cc:permits | ||
1477 | 181 | rdf:resource="http://web.resource.org/cc/Distribution" /> | ||
1478 | 182 | <cc:requires | ||
1479 | 183 | rdf:resource="http://web.resource.org/cc/Notice" /> | ||
1480 | 184 | <cc:permits | ||
1481 | 185 | rdf:resource="http://web.resource.org/cc/DerivativeWorks" /> | ||
1482 | 186 | <cc:requires | ||
1483 | 187 | rdf:resource="http://web.resource.org/cc/ShareAlike" /> | ||
1484 | 188 | <cc:requires | ||
1485 | 189 | rdf:resource="http://web.resource.org/cc/SourceCode" /> | ||
1486 | 190 | </cc:License> | ||
1487 | 191 | </rdf:RDF> | ||
1488 | 192 | </metadata> | ||
1489 | 193 | <g | ||
1490 | 194 | inkscape:groupmode="layer" | ||
1491 | 195 | inkscape:label="Layer 1" | ||
1492 | 196 | id="layer1"> | ||
1493 | 197 | <path | ||
1494 | 198 | sodipodi:type="arc" | ||
1495 | 199 | style="opacity:1;color:#000000;fill:url(#radialGradient11270);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.8505457;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" | ||
1496 | 200 | id="path11262" | ||
1497 | 201 | sodipodi:cx="25.785715" | ||
1498 | 202 | sodipodi:cy="23.071428" | ||
1499 | 203 | sodipodi:rx="18.214285" | ||
1500 | 204 | sodipodi:ry="18.214285" | ||
1501 | 205 | d="M 44 23.071428 A 18.214285 18.214285 0 1 1 7.5714302,23.071428 A 18.214285 18.214285 0 1 1 44 23.071428 z" | ||
1502 | 206 | transform="matrix(1.269833,0,0,1.269833,-9.24356,-4.225444)" /> | ||
1503 | 207 | <path | ||
1504 | 208 | transform="matrix(1.175715,0,0,1.175715,-6.816669,-3.911156)" | ||
1505 | 209 | d="M 44 23.071428 A 18.214285 18.214285 0 1 1 7.5714302,23.071428 A 18.214285 18.214285 0 1 1 44 23.071428 z" | ||
1506 | 210 | sodipodi:ry="18.214285" | ||
1507 | 211 | sodipodi:rx="18.214285" | ||
1508 | 212 | sodipodi:cy="23.071428" | ||
1509 | 213 | sodipodi:cx="25.785715" | ||
1510 | 214 | id="path11152" | ||
1511 | 215 | style="opacity:1;color:#000000;fill:url(#linearGradient11170);fill-opacity:1;fill-rule:evenodd;stroke:#74796e;stroke-width:0.8505457;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" | ||
1512 | 216 | sodipodi:type="arc" /> | ||
1513 | 217 | <path | ||
1514 | 218 | sodipodi:type="arc" | ||
1515 | 219 | style="opacity:1;color:#000000;fill:url(#radialGradient11234);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.93590021;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" | ||
1516 | 220 | id="path11154" | ||
1517 | 221 | sodipodi:cx="25.785715" | ||
1518 | 222 | sodipodi:cy="23.071428" | ||
1519 | 223 | sodipodi:rx="18.214285" | ||
1520 | 224 | sodipodi:ry="18.214285" | ||
1521 | 225 | d="M 44 23.071428 A 18.214285 18.214285 0 1 1 7.5714302,23.071428 A 18.214285 18.214285 0 1 1 44 23.071428 z" | ||
1522 | 226 | transform="matrix(1.06849,0,0,1.06849,-4.051771,-2.437299)" /> | ||
1523 | 227 | <path | ||
1524 | 228 | sodipodi:nodetypes="czs" | ||
1525 | 229 | id="path4743" | ||
1526 | 230 | d="M 19.1468,14.674063 C 12.154448,18.486901 15.316371,29.412893 23.310313,29.412893 C 31.220984,29.412893 34.766419,19.054547 27.473824,14.674063" | ||
1527 | 231 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#555753;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" /> | ||
1528 | 232 | <path | ||
1529 | 233 | id="path4745" | ||
1530 | 234 | d="M 23.364832,19.364034 L 23.364832,11.95091" | ||
1531 | 235 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#555753;stroke-width:2.99999905;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" /> | ||
1532 | 236 | <path | ||
1533 | 237 | transform="matrix(1.04555,0,0,1.04555,-3.460245,-1.908039)" | ||
1534 | 238 | d="M 44 23.071428 A 18.214285 18.214285 0 1 1 7.5714302,23.071428 A 18.214285 18.214285 0 1 1 44 23.071428 z" | ||
1535 | 239 | sodipodi:ry="18.214285" | ||
1536 | 240 | sodipodi:rx="18.214285" | ||
1537 | 241 | sodipodi:cy="23.071428" | ||
1538 | 242 | sodipodi:cx="25.785715" | ||
1539 | 243 | id="path4747" | ||
1540 | 244 | style="opacity:0.88235294;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4755);stroke-width:0.95643449;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" | ||
1541 | 245 | sodipodi:type="arc" /> | ||
1542 | 246 | </g> | ||
1543 | 247 | </svg> | ||
1544 | 248 | 0 | ||
1545 | === renamed file 'data/indicator-status.service.in' => 'data/indicator-me.service.in' | |||
1546 | --- data/indicator-status.service.in 2009-07-24 21:57:58 +0000 | |||
1547 | +++ data/indicator-me.service.in 2010-01-04 21:25:21 +0000 | |||
1548 | @@ -1,3 +1,3 @@ | |||
1549 | 1 | [D-BUS Service] | 1 | [D-BUS Service] |
1552 | 2 | Name=org.ayatana.indicator.status | 2 | Name=org.ayatana.indicator.me |
1553 | 3 | Exec=@libexecdir@/indicator-status-service | 3 | Exec=@libexecdir@/indicator-me-service |
1554 | 4 | 4 | ||
1555 | === removed file 'data/indicator-session.schemas.in' | |||
1556 | --- data/indicator-session.schemas.in 2009-09-02 15:10:20 +0000 | |||
1557 | +++ data/indicator-session.schemas.in 1970-01-01 00:00:00 +0000 | |||
1558 | @@ -1,17 +0,0 @@ | |||
1559 | 1 | <?xml version="1.0"?> | ||
1560 | 2 | <gconfschemafile> | ||
1561 | 3 | <schemalist> | ||
1562 | 4 | <schema> | ||
1563 | 5 | <key>/schemas/apps/indicator-session/suppress_logout_restart_shutdown</key> | ||
1564 | 6 | <applyto>/apps/indicator-session/suppress_logout_restart_shutdown</applyto> | ||
1565 | 7 | <owner>indicator-session</owner> | ||
1566 | 8 | <type>bool</type> | ||
1567 | 9 | <default>FALSE</default> | ||
1568 | 10 | <locale name="C"> | ||
1569 | 11 | <short>Suppress the dialog to confirm logout, restart and shutdown action</short> | ||
1570 | 12 | <long>Whether or not to show confirmation dialogs for logout, | ||
1571 | 13 | restart and shutdown actions.</long> | ||
1572 | 14 | </locale> | ||
1573 | 15 | </schema> | ||
1574 | 16 | </schemalist> | ||
1575 | 17 | </gconfschemafile> | ||
1576 | 18 | 0 | ||
1577 | === removed file 'data/indicator-session.service.in' | |||
1578 | --- data/indicator-session.service.in 2009-07-24 21:57:58 +0000 | |||
1579 | +++ data/indicator-session.service.in 1970-01-01 00:00:00 +0000 | |||
1580 | @@ -1,3 +0,0 @@ | |||
1581 | 1 | [D-BUS Service] | ||
1582 | 2 | Name=org.ayatana.indicator.session | ||
1583 | 3 | Exec=@libexecdir@/indicator-session-service | ||
1584 | 4 | 0 | ||
1585 | === removed file 'data/indicator-users.service.in' | |||
1586 | --- data/indicator-users.service.in 2009-07-24 21:57:58 +0000 | |||
1587 | +++ data/indicator-users.service.in 1970-01-01 00:00:00 +0000 | |||
1588 | @@ -1,3 +0,0 @@ | |||
1589 | 1 | [D-BUS Service] | ||
1590 | 2 | Name=org.ayatana.indicator.users | ||
1591 | 3 | Exec=@libexecdir@/indicator-users-service | ||
1592 | 4 | 0 | ||
1593 | === modified file 'po/POTFILES.in' | |||
1594 | --- po/POTFILES.in 2009-09-08 15:09:45 +0000 | |||
1595 | +++ po/POTFILES.in 2010-01-04 21:25:21 +0000 | |||
1596 | @@ -1,14 +1,7 @@ | |||
1597 | 1 | [encoding: UTF-8] | 1 | [encoding: UTF-8] |
1605 | 2 | data/indicator-session.schemas.in | 2 | src/indicator-me.c |
1599 | 3 | src/gtk-dialog/ck-pk-helper.c | ||
1600 | 4 | src/gtk-dialog/gconf-helper.c | ||
1601 | 5 | src/gtk-dialog/gtk-logout-helper.c | ||
1602 | 6 | src/gtk-dialog/logout-dialog.c | ||
1603 | 7 | src/indicator-session.c | ||
1604 | 8 | src/session-service.c | ||
1606 | 9 | src/status-provider.c | 3 | src/status-provider.c |
1607 | 10 | src/status-provider-pidgin.c | 4 | src/status-provider-pidgin.c |
1608 | 11 | src/status-provider-telepathy.c | 5 | src/status-provider-telepathy.c |
1609 | 12 | src/status-service.c | 6 | src/status-service.c |
1610 | 13 | src/status-service-dbus.c | 7 | src/status-service-dbus.c |
1611 | 14 | src/users-service.c | ||
1612 | 15 | 8 | ||
1613 | === modified file 'src/Makefile.am' | |||
1614 | --- src/Makefile.am 2009-10-06 23:49:57 +0000 | |||
1615 | +++ src/Makefile.am 2010-01-04 21:25:21 +0000 | |||
1616 | @@ -1,35 +1,29 @@ | |||
1617 | 1 | SUBDIRS = gtk-dialog | ||
1618 | 2 | 1 | ||
1620 | 3 | libexec_PROGRAMS = indicator-status-service indicator-users-service indicator-session-service | 2 | libexec_PROGRAMS = indicator-me-service |
1621 | 4 | 3 | ||
1622 | 5 | ################### | 4 | ################### |
1623 | 6 | # Indicator Stuff | 5 | # Indicator Stuff |
1624 | 7 | ################### | 6 | ################### |
1625 | 8 | 7 | ||
1630 | 9 | sessionlibdir = $(INDICATORDIR) | 8 | melibdir = $(INDICATORDIR) |
1631 | 10 | sessionlib_LTLIBRARIES = libsession.la | 9 | melib_LTLIBRARIES = libme.la |
1632 | 11 | libsession_la_SOURCES = \ | 10 | libme_la_SOURCES = \ |
1633 | 12 | indicator-session.c \ | 11 | indicator-me.c \ |
1634 | 13 | dbus-shared-names.h \ | 12 | dbus-shared-names.h \ |
1640 | 14 | status-service-client.h \ | 13 | me-service-client.h |
1641 | 15 | users-service-client.h | 14 | libme_la_CFLAGS = $(APPLET_CFLAGS) -Wall -Werror |
1642 | 16 | libsession_la_CFLAGS = $(APPLET_CFLAGS) -Wall -Werror | 15 | libme_la_LIBADD = $(APPLET_LIBS) |
1643 | 17 | libsession_la_LIBADD = $(APPLET_LIBS) | 16 | libme_la_LDFLAGS = -module -avoid-version |
1639 | 18 | libsession_la_LDFLAGS = -module -avoid-version | ||
1644 | 19 | 17 | ||
1645 | 20 | ################ | 18 | ################ |
1646 | 21 | # Status Stuff | 19 | # Status Stuff |
1647 | 22 | ################ | 20 | ################ |
1648 | 23 | 21 | ||
1658 | 24 | indicator_status_service_SOURCES = \ | 22 | indicator_me_service_SOURCES = \ |
1659 | 25 | status-service.c \ | 23 | me-service.c \ |
1660 | 26 | status-service-dbus.h \ | 24 | me-service-dbus.h \ |
1661 | 27 | status-service-dbus.c \ | 25 | me-service-dbus.c \ |
1662 | 28 | status-service-server.h \ | 26 | me-service-server.h \ |
1654 | 29 | users-service-dbus.h \ | ||
1655 | 30 | users-service-dbus.c \ | ||
1656 | 31 | users-service-marshal.c \ | ||
1657 | 32 | users-service-marshal.h \ | ||
1663 | 33 | status-provider.h \ | 27 | status-provider.h \ |
1664 | 34 | status-provider.c \ | 28 | status-provider.c \ |
1665 | 35 | status-provider-mc5.h \ | 29 | status-provider-mc5.h \ |
1666 | @@ -44,39 +38,22 @@ | |||
1667 | 44 | status-provider-telepathy.c \ | 38 | status-provider-telepathy.c \ |
1668 | 45 | status-provider-telepathy-marshal.h \ | 39 | status-provider-telepathy-marshal.h \ |
1669 | 46 | status-provider-telepathy-marshal.c | 40 | status-provider-telepathy-marshal.c |
1690 | 47 | indicator_status_service_CFLAGS = $(STATUSSERVICE_CFLAGS) -Wall -Werror | 41 | indicator_me_service_CFLAGS = $(STATUSSERVICE_CFLAGS) -Wall -Werror |
1691 | 48 | indicator_status_service_LDADD = $(STATUSSERVICE_LIBS) | 42 | indicator_me_service_LDADD = $(STATUSSERVICE_LIBS) |
1692 | 49 | 43 | ||
1693 | 50 | users-service-client.h: $(srcdir)/users-service.xml | 44 | me-service-client.h: $(srcdir)/me-service.xml |
1694 | 51 | dbus-binding-tool \ | 45 | dbus-binding-tool \ |
1695 | 52 | --prefix=_users_service_client \ | 46 | --prefix=_me_service_client \ |
1696 | 53 | --mode=glib-client \ | 47 | --mode=glib-client \ |
1697 | 54 | --output=users-service-client.h \ | 48 | --output=me-service-client.h \ |
1698 | 55 | $(srcdir)/users-service.xml | 49 | $(srcdir)/me-service.xml |
1699 | 56 | 50 | ||
1700 | 57 | status-service-client.h: $(srcdir)/status-service.xml | 51 | me-service-server.h: $(srcdir)/me-service.xml |
1701 | 58 | dbus-binding-tool \ | 52 | dbus-binding-tool \ |
1702 | 59 | --prefix=_status_service_client \ | 53 | --prefix=_me_service_server \ |
1683 | 60 | --mode=glib-client \ | ||
1684 | 61 | --output=status-service-client.h \ | ||
1685 | 62 | $(srcdir)/status-service.xml | ||
1686 | 63 | |||
1687 | 64 | status-service-server.h: $(srcdir)/status-service.xml | ||
1688 | 65 | dbus-binding-tool \ | ||
1689 | 66 | --prefix=_status_service_server \ | ||
1703 | 67 | --mode=glib-server \ | 54 | --mode=glib-server \ |
1716 | 68 | --output=status-service-server.h \ | 55 | --output=me-service-server.h \ |
1717 | 69 | $(srcdir)/status-service.xml | 56 | $(srcdir)/me-service.xml |
1706 | 70 | |||
1707 | 71 | users-service-marshal.h: $(srcdir)/users-service.list | ||
1708 | 72 | glib-genmarshal --header \ | ||
1709 | 73 | --prefix=_users_service_marshal $(srcdir)/users-service.list \ | ||
1710 | 74 | > users-service-marshal.h | ||
1711 | 75 | |||
1712 | 76 | users-service-marshal.c: $(srcdir)/users-service.list | ||
1713 | 77 | glib-genmarshal --body \ | ||
1714 | 78 | --prefix=_users_service_marshal $(srcdir)/users-service.list \ | ||
1715 | 79 | > users-service-marshal.c | ||
1718 | 80 | 57 | ||
1719 | 81 | status-provider-pidgin-marshal.h: $(srcdir)/status-provider-pidgin.list | 58 | status-provider-pidgin-marshal.h: $(srcdir)/status-provider-pidgin.list |
1720 | 82 | glib-genmarshal --header \ | 59 | glib-genmarshal --header \ |
1721 | @@ -109,52 +86,27 @@ | |||
1722 | 109 | > status-provider-mc5-marshal.c | 86 | > status-provider-mc5-marshal.c |
1723 | 110 | 87 | ||
1724 | 111 | ############### | 88 | ############### |
1725 | 112 | # Users Stuff | ||
1726 | 113 | ############### | ||
1727 | 114 | |||
1728 | 115 | indicator_users_service_SOURCES = \ | ||
1729 | 116 | lock-helper.c \ | ||
1730 | 117 | lock-helper.h \ | ||
1731 | 118 | users-service.c \ | ||
1732 | 119 | users-service-dbus.c \ | ||
1733 | 120 | users-service-marshal.c | ||
1734 | 121 | indicator_users_service_CFLAGS = $(USERSSERVICE_CFLAGS) -Wall -Werror | ||
1735 | 122 | indicator_users_service_LDADD = $(USERSSERVICE_LIBS) | ||
1736 | 123 | |||
1737 | 124 | ################# | ||
1738 | 125 | # Session Stuff | ||
1739 | 126 | ################# | ||
1740 | 127 | |||
1741 | 128 | indicator_session_service_SOURCES = \ | ||
1742 | 129 | lock-helper.c \ | ||
1743 | 130 | lock-helper.h \ | ||
1744 | 131 | session-service.c \ | ||
1745 | 132 | gtk-dialog/gconf-helper.c | ||
1746 | 133 | indicator_session_service_CFLAGS = $(SESSIONSERVICE_CFLAGS) $(GCONF_CFLAGS) -DLIBEXECDIR=\"$(libexecdir)\" -Wall -Werror | ||
1747 | 134 | indicator_session_service_LDADD = $(SESSIONSERVICE_LIBS) $(GCONF_LIBS) | ||
1748 | 135 | |||
1749 | 136 | ############### | ||
1750 | 137 | # Other Stuff | 89 | # Other Stuff |
1751 | 138 | ############### | 90 | ############### |
1752 | 139 | 91 | ||
1753 | 140 | BUILT_SOURCES = \ | 92 | BUILT_SOURCES = \ |
1757 | 141 | users-service-client.h \ | 93 | me-service-client.h \ |
1758 | 142 | status-service-client.h \ | 94 | me-service-server.h \ |
1756 | 143 | status-service-server.h \ | ||
1759 | 144 | status-provider-mc5-marshal.h \ | 95 | status-provider-mc5-marshal.h \ |
1760 | 145 | status-provider-mc5-marshal.c \ | 96 | status-provider-mc5-marshal.c \ |
1761 | 146 | users-service-marshal.h \ | ||
1762 | 147 | users-service-marshal.c \ | ||
1763 | 148 | status-provider-pidgin-marshal.h \ | 97 | status-provider-pidgin-marshal.h \ |
1764 | 149 | status-provider-pidgin-marshal.c \ | 98 | status-provider-pidgin-marshal.c \ |
1765 | 150 | status-provider-telepathy-marshal.h \ | 99 | status-provider-telepathy-marshal.h \ |
1766 | 151 | status-provider-telepathy-marshal.c | 100 | status-provider-telepathy-marshal.c |
1767 | 152 | 101 | ||
1768 | 153 | EXTRA_DIST = \ | 102 | EXTRA_DIST = \ |
1770 | 154 | status-service.xml \ | 103 | me-service.xml \ |
1771 | 155 | status-provider-mc5.list \ | 104 | status-provider-mc5.list \ |
1772 | 156 | status-provider-pidgin.list \ | 105 | status-provider-pidgin.list \ |
1774 | 157 | status-provider-telepathy.list | 106 | status-provider-telepathy.list \ |
1775 | 107 | users-service.xml \ | ||
1776 | 108 | users-service.list | ||
1777 | 158 | 109 | ||
1778 | 159 | CLEANFILES = \ | 110 | CLEANFILES = \ |
1779 | 160 | $(BUILT_SOURCES) | 111 | $(BUILT_SOURCES) |
1780 | 112 | |||
1781 | 161 | 113 | ||
1782 | === modified file 'src/dbus-shared-names.h' | |||
1783 | --- src/dbus-shared-names.h 2009-09-10 21:26:01 +0000 | |||
1784 | +++ src/dbus-shared-names.h 2010-01-04 21:25:21 +0000 | |||
1785 | @@ -24,17 +24,10 @@ | |||
1786 | 24 | #ifndef __DBUS_SHARED_NAMES_H__ | 24 | #ifndef __DBUS_SHARED_NAMES_H__ |
1787 | 25 | #define __DBUS_SHARED_NAMES_H__ 1 | 25 | #define __DBUS_SHARED_NAMES_H__ 1 |
1788 | 26 | 26 | ||
1801 | 27 | #define INDICATOR_STATUS_DBUS_NAME "org.ayatana.indicator.status" | 27 | #define INDICATOR_ME_DBUS_NAME "org.ayatana.indicator.me" |
1802 | 28 | #define INDICATOR_STATUS_DBUS_OBJECT "/org/ayatana/indicator/status/menu" | 28 | #define INDICATOR_ME_DBUS_VERSION 1 |
1803 | 29 | #define INDICATOR_STATUS_SERVICE_DBUS_OBJECT "/org/ayatana/indicator/status/service" | 29 | #define INDICATOR_ME_DBUS_OBJECT "/org/ayatana/indicator/me/menu" |
1804 | 30 | #define INDICATOR_STATUS_SERVICE_DBUS_INTERFACE "org.ayatana.indicator.status.service" | 30 | #define INDICATOR_ME_SERVICE_DBUS_OBJECT "/org/ayatana/indicator/me/service" |
1805 | 31 | 31 | #define INDICATOR_ME_SERVICE_DBUS_INTERFACE "org.ayatana.indicator.me.service" | |
1794 | 32 | #define INDICATOR_USERS_DBUS_NAME "org.ayatana.indicator.users" | ||
1795 | 33 | #define INDICATOR_USERS_DBUS_OBJECT "/org/ayatana/indicator/users/menu" | ||
1796 | 34 | #define INDICATOR_USERS_SERVICE_DBUS_OBJECT "/org/gnome/DisplayManager/UserManager" | ||
1797 | 35 | #define INDICATOR_USERS_SERVICE_DBUS_INTERFACE "org.gnome.DisplayManager.UserManager" | ||
1798 | 36 | |||
1799 | 37 | #define INDICATOR_SESSION_DBUS_NAME "org.ayatana.indicator.session" | ||
1800 | 38 | #define INDICATOR_SESSION_DBUS_OBJECT "/org/ayatana/indicator/session/menu" | ||
1806 | 39 | 32 | ||
1807 | 40 | #endif /* __DBUS_SHARED_NAMES_H__ */ | 33 | #endif /* __DBUS_SHARED_NAMES_H__ */ |
1808 | 41 | 34 | ||
1809 | === removed directory 'src/gtk-dialog' | |||
1810 | === removed file 'src/gtk-dialog/Makefile.am' | |||
1811 | --- src/gtk-dialog/Makefile.am 2009-09-10 22:02:32 +0000 | |||
1812 | +++ src/gtk-dialog/Makefile.am 1970-01-01 00:00:00 +0000 | |||
1813 | @@ -1,15 +0,0 @@ | |||
1814 | 1 | |||
1815 | 2 | libexec_PROGRAMS = gtk-logout-helper | ||
1816 | 3 | |||
1817 | 4 | gtk_logout_helper_SOURCES = \ | ||
1818 | 5 | gtk-logout-helper.c \ | ||
1819 | 6 | ck-pk-helper.c \ | ||
1820 | 7 | ck-pk-helper.h \ | ||
1821 | 8 | gconf-helper.c \ | ||
1822 | 9 | gconf-helper.h \ | ||
1823 | 10 | logout-dialog.c \ | ||
1824 | 11 | logout-dialog.h | ||
1825 | 12 | |||
1826 | 13 | gtk_logout_helper_CFLAGS = $(SESSIONSERVICE_CFLAGS) $(GTKLOGOUTHELPER_CFLAGS) $(GCONF_CFLAGS) -Wall -Werror -DINDICATOR_ICONS_DIR="\"$(INDICATORICONSDIR)\"" | ||
1827 | 14 | gtk_logout_helper_LDADD = $(SESSIONSERVICE_LIBS) $(GTKLOGOUTHELPER_LIBS) $(GCONF_LIBS) | ||
1828 | 15 | |||
1829 | 16 | 0 | ||
1830 | === removed file 'src/gtk-dialog/ck-pk-helper.c' | |||
1831 | --- src/gtk-dialog/ck-pk-helper.c 2009-09-22 12:45:17 +0000 | |||
1832 | +++ src/gtk-dialog/ck-pk-helper.c 1970-01-01 00:00:00 +0000 | |||
1833 | @@ -1,222 +0,0 @@ | |||
1834 | 1 | /* | ||
1835 | 2 | A small wrapper utility to load indicators and put them as menu items | ||
1836 | 3 | into the gnome-panel using it's applet interface. | ||
1837 | 4 | |||
1838 | 5 | Copyright 2009 Canonical Ltd. | ||
1839 | 6 | |||
1840 | 7 | Authors: | ||
1841 | 8 | Ted Gould <ted@canonical.com> | ||
1842 | 9 | |||
1843 | 10 | This program is free software: you can redistribute it and/or modify it | ||
1844 | 11 | under the terms of the GNU General Public License version 3, as published | ||
1845 | 12 | by the Free Software Foundation. | ||
1846 | 13 | |||
1847 | 14 | This program is distributed in the hope that it will be useful, but | ||
1848 | 15 | WITHOUT ANY WARRANTY; without even the implied warranties of | ||
1849 | 16 | MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR | ||
1850 | 17 | PURPOSE. See the GNU General Public License for more details. | ||
1851 | 18 | |||
1852 | 19 | You should have received a copy of the GNU General Public License along | ||
1853 | 20 | with this program. If not, see <http://www.gnu.org/licenses/>. | ||
1854 | 21 | */ | ||
1855 | 22 | |||
1856 | 23 | |||
1857 | 24 | #include <unistd.h> | ||
1858 | 25 | #include <glib.h> | ||
1859 | 26 | #include <dbus/dbus-glib.h> | ||
1860 | 27 | #include <polkit/polkit.h> | ||
1861 | 28 | |||
1862 | 29 | #include "logout-dialog.h" | ||
1863 | 30 | #include "ck-pk-helper.h" | ||
1864 | 31 | |||
1865 | 32 | static gboolean | ||
1866 | 33 | ck_multiple_users (void) | ||
1867 | 34 | { | ||
1868 | 35 | DBusGConnection * sbus = dbus_g_bus_get(DBUS_BUS_SYSTEM, NULL); | ||
1869 | 36 | g_return_val_if_fail(sbus != NULL, TRUE); /* worst case */ | ||
1870 | 37 | DBusGProxy * proxy = dbus_g_proxy_new_for_name(sbus, "org.freedesktop.ConsoleKit", | ||
1871 | 38 | "/org/freedesktop/ConsoleKit/Manager", | ||
1872 | 39 | "org.freedesktop.ConsoleKit.Manager"); | ||
1873 | 40 | |||
1874 | 41 | if (proxy == NULL) { | ||
1875 | 42 | return TRUE; | ||
1876 | 43 | } | ||
1877 | 44 | |||
1878 | 45 | gboolean result; | ||
1879 | 46 | GPtrArray * seats = NULL; | ||
1880 | 47 | |||
1881 | 48 | result = dbus_g_proxy_call(proxy, "GetSeats", NULL, G_TYPE_INVALID, | ||
1882 | 49 | dbus_g_type_get_collection("GPtrArray", DBUS_TYPE_G_OBJECT_PATH), &seats, G_TYPE_INVALID); | ||
1883 | 50 | |||
1884 | 51 | if (!result) { | ||
1885 | 52 | g_warning("Unable to get the seats for ConsoleKit"); | ||
1886 | 53 | g_object_unref(proxy); | ||
1887 | 54 | return TRUE; | ||
1888 | 55 | } | ||
1889 | 56 | |||
1890 | 57 | gchar * this_session_id = NULL; | ||
1891 | 58 | |||
1892 | 59 | result = dbus_g_proxy_call(proxy, "GetCurrentSession", NULL, G_TYPE_INVALID, | ||
1893 | 60 | DBUS_TYPE_G_OBJECT_PATH, &this_session_id, G_TYPE_INVALID); | ||
1894 | 61 | |||
1895 | 62 | g_object_unref(proxy); | ||
1896 | 63 | |||
1897 | 64 | if (!result) { | ||
1898 | 65 | g_warning("Unable to get current session from ConsoleKit"); | ||
1899 | 66 | return TRUE; | ||
1900 | 67 | } | ||
1901 | 68 | |||
1902 | 69 | proxy = dbus_g_proxy_new_for_name(sbus, "org.freedesktop.ConsoleKit", | ||
1903 | 70 | this_session_id, "org.freedesktop.ConsoleKit.Session"); | ||
1904 | 71 | |||
1905 | 72 | if (proxy == NULL) { | ||
1906 | 73 | return TRUE; | ||
1907 | 74 | } | ||
1908 | 75 | |||
1909 | 76 | guint this_session_uid; | ||
1910 | 77 | |||
1911 | 78 | result = dbus_g_proxy_call(proxy, "GetUnixUser", NULL, G_TYPE_INVALID, | ||
1912 | 79 | G_TYPE_UINT, &this_session_uid, G_TYPE_INVALID); | ||
1913 | 80 | |||
1914 | 81 | if (!result) { | ||
1915 | 82 | g_warning("Unable to get UID from ConsoleKit"); | ||
1916 | 83 | return TRUE; | ||
1917 | 84 | } | ||
1918 | 85 | |||
1919 | 86 | guint seat; | ||
1920 | 87 | gboolean multiple_users = FALSE; | ||
1921 | 88 | for (seat = 0; seat < seats->len; seat++) { | ||
1922 | 89 | gchar * seat_id = g_ptr_array_index(seats, seat); | ||
1923 | 90 | DBusGProxy * seat_proxy = dbus_g_proxy_new_for_name(sbus, "org.freedesktop.ConsoleKit", | ||
1924 | 91 | seat_id, "org.freedesktop.ConsoleKit.Seat"); | ||
1925 | 92 | g_free(seat_id); | ||
1926 | 93 | |||
1927 | 94 | if (seat_proxy == NULL) { | ||
1928 | 95 | continue; | ||
1929 | 96 | } | ||
1930 | 97 | |||
1931 | 98 | GPtrArray * sessions = NULL; | ||
1932 | 99 | |||
1933 | 100 | gboolean result = dbus_g_proxy_call(seat_proxy, | ||
1934 | 101 | "GetSessions", NULL, G_TYPE_INVALID, | ||
1935 | 102 | dbus_g_type_get_collection("GPtrArray", DBUS_TYPE_G_OBJECT_PATH), &sessions, G_TYPE_INVALID); | ||
1936 | 103 | |||
1937 | 104 | g_object_unref(seat_proxy); | ||
1938 | 105 | if (!result) { | ||
1939 | 106 | continue; | ||
1940 | 107 | } | ||
1941 | 108 | |||
1942 | 109 | guint session; | ||
1943 | 110 | for (session = 0; session < sessions->len; session++) { | ||
1944 | 111 | gchar * session_id = g_ptr_array_index(sessions, session); | ||
1945 | 112 | if (g_strcmp0(this_session_id, session_id) == 0) { | ||
1946 | 113 | continue; | ||
1947 | 114 | } | ||
1948 | 115 | DBusGProxy * session_proxy = dbus_g_proxy_new_for_name(sbus, "org.freedesktop.ConsoleKit", | ||
1949 | 116 | session_id, "org.freedesktop.ConsoleKit.Session"); | ||
1950 | 117 | g_free(session_id); | ||
1951 | 118 | |||
1952 | 119 | if (session_proxy == NULL) { | ||
1953 | 120 | continue; | ||
1954 | 121 | } | ||
1955 | 122 | |||
1956 | 123 | guint session_uid; | ||
1957 | 124 | result = dbus_g_proxy_call(session_proxy, "GetUnixUser", NULL, G_TYPE_INVALID, | ||
1958 | 125 | G_TYPE_UINT, &session_uid, G_TYPE_INVALID); | ||
1959 | 126 | g_object_unref(session_proxy); | ||
1960 | 127 | |||
1961 | 128 | if (!result) { | ||
1962 | 129 | continue; | ||
1963 | 130 | } | ||
1964 | 131 | |||
1965 | 132 | if (session_uid != this_session_uid) { | ||
1966 | 133 | multiple_users = TRUE; | ||
1967 | 134 | break; | ||
1968 | 135 | } | ||
1969 | 136 | } | ||
1970 | 137 | |||
1971 | 138 | g_ptr_array_free(sessions, TRUE); | ||
1972 | 139 | |||
1973 | 140 | if (multiple_users) { | ||
1974 | 141 | break; | ||
1975 | 142 | } | ||
1976 | 143 | } | ||
1977 | 144 | |||
1978 | 145 | g_ptr_array_free(seats, TRUE); | ||
1979 | 146 | g_object_unref(proxy); | ||
1980 | 147 | g_free(this_session_id); | ||
1981 | 148 | |||
1982 | 149 | return multiple_users; | ||
1983 | 150 | } | ||
1984 | 151 | |||
1985 | 152 | gboolean | ||
1986 | 153 | pk_require_auth (LogoutDialogAction action) { | ||
1987 | 154 | if (action == LOGOUT_DIALOG_LOGOUT) { | ||
1988 | 155 | return FALSE; | ||
1989 | 156 | } | ||
1990 | 157 | |||
1991 | 158 | gchar * pk_action; | ||
1992 | 159 | if (ck_multiple_users()) { | ||
1993 | 160 | if (action == LOGOUT_DIALOG_RESTART) { | ||
1994 | 161 | pk_action = "org.freedesktop.consolekit.system.restart-multiple-users"; | ||
1995 | 162 | } else { | ||
1996 | 163 | pk_action = "org.freedesktop.consolekit.system.stop-multiple-users"; | ||
1997 | 164 | } | ||
1998 | 165 | } else { | ||
1999 | 166 | if (action == LOGOUT_DIALOG_RESTART) { | ||
2000 | 167 | pk_action = "org.freedesktop.consolekit.system.restart"; | ||
2001 | 168 | } else { | ||
2002 | 169 | pk_action = "org.freedesktop.consolekit.system.stop"; | ||
2003 | 170 | } | ||
2004 | 171 | } | ||
2005 | 172 | |||
2006 | 173 | PolkitAuthorizationResult *polres = NULL; | ||
2007 | 174 | gboolean ret = FALSE; | ||
2008 | 175 | if (pk_can_do_action(pk_action, &polres)) { | ||
2009 | 176 | if (polkit_authorization_result_get_is_challenge (polres)) { | ||
2010 | 177 | ret = TRUE; | ||
2011 | 178 | } | ||
2012 | 179 | g_debug ("pk_require_auth(%s): authorized, is_challenge: %i", pk_action, ret); | ||
2013 | 180 | } else { | ||
2014 | 181 | g_debug ("pk_require_auth(%s): not authorized", pk_action); | ||
2015 | 182 | } | ||
2016 | 183 | if (polres) { | ||
2017 | 184 | g_object_unref (polres); | ||
2018 | 185 | } | ||
2019 | 186 | return ret; | ||
2020 | 187 | } | ||
2021 | 188 | |||
2022 | 189 | gboolean | ||
2023 | 190 | pk_can_do_action (const gchar *action_id, PolkitAuthorizationResult ** pol_result) | ||
2024 | 191 | { | ||
2025 | 192 | PolkitAuthority *authority; | ||
2026 | 193 | PolkitSubject *subject; | ||
2027 | 194 | PolkitAuthorizationResult *result; | ||
2028 | 195 | gboolean ret; | ||
2029 | 196 | |||
2030 | 197 | authority = polkit_authority_get(); | ||
2031 | 198 | if (!authority) { | ||
2032 | 199 | g_warning ("Could not get PolicyKit authority instance"); | ||
2033 | 200 | return FALSE; | ||
2034 | 201 | } | ||
2035 | 202 | subject = polkit_unix_process_new (getpid()); | ||
2036 | 203 | |||
2037 | 204 | result = polkit_authority_check_authorization_sync (authority, subject, action_id, NULL, 0, NULL, NULL); | ||
2038 | 205 | g_object_unref (authority); | ||
2039 | 206 | |||
2040 | 207 | ret = FALSE; | ||
2041 | 208 | if (result) { | ||
2042 | 209 | ret = polkit_authorization_result_get_is_authorized (result) || | ||
2043 | 210 | polkit_authorization_result_get_is_challenge (result); | ||
2044 | 211 | g_debug ("pk_can_do_action(%s): %i", action_id, ret); | ||
2045 | 212 | } else { | ||
2046 | 213 | g_warning ("pk_can_do_action(%s): check_authorization returned NULL", action_id); | ||
2047 | 214 | } | ||
2048 | 215 | if (pol_result) { | ||
2049 | 216 | *pol_result = result; | ||
2050 | 217 | } else { | ||
2051 | 218 | g_object_unref (result); | ||
2052 | 219 | } | ||
2053 | 220 | return ret; | ||
2054 | 221 | |||
2055 | 222 | } | ||
2056 | 223 | 0 | ||
2057 | === removed file 'src/gtk-dialog/ck-pk-helper.h' | |||
2058 | --- src/gtk-dialog/ck-pk-helper.h 2009-09-22 12:45:17 +0000 | |||
2059 | +++ src/gtk-dialog/ck-pk-helper.h 1970-01-01 00:00:00 +0000 | |||
2060 | @@ -1,32 +0,0 @@ | |||
2061 | 1 | /* | ||
2062 | 2 | A small wrapper utility to load indicators and put them as menu items | ||
2063 | 3 | into the gnome-panel using it's applet interface. | ||
2064 | 4 | |||
2065 | 5 | Copyright 2009 Canonical Ltd. | ||
2066 | 6 | |||
2067 | 7 | Authors: | ||
2068 | 8 | Ted Gould <ted@canonical.com> | ||
2069 | 9 | |||
2070 | 10 | This program is free software: you can redistribute it and/or modify it | ||
2071 | 11 | under the terms of the GNU General Public License version 3, as published | ||
2072 | 12 | by the Free Software Foundation. | ||
2073 | 13 | |||
2074 | 14 | This program is distributed in the hope that it will be useful, but | ||
2075 | 15 | WITHOUT ANY WARRANTY; without even the implied warranties of | ||
2076 | 16 | MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR | ||
2077 | 17 | PURPOSE. See the GNU General Public License for more details. | ||
2078 | 18 | |||
2079 | 19 | You should have received a copy of the GNU General Public License along | ||
2080 | 20 | with this program. If not, see <http://www.gnu.org/licenses/>. | ||
2081 | 21 | */ | ||
2082 | 22 | |||
2083 | 23 | |||
2084 | 24 | #ifndef __CK_PK_HELPER_H__ | ||
2085 | 25 | #define __CK_PK_HELPER_H__ 1 | ||
2086 | 26 | |||
2087 | 27 | #include <polkit/polkit.h> | ||
2088 | 28 | |||
2089 | 29 | gboolean pk_require_auth (LogoutDialogAction action); | ||
2090 | 30 | gboolean pk_can_do_action (const gchar *action_id, PolkitAuthorizationResult ** pol_result); | ||
2091 | 31 | |||
2092 | 32 | #endif /* __CK_PK_HELPER__ */ | ||
2093 | 33 | 0 | ||
2094 | === removed file 'src/gtk-dialog/gconf-helper.c' | |||
2095 | --- src/gtk-dialog/gconf-helper.c 2009-09-10 22:05:42 +0000 | |||
2096 | +++ src/gtk-dialog/gconf-helper.c 1970-01-01 00:00:00 +0000 | |||
2097 | @@ -1,73 +0,0 @@ | |||
2098 | 1 | /* | ||
2099 | 2 | A small wrapper utility for connecting to gconf. | ||
2100 | 3 | |||
2101 | 4 | Copyright 2009 Canonical Ltd. | ||
2102 | 5 | |||
2103 | 6 | Authors: | ||
2104 | 7 | Christoph Korn <c_korn@gmx.de> | ||
2105 | 8 | |||
2106 | 9 | This program is free software: you can redistribute it and/or modify it | ||
2107 | 10 | under the terms of the GNU General Public License version 3, as published | ||
2108 | 11 | by the Free Software Foundation. | ||
2109 | 12 | |||
2110 | 13 | This program is distributed in the hope that it will be useful, but | ||
2111 | 14 | WITHOUT ANY WARRANTY; without even the implied warranties of | ||
2112 | 15 | MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR | ||
2113 | 16 | PURPOSE. See the GNU General Public License for more details. | ||
2114 | 17 | |||
2115 | 18 | You should have received a copy of the GNU General Public License along | ||
2116 | 19 | with this program. If not, see <http://www.gnu.org/licenses/>. | ||
2117 | 20 | */ | ||
2118 | 21 | |||
2119 | 22 | |||
2120 | 23 | #include <gconf/gconf-client.h> | ||
2121 | 24 | |||
2122 | 25 | #include <glib/gi18n.h> | ||
2123 | 26 | |||
2124 | 27 | #include <dbus/dbus-glib.h> | ||
2125 | 28 | #include <dbus/dbus-glib-bindings.h> | ||
2126 | 29 | |||
2127 | 30 | #include <libdbusmenu-glib/server.h> | ||
2128 | 31 | #include <libdbusmenu-glib/menuitem.h> | ||
2129 | 32 | |||
2130 | 33 | #include "gconf-helper.h" | ||
2131 | 34 | |||
2132 | 35 | static GConfClient * gconf_client = NULL; | ||
2133 | 36 | |||
2134 | 37 | gboolean | ||
2135 | 38 | supress_confirmations (void) { | ||
2136 | 39 | if(!gconf_client) { | ||
2137 | 40 | gconf_client = gconf_client_get_default (); | ||
2138 | 41 | } | ||
2139 | 42 | return gconf_client_get_bool (gconf_client, SUPPRESS_KEY, NULL) ; | ||
2140 | 43 | } | ||
2141 | 44 | |||
2142 | 45 | static void update_menu_entries_callback (GConfClient *client, guint cnxn_id, GConfEntry *entry, gpointer data) { | ||
2143 | 46 | RestartShutdownLogoutMenuItems * restart_shutdown_logout_mi = (RestartShutdownLogoutMenuItems*) data; | ||
2144 | 47 | GConfValue * value = gconf_entry_get_value (entry); | ||
2145 | 48 | const gchar * key = gconf_entry_get_key (entry); | ||
2146 | 49 | |||
2147 | 50 | if(g_strcmp0 (key, SUPPRESS_KEY) == 0) { | ||
2148 | 51 | if (gconf_value_get_bool (value)) { | ||
2149 | 52 | dbusmenu_menuitem_property_set(restart_shutdown_logout_mi->logout_mi, DBUSMENU_MENUITEM_PROP_LABEL, _("Log Out")); | ||
2150 | 53 | dbusmenu_menuitem_property_set(restart_shutdown_logout_mi->restart_mi, DBUSMENU_MENUITEM_PROP_LABEL, _("Restart")); | ||
2151 | 54 | dbusmenu_menuitem_property_set(restart_shutdown_logout_mi->shutdown_mi, DBUSMENU_MENUITEM_PROP_LABEL, _("Shutdown")); | ||
2152 | 55 | } else { | ||
2153 | 56 | dbusmenu_menuitem_property_set(restart_shutdown_logout_mi->logout_mi, DBUSMENU_MENUITEM_PROP_LABEL, _("Log Out...")); | ||
2154 | 57 | dbusmenu_menuitem_property_set(restart_shutdown_logout_mi->restart_mi, DBUSMENU_MENUITEM_PROP_LABEL, _("Restart...")); | ||
2155 | 58 | dbusmenu_menuitem_property_set(restart_shutdown_logout_mi->shutdown_mi, DBUSMENU_MENUITEM_PROP_LABEL, _("Shutdown...")); | ||
2156 | 59 | } | ||
2157 | 60 | } | ||
2158 | 61 | } | ||
2159 | 62 | |||
2160 | 63 | void | ||
2161 | 64 | update_menu_entries(RestartShutdownLogoutMenuItems * restart_shutdown_logout_mi) { | ||
2162 | 65 | if(!gconf_client) { | ||
2163 | 66 | gconf_client = gconf_client_get_default (); | ||
2164 | 67 | } | ||
2165 | 68 | gconf_client_add_dir (gconf_client, GLOBAL_DIR, | ||
2166 | 69 | GCONF_CLIENT_PRELOAD_ONELEVEL, NULL); | ||
2167 | 70 | gconf_client_notify_add (gconf_client, SUPPRESS_KEY, | ||
2168 | 71 | update_menu_entries_callback, restart_shutdown_logout_mi, NULL, NULL); | ||
2169 | 72 | } | ||
2170 | 73 | |||
2171 | 74 | 0 | ||
2172 | === removed file 'src/gtk-dialog/gconf-helper.h' | |||
2173 | --- src/gtk-dialog/gconf-helper.h 2009-09-08 19:26:38 +0000 | |||
2174 | +++ src/gtk-dialog/gconf-helper.h 1970-01-01 00:00:00 +0000 | |||
2175 | @@ -1,50 +0,0 @@ | |||
2176 | 1 | /* | ||
2177 | 2 | A small wrapper utility for connecting to gconf. | ||
2178 | 3 | |||
2179 | 4 | Copyright 2009 Canonical Ltd. | ||
2180 | 5 | |||
2181 | 6 | Authors: | ||
2182 | 7 | Christoph Korn <c_korn@gmx.de> | ||
2183 | 8 | |||
2184 | 9 | This program is free software: you can redistribute it and/or modify it | ||
2185 | 10 | under the terms of the GNU General Public License version 3, as published | ||
2186 | 11 | by the Free Software Foundation. | ||
2187 | 12 | |||
2188 | 13 | This program is distributed in the hope that it will be useful, but | ||
2189 | 14 | WITHOUT ANY WARRANTY; without even the implied warranties of | ||
2190 | 15 | MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR | ||
2191 | 16 | PURPOSE. See the GNU General Public License for more details. | ||
2192 | 17 | |||
2193 | 18 | You should have received a copy of the GNU General Public License along | ||
2194 | 19 | with this program. If not, see <http://www.gnu.org/licenses/>. | ||
2195 | 20 | */ | ||
2196 | 21 | |||
2197 | 22 | |||
2198 | 23 | #ifndef __GCONF_HELPER_H__ | ||
2199 | 24 | #define __GCONF_HELPER_H__ 1 | ||
2200 | 25 | |||
2201 | 26 | #include <gconf/gconf-client.h> | ||
2202 | 27 | |||
2203 | 28 | #include <glib/gi18n.h> | ||
2204 | 29 | |||
2205 | 30 | #include <dbus/dbus-glib.h> | ||
2206 | 31 | #include <dbus/dbus-glib-bindings.h> | ||
2207 | 32 | |||
2208 | 33 | #include <libdbusmenu-glib/server.h> | ||
2209 | 34 | #include <libdbusmenu-glib/menuitem.h> | ||
2210 | 35 | |||
2211 | 36 | #define SUPPRESS_KEY "/apps/indicator-session/suppress_logout_restart_shutdown" | ||
2212 | 37 | #define GLOBAL_DIR "/apps/indicator-session" | ||
2213 | 38 | |||
2214 | 39 | typedef struct _RestartShutdownLogoutMenuItems | ||
2215 | 40 | { | ||
2216 | 41 | DbusmenuMenuitem * logout_mi; | ||
2217 | 42 | DbusmenuMenuitem * restart_mi; | ||
2218 | 43 | DbusmenuMenuitem * shutdown_mi; | ||
2219 | 44 | } | ||
2220 | 45 | RestartShutdownLogoutMenuItems; | ||
2221 | 46 | |||
2222 | 47 | void update_menu_entries(RestartShutdownLogoutMenuItems*); | ||
2223 | 48 | gboolean supress_confirmations (void); | ||
2224 | 49 | |||
2225 | 50 | #endif /* __GCONF_HELPER__ */ | ||
2226 | 51 | 0 | ||
2227 | === removed file 'src/gtk-dialog/gtk-logout-helper.c' | |||
2228 | --- src/gtk-dialog/gtk-logout-helper.c 2009-09-24 17:24:09 +0000 | |||
2229 | +++ src/gtk-dialog/gtk-logout-helper.c 1970-01-01 00:00:00 +0000 | |||
2230 | @@ -1,173 +0,0 @@ | |||
2231 | 1 | /* | ||
2232 | 2 | A small wrapper utility to load indicators and put them as menu items | ||
2233 | 3 | into the gnome-panel using it's applet interface. | ||
2234 | 4 | |||
2235 | 5 | Copyright 2009 Canonical Ltd. | ||
2236 | 6 | |||
2237 | 7 | Authors: | ||
2238 | 8 | Ted Gould <ted@canonical.com> | ||
2239 | 9 | Christoph Korn <c_korn@gmx.de> | ||
2240 | 10 | |||
2241 | 11 | This program is free software: you can redistribute it and/or modify it | ||
2242 | 12 | under the terms of the GNU General Public License version 3, as published | ||
2243 | 13 | by the Free Software Foundation. | ||
2244 | 14 | |||
2245 | 15 | This program is distributed in the hope that it will be useful, but | ||
2246 | 16 | WITHOUT ANY WARRANTY; without even the implied warranties of | ||
2247 | 17 | MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR | ||
2248 | 18 | PURPOSE. See the GNU General Public License for more details. | ||
2249 | 19 | |||
2250 | 20 | You should have received a copy of the GNU General Public License along | ||
2251 | 21 | with this program. If not, see <http://www.gnu.org/licenses/>. | ||
2252 | 22 | */ | ||
2253 | 23 | |||
2254 | 24 | #include <config.h> | ||
2255 | 25 | #include <glib.h> | ||
2256 | 26 | #include <gtk/gtk.h> | ||
2257 | 27 | #include <dbus/dbus-glib.h> | ||
2258 | 28 | #include "logout-dialog.h" | ||
2259 | 29 | #include "ck-pk-helper.h" | ||
2260 | 30 | #include "gconf-helper.h" | ||
2261 | 31 | |||
2262 | 32 | static void | ||
2263 | 33 | session_action (LogoutDialogAction action) | ||
2264 | 34 | { | ||
2265 | 35 | DBusGConnection * sbus; | ||
2266 | 36 | DBusGProxy * sm_proxy; | ||
2267 | 37 | GError * error = NULL; | ||
2268 | 38 | gboolean res = FALSE; | ||
2269 | 39 | |||
2270 | 40 | sbus = dbus_g_bus_get(DBUS_BUS_SESSION, NULL); | ||
2271 | 41 | if (sbus == NULL) { | ||
2272 | 42 | g_warning("Unable to get DBus session bus."); | ||
2273 | 43 | return; | ||
2274 | 44 | } | ||
2275 | 45 | sm_proxy = dbus_g_proxy_new_for_name_owner (sbus, | ||
2276 | 46 | "org.gnome.SessionManager", | ||
2277 | 47 | "/org/gnome/SessionManager", | ||
2278 | 48 | "org.gnome.SessionManager", | ||
2279 | 49 | &error); | ||
2280 | 50 | if (sm_proxy == NULL) { | ||
2281 | 51 | g_warning("Unable to get DBus proxy to SessionManager interface: %s", error->message); | ||
2282 | 52 | g_error_free(error); | ||
2283 | 53 | return; | ||
2284 | 54 | } | ||
2285 | 55 | |||
2286 | 56 | g_clear_error (&error); | ||
2287 | 57 | |||
2288 | 58 | if (action == LOGOUT_DIALOG_LOGOUT) { | ||
2289 | 59 | res = dbus_g_proxy_call_with_timeout (sm_proxy, "Logout", INT_MAX, &error, | ||
2290 | 60 | G_TYPE_UINT, 1, G_TYPE_INVALID, G_TYPE_INVALID); | ||
2291 | 61 | } else if (action == LOGOUT_DIALOG_SHUTDOWN) { | ||
2292 | 62 | res = dbus_g_proxy_call_with_timeout (sm_proxy, "RequestShutdown", INT_MAX, &error, | ||
2293 | 63 | G_TYPE_INVALID, G_TYPE_INVALID); | ||
2294 | 64 | } else if (action == LOGOUT_DIALOG_RESTART) { | ||
2295 | 65 | res = dbus_g_proxy_call_with_timeout (sm_proxy, "RequestReboot", INT_MAX, &error, | ||
2296 | 66 | G_TYPE_INVALID, G_TYPE_INVALID); | ||
2297 | 67 | } else { | ||
2298 | 68 | g_warning ("Unknown session action"); | ||
2299 | 69 | } | ||
2300 | 70 | |||
2301 | 71 | if (!res) { | ||
2302 | 72 | if (error != NULL) { | ||
2303 | 73 | g_warning ("SessionManager action failed: %s", error->message); | ||
2304 | 74 | } else { | ||
2305 | 75 | g_warning ("SessionManager action failed: unknown error"); | ||
2306 | 76 | } | ||
2307 | 77 | } | ||
2308 | 78 | |||
2309 | 79 | g_object_unref(sm_proxy); | ||
2310 | 80 | |||
2311 | 81 | if (error != NULL) { | ||
2312 | 82 | g_error_free(error); | ||
2313 | 83 | } | ||
2314 | 84 | |||
2315 | 85 | return; | ||
2316 | 86 | } | ||
2317 | 87 | |||
2318 | 88 | static LogoutDialogAction type = LOGOUT_DIALOG_LOGOUT; | ||
2319 | 89 | |||
2320 | 90 | static gboolean | ||
2321 | 91 | option_logout (const gchar * arg, const gchar * value, gpointer data, GError * error) | ||
2322 | 92 | { | ||
2323 | 93 | type = LOGOUT_DIALOG_LOGOUT; | ||
2324 | 94 | return TRUE; | ||
2325 | 95 | } | ||
2326 | 96 | |||
2327 | 97 | static gboolean | ||
2328 | 98 | option_shutdown (const gchar * arg, const gchar * value, gpointer data, GError * error) | ||
2329 | 99 | { | ||
2330 | 100 | type = LOGOUT_DIALOG_SHUTDOWN; | ||
2331 | 101 | return TRUE; | ||
2332 | 102 | } | ||
2333 | 103 | |||
2334 | 104 | static gboolean | ||
2335 | 105 | option_restart (const gchar * arg, const gchar * value, gpointer data, GError * error) | ||
2336 | 106 | { | ||
2337 | 107 | type = LOGOUT_DIALOG_RESTART; | ||
2338 | 108 | return TRUE; | ||
2339 | 109 | } | ||
2340 | 110 | |||
2341 | 111 | static GOptionEntry options[] = { | ||
2342 | 112 | {"logout", 'l', G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK, option_logout, "Log out of the current session", NULL}, | ||
2343 | 113 | {"shutdown", 's', G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK, option_shutdown, "Shutdown the entire system", NULL}, | ||
2344 | 114 | {"restart", 'r', G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK, option_restart, "Restart the system", NULL}, | ||
2345 | 115 | |||
2346 | 116 | {NULL} | ||
2347 | 117 | }; | ||
2348 | 118 | |||
2349 | 119 | int | ||
2350 | 120 | main (int argc, char * argv[]) | ||
2351 | 121 | { | ||
2352 | 122 | gtk_init(&argc, &argv); | ||
2353 | 123 | |||
2354 | 124 | /* Setting up i18n and gettext. Apparently, we need | ||
2355 | 125 | all of these. */ | ||
2356 | 126 | setlocale (LC_ALL, ""); | ||
2357 | 127 | bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR); | ||
2358 | 128 | textdomain (GETTEXT_PACKAGE); | ||
2359 | 129 | |||
2360 | 130 | GError * error = NULL; | ||
2361 | 131 | GOptionContext * context = g_option_context_new(" - logout of the current session"); | ||
2362 | 132 | g_option_context_add_main_entries(context, options, "gtk-logout-helper"); | ||
2363 | 133 | g_option_context_add_group(context, gtk_get_option_group(TRUE)); | ||
2364 | 134 | g_option_context_set_help_enabled(context, TRUE); | ||
2365 | 135 | |||
2366 | 136 | if (!g_option_context_parse(context, &argc, &argv, &error)) { | ||
2367 | 137 | g_debug("Option parsing failed: %s", error->message); | ||
2368 | 138 | g_error_free(error); | ||
2369 | 139 | return 1; | ||
2370 | 140 | } | ||
2371 | 141 | |||
2372 | 142 | /* Init some theme/icon stuff */ | ||
2373 | 143 | gtk_icon_theme_append_search_path(gtk_icon_theme_get_default(), | ||
2374 | 144 | INDICATOR_ICONS_DIR); | ||
2375 | 145 | |||
2376 | 146 | GtkWidget * dialog = NULL; | ||
2377 | 147 | /* TODO: We're disabling PolicyKit checking here because there | ||
2378 | 148 | is a bug in ConsoleKit where the dialog doesn't come up until | ||
2379 | 149 | the session is entirely closed. Stupid, but it's better than | ||
2380 | 150 | not getting a dialog at all. */ | ||
2381 | 151 | /* if (!pk_require_auth(type) && !supress_confirmations()) { */ | ||
2382 | 152 | if (!supress_confirmations()) { | ||
2383 | 153 | dialog = logout_dialog_new(type); | ||
2384 | 154 | } | ||
2385 | 155 | |||
2386 | 156 | if (dialog != NULL) { | ||
2387 | 157 | GtkResponseType response = gtk_dialog_run(GTK_DIALOG(dialog)); | ||
2388 | 158 | gtk_widget_hide(dialog); | ||
2389 | 159 | |||
2390 | 160 | if (response == GTK_RESPONSE_HELP) { | ||
2391 | 161 | type = LOGOUT_DIALOG_RESTART; | ||
2392 | 162 | response = GTK_RESPONSE_OK; | ||
2393 | 163 | } | ||
2394 | 164 | |||
2395 | 165 | if (response != GTK_RESPONSE_OK) { | ||
2396 | 166 | return 0; | ||
2397 | 167 | } | ||
2398 | 168 | } | ||
2399 | 169 | |||
2400 | 170 | session_action(type); | ||
2401 | 171 | |||
2402 | 172 | return 0; | ||
2403 | 173 | } | ||
2404 | 174 | 0 | ||
2405 | === removed file 'src/gtk-dialog/logout-dialog.c' | |||
2406 | --- src/gtk-dialog/logout-dialog.c 2009-10-05 21:11:25 +0000 | |||
2407 | +++ src/gtk-dialog/logout-dialog.c 1970-01-01 00:00:00 +0000 | |||
2408 | @@ -1,371 +0,0 @@ | |||
2409 | 1 | /* | ||
2410 | 2 | * libgksuui -- Gtk+ widget and convenience functions for requesting passwords | ||
2411 | 3 | * Copyright (C) 2004 Gustavo Noronha Silva | ||
2412 | 4 | * | ||
2413 | 5 | * This library is free software; you can redistribute it and/or | ||
2414 | 6 | * modify it under the terms of the GNU Lesser General Public | ||
2415 | 7 | * License as published by the Free Software Foundation; either | ||
2416 | 8 | * version 2 of the License, or (at your option) any later version. | ||
2417 | 9 | * | ||
2418 | 10 | * This library is distributed in the hope that it will be useful, | ||
2419 | 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
2420 | 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
2421 | 13 | * Lesser General Public License for more details. | ||
2422 | 14 | * | ||
2423 | 15 | * You should have received a copy of the GNU Lesser General Public | ||
2424 | 16 | * License along with this library; if not, write to the | ||
2425 | 17 | * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | ||
2426 | 18 | * Boston, MA 02110-1301 USA | ||
2427 | 19 | */ | ||
2428 | 20 | |||
2429 | 21 | #include <string.h> | ||
2430 | 22 | #include <math.h> | ||
2431 | 23 | |||
2432 | 24 | #include <gtk/gtk.h> | ||
2433 | 25 | #include <gdk/gdkx.h> | ||
2434 | 26 | #include <glib/gi18n.h> | ||
2435 | 27 | #include <X11/XKBlib.h> | ||
2436 | 28 | |||
2437 | 29 | #include "logout-dialog.h" | ||
2438 | 30 | #include "ck-pk-helper.h" | ||
2439 | 31 | |||
2440 | 32 | enum { | ||
2441 | 33 | PROP_ZERO, | ||
2442 | 34 | PROP_ACTION | ||
2443 | 35 | }; | ||
2444 | 36 | |||
2445 | 37 | |||
2446 | 38 | static void | ||
2447 | 39 | logout_dialog_class_init (LogoutDialogClass *klass); | ||
2448 | 40 | |||
2449 | 41 | static void | ||
2450 | 42 | logout_dialog_init (LogoutDialog *logout_dialog); | ||
2451 | 43 | |||
2452 | 44 | static void | ||
2453 | 45 | set_property (GObject * object, guint param_id, const GValue * value, GParamSpec *pspec); | ||
2454 | 46 | |||
2455 | 47 | static void | ||
2456 | 48 | get_property (GObject * object, guint param_id, GValue * value, GParamSpec *pspec); | ||
2457 | 49 | |||
2458 | 50 | static gboolean | ||
2459 | 51 | timer_cb (gpointer data); | ||
2460 | 52 | |||
2461 | 53 | static void | ||
2462 | 54 | show_cb (GtkWidget * widget, gpointer data); | ||
2463 | 55 | |||
2464 | 56 | static void | ||
2465 | 57 | check_restart (LogoutDialog * dialog); | ||
2466 | 58 | |||
2467 | 59 | static gchar* | ||
2468 | 60 | get_plural_string (LogoutDialog * dialog); | ||
2469 | 61 | |||
2470 | 62 | static const gchar * title_strings[LOGOUT_DIALOG_ACTION_CNT] = { | ||
2471 | 63 | /* LOGOUT_DIALOG_LOGOUT, */ NC_("title", "Log Out"), | ||
2472 | 64 | /* LOGOUT_DIALOG_RESTART, */ NC_("title", "Restart"), | ||
2473 | 65 | /* LOGOUT_DIALOG_SHUTDOWN, */ NC_("title", "Shut Down") | ||
2474 | 66 | }; | ||
2475 | 67 | |||
2476 | 68 | static const gchar * button_strings[LOGOUT_DIALOG_ACTION_CNT] = { | ||
2477 | 69 | /* LOGOUT_DIALOG_LOGOUT, */ NC_("button", "Log Out"), | ||
2478 | 70 | /* LOGOUT_DIALOG_RESTART, */ NC_("button", "Restart"), | ||
2479 | 71 | /* LOGOUT_DIALOG_SHUTDOWN, */ NC_("button", "Shut Down") | ||
2480 | 72 | }; | ||
2481 | 73 | |||
2482 | 74 | static const gchar * restart_auth = N_("Restart..."); | ||
2483 | 75 | |||
2484 | 76 | static const gchar * body_logout_update = N_("You recently installed updates which will only take effect after a restart. Restart to apply software updates."); | ||
2485 | 77 | |||
2486 | 78 | static const gchar * icon_strings[LOGOUT_DIALOG_ACTION_CNT] = { | ||
2487 | 79 | /* LOGOUT_DIALOG_LOGOUT, */ "system-log-out", | ||
2488 | 80 | /* LOGOUT_DIALOG_RESTART, */ "system-restart", | ||
2489 | 81 | /* LOGOUT_DIALOG_SHUTDOWN, */ "system-shutdown" | ||
2490 | 82 | }; | ||
2491 | 83 | |||
2492 | 84 | GType | ||
2493 | 85 | logout_dialog_get_type (void) | ||
2494 | 86 | { | ||
2495 | 87 | static GType type = 0; | ||
2496 | 88 | |||
2497 | 89 | if (type == 0) | ||
2498 | 90 | { | ||
2499 | 91 | static const GTypeInfo info = | ||
2500 | 92 | { | ||
2501 | 93 | sizeof (LogoutDialogClass), /* size of class */ | ||
2502 | 94 | NULL, /* base_init */ | ||
2503 | 95 | NULL, /* base_finalize */ | ||
2504 | 96 | (GClassInitFunc) logout_dialog_class_init, | ||
2505 | 97 | NULL, /* class_finalize */ | ||
2506 | 98 | NULL, /* class_data */ | ||
2507 | 99 | sizeof (LogoutDialog), /* size of object */ | ||
2508 | 100 | 0, /* n_preallocs */ | ||
2509 | 101 | (GInstanceInitFunc) logout_dialog_init /* instance_init */ | ||
2510 | 102 | }; | ||
2511 | 103 | type = g_type_register_static (gtk_dialog_get_type (), | ||
2512 | 104 | "LogoutDialogType", | ||
2513 | 105 | &info, 0); | ||
2514 | 106 | } | ||
2515 | 107 | |||
2516 | 108 | return type; | ||
2517 | 109 | } | ||
2518 | 110 | |||
2519 | 111 | static gchar* | ||
2520 | 112 | get_plural_string (LogoutDialog * dialog) | ||
2521 | 113 | { | ||
2522 | 114 | static gchar *plural_string = ""; | ||
2523 | 115 | |||
2524 | 116 | switch (dialog->action) | ||
2525 | 117 | { | ||
2526 | 118 | case LOGOUT_DIALOG_LOGOUT: | ||
2527 | 119 | plural_string = ngettext("You will be logged out in %d second.", | ||
2528 | 120 | "You will be logged out in %d seconds.", | ||
2529 | 121 | dialog->timeout); | ||
2530 | 122 | break; | ||
2531 | 123 | case LOGOUT_DIALOG_RESTART: | ||
2532 | 124 | plural_string = ngettext("The computer will restart in %d second.", | ||
2533 | 125 | "The computer will restart in %d seconds.", | ||
2534 | 126 | dialog->timeout); | ||
2535 | 127 | break; | ||
2536 | 128 | case LOGOUT_DIALOG_SHUTDOWN: | ||
2537 | 129 | plural_string = ngettext("The computer will be shut down in %d second.", | ||
2538 | 130 | "The computer will be shut down in %d seconds.", | ||
2539 | 131 | dialog->timeout); | ||
2540 | 132 | break; | ||
2541 | 133 | default: | ||
2542 | 134 | break; | ||
2543 | 135 | } | ||
2544 | 136 | |||
2545 | 137 | return plural_string; | ||
2546 | 138 | } | ||
2547 | 139 | |||
2548 | 140 | static void | ||
2549 | 141 | logout_dialog_class_init (LogoutDialogClass *klass) | ||
2550 | 142 | { | ||
2551 | 143 | GObjectClass *gobject_class = G_OBJECT_CLASS (klass); | ||
2552 | 144 | |||
2553 | 145 | gobject_class->set_property = set_property; | ||
2554 | 146 | gobject_class->get_property = get_property; | ||
2555 | 147 | |||
2556 | 148 | g_object_class_install_property(gobject_class, PROP_ACTION, | ||
2557 | 149 | g_param_spec_int("action", NULL, NULL, | ||
2558 | 150 | LOGOUT_DIALOG_LOGOUT, LOGOUT_DIALOG_SHUTDOWN, | ||
2559 | 151 | LOGOUT_DIALOG_LOGOUT, G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); | ||
2560 | 152 | |||
2561 | 153 | return; | ||
2562 | 154 | } | ||
2563 | 155 | |||
2564 | 156 | static void | ||
2565 | 157 | set_property (GObject * object, guint param_id, const GValue * value, GParamSpec *pspec) | ||
2566 | 158 | { | ||
2567 | 159 | g_return_if_fail(param_id == PROP_ACTION); | ||
2568 | 160 | |||
2569 | 161 | LogoutDialog * dialog = LOGOUT_DIALOG(object); | ||
2570 | 162 | dialog->action = (LogoutDialogAction)g_value_get_int(value); | ||
2571 | 163 | |||
2572 | 164 | gtk_image_set_from_icon_name(GTK_IMAGE(dialog->image), icon_strings[dialog->action], GTK_ICON_SIZE_DIALOG); | ||
2573 | 165 | gtk_window_set_title (GTK_WINDOW(dialog), _(title_strings[dialog->action])); | ||
2574 | 166 | gtk_window_set_icon_name (GTK_WINDOW(dialog), icon_strings[dialog->action]); | ||
2575 | 167 | gtk_widget_hide(dialog->message); | ||
2576 | 168 | gtk_button_set_label(GTK_BUTTON(dialog->ok_button), _(button_strings[dialog->action])); | ||
2577 | 169 | |||
2578 | 170 | gchar * timeouttxt = g_strdup_printf(get_plural_string(dialog), dialog->timeout); | ||
2579 | 171 | gtk_label_set_text(GTK_LABEL(dialog->timeout_text), timeouttxt); | ||
2580 | 172 | g_free(timeouttxt); | ||
2581 | 173 | |||
2582 | 174 | check_restart(dialog); | ||
2583 | 175 | |||
2584 | 176 | return; | ||
2585 | 177 | } | ||
2586 | 178 | |||
2587 | 179 | static void | ||
2588 | 180 | get_property (GObject * object, guint param_id, GValue * value, GParamSpec *pspec) | ||
2589 | 181 | { | ||
2590 | 182 | g_return_if_fail(param_id == PROP_ACTION); | ||
2591 | 183 | g_value_set_int(value, LOGOUT_DIALOG(object)->action); | ||
2592 | 184 | } | ||
2593 | 185 | |||
2594 | 186 | static gboolean | ||
2595 | 187 | timer_cb (gpointer data) | ||
2596 | 188 | { | ||
2597 | 189 | LogoutDialog * dialog = LOGOUT_DIALOG(data); | ||
2598 | 190 | |||
2599 | 191 | if (dialog->timeout == 0) { | ||
2600 | 192 | gtk_dialog_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK); | ||
2601 | 193 | dialog->timerfunc = 0; | ||
2602 | 194 | return FALSE; | ||
2603 | 195 | } else { | ||
2604 | 196 | dialog->timeout--; | ||
2605 | 197 | |||
2606 | 198 | gchar * timeouttxt = g_strdup_printf(get_plural_string(dialog), dialog->timeout); | ||
2607 | 199 | gtk_label_set_text(GTK_LABEL(dialog->timeout_text), timeouttxt); | ||
2608 | 200 | g_free(timeouttxt); | ||
2609 | 201 | } | ||
2610 | 202 | |||
2611 | 203 | return TRUE; | ||
2612 | 204 | } | ||
2613 | 205 | |||
2614 | 206 | static void | ||
2615 | 207 | show_cb (GtkWidget * widget, gpointer data) | ||
2616 | 208 | { | ||
2617 | 209 | LogoutDialog * dialog = LOGOUT_DIALOG(widget); | ||
2618 | 210 | |||
2619 | 211 | if (dialog->timerfunc != 0) { | ||
2620 | 212 | g_source_remove(dialog->timerfunc); | ||
2621 | 213 | dialog->timerfunc = 0; | ||
2622 | 214 | } | ||
2623 | 215 | |||
2624 | 216 | dialog->timerfunc = g_timeout_add_seconds(1, timer_cb, dialog); | ||
2625 | 217 | return; | ||
2626 | 218 | } | ||
2627 | 219 | |||
2628 | 220 | static void | ||
2629 | 221 | check_restart (LogoutDialog * dialog) | ||
2630 | 222 | { | ||
2631 | 223 | if (dialog->action != LOGOUT_DIALOG_LOGOUT) { | ||
2632 | 224 | return; | ||
2633 | 225 | } | ||
2634 | 226 | |||
2635 | 227 | if (g_file_test("/var/run/reboot-required", G_FILE_TEST_EXISTS)) { | ||
2636 | 228 | if (pk_can_do_action("org.freedesktop.consolekit.system.restart", NULL) || | ||
2637 | 229 | pk_can_do_action("org.freedesktop.consolekit.system.restart-multiple-users", NULL)) { | ||
2638 | 230 | |||
2639 | 231 | gtk_label_set_text(GTK_LABEL(dialog->message), _(body_logout_update)); | ||
2640 | 232 | gtk_widget_show(dialog->message); | ||
2641 | 233 | if (pk_require_auth(LOGOUT_DIALOG_RESTART)) { | ||
2642 | 234 | gtk_button_set_label(GTK_BUTTON(dialog->restart_button), _(restart_auth)); | ||
2643 | 235 | } else { | ||
2644 | 236 | gtk_button_set_label(GTK_BUTTON(dialog->restart_button), _(button_strings[LOGOUT_DIALOG_RESTART])); | ||
2645 | 237 | } | ||
2646 | 238 | gtk_widget_show(dialog->restart_button); | ||
2647 | 239 | } | ||
2648 | 240 | } | ||
2649 | 241 | |||
2650 | 242 | return; | ||
2651 | 243 | } | ||
2652 | 244 | |||
2653 | 245 | static gboolean | ||
2654 | 246 | focus_out_cb (GtkWidget *widget, GdkEventFocus *event, gpointer user_data) | ||
2655 | 247 | { | ||
2656 | 248 | gtk_window_present (GTK_WINDOW(widget)); | ||
2657 | 249 | return TRUE; | ||
2658 | 250 | } | ||
2659 | 251 | |||
2660 | 252 | static void | ||
2661 | 253 | logout_dialog_init (LogoutDialog *logout_dialog) | ||
2662 | 254 | { | ||
2663 | 255 | GtkDialog *dialog; | ||
2664 | 256 | gint border_width = 6; | ||
2665 | 257 | |||
2666 | 258 | logout_dialog->timeout = 60; | ||
2667 | 259 | logout_dialog->timerfunc = 0; | ||
2668 | 260 | |||
2669 | 261 | /* dialog window */ | ||
2670 | 262 | dialog = GTK_DIALOG(logout_dialog); | ||
2671 | 263 | |||
2672 | 264 | /* make sure that our window will always have the focus */ | ||
2673 | 265 | g_signal_connect (G_OBJECT(dialog), "focus-out-event", | ||
2674 | 266 | G_CALLBACK(focus_out_cb), NULL); | ||
2675 | 267 | |||
2676 | 268 | logout_dialog->main_vbox = dialog->vbox; | ||
2677 | 269 | |||
2678 | 270 | gtk_window_set_title (GTK_WINDOW(logout_dialog), ""); | ||
2679 | 271 | gtk_dialog_set_has_separator (GTK_DIALOG(logout_dialog), FALSE); | ||
2680 | 272 | gtk_container_set_border_width (GTK_CONTAINER(logout_dialog), border_width); | ||
2681 | 273 | gtk_box_set_spacing (GTK_BOX(logout_dialog->main_vbox), 12); | ||
2682 | 274 | gtk_window_set_resizable (GTK_WINDOW(logout_dialog), FALSE); | ||
2683 | 275 | |||
2684 | 276 | gtk_window_stick(GTK_WINDOW(logout_dialog)); | ||
2685 | 277 | gtk_window_set_keep_above(GTK_WINDOW(logout_dialog), TRUE); | ||
2686 | 278 | gtk_widget_realize(GTK_WIDGET(logout_dialog)); | ||
2687 | 279 | /* remove superfluous window buttons */ | ||
2688 | 280 | gdk_window_set_functions (GTK_WIDGET(logout_dialog)->window, 0); | ||
2689 | 281 | gdk_window_set_decorations (GTK_WIDGET(logout_dialog)->window, GDK_DECOR_BORDER | GDK_DECOR_TITLE); | ||
2690 | 282 | |||
2691 | 283 | /* center window */ | ||
2692 | 284 | gtk_window_set_position (GTK_WINDOW(logout_dialog), GTK_WIN_POS_CENTER); | ||
2693 | 285 | |||
2694 | 286 | /* the action buttons */ | ||
2695 | 287 | /* the cancel button */ | ||
2696 | 288 | logout_dialog->restart_button = gtk_dialog_add_button (dialog, | ||
2697 | 289 | GTK_STOCK_HELP, | ||
2698 | 290 | GTK_RESPONSE_HELP); | ||
2699 | 291 | gtk_button_set_label(GTK_BUTTON(logout_dialog->restart_button), _(button_strings[LOGOUT_DIALOG_RESTART])); | ||
2700 | 292 | gtk_widget_hide(logout_dialog->restart_button); | ||
2701 | 293 | |||
2702 | 294 | /* the cancel button */ | ||
2703 | 295 | logout_dialog->cancel_button = gtk_dialog_add_button (dialog, | ||
2704 | 296 | GTK_STOCK_CANCEL, | ||
2705 | 297 | GTK_RESPONSE_CANCEL); | ||
2706 | 298 | /* the ok button */ | ||
2707 | 299 | logout_dialog->ok_button = gtk_dialog_add_button (dialog, | ||
2708 | 300 | GTK_STOCK_OK, | ||
2709 | 301 | GTK_RESPONSE_OK); | ||
2710 | 302 | gtk_widget_grab_default (logout_dialog->ok_button); | ||
2711 | 303 | |||
2712 | 304 | /* Window Title and Icon */ | ||
2713 | 305 | gtk_window_set_title (GTK_WINDOW(logout_dialog), _(title_strings[logout_dialog->action])); | ||
2714 | 306 | gtk_window_set_icon_name (GTK_WINDOW(logout_dialog), icon_strings[logout_dialog->action]); | ||
2715 | 307 | |||
2716 | 308 | /* hbox */ | ||
2717 | 309 | logout_dialog->hbox = gtk_hbox_new (FALSE, 12); | ||
2718 | 310 | gtk_container_set_border_width (GTK_CONTAINER(logout_dialog->hbox), 6); | ||
2719 | 311 | gtk_box_pack_start (GTK_BOX(logout_dialog->main_vbox), | ||
2720 | 312 | logout_dialog->hbox, FALSE, FALSE, 0); | ||
2721 | 313 | gtk_widget_show (logout_dialog->hbox); | ||
2722 | 314 | |||
2723 | 315 | /* image */ | ||
2724 | 316 | logout_dialog->image = | ||
2725 | 317 | gtk_image_new_from_icon_name (icon_strings[logout_dialog->action], | ||
2726 | 318 | GTK_ICON_SIZE_DIALOG); | ||
2727 | 319 | gtk_misc_set_alignment (GTK_MISC(logout_dialog->image), 0.5, 0); | ||
2728 | 320 | gtk_box_pack_start (GTK_BOX(logout_dialog->hbox), logout_dialog->image, | ||
2729 | 321 | FALSE, FALSE, 0); | ||
2730 | 322 | gtk_widget_show (logout_dialog->image); | ||
2731 | 323 | |||
2732 | 324 | /* vbox for text */ | ||
2733 | 325 | logout_dialog->vbox_text = gtk_vbox_new(FALSE, 12); | ||
2734 | 326 | gtk_box_pack_start(GTK_BOX(logout_dialog->hbox), logout_dialog->vbox_text, TRUE, TRUE, 0); | ||
2735 | 327 | gtk_widget_show(logout_dialog->vbox_text); | ||
2736 | 328 | |||
2737 | 329 | /* Message */ | ||
2738 | 330 | logout_dialog->message = gtk_label_new(""); | ||
2739 | 331 | gtk_label_set_line_wrap(GTK_LABEL(logout_dialog->message), TRUE); | ||
2740 | 332 | gtk_label_set_single_line_mode(GTK_LABEL(logout_dialog->message), FALSE); | ||
2741 | 333 | gtk_label_set_selectable(GTK_LABEL(logout_dialog->message), TRUE); | ||
2742 | 334 | gtk_misc_set_alignment (GTK_MISC(logout_dialog->message), 0.0, 0.0); | ||
2743 | 335 | gtk_box_pack_start(GTK_BOX(logout_dialog->vbox_text), logout_dialog->message, TRUE, TRUE, 0); | ||
2744 | 336 | gtk_widget_show(logout_dialog->message); | ||
2745 | 337 | |||
2746 | 338 | /* timeout */ | ||
2747 | 339 | logout_dialog->timeout_text = gtk_label_new(""); | ||
2748 | 340 | gtk_label_set_line_wrap(GTK_LABEL(logout_dialog->timeout_text), TRUE); | ||
2749 | 341 | gtk_label_set_single_line_mode(GTK_LABEL(logout_dialog->timeout_text), FALSE); | ||
2750 | 342 | gtk_label_set_selectable(GTK_LABEL(logout_dialog->timeout_text), FALSE); | ||
2751 | 343 | gtk_misc_set_alignment (GTK_MISC(logout_dialog->timeout_text), 0.0, 0.5); | ||
2752 | 344 | gtk_box_pack_start(GTK_BOX(logout_dialog->vbox_text), logout_dialog->timeout_text, TRUE, TRUE, 0); | ||
2753 | 345 | gtk_widget_show(logout_dialog->timeout_text); | ||
2754 | 346 | |||
2755 | 347 | g_signal_connect(G_OBJECT(logout_dialog), "show", G_CALLBACK(show_cb), logout_dialog); | ||
2756 | 348 | |||
2757 | 349 | return; | ||
2758 | 350 | } | ||
2759 | 351 | |||
2760 | 352 | /** | ||
2761 | 353 | * logout_dialog_new: | ||
2762 | 354 | * | ||
2763 | 355 | * Creates a new #LogoutDialog. | ||
2764 | 356 | * | ||
2765 | 357 | * Returns: the new #LogoutDialog | ||
2766 | 358 | */ | ||
2767 | 359 | GtkWidget* | ||
2768 | 360 | logout_dialog_new (LogoutDialogAction action) | ||
2769 | 361 | { | ||
2770 | 362 | LogoutDialog * dialog = g_object_new (LOGOUT_TYPE_DIALOG, "action", action, NULL); | ||
2771 | 363 | return GTK_WIDGET(dialog); | ||
2772 | 364 | } | ||
2773 | 365 | |||
2774 | 366 | LogoutDialogAction | ||
2775 | 367 | logout_dialog_get_action (LogoutDialog * dialog) | ||
2776 | 368 | { | ||
2777 | 369 | return dialog->action; | ||
2778 | 370 | } | ||
2779 | 371 | |||
2780 | 372 | 0 | ||
2781 | === removed file 'src/gtk-dialog/logout-dialog.h' | |||
2782 | --- src/gtk-dialog/logout-dialog.h 2009-08-11 13:25:43 +0000 | |||
2783 | +++ src/gtk-dialog/logout-dialog.h 1970-01-01 00:00:00 +0000 | |||
2784 | @@ -1,99 +0,0 @@ | |||
2785 | 1 | /* | ||
2786 | 2 | * libgksuui -- Gtk+ widget and convenience functions for requesting passwords | ||
2787 | 3 | * Copyright (C) 2004 Gustavo Noronha Silva | ||
2788 | 4 | * | ||
2789 | 5 | * This library is free software; you can redistribute it and/or | ||
2790 | 6 | * modify it under the terms of the GNU Lesser General Public | ||
2791 | 7 | * License as published by the Free Software Foundation; either | ||
2792 | 8 | * version 2 of the License, or (at your option) any later version. | ||
2793 | 9 | * | ||
2794 | 10 | * This library is distributed in the hope that it will be useful, | ||
2795 | 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
2796 | 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
2797 | 13 | * Lesser General Public License for more details. | ||
2798 | 14 | * | ||
2799 | 15 | * You should have received a copy of the GNU Lesser General Public | ||
2800 | 16 | * License along with this library; if not, write to the | ||
2801 | 17 | * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | ||
2802 | 18 | * Boston, MA 02110-1301 USA | ||
2803 | 19 | */ | ||
2804 | 20 | |||
2805 | 21 | #ifndef __LOGOUT_DIALOG_H__ | ||
2806 | 22 | #define __LOGOUT_DIALOG_H__ | ||
2807 | 23 | |||
2808 | 24 | #include <gtk/gtk.h> | ||
2809 | 25 | |||
2810 | 26 | G_BEGIN_DECLS | ||
2811 | 27 | |||
2812 | 28 | #define LOGOUT_TYPE_DIALOG (logout_dialog_get_type ()) | ||
2813 | 29 | #define LOGOUT_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), LOGOUT_TYPE_DIALOG, LogoutDialog)) | ||
2814 | 30 | #define LOGOUT_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), LOGOUT_TYPE_DIALOG, LogoutDialogClass)) | ||
2815 | 31 | #define LOGOUT_IS_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), LOGOUT_TYPE_DIALOG)) | ||
2816 | 32 | #define LOGOUT_IS_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), LOGOUT_TYPE_CONTEXT)) | ||
2817 | 33 | #define LOGOUT_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), LOGOUT_TYPE_DIALOG, LogoutDialogClass)) | ||
2818 | 34 | |||
2819 | 35 | typedef struct _LogoutDialogClass LogoutDialogClass; | ||
2820 | 36 | typedef struct _LogoutDialog LogoutDialog; | ||
2821 | 37 | typedef enum _LogoutDialogAction LogoutDialogAction; | ||
2822 | 38 | |||
2823 | 39 | enum _LogoutDialogAction { | ||
2824 | 40 | LOGOUT_DIALOG_LOGOUT, | ||
2825 | 41 | LOGOUT_DIALOG_RESTART, | ||
2826 | 42 | LOGOUT_DIALOG_SHUTDOWN, | ||
2827 | 43 | LOGOUT_DIALOG_ACTION_CNT | ||
2828 | 44 | }; | ||
2829 | 45 | |||
2830 | 46 | struct _LogoutDialogClass | ||
2831 | 47 | { | ||
2832 | 48 | GtkDialogClass parent_class; | ||
2833 | 49 | }; | ||
2834 | 50 | |||
2835 | 51 | /** | ||
2836 | 52 | * LogoutDialog: | ||
2837 | 53 | * @dialog: parent widget | ||
2838 | 54 | * @main_vbox: GtkDialog's vbox | ||
2839 | 55 | * @hbox: box to separate the image of the right-side widgets | ||
2840 | 56 | * @image: the authorization image, left-side widget | ||
2841 | 57 | * @entry_vbox: right-side widgets container | ||
2842 | 58 | * @label: message describing what is required from the user, | ||
2843 | 59 | * right-side widget | ||
2844 | 60 | * @entry: place to type the password in, right-side widget | ||
2845 | 61 | * @ok_button: OK button of the dialog | ||
2846 | 62 | * @cancel_button: Cancel button of the dialog | ||
2847 | 63 | * | ||
2848 | 64 | * Convenience widget based on #GtkDialog to request a password. | ||
2849 | 65 | */ | ||
2850 | 66 | struct _LogoutDialog | ||
2851 | 67 | { | ||
2852 | 68 | GtkDialog dialog; | ||
2853 | 69 | |||
2854 | 70 | GtkWidget *main_vbox; | ||
2855 | 71 | GtkWidget *hbox; | ||
2856 | 72 | GtkWidget *image; | ||
2857 | 73 | GtkWidget *ok_button; | ||
2858 | 74 | GtkWidget *cancel_button; | ||
2859 | 75 | GtkWidget *restart_button; | ||
2860 | 76 | GtkWidget *vbox_text; | ||
2861 | 77 | GtkWidget *message; | ||
2862 | 78 | GtkWidget *timeout_text; | ||
2863 | 79 | |||
2864 | 80 | LogoutDialogAction action; | ||
2865 | 81 | |||
2866 | 82 | /* private */ | ||
2867 | 83 | gchar * timeout_result; | ||
2868 | 84 | guint timeout; | ||
2869 | 85 | guint timerfunc; | ||
2870 | 86 | }; | ||
2871 | 87 | |||
2872 | 88 | GType | ||
2873 | 89 | logout_dialog_get_type (void); | ||
2874 | 90 | |||
2875 | 91 | GtkWidget* | ||
2876 | 92 | logout_dialog_new (LogoutDialogAction action); | ||
2877 | 93 | |||
2878 | 94 | LogoutDialogAction | ||
2879 | 95 | logout_dialog_get_action (LogoutDialog * widget); | ||
2880 | 96 | |||
2881 | 97 | G_END_DECLS | ||
2882 | 98 | |||
2883 | 99 | #endif | ||
2884 | 100 | 0 | ||
2885 | === renamed file 'src/indicator-session.c' => 'src/indicator-me.c' | |||
2886 | --- src/indicator-session.c 2009-11-04 22:34:26 +0000 | |||
2887 | +++ src/indicator-me.c 2010-01-04 21:25:21 +0000 | |||
2888 | @@ -1,6 +1,6 @@ | |||
2889 | 1 | /* | 1 | /* |
2892 | 2 | A small wrapper utility to load indicators and put them as menu items | 2 | A menu that should be close to the user, it's the user's status, |
2893 | 3 | into the gnome-panel using it's applet interface. | 3 | their friends. All about them. It's a user-focused-menu. |
2894 | 4 | 4 | ||
2895 | 5 | Copyright 2009 Canonical Ltd. | 5 | Copyright 2009 Canonical Ltd. |
2896 | 6 | 6 | ||
2897 | @@ -23,91 +23,70 @@ | |||
2898 | 23 | #include <glib.h> | 23 | #include <glib.h> |
2899 | 24 | #include <glib-object.h> | 24 | #include <glib-object.h> |
2900 | 25 | #include <gtk/gtk.h> | 25 | #include <gtk/gtk.h> |
2902 | 26 | #include <libdbusmenu-gtk/client.h> | 26 | #include <libdbusmenu-gtk/menu.h> |
2903 | 27 | 27 | ||
2904 | 28 | #include <dbus/dbus-glib.h> | 28 | #include <dbus/dbus-glib.h> |
2905 | 29 | #include <dbus/dbus-glib-bindings.h> | 29 | #include <dbus/dbus-glib-bindings.h> |
2906 | 30 | 30 | ||
2907 | 31 | #include <libindicator/indicator.h> | 31 | #include <libindicator/indicator.h> |
2908 | 32 | #include <libindicator/indicator-object.h> | 32 | #include <libindicator/indicator-object.h> |
2909 | 33 | #include <libindicator/indicator-service-manager.h> | ||
2910 | 33 | 34 | ||
2911 | 34 | #include "dbus-shared-names.h" | 35 | #include "dbus-shared-names.h" |
2925 | 35 | #include "status-service-client.h" | 36 | #include "me-service-client.h" |
2926 | 36 | 37 | ||
2927 | 37 | #define INDICATOR_SESSION_TYPE (indicator_session_get_type ()) | 38 | #define INDICATOR_ME_TYPE (indicator_me_get_type ()) |
2928 | 38 | #define INDICATOR_SESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), INDICATOR_SESSION_TYPE, IndicatorSession)) | 39 | #define INDICATOR_ME(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), INDICATOR_ME_TYPE, IndicatorMe)) |
2929 | 39 | #define INDICATOR_SESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), INDICATOR_SESSION_TYPE, IndicatorSessionClass)) | 40 | #define INDICATOR_ME_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), INDICATOR_ME_TYPE, IndicatorMeClass)) |
2930 | 40 | #define IS_INDICATOR_SESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), INDICATOR_SESSION_TYPE)) | 41 | #define IS_INDICATOR_ME(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), INDICATOR_ME_TYPE)) |
2931 | 41 | #define IS_INDICATOR_SESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), INDICATOR_SESSION_TYPE)) | 42 | #define IS_INDICATOR_ME_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), INDICATOR_ME_TYPE)) |
2932 | 42 | #define INDICATOR_SESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), INDICATOR_SESSION_TYPE, IndicatorSessionClass)) | 43 | #define INDICATOR_ME_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), INDICATOR_ME_TYPE, IndicatorMeClass)) |
2933 | 43 | 44 | ||
2934 | 44 | typedef struct _IndicatorSession IndicatorSession; | 45 | #define DEFAULT_ICON "user-offline" |
2935 | 45 | typedef struct _IndicatorSessionClass IndicatorSessionClass; | 46 | |
2936 | 46 | 47 | typedef struct _IndicatorMe IndicatorMe; | |
2937 | 47 | struct _IndicatorSessionClass { | 48 | typedef struct _IndicatorMeClass IndicatorMeClass; |
2938 | 49 | |||
2939 | 50 | struct _IndicatorMeClass { | ||
2940 | 48 | IndicatorObjectClass parent_class; | 51 | IndicatorObjectClass parent_class; |
2941 | 49 | }; | 52 | }; |
2942 | 50 | 53 | ||
2944 | 51 | struct _IndicatorSession { | 54 | struct _IndicatorMe { |
2945 | 52 | IndicatorObject parent; | 55 | IndicatorObject parent; |
2946 | 56 | IndicatorServiceManager * service; | ||
2947 | 53 | }; | 57 | }; |
2948 | 54 | 58 | ||
2950 | 55 | GType indicator_session_get_type (void); | 59 | GType indicator_me_get_type (void); |
2951 | 56 | 60 | ||
2952 | 57 | /* Indicator stuff */ | 61 | /* Indicator stuff */ |
2953 | 58 | INDICATOR_SET_VERSION | 62 | INDICATOR_SET_VERSION |
2955 | 59 | INDICATOR_SET_TYPE(INDICATOR_SESSION_TYPE) | 63 | INDICATOR_SET_TYPE(INDICATOR_ME_TYPE) |
2956 | 60 | 64 | ||
2957 | 61 | /* Globals */ | 65 | /* Globals */ |
2958 | 62 | static DbusmenuGtkClient * status_client = NULL; | ||
2959 | 63 | static DbusmenuGtkClient * users_client = NULL; | ||
2960 | 64 | static DbusmenuGtkClient * session_client = NULL; | ||
2961 | 65 | |||
2962 | 66 | static GtkMenu * main_menu = NULL; | ||
2963 | 67 | static GtkImage * status_image = NULL; | 66 | static GtkImage * status_image = NULL; |
2964 | 68 | |||
2965 | 69 | static GtkWidget * status_separator = NULL; | ||
2966 | 70 | static GtkWidget * users_separator = NULL; | ||
2967 | 71 | #define SEPARATOR_SHOWN(sep) (sep != NULL && GTK_WIDGET_VISIBLE(sep)) | ||
2968 | 72 | static GtkWidget * loading_item = NULL; | ||
2969 | 73 | |||
2970 | 74 | static DBusGConnection * connection = NULL; | ||
2971 | 75 | static DBusGProxy * proxy = NULL; | ||
2972 | 76 | static DBusGProxy * status_proxy = NULL; | 67 | static DBusGProxy * status_proxy = NULL; |
2973 | 77 | 68 | ||
2974 | 78 | typedef enum { | ||
2975 | 79 | STATUS_SECTION, | ||
2976 | 80 | USERS_SECTION, | ||
2977 | 81 | SESSION_SECTION, | ||
2978 | 82 | END_OF_SECTIONS | ||
2979 | 83 | } section_t; | ||
2980 | 84 | |||
2981 | 85 | /* Prototypes */ | 69 | /* Prototypes */ |
2982 | 86 | static void child_added (DbusmenuMenuitem * parent, DbusmenuMenuitem * child, guint position, gpointer section); | ||
2983 | 87 | static guint status_menu_pos_offset (void); | ||
2984 | 88 | static guint users_menu_pos_offset (void); | ||
2985 | 89 | static guint session_menu_pos_offset (void); | ||
2986 | 90 | static void child_realized (DbusmenuMenuitem * child, gpointer userdata); | ||
2987 | 91 | static gboolean start_service (gpointer userdata); | ||
2988 | 92 | static void start_service_phase2 (DBusGProxy * proxy, guint status, GError * error, gpointer data); | ||
2989 | 93 | static GtkLabel * get_label (IndicatorObject * io); | 70 | static GtkLabel * get_label (IndicatorObject * io); |
2990 | 94 | static GtkImage * get_icon (IndicatorObject * io); | 71 | static GtkImage * get_icon (IndicatorObject * io); |
2991 | 95 | static GtkMenu * get_menu (IndicatorObject * io); | 72 | static GtkMenu * get_menu (IndicatorObject * io); |
2992 | 96 | 73 | ||
2997 | 97 | static void indicator_session_class_init (IndicatorSessionClass *klass); | 74 | static void indicator_me_class_init (IndicatorMeClass *klass); |
2998 | 98 | static void indicator_session_init (IndicatorSession *self); | 75 | static void indicator_me_init (IndicatorMe *self); |
2999 | 99 | static void indicator_session_dispose (GObject *object); | 76 | static void indicator_me_dispose (GObject *object); |
3000 | 100 | static void indicator_session_finalize (GObject *object); | 77 | static void indicator_me_finalize (GObject *object); |
3001 | 78 | static void connection_changed (IndicatorServiceManager * sm, gboolean connected, gpointer userdata); | ||
3002 | 79 | static void status_icon_cb (DBusGProxy * proxy, char * icons, GError *error, gpointer userdata); | ||
3003 | 101 | 80 | ||
3005 | 102 | G_DEFINE_TYPE (IndicatorSession, indicator_session, INDICATOR_OBJECT_TYPE); | 81 | G_DEFINE_TYPE (IndicatorMe, indicator_me, INDICATOR_OBJECT_TYPE); |
3006 | 103 | 82 | ||
3007 | 104 | static void | 83 | static void |
3009 | 105 | indicator_session_class_init (IndicatorSessionClass *klass) | 84 | indicator_me_class_init (IndicatorMeClass *klass) |
3010 | 106 | { | 85 | { |
3011 | 107 | GObjectClass *object_class = G_OBJECT_CLASS (klass); | 86 | GObjectClass *object_class = G_OBJECT_CLASS (klass); |
3012 | 108 | 87 | ||
3015 | 109 | object_class->dispose = indicator_session_dispose; | 88 | object_class->dispose = indicator_me_dispose; |
3016 | 110 | object_class->finalize = indicator_session_finalize; | 89 | object_class->finalize = indicator_me_finalize; |
3017 | 111 | 90 | ||
3018 | 112 | IndicatorObjectClass * io_class = INDICATOR_OBJECT_CLASS(klass); | 91 | IndicatorObjectClass * io_class = INDICATOR_OBJECT_CLASS(klass); |
3019 | 113 | io_class->get_label = get_label; | 92 | io_class->get_label = get_label; |
3020 | @@ -118,25 +97,32 @@ | |||
3021 | 118 | } | 97 | } |
3022 | 119 | 98 | ||
3023 | 120 | static void | 99 | static void |
3043 | 121 | indicator_session_init (IndicatorSession *self) | 100 | indicator_me_init (IndicatorMe *self) |
3044 | 122 | { | 101 | { |
3045 | 123 | 102 | ||
3046 | 124 | return; | 103 | /* Init variables */ |
3047 | 125 | } | 104 | self->service = NULL; |
3048 | 126 | 105 | ||
3049 | 127 | static void | 106 | /* Do stuff with them */ |
3050 | 128 | indicator_session_dispose (GObject *object) | 107 | self->service = indicator_service_manager_new_version(INDICATOR_ME_DBUS_NAME, INDICATOR_ME_DBUS_VERSION); |
3051 | 129 | { | 108 | g_signal_connect(G_OBJECT(self->service), INDICATOR_SERVICE_MANAGER_SIGNAL_CONNECTION_CHANGE, G_CALLBACK(connection_changed), self); |
3052 | 130 | 109 | ||
3053 | 131 | G_OBJECT_CLASS (indicator_session_parent_class)->dispose (object); | 110 | return; |
3054 | 132 | return; | 111 | } |
3055 | 133 | } | 112 | |
3056 | 134 | 113 | static void | |
3057 | 135 | static void | 114 | indicator_me_dispose (GObject *object) |
3058 | 136 | indicator_session_finalize (GObject *object) | 115 | { |
3059 | 137 | { | 116 | |
3060 | 138 | 117 | G_OBJECT_CLASS (indicator_me_parent_class)->dispose (object); | |
3061 | 139 | G_OBJECT_CLASS (indicator_session_parent_class)->finalize (object); | 118 | return; |
3062 | 119 | } | ||
3063 | 120 | |||
3064 | 121 | static void | ||
3065 | 122 | indicator_me_finalize (GObject *object) | ||
3066 | 123 | { | ||
3067 | 124 | |||
3068 | 125 | G_OBJECT_CLASS (indicator_me_parent_class)->finalize (object); | ||
3069 | 140 | return; | 126 | return; |
3070 | 141 | } | 127 | } |
3071 | 142 | 128 | ||
3072 | @@ -151,198 +137,26 @@ | |||
3073 | 151 | static GtkImage * | 137 | static GtkImage * |
3074 | 152 | get_icon (IndicatorObject * io) | 138 | get_icon (IndicatorObject * io) |
3075 | 153 | { | 139 | { |
3079 | 154 | g_debug("Changing status icon: '%s'", "system-shutdown-panel"); | 140 | if (status_image == NULL) { |
3080 | 155 | status_image = GTK_IMAGE(gtk_image_new_from_icon_name("system-shutdown-panel", GTK_ICON_SIZE_MENU)); | 141 | /* Will create the status icon if it doesn't exist already */ |
3081 | 156 | gtk_widget_show(GTK_WIDGET(status_image)); | 142 | status_icon_cb(NULL, DEFAULT_ICON, NULL, NULL); |
3082 | 143 | } | ||
3083 | 157 | return status_image; | 144 | return status_image; |
3084 | 158 | } | 145 | } |
3085 | 159 | 146 | ||
3086 | 160 | typedef struct _realized_data_t realized_data_t; | ||
3087 | 161 | struct _realized_data_t { | ||
3088 | 162 | section_t section; | ||
3089 | 163 | }; | ||
3090 | 164 | |||
3091 | 165 | static void | ||
3092 | 166 | resort_menu (void) | ||
3093 | 167 | { | ||
3094 | 168 | guint location = 0; | ||
3095 | 169 | guint clientnum; | ||
3096 | 170 | |||
3097 | 171 | for (clientnum = 0; clientnum < 3; clientnum++) { | ||
3098 | 172 | DbusmenuGtkClient * client = NULL; | ||
3099 | 173 | if (clientnum == 0) client = status_client; | ||
3100 | 174 | if (clientnum == 1) client = users_client; | ||
3101 | 175 | if (clientnum == 2) client = session_client; | ||
3102 | 176 | |||
3103 | 177 | if (client == NULL) continue; | ||
3104 | 178 | |||
3105 | 179 | DbusmenuMenuitem * root = dbusmenu_client_get_root(DBUSMENU_CLIENT(client)); | ||
3106 | 180 | |||
3107 | 181 | GList * children = dbusmenu_menuitem_get_children(root); | ||
3108 | 182 | if (children == NULL) { | ||
3109 | 183 | continue; | ||
3110 | 184 | } | ||
3111 | 185 | |||
3112 | 186 | GList * child; | ||
3113 | 187 | for (child = children; child != NULL; child = g_list_next(child)) { | ||
3114 | 188 | GtkMenuItem * widget = dbusmenu_gtkclient_menuitem_get(client, DBUSMENU_MENUITEM(child->data)); | ||
3115 | 189 | if (widget != NULL) { | ||
3116 | 190 | gtk_menu_reorder_child(main_menu, GTK_WIDGET(widget), location); | ||
3117 | 191 | location++; | ||
3118 | 192 | } | ||
3119 | 193 | } | ||
3120 | 194 | |||
3121 | 195 | if (clientnum == 0) { | ||
3122 | 196 | gtk_menu_reorder_child(main_menu, status_separator, location); | ||
3123 | 197 | location++; | ||
3124 | 198 | } | ||
3125 | 199 | if (clientnum == 1) { | ||
3126 | 200 | gtk_menu_reorder_child(main_menu, users_separator, location); | ||
3127 | 201 | location++; | ||
3128 | 202 | } | ||
3129 | 203 | } | ||
3130 | 204 | |||
3131 | 205 | return; | ||
3132 | 206 | } | ||
3133 | 207 | |||
3134 | 208 | static void | ||
3135 | 209 | child_added (DbusmenuMenuitem * parent, DbusmenuMenuitem * child, guint position, gpointer section) | ||
3136 | 210 | { | ||
3137 | 211 | realized_data_t * data = g_new0(realized_data_t, 1); | ||
3138 | 212 | if (data == NULL) { | ||
3139 | 213 | g_warning("Unable to allocate data for realization of item"); | ||
3140 | 214 | return; | ||
3141 | 215 | } | ||
3142 | 216 | |||
3143 | 217 | data->section = GPOINTER_TO_UINT(section); | ||
3144 | 218 | |||
3145 | 219 | g_signal_connect(G_OBJECT(child), DBUSMENU_MENUITEM_SIGNAL_REALIZED, G_CALLBACK(child_realized), data); | ||
3146 | 220 | return; | ||
3147 | 221 | } | ||
3148 | 222 | |||
3149 | 223 | static void | ||
3150 | 224 | child_realized (DbusmenuMenuitem * child, gpointer userdata) | ||
3151 | 225 | { | ||
3152 | 226 | g_return_if_fail(userdata != NULL); | ||
3153 | 227 | g_return_if_fail(DBUSMENU_IS_MENUITEM(child)); | ||
3154 | 228 | |||
3155 | 229 | realized_data_t * data = (realized_data_t *)userdata; | ||
3156 | 230 | section_t section = data->section; | ||
3157 | 231 | g_free(data); | ||
3158 | 232 | |||
3159 | 233 | DbusmenuGtkClient * client = NULL; | ||
3160 | 234 | gchar * errorstr = NULL; | ||
3161 | 235 | guint (*posfunc) (void) = NULL; | ||
3162 | 236 | |||
3163 | 237 | switch (section) { | ||
3164 | 238 | case STATUS_SECTION: | ||
3165 | 239 | client = status_client; | ||
3166 | 240 | errorstr = "Status"; | ||
3167 | 241 | posfunc = status_menu_pos_offset; | ||
3168 | 242 | break; | ||
3169 | 243 | case USERS_SECTION: | ||
3170 | 244 | client = users_client; | ||
3171 | 245 | errorstr = "Users"; | ||
3172 | 246 | posfunc = users_menu_pos_offset; | ||
3173 | 247 | break; | ||
3174 | 248 | case SESSION_SECTION: | ||
3175 | 249 | client = session_client; | ||
3176 | 250 | errorstr = "Session"; | ||
3177 | 251 | posfunc = session_menu_pos_offset; | ||
3178 | 252 | break; | ||
3179 | 253 | default: | ||
3180 | 254 | g_warning("Child Added called with an unknown position function!"); | ||
3181 | 255 | return; | ||
3182 | 256 | } | ||
3183 | 257 | |||
3184 | 258 | if (client == NULL) { | ||
3185 | 259 | g_warning("Child realized for a menu we don't have? Section: %s", errorstr); | ||
3186 | 260 | return; | ||
3187 | 261 | } | ||
3188 | 262 | |||
3189 | 263 | GtkMenuItem * widget = dbusmenu_gtkclient_menuitem_get(client, child); | ||
3190 | 264 | |||
3191 | 265 | if (widget == NULL) { | ||
3192 | 266 | g_warning("Had a menu item added to the %s menu, but yet it didn't have a GtkWidget with it. Can't add that to a menu now can we? You need to figure this @#$# out!", errorstr); | ||
3193 | 267 | return; | ||
3194 | 268 | } | ||
3195 | 269 | |||
3196 | 270 | gtk_menu_append(main_menu, GTK_WIDGET(widget)); | ||
3197 | 271 | gtk_widget_show(GTK_WIDGET(widget)); | ||
3198 | 272 | |||
3199 | 273 | resort_menu(); | ||
3200 | 274 | |||
3201 | 275 | gtk_widget_hide(loading_item); | ||
3202 | 276 | |||
3203 | 277 | return; | ||
3204 | 278 | } | ||
3205 | 279 | |||
3206 | 280 | static void | ||
3207 | 281 | child_moved (DbusmenuMenuitem * parent, DbusmenuMenuitem * child, guint newpos, guint oldpos, guint (*posfunc) (void)) | ||
3208 | 282 | { | ||
3209 | 283 | |||
3210 | 284 | |||
3211 | 285 | } | ||
3212 | 286 | |||
3213 | 287 | |||
3214 | 288 | /* Status Menu */ | ||
3215 | 289 | static guint | ||
3216 | 290 | status_menu_pos_offset (void) | ||
3217 | 291 | { | ||
3218 | 292 | return 0; | ||
3219 | 293 | } | ||
3220 | 294 | |||
3221 | 295 | static void | ||
3222 | 296 | status_menu_added (DbusmenuMenuitem * root, DbusmenuMenuitem * child, guint position, gpointer user_data) | ||
3223 | 297 | { | ||
3224 | 298 | gtk_widget_show(GTK_WIDGET(status_separator)); | ||
3225 | 299 | return; | ||
3226 | 300 | } | ||
3227 | 301 | |||
3228 | 302 | static void | ||
3229 | 303 | status_menu_removed (DbusmenuMenuitem * root, DbusmenuMenuitem * child, gpointer user_data) | ||
3230 | 304 | { | ||
3231 | 305 | if (g_list_length(dbusmenu_menuitem_get_children(root)) == 0) { | ||
3232 | 306 | gtk_widget_hide(GTK_WIDGET(status_separator)); | ||
3233 | 307 | } | ||
3234 | 308 | |||
3235 | 309 | return; | ||
3236 | 310 | } | ||
3237 | 311 | |||
3238 | 312 | static void | ||
3239 | 313 | status_menu_root_changed(DbusmenuGtkClient * client, DbusmenuMenuitem * newroot, GtkMenu * main) | ||
3240 | 314 | { | ||
3241 | 315 | if (newroot == NULL) { | ||
3242 | 316 | gtk_widget_hide(GTK_WIDGET(status_separator)); | ||
3243 | 317 | return; | ||
3244 | 318 | } | ||
3245 | 319 | |||
3246 | 320 | g_signal_connect(G_OBJECT(newroot), DBUSMENU_MENUITEM_SIGNAL_CHILD_ADDED, G_CALLBACK(child_added), GUINT_TO_POINTER(STATUS_SECTION)); | ||
3247 | 321 | g_signal_connect(G_OBJECT(newroot), DBUSMENU_MENUITEM_SIGNAL_CHILD_REMOVED, G_CALLBACK(status_menu_added), NULL); | ||
3248 | 322 | g_signal_connect(G_OBJECT(newroot), DBUSMENU_MENUITEM_SIGNAL_CHILD_REMOVED, G_CALLBACK(status_menu_removed), NULL); | ||
3249 | 323 | g_signal_connect(G_OBJECT(newroot), DBUSMENU_MENUITEM_SIGNAL_CHILD_MOVED, G_CALLBACK(child_moved), GUINT_TO_POINTER(STATUS_SECTION)); | ||
3250 | 324 | |||
3251 | 325 | GList * child = NULL; | ||
3252 | 326 | guint count = 0; | ||
3253 | 327 | for (child = dbusmenu_menuitem_get_children(newroot); child != NULL; child = g_list_next(child), count++) { | ||
3254 | 328 | child_added(newroot, DBUSMENU_MENUITEM(child->data), count, GUINT_TO_POINTER(STATUS_SECTION)); | ||
3255 | 329 | } | ||
3256 | 330 | |||
3257 | 331 | if (count > 0) { | ||
3258 | 332 | gtk_widget_show(GTK_WIDGET(status_separator)); | ||
3259 | 333 | } | ||
3260 | 334 | |||
3261 | 335 | return; | ||
3262 | 336 | } | ||
3263 | 337 | |||
3264 | 338 | static void | 147 | static void |
3265 | 339 | status_icon_cb (DBusGProxy * proxy, char * icons, GError *error, gpointer userdata) | 148 | status_icon_cb (DBusGProxy * proxy, char * icons, GError *error, gpointer userdata) |
3266 | 340 | { | 149 | { |
3267 | 341 | g_return_if_fail(status_image != NULL); | ||
3268 | 342 | g_return_if_fail(icons != NULL); | 150 | g_return_if_fail(icons != NULL); |
3269 | 343 | g_return_if_fail(icons[0] != '\0'); | 151 | g_return_if_fail(icons[0] != '\0'); |
3270 | 344 | 152 | ||
3271 | 345 | g_debug("Changing status icon: '%s'", icons); | 153 | g_debug("Changing status icon: '%s'", icons); |
3272 | 154 | |||
3273 | 155 | if (status_image == NULL) { | ||
3274 | 156 | status_image = GTK_IMAGE(gtk_image_new_from_icon_name(DEFAULT_ICON, GTK_ICON_SIZE_MENU)); | ||
3275 | 157 | gtk_widget_show(GTK_WIDGET(status_image)); | ||
3276 | 158 | } | ||
3277 | 159 | |||
3278 | 346 | gtk_image_set_from_icon_name(status_image, icons, GTK_ICON_SIZE_MENU); | 160 | gtk_image_set_from_icon_name(status_image, icons, GTK_ICON_SIZE_MENU); |
3279 | 347 | 161 | ||
3280 | 348 | return; | 162 | return; |
3281 | @@ -354,289 +168,44 @@ | |||
3282 | 354 | return status_icon_cb(proxy, icon, NULL, NULL); | 168 | return status_icon_cb(proxy, icon, NULL, NULL); |
3283 | 355 | } | 169 | } |
3284 | 356 | 170 | ||
3288 | 357 | 171 | static void | |
3289 | 358 | static gboolean | 172 | connection_changed (IndicatorServiceManager * sm, gboolean connected, gpointer userdata) |
3287 | 359 | connect_to_status (gpointer userdata) | ||
3290 | 360 | { | 173 | { |
3306 | 361 | if (status_proxy == NULL) { | 174 | if (connected) { |
3307 | 362 | GError * error = NULL; | 175 | if (status_proxy == NULL) { |
3308 | 363 | 176 | GError * error = NULL; | |
3309 | 364 | DBusGConnection * sbus = dbus_g_bus_get(DBUS_BUS_SESSION, NULL); | 177 | |
3310 | 365 | 178 | DBusGConnection * sbus = dbus_g_bus_get(DBUS_BUS_SESSION, NULL); | |
3311 | 366 | status_proxy = dbus_g_proxy_new_for_name_owner(sbus, | 179 | |
3312 | 367 | INDICATOR_STATUS_DBUS_NAME, | 180 | status_proxy = dbus_g_proxy_new_for_name_owner(sbus, |
3313 | 368 | INDICATOR_STATUS_SERVICE_DBUS_OBJECT, | 181 | INDICATOR_ME_DBUS_NAME, |
3314 | 369 | INDICATOR_STATUS_SERVICE_DBUS_INTERFACE, | 182 | INDICATOR_ME_SERVICE_DBUS_OBJECT, |
3315 | 370 | &error); | 183 | INDICATOR_ME_SERVICE_DBUS_INTERFACE, |
3316 | 371 | 184 | &error); | |
3317 | 372 | if (error != NULL) { | 185 | |
3318 | 373 | g_warning("Unable to get status proxy: %s", error->message); | 186 | if (error != NULL) { |
3319 | 374 | g_error_free(error); | 187 | g_warning("Unable to get status proxy: %s", error->message); |
3320 | 375 | return FALSE; | 188 | g_error_free(error); |
3321 | 189 | } | ||
3322 | 190 | |||
3323 | 191 | dbus_g_proxy_add_signal(status_proxy, "StatusIconsChanged", G_TYPE_STRING, G_TYPE_INVALID); | ||
3324 | 192 | dbus_g_proxy_connect_signal(status_proxy, "StatusIconsChanged", G_CALLBACK(status_icon_changed), NULL, NULL); | ||
3325 | 376 | } | 193 | } |
3326 | 377 | 194 | ||
3567 | 378 | dbus_g_proxy_add_signal(status_proxy, "StatusIconsChanged", G_TYPE_STRING, G_TYPE_INVALID); | 195 | org_ayatana_indicator_me_service_status_icons_async(status_proxy, status_icon_cb, NULL); |
3568 | 379 | dbus_g_proxy_connect_signal(status_proxy, "StatusIconsChanged", G_CALLBACK(status_icon_changed), NULL, NULL); | 196 | } else { |
3569 | 380 | } | 197 | /* If we're disconnecting, go back to offline */ |
3570 | 381 | 198 | status_icon_cb(NULL, DEFAULT_ICON, NULL, NULL); | |
3571 | 382 | org_ayatana_indicator_status_service_status_icons_async(status_proxy, status_icon_cb, NULL); | 199 | } |
3572 | 383 | 200 | ||
3573 | 384 | return FALSE; | 201 | return; |
3574 | 385 | } | 202 | } |
3575 | 386 | 203 | ||
3576 | 387 | /* Follow up the service being started by connecting | 204 | /* Builds the dbusmenu for the service. */ |
3337 | 388 | up the DBus Menu Client and creating our separator. | ||
3338 | 389 | Also creates an idle func to connect to the service for | ||
3339 | 390 | getting the icon that we should be using on the panel. */ | ||
3340 | 391 | static void | ||
3341 | 392 | status_followup (void) | ||
3342 | 393 | { | ||
3343 | 394 | status_client = dbusmenu_gtkclient_new(INDICATOR_STATUS_DBUS_NAME, INDICATOR_STATUS_DBUS_OBJECT); | ||
3344 | 395 | g_signal_connect(G_OBJECT(status_client), DBUSMENU_GTKCLIENT_SIGNAL_ROOT_CHANGED, G_CALLBACK(status_menu_root_changed), main_menu); | ||
3345 | 396 | |||
3346 | 397 | status_separator = gtk_separator_menu_item_new(); | ||
3347 | 398 | gtk_menu_shell_append(GTK_MENU_SHELL(main_menu), status_separator); | ||
3348 | 399 | gtk_widget_hide(status_separator); /* Should be default, I'm just being explicit. $(%*#$ hide already! */ | ||
3349 | 400 | |||
3350 | 401 | g_idle_add(connect_to_status, NULL); | ||
3351 | 402 | |||
3352 | 403 | return; | ||
3353 | 404 | } | ||
3354 | 405 | |||
3355 | 406 | /* Users menu */ | ||
3356 | 407 | |||
3357 | 408 | static guint | ||
3358 | 409 | users_menu_pos_offset (void) | ||
3359 | 410 | { | ||
3360 | 411 | guint position = 0; | ||
3361 | 412 | if (SEPARATOR_SHOWN(status_separator)) { | ||
3362 | 413 | GList * location = g_list_find(GTK_MENU_SHELL(main_menu)->children, status_separator); | ||
3363 | 414 | position = g_list_position(GTK_MENU_SHELL(main_menu)->children, location) + 1; | ||
3364 | 415 | } | ||
3365 | 416 | |||
3366 | 417 | return position; | ||
3367 | 418 | } | ||
3368 | 419 | |||
3369 | 420 | static void | ||
3370 | 421 | users_menu_added (DbusmenuMenuitem * root, DbusmenuMenuitem * child, guint position, gpointer user_data) | ||
3371 | 422 | { | ||
3372 | 423 | gtk_widget_show(GTK_WIDGET(users_separator)); | ||
3373 | 424 | return; | ||
3374 | 425 | } | ||
3375 | 426 | |||
3376 | 427 | static void | ||
3377 | 428 | users_menu_removed (DbusmenuMenuitem * root, DbusmenuMenuitem * child, gpointer user_data) | ||
3378 | 429 | { | ||
3379 | 430 | if (g_list_length(dbusmenu_menuitem_get_children(root)) == 0) { | ||
3380 | 431 | gtk_widget_hide(GTK_WIDGET(users_separator)); | ||
3381 | 432 | } | ||
3382 | 433 | |||
3383 | 434 | return; | ||
3384 | 435 | } | ||
3385 | 436 | |||
3386 | 437 | static void | ||
3387 | 438 | users_menu_root_changed(DbusmenuGtkClient * client, DbusmenuMenuitem * newroot, GtkMenu * main) | ||
3388 | 439 | { | ||
3389 | 440 | if (newroot == NULL) { | ||
3390 | 441 | gtk_widget_hide(GTK_WIDGET(users_separator)); | ||
3391 | 442 | return; | ||
3392 | 443 | } | ||
3393 | 444 | |||
3394 | 445 | g_signal_connect(G_OBJECT(newroot), DBUSMENU_MENUITEM_SIGNAL_CHILD_ADDED, G_CALLBACK(child_added), GUINT_TO_POINTER(USERS_SECTION)); | ||
3395 | 446 | g_signal_connect(G_OBJECT(newroot), DBUSMENU_MENUITEM_SIGNAL_CHILD_REMOVED, G_CALLBACK(users_menu_added), NULL); | ||
3396 | 447 | g_signal_connect(G_OBJECT(newroot), DBUSMENU_MENUITEM_SIGNAL_CHILD_REMOVED, G_CALLBACK(users_menu_removed), NULL); | ||
3397 | 448 | g_signal_connect(G_OBJECT(newroot), DBUSMENU_MENUITEM_SIGNAL_CHILD_MOVED, G_CALLBACK(child_moved), GUINT_TO_POINTER(USERS_SECTION)); | ||
3398 | 449 | |||
3399 | 450 | GList * child = NULL; | ||
3400 | 451 | guint count = 0; | ||
3401 | 452 | for (child = dbusmenu_menuitem_get_children(newroot); child != NULL; child = g_list_next(child), count++) { | ||
3402 | 453 | child_added(newroot, DBUSMENU_MENUITEM(child->data), count, GUINT_TO_POINTER(USERS_SECTION)); | ||
3403 | 454 | } | ||
3404 | 455 | |||
3405 | 456 | if (count > 0) { | ||
3406 | 457 | gtk_widget_show(GTK_WIDGET(users_separator)); | ||
3407 | 458 | } | ||
3408 | 459 | |||
3409 | 460 | return; | ||
3410 | 461 | } | ||
3411 | 462 | |||
3412 | 463 | /* Follow up the service being started by connecting | ||
3413 | 464 | up the DBus Menu Client and creating our separator. */ | ||
3414 | 465 | static void | ||
3415 | 466 | users_followup (void) | ||
3416 | 467 | { | ||
3417 | 468 | users_client = dbusmenu_gtkclient_new(INDICATOR_USERS_DBUS_NAME, INDICATOR_USERS_DBUS_OBJECT); | ||
3418 | 469 | g_signal_connect(G_OBJECT(users_client), DBUSMENU_GTKCLIENT_SIGNAL_ROOT_CHANGED, G_CALLBACK(users_menu_root_changed), main_menu); | ||
3419 | 470 | |||
3420 | 471 | users_separator = gtk_separator_menu_item_new(); | ||
3421 | 472 | gtk_menu_shell_append(GTK_MENU_SHELL(main_menu), users_separator); | ||
3422 | 473 | gtk_widget_hide(users_separator); /* Should be default, I'm just being explicit. $(%*#$ hide already! */ | ||
3423 | 474 | |||
3424 | 475 | return; | ||
3425 | 476 | } | ||
3426 | 477 | |||
3427 | 478 | /* Session Menu Stuff */ | ||
3428 | 479 | |||
3429 | 480 | static guint | ||
3430 | 481 | session_menu_pos_offset (void) | ||
3431 | 482 | { | ||
3432 | 483 | guint position = 0; | ||
3433 | 484 | if (SEPARATOR_SHOWN(users_separator)) { | ||
3434 | 485 | GList * location = g_list_find(GTK_MENU_SHELL(main_menu)->children, users_separator); | ||
3435 | 486 | position = g_list_position(GTK_MENU_SHELL(main_menu)->children, location) + 1; | ||
3436 | 487 | } else if (SEPARATOR_SHOWN(status_separator)) { | ||
3437 | 488 | GList * location = g_list_find(GTK_MENU_SHELL(main_menu)->children, status_separator); | ||
3438 | 489 | position = g_list_position(GTK_MENU_SHELL(main_menu)->children, location) + 1; | ||
3439 | 490 | } | ||
3440 | 491 | |||
3441 | 492 | return position; | ||
3442 | 493 | } | ||
3443 | 494 | |||
3444 | 495 | static void | ||
3445 | 496 | session_menu_removed (DbusmenuMenuitem * root, DbusmenuMenuitem * child, gpointer user_data) | ||
3446 | 497 | { | ||
3447 | 498 | return; | ||
3448 | 499 | } | ||
3449 | 500 | |||
3450 | 501 | static void | ||
3451 | 502 | session_menu_root_changed(DbusmenuGtkClient * client, DbusmenuMenuitem * newroot, GtkMenu * main) | ||
3452 | 503 | { | ||
3453 | 504 | if (newroot == NULL) { | ||
3454 | 505 | /* We're assuming this'll crash the least so it doesn't | ||
3455 | 506 | hide a separator. May be a bad choice. */ | ||
3456 | 507 | return; | ||
3457 | 508 | } | ||
3458 | 509 | |||
3459 | 510 | g_signal_connect(G_OBJECT(newroot), DBUSMENU_MENUITEM_SIGNAL_CHILD_ADDED, G_CALLBACK(child_added), GUINT_TO_POINTER(SESSION_SECTION)); | ||
3460 | 511 | g_signal_connect(G_OBJECT(newroot), DBUSMENU_MENUITEM_SIGNAL_CHILD_REMOVED, G_CALLBACK(session_menu_removed), NULL); | ||
3461 | 512 | g_signal_connect(G_OBJECT(newroot), DBUSMENU_MENUITEM_SIGNAL_CHILD_MOVED, G_CALLBACK(child_moved), GUINT_TO_POINTER(SESSION_SECTION)); | ||
3462 | 513 | |||
3463 | 514 | GList * child = NULL; | ||
3464 | 515 | guint count = 0; | ||
3465 | 516 | for (child = dbusmenu_menuitem_get_children(newroot); child != NULL; child = g_list_next(child), count++) { | ||
3466 | 517 | child_added(newroot, DBUSMENU_MENUITEM(child->data), count, GUINT_TO_POINTER(SESSION_SECTION)); | ||
3467 | 518 | } | ||
3468 | 519 | |||
3469 | 520 | return; | ||
3470 | 521 | } | ||
3471 | 522 | |||
3472 | 523 | /* Follow up the service being started by connecting | ||
3473 | 524 | up the DBus Menu Client. */ | ||
3474 | 525 | static void | ||
3475 | 526 | session_followup (void) | ||
3476 | 527 | { | ||
3477 | 528 | session_client = dbusmenu_gtkclient_new(INDICATOR_SESSION_DBUS_NAME, INDICATOR_SESSION_DBUS_OBJECT); | ||
3478 | 529 | g_signal_connect(G_OBJECT(session_client), DBUSMENU_GTKCLIENT_SIGNAL_ROOT_CHANGED, G_CALLBACK(session_menu_root_changed), main_menu); | ||
3479 | 530 | |||
3480 | 531 | return; | ||
3481 | 532 | } | ||
3482 | 533 | |||
3483 | 534 | /* Base menu stuff */ | ||
3484 | 535 | |||
3485 | 536 | /* This takes the response to the service starting up. | ||
3486 | 537 | It checks to see if it's started and if so, continues | ||
3487 | 538 | with the follow function for the particular area that | ||
3488 | 539 | it's working in. */ | ||
3489 | 540 | static void | ||
3490 | 541 | start_service_phase2 (DBusGProxy * proxy, guint status, GError * error, gpointer data) | ||
3491 | 542 | { | ||
3492 | 543 | /* If we've got an error respond to it */ | ||
3493 | 544 | if (error != NULL) { | ||
3494 | 545 | g_critical("Starting service has resulted in error."); | ||
3495 | 546 | g_error_free(error); | ||
3496 | 547 | /* Try it all again, we need to get this started! */ | ||
3497 | 548 | g_idle_add(start_service, data); | ||
3498 | 549 | return; | ||
3499 | 550 | } | ||
3500 | 551 | |||
3501 | 552 | /* If it's not running or we started it, try again */ | ||
3502 | 553 | if (status != DBUS_START_REPLY_SUCCESS && status != DBUS_START_REPLY_ALREADY_RUNNING) { | ||
3503 | 554 | g_critical("Return value isn't indicative of success: %d", status); | ||
3504 | 555 | /* Try it all again, we need to get this started! */ | ||
3505 | 556 | g_idle_add(start_service, data); | ||
3506 | 557 | return; | ||
3507 | 558 | } | ||
3508 | 559 | |||
3509 | 560 | /* Check which part of the menu we're in and do the | ||
3510 | 561 | appropriate follow up from the service being started. */ | ||
3511 | 562 | switch (GPOINTER_TO_INT(data)) { | ||
3512 | 563 | case STATUS_SECTION: | ||
3513 | 564 | status_followup(); | ||
3514 | 565 | break; | ||
3515 | 566 | case USERS_SECTION: | ||
3516 | 567 | users_followup(); | ||
3517 | 568 | break; | ||
3518 | 569 | case SESSION_SECTION: | ||
3519 | 570 | session_followup(); | ||
3520 | 571 | break; | ||
3521 | 572 | default: | ||
3522 | 573 | g_critical("Oh, how can we get a value that we don't know!"); | ||
3523 | 574 | break; | ||
3524 | 575 | } | ||
3525 | 576 | |||
3526 | 577 | return; | ||
3527 | 578 | } | ||
3528 | 579 | |||
3529 | 580 | /* Our idle service starter. It looks at the section that | ||
3530 | 581 | we're doing and then asks async for that service to be | ||
3531 | 582 | started by dbus. Probably not really useful to be in | ||
3532 | 583 | the idle loop as it's so quick, but why not. */ | ||
3533 | 584 | static gboolean | ||
3534 | 585 | start_service (gpointer userdata) | ||
3535 | 586 | { | ||
3536 | 587 | g_debug("Starting a service"); | ||
3537 | 588 | |||
3538 | 589 | if (proxy == NULL) { | ||
3539 | 590 | /* If we don't have DBus, let's stay in the idle loop */ | ||
3540 | 591 | return TRUE; | ||
3541 | 592 | } | ||
3542 | 593 | |||
3543 | 594 | const gchar * service = NULL; | ||
3544 | 595 | switch (GPOINTER_TO_INT(userdata)) { | ||
3545 | 596 | case STATUS_SECTION: | ||
3546 | 597 | service = INDICATOR_STATUS_DBUS_NAME; | ||
3547 | 598 | break; | ||
3548 | 599 | case USERS_SECTION: | ||
3549 | 600 | service = INDICATOR_USERS_DBUS_NAME; | ||
3550 | 601 | break; | ||
3551 | 602 | case SESSION_SECTION: | ||
3552 | 603 | service = INDICATOR_SESSION_DBUS_NAME; | ||
3553 | 604 | break; | ||
3554 | 605 | default: | ||
3555 | 606 | g_critical("Oh, how can we get a value that we don't know!"); | ||
3556 | 607 | return FALSE; | ||
3557 | 608 | } | ||
3558 | 609 | |||
3559 | 610 | org_freedesktop_DBus_start_service_by_name_async (proxy, service, 0 /* Flags */, start_service_phase2, userdata); | ||
3560 | 611 | |||
3561 | 612 | return FALSE; | ||
3562 | 613 | } | ||
3563 | 614 | |||
3564 | 615 | /* Indicator based function to get the menu for the whole | ||
3565 | 616 | applet. This starts up asking for the parts of the menu | ||
3566 | 617 | from the various services. */ | ||
3577 | 618 | static GtkMenu * | 205 | static GtkMenu * |
3578 | 619 | get_menu (IndicatorObject * io) | 206 | get_menu (IndicatorObject * io) |
3579 | 620 | { | 207 | { |
3599 | 621 | connection = dbus_g_bus_get(DBUS_BUS_SESSION, NULL); | 208 | return GTK_MENU(dbusmenu_gtkmenu_new(INDICATOR_ME_DBUS_NAME, INDICATOR_ME_DBUS_OBJECT)); |
3581 | 622 | proxy = dbus_g_proxy_new_for_name(connection, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS); | ||
3582 | 623 | if (proxy == NULL) { | ||
3583 | 624 | g_warning("Unable to get proxy for DBus itself. Seriously."); | ||
3584 | 625 | } | ||
3585 | 626 | |||
3586 | 627 | /* Startup in the idle loop */ | ||
3587 | 628 | g_idle_add(start_service, GINT_TO_POINTER(STATUS_SECTION)); | ||
3588 | 629 | g_idle_add(start_service, GINT_TO_POINTER(USERS_SECTION)); | ||
3589 | 630 | g_idle_add(start_service, GINT_TO_POINTER(SESSION_SECTION)); | ||
3590 | 631 | |||
3591 | 632 | /* Build a temp menu incase someone can ask for it | ||
3592 | 633 | before the services start. Fast user! */ | ||
3593 | 634 | main_menu = GTK_MENU(gtk_menu_new()); | ||
3594 | 635 | loading_item = gtk_menu_item_new_with_label("Loading..."); | ||
3595 | 636 | gtk_menu_shell_append(GTK_MENU_SHELL(main_menu), loading_item); | ||
3596 | 637 | gtk_widget_show(GTK_WIDGET(loading_item)); | ||
3597 | 638 | |||
3598 | 639 | return main_menu; | ||
3600 | 640 | } | 209 | } |
3601 | 641 | 210 | ||
3602 | 642 | 211 | ||
3603 | 643 | 212 | ||
3604 | === removed file 'src/lock-helper.c' | |||
3605 | --- src/lock-helper.c 2009-10-07 17:10:38 +0000 | |||
3606 | +++ src/lock-helper.c 1970-01-01 00:00:00 +0000 | |||
3607 | @@ -1,326 +0,0 @@ | |||
3608 | 1 | /* | ||
3609 | 2 | A small helper for locking the screen. | ||
3610 | 3 | |||
3611 | 4 | Copyright 2009 Canonical Ltd. | ||
3612 | 5 | |||
3613 | 6 | Authors: | ||
3614 | 7 | Ted Gould <ted@canonical.com> | ||
3615 | 8 | |||
3616 | 9 | This program is free software: you can redistribute it and/or modify it | ||
3617 | 10 | under the terms of the GNU General Public License version 3, as published | ||
3618 | 11 | by the Free Software Foundation. | ||
3619 | 12 | |||
3620 | 13 | This program is distributed in the hope that it will be useful, but | ||
3621 | 14 | WITHOUT ANY WARRANTY; without even the implied warranties of | ||
3622 | 15 | MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR | ||
3623 | 16 | PURPOSE. See the GNU General Public License for more details. | ||
3624 | 17 | |||
3625 | 18 | You should have received a copy of the GNU General Public License along | ||
3626 | 19 | with this program. If not, see <http://www.gnu.org/licenses/>. | ||
3627 | 20 | */ | ||
3628 | 21 | |||
3629 | 22 | #include <dbus/dbus-glib.h> | ||
3630 | 23 | #include "lock-helper.h" | ||
3631 | 24 | |||
3632 | 25 | static DBusGProxy * gss_proxy = NULL; | ||
3633 | 26 | static GMainLoop * gss_mainloop = NULL; | ||
3634 | 27 | static guint cookie = 0; | ||
3635 | 28 | static DBusGProxyCall * cookie_call = NULL; | ||
3636 | 29 | |||
3637 | 30 | static DBusGProxy * gdm_settings_proxy = NULL; | ||
3638 | 31 | static gboolean gdm_auto_login = FALSE; | ||
3639 | 32 | static const gchar * gdm_auto_login_string = "daemon/AutomaticLoginEnable"; | ||
3640 | 33 | |||
3641 | 34 | static gboolean is_guest = FALSE; | ||
3642 | 35 | |||
3643 | 36 | static gdm_autologin_cb_t gdm_autologin_cb = NULL; | ||
3644 | 37 | |||
3645 | 38 | /* Checks to see if there is an error and reports | ||
3646 | 39 | it. Not much else we can do. */ | ||
3647 | 40 | static void | ||
3648 | 41 | unthrottle_return (DBusGProxy * proxy, DBusGProxyCall * call, gpointer data) | ||
3649 | 42 | { | ||
3650 | 43 | GError * error = NULL; | ||
3651 | 44 | dbus_g_proxy_end_call(proxy, call, &error, | ||
3652 | 45 | G_TYPE_INVALID); | ||
3653 | 46 | |||
3654 | 47 | if (error != NULL) { | ||
3655 | 48 | g_warning("Unable to unthrottle: %s", error->message); | ||
3656 | 49 | } | ||
3657 | 50 | return; | ||
3658 | 51 | } | ||
3659 | 52 | |||
3660 | 53 | /* Sends an unthrottle if we're throttled. */ | ||
3661 | 54 | void | ||
3662 | 55 | screensaver_unthrottle (void) | ||
3663 | 56 | { | ||
3664 | 57 | g_return_if_fail(cookie != 0); | ||
3665 | 58 | |||
3666 | 59 | dbus_g_proxy_begin_call(gss_proxy, "UnThrottle", | ||
3667 | 60 | unthrottle_return, NULL, | ||
3668 | 61 | NULL, | ||
3669 | 62 | G_TYPE_UINT, cookie, | ||
3670 | 63 | G_TYPE_INVALID); | ||
3671 | 64 | |||
3672 | 65 | cookie = 0; | ||
3673 | 66 | return; | ||
3674 | 67 | } | ||
3675 | 68 | |||
3676 | 69 | /* Gets there return cookie from the throttle command | ||
3677 | 70 | and sets things valid */ | ||
3678 | 71 | static void | ||
3679 | 72 | throttle_return (DBusGProxy * proxy, DBusGProxyCall * call, gpointer data) | ||
3680 | 73 | { | ||
3681 | 74 | GError * error = NULL; | ||
3682 | 75 | cookie_call = NULL; | ||
3683 | 76 | |||
3684 | 77 | dbus_g_proxy_end_call(proxy, call, &error, | ||
3685 | 78 | G_TYPE_UINT, &cookie, | ||
3686 | 79 | G_TYPE_INVALID); | ||
3687 | 80 | |||
3688 | 81 | if (error != NULL) { | ||
3689 | 82 | g_warning("Unable to throttle the screensaver: %s", error->message); | ||
3690 | 83 | return; | ||
3691 | 84 | } | ||
3692 | 85 | |||
3693 | 86 | |||
3694 | 87 | if (cookie == 0) { | ||
3695 | 88 | g_warning("We didn't get a throttle cookie!"); | ||
3696 | 89 | } | ||
3697 | 90 | |||
3698 | 91 | return; | ||
3699 | 92 | } | ||
3700 | 93 | |||
3701 | 94 | /* Throttling the screensaver by using the screen saver | ||
3702 | 95 | command. */ | ||
3703 | 96 | void | ||
3704 | 97 | screensaver_throttle (gchar * reason) | ||
3705 | 98 | { | ||
3706 | 99 | g_return_if_fail(cookie_call == NULL); | ||
3707 | 100 | g_return_if_fail(will_lock_screen()); | ||
3708 | 101 | |||
3709 | 102 | if (cookie != 0) { | ||
3710 | 103 | screensaver_unthrottle(); | ||
3711 | 104 | } | ||
3712 | 105 | |||
3713 | 106 | cookie_call = dbus_g_proxy_begin_call(gss_proxy, "Throttle", | ||
3714 | 107 | throttle_return, NULL, | ||
3715 | 108 | NULL, | ||
3716 | 109 | G_TYPE_STRING, "Session Menu", | ||
3717 | 110 | G_TYPE_STRING, reason, | ||
3718 | 111 | G_TYPE_INVALID); | ||
3719 | 112 | |||
3720 | 113 | return; | ||
3721 | 114 | } | ||
3722 | 115 | |||
3723 | 116 | /* Setting up a call back */ | ||
3724 | 117 | void | ||
3725 | 118 | lock_screen_gdm_cb_set (gdm_autologin_cb_t cb) | ||
3726 | 119 | { | ||
3727 | 120 | if (gdm_autologin_cb) { | ||
3728 | 121 | g_warning("Already had a callback, setting up a new one..."); | ||
3729 | 122 | } | ||
3730 | 123 | |||
3731 | 124 | gdm_autologin_cb = cb; | ||
3732 | 125 | return; | ||
3733 | 126 | } | ||
3734 | 127 | |||
3735 | 128 | /* This is our logic on whether the screen should be locked | ||
3736 | 129 | or not. It effects everything else. */ | ||
3737 | 130 | gboolean | ||
3738 | 131 | will_lock_screen (void) | ||
3739 | 132 | { | ||
3740 | 133 | if (gdm_auto_login) { | ||
3741 | 134 | return FALSE; | ||
3742 | 135 | } | ||
3743 | 136 | if (is_guest) { | ||
3744 | 137 | return FALSE; | ||
3745 | 138 | } | ||
3746 | 139 | |||
3747 | 140 | return TRUE; | ||
3748 | 141 | } | ||
3749 | 142 | |||
3750 | 143 | /* Respond to the signal of autologin changing to see if the | ||
3751 | 144 | setting for timed login changes. */ | ||
3752 | 145 | static void | ||
3753 | 146 | gdm_settings_change (DBusGProxy * proxy, const gchar * value, const gchar * old, const gchar * new, gpointer data) | ||
3754 | 147 | { | ||
3755 | 148 | if (g_strcmp0(value, gdm_auto_login_string)) { | ||
3756 | 149 | /* This is not a setting that we care about, | ||
3757 | 150 | there is only one. */ | ||
3758 | 151 | return; | ||
3759 | 152 | } | ||
3760 | 153 | g_debug("GDM Settings change: %s", new); | ||
3761 | 154 | |||
3762 | 155 | if (g_strcmp0(new, "true") == 0) { | ||
3763 | 156 | gdm_auto_login = TRUE; | ||
3764 | 157 | } else { | ||
3765 | 158 | gdm_auto_login = FALSE; | ||
3766 | 159 | } | ||
3767 | 160 | |||
3768 | 161 | if (gdm_autologin_cb != NULL) { | ||
3769 | 162 | gdm_autologin_cb(); | ||
3770 | 163 | } | ||
3771 | 164 | |||
3772 | 165 | return; | ||
3773 | 166 | } | ||
3774 | 167 | |||
3775 | 168 | /* Get back the data from querying to see if there is auto | ||
3776 | 169 | login enabled in GDM */ | ||
3777 | 170 | static void | ||
3778 | 171 | gdm_get_autologin (DBusGProxy * proxy, DBusGProxyCall * call, gpointer data) | ||
3779 | 172 | { | ||
3780 | 173 | GError * error = NULL; | ||
3781 | 174 | gchar * value = NULL; | ||
3782 | 175 | |||
3783 | 176 | if (!dbus_g_proxy_end_call(proxy, call, &error, G_TYPE_STRING, &value, G_TYPE_INVALID)) { | ||
3784 | 177 | g_warning("Unable to get autologin setting: %s", error != NULL ? error->message : "null"); | ||
3785 | 178 | g_error_free(error); | ||
3786 | 179 | return; | ||
3787 | 180 | } | ||
3788 | 181 | |||
3789 | 182 | g_return_if_fail(value != NULL); | ||
3790 | 183 | gdm_settings_change(proxy, gdm_auto_login_string, NULL, value, NULL); | ||
3791 | 184 | |||
3792 | 185 | return; | ||
3793 | 186 | } | ||
3794 | 187 | |||
3795 | 188 | /* Sets up the proxy and queries for the setting to know | ||
3796 | 189 | whether we're doing an autologin. */ | ||
3797 | 190 | static void | ||
3798 | 191 | build_gdm_proxy (void) | ||
3799 | 192 | { | ||
3800 | 193 | g_return_if_fail(gdm_settings_proxy == NULL); | ||
3801 | 194 | |||
3802 | 195 | /* Grab the system bus */ | ||
3803 | 196 | DBusGConnection * bus = dbus_g_bus_get(DBUS_BUS_SYSTEM, NULL); | ||
3804 | 197 | g_return_if_fail(bus != NULL); | ||
3805 | 198 | |||
3806 | 199 | /* Get the settings proxy */ | ||
3807 | 200 | gdm_settings_proxy = dbus_g_proxy_new_for_name_owner(bus, | ||
3808 | 201 | "org.gnome.DisplayManager", | ||
3809 | 202 | "/org/gnome/DisplayManager/Settings", | ||
3810 | 203 | "org.gnome.DisplayManager.Settings", NULL); | ||
3811 | 204 | g_return_if_fail(gdm_settings_proxy != NULL); | ||
3812 | 205 | |||
3813 | 206 | /* Signal for value changed */ | ||
3814 | 207 | dbus_g_proxy_add_signal(gdm_settings_proxy, | ||
3815 | 208 | "ValueChanged", | ||
3816 | 209 | G_TYPE_STRING, | ||
3817 | 210 | G_TYPE_STRING, | ||
3818 | 211 | G_TYPE_STRING, | ||
3819 | 212 | G_TYPE_INVALID); | ||
3820 | 213 | dbus_g_proxy_connect_signal(gdm_settings_proxy, | ||
3821 | 214 | "ValueChanged", | ||
3822 | 215 | G_CALLBACK(gdm_settings_change), | ||
3823 | 216 | NULL, | ||
3824 | 217 | NULL); | ||
3825 | 218 | |||
3826 | 219 | /* Start to get the initial value */ | ||
3827 | 220 | dbus_g_proxy_begin_call(gdm_settings_proxy, | ||
3828 | 221 | "GetValue", | ||
3829 | 222 | gdm_get_autologin, | ||
3830 | 223 | NULL, | ||
3831 | 224 | NULL, | ||
3832 | 225 | G_TYPE_STRING, | ||
3833 | 226 | gdm_auto_login_string, | ||
3834 | 227 | G_TYPE_INVALID); | ||
3835 | 228 | |||
3836 | 229 | return; | ||
3837 | 230 | } | ||
3838 | 231 | |||
3839 | 232 | /* When the screensave go active, if we've got a mainloop | ||
3840 | 233 | running we should quit it. */ | ||
3841 | 234 | static void | ||
3842 | 235 | gss_active_changed (DBusGProxy * proxy, gboolean active, gpointer data) | ||
3843 | 236 | { | ||
3844 | 237 | if (active && gss_mainloop != NULL) { | ||
3845 | 238 | g_main_loop_quit(gss_mainloop); | ||
3846 | 239 | } | ||
3847 | 240 | |||
3848 | 241 | return; | ||
3849 | 242 | } | ||
3850 | 243 | |||
3851 | 244 | /* Build the gss proxy and set up it's signals */ | ||
3852 | 245 | void | ||
3853 | 246 | build_gss_proxy (void) | ||
3854 | 247 | { | ||
3855 | 248 | DBusGConnection * session_bus = dbus_g_bus_get(DBUS_BUS_SESSION, NULL); | ||
3856 | 249 | g_return_if_fail(session_bus != NULL); | ||
3857 | 250 | |||
3858 | 251 | gss_proxy = dbus_g_proxy_new_for_name_owner(session_bus, | ||
3859 | 252 | "org.gnome.ScreenSaver", | ||
3860 | 253 | "/", | ||
3861 | 254 | "org.gnome.ScreenSaver", | ||
3862 | 255 | NULL); | ||
3863 | 256 | g_return_if_fail(gss_proxy != NULL); | ||
3864 | 257 | |||
3865 | 258 | dbus_g_proxy_add_signal(gss_proxy, "ActiveChanged", G_TYPE_BOOLEAN, G_TYPE_INVALID); | ||
3866 | 259 | dbus_g_proxy_connect_signal(gss_proxy, "ActiveChanged", G_CALLBACK(gss_active_changed), NULL, NULL); | ||
3867 | 260 | |||
3868 | 261 | return; | ||
3869 | 262 | } | ||
3870 | 263 | |||
3871 | 264 | /* This is a timeout, we only want to wait for the screen to | ||
3872 | 265 | lock for a little bit, but not forever. */ | ||
3873 | 266 | static gboolean | ||
3874 | 267 | activate_timeout (gpointer data) | ||
3875 | 268 | { | ||
3876 | 269 | guint * address = (guint *)data; | ||
3877 | 270 | *address = 0; | ||
3878 | 271 | |||
3879 | 272 | if (gss_mainloop != NULL) { | ||
3880 | 273 | g_main_loop_quit(gss_mainloop); | ||
3881 | 274 | } | ||
3882 | 275 | |||
3883 | 276 | return FALSE; | ||
3884 | 277 | } | ||
3885 | 278 | |||
3886 | 279 | /* A fun little function to actually lock the screen. If, | ||
3887 | 280 | that's what you want, let's do it! */ | ||
3888 | 281 | void | ||
3889 | 282 | lock_screen (DbusmenuMenuitem * mi, gpointer data) | ||
3890 | 283 | { | ||
3891 | 284 | g_debug("Lock Screen"); | ||
3892 | 285 | if (!will_lock_screen()) { | ||
3893 | 286 | g_debug("\tGDM set to autologin, blocking lock"); | ||
3894 | 287 | return; | ||
3895 | 288 | } | ||
3896 | 289 | |||
3897 | 290 | g_return_if_fail(gss_proxy != NULL); | ||
3898 | 291 | |||
3899 | 292 | dbus_g_proxy_call_no_reply(gss_proxy, | ||
3900 | 293 | "Lock", | ||
3901 | 294 | G_TYPE_INVALID, | ||
3902 | 295 | G_TYPE_INVALID); | ||
3903 | 296 | |||
3904 | 297 | if (gss_mainloop == NULL) { | ||
3905 | 298 | gss_mainloop = g_main_loop_new(NULL, FALSE); | ||
3906 | 299 | } | ||
3907 | 300 | |||
3908 | 301 | guint timer = g_timeout_add_seconds(1, activate_timeout, &timer); | ||
3909 | 302 | |||
3910 | 303 | g_main_loop_run(gss_mainloop); | ||
3911 | 304 | |||
3912 | 305 | if (timer != 0) { | ||
3913 | 306 | g_source_remove(timer); | ||
3914 | 307 | } | ||
3915 | 308 | |||
3916 | 309 | return; | ||
3917 | 310 | } | ||
3918 | 311 | |||
3919 | 312 | /* Do what it takes to make the lock screen function work | ||
3920 | 313 | and be happy. */ | ||
3921 | 314 | gboolean | ||
3922 | 315 | lock_screen_setup (gpointer data) | ||
3923 | 316 | { | ||
3924 | 317 | if (!g_strcmp0(g_get_user_name(), "guest")) { | ||
3925 | 318 | is_guest = TRUE; | ||
3926 | 319 | } | ||
3927 | 320 | |||
3928 | 321 | build_gdm_proxy(); | ||
3929 | 322 | build_gss_proxy(); | ||
3930 | 323 | |||
3931 | 324 | return FALSE; | ||
3932 | 325 | } | ||
3933 | 326 | |||
3934 | 327 | 0 | ||
3935 | === removed file 'src/lock-helper.h' | |||
3936 | --- src/lock-helper.h 2009-10-07 15:57:52 +0000 | |||
3937 | +++ src/lock-helper.h 1970-01-01 00:00:00 +0000 | |||
3938 | @@ -1,37 +0,0 @@ | |||
3939 | 1 | /* | ||
3940 | 2 | A small helper for locking the screen. | ||
3941 | 3 | |||
3942 | 4 | Copyright 2009 Canonical Ltd. | ||
3943 | 5 | |||
3944 | 6 | Authors: | ||
3945 | 7 | Ted Gould <ted@canonical.com> | ||
3946 | 8 | |||
3947 | 9 | This program is free software: you can redistribute it and/or modify it | ||
3948 | 10 | under the terms of the GNU General Public License version 3, as published | ||
3949 | 11 | by the Free Software Foundation. | ||
3950 | 12 | |||
3951 | 13 | This program is distributed in the hope that it will be useful, but | ||
3952 | 14 | WITHOUT ANY WARRANTY; without even the implied warranties of | ||
3953 | 15 | MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR | ||
3954 | 16 | PURPOSE. See the GNU General Public License for more details. | ||
3955 | 17 | |||
3956 | 18 | You should have received a copy of the GNU General Public License along | ||
3957 | 19 | with this program. If not, see <http://www.gnu.org/licenses/>. | ||
3958 | 20 | */ | ||
3959 | 21 | |||
3960 | 22 | #ifndef LOCK_HELPER_H__ | ||
3961 | 23 | #define LOCK_HELPER_H__ | ||
3962 | 24 | |||
3963 | 25 | #include <libdbusmenu-glib/menuitem.h> | ||
3964 | 26 | |||
3965 | 27 | typedef void (*gdm_autologin_cb_t) (void); | ||
3966 | 28 | |||
3967 | 29 | void screensaver_throttle (gchar * reason); | ||
3968 | 30 | void screensaver_unthrottle (void); | ||
3969 | 31 | |||
3970 | 32 | gboolean will_lock_screen (void); | ||
3971 | 33 | void lock_screen (DbusmenuMenuitem * mi, gpointer data); | ||
3972 | 34 | gboolean lock_screen_setup (gpointer data); | ||
3973 | 35 | void lock_screen_gdm_cb_set (gdm_autologin_cb_t cb); | ||
3974 | 36 | |||
3975 | 37 | #endif /* LOCK_HELPER_H__ */ | ||
3976 | 38 | 0 | ||
3977 | === renamed file 'src/status-service-dbus.c' => 'src/me-service-dbus.c' | |||
3978 | --- src/status-service-dbus.c 2009-08-08 20:54:51 +0000 | |||
3979 | +++ src/me-service-dbus.c 2010-01-04 21:25:21 +0000 | |||
3980 | @@ -27,17 +27,17 @@ | |||
3981 | 27 | #include <dbus/dbus-glib.h> | 27 | #include <dbus/dbus-glib.h> |
3982 | 28 | 28 | ||
3983 | 29 | #include "dbus-shared-names.h" | 29 | #include "dbus-shared-names.h" |
3985 | 30 | #include "status-service-dbus.h" | 30 | #include "me-service-dbus.h" |
3986 | 31 | 31 | ||
3987 | 32 | static void status_service_dbus_class_init (StatusServiceDbusClass *klass); | 32 | static void status_service_dbus_class_init (StatusServiceDbusClass *klass); |
3988 | 33 | static void status_service_dbus_init (StatusServiceDbus *self); | 33 | static void status_service_dbus_init (StatusServiceDbus *self); |
3989 | 34 | static void status_service_dbus_dispose (GObject *object); | 34 | static void status_service_dbus_dispose (GObject *object); |
3990 | 35 | static void status_service_dbus_finalize (GObject *object); | 35 | static void status_service_dbus_finalize (GObject *object); |
3994 | 36 | static gboolean _status_service_server_watch (StatusServiceDbus * service, GError ** error); | 36 | static gboolean _me_service_server_watch (StatusServiceDbus * service, GError ** error); |
3995 | 37 | static gboolean _status_service_server_status_icons (StatusServiceDbus * service, gchar ** icon, GError ** error); | 37 | static gboolean _me_service_server_status_icons (StatusServiceDbus * service, gchar ** icon, GError ** error); |
3996 | 38 | static gboolean _status_service_server_pretty_user_name (StatusServiceDbus * service, gchar ** username, GError ** error); | 38 | static gboolean _me_service_server_pretty_user_name (StatusServiceDbus * service, gchar ** username, GError ** error); |
3997 | 39 | 39 | ||
3999 | 40 | #include "status-service-server.h" | 40 | #include "me-service-server.h" |
4000 | 41 | 41 | ||
4001 | 42 | /* Private */ | 42 | /* Private */ |
4002 | 43 | typedef struct _StatusServiceDbusPrivate StatusServiceDbusPrivate; | 43 | typedef struct _StatusServiceDbusPrivate StatusServiceDbusPrivate; |
4003 | @@ -106,7 +106,7 @@ | |||
4004 | 106 | g_cclosure_marshal_VOID__STRING, | 106 | g_cclosure_marshal_VOID__STRING, |
4005 | 107 | G_TYPE_NONE, 1, G_TYPE_STRING); | 107 | G_TYPE_NONE, 1, G_TYPE_STRING); |
4006 | 108 | 108 | ||
4008 | 109 | dbus_g_object_type_install_info(STATUS_SERVICE_DBUS_TYPE, &dbus_glib__status_service_server_object_info); | 109 | dbus_g_object_type_install_info(STATUS_SERVICE_DBUS_TYPE, &dbus_glib__me_service_server_object_info); |
4009 | 110 | 110 | ||
4010 | 111 | return; | 111 | return; |
4011 | 112 | } | 112 | } |
4012 | @@ -117,7 +117,7 @@ | |||
4013 | 117 | 117 | ||
4014 | 118 | DBusGConnection * connection = dbus_g_bus_get(DBUS_BUS_SESSION, NULL); | 118 | DBusGConnection * connection = dbus_g_bus_get(DBUS_BUS_SESSION, NULL); |
4015 | 119 | dbus_g_connection_register_g_object(connection, | 119 | dbus_g_connection_register_g_object(connection, |
4017 | 120 | INDICATOR_STATUS_SERVICE_DBUS_OBJECT, | 120 | INDICATOR_ME_SERVICE_DBUS_OBJECT, |
4018 | 121 | G_OBJECT(self)); | 121 | G_OBJECT(self)); |
4019 | 122 | 122 | ||
4020 | 123 | StatusServiceDbusPrivate * priv = STATUS_SERVICE_DBUS_GET_PRIVATE(self); | 123 | StatusServiceDbusPrivate * priv = STATUS_SERVICE_DBUS_GET_PRIVATE(self); |
4021 | @@ -144,14 +144,14 @@ | |||
4022 | 144 | } | 144 | } |
4023 | 145 | 145 | ||
4024 | 146 | static gboolean | 146 | static gboolean |
4026 | 147 | _status_service_server_watch (StatusServiceDbus * service, GError ** error) | 147 | _me_service_server_watch (StatusServiceDbus * service, GError ** error) |
4027 | 148 | { | 148 | { |
4028 | 149 | 149 | ||
4029 | 150 | return TRUE; | 150 | return TRUE; |
4030 | 151 | } | 151 | } |
4031 | 152 | 152 | ||
4032 | 153 | static gboolean | 153 | static gboolean |
4034 | 154 | _status_service_server_status_icons (StatusServiceDbus * service, gchar ** icon, GError ** error) | 154 | _me_service_server_status_icons (StatusServiceDbus * service, gchar ** icon, GError ** error) |
4035 | 155 | { | 155 | { |
4036 | 156 | if (!IS_STATUS_SERVICE_DBUS(service)) { | 156 | if (!IS_STATUS_SERVICE_DBUS(service)) { |
4037 | 157 | g_warning("NO BAD EVIL!"); | 157 | g_warning("NO BAD EVIL!"); |
4038 | @@ -169,7 +169,7 @@ | |||
4039 | 169 | } | 169 | } |
4040 | 170 | 170 | ||
4041 | 171 | static gboolean | 171 | static gboolean |
4043 | 172 | _status_service_server_pretty_user_name (StatusServiceDbus * service, gchar ** username, GError ** error) | 172 | _me_service_server_pretty_user_name (StatusServiceDbus * service, gchar ** username, GError ** error) |
4044 | 173 | { | 173 | { |
4045 | 174 | if (!IS_STATUS_SERVICE_DBUS(service)) { | 174 | if (!IS_STATUS_SERVICE_DBUS(service)) { |
4046 | 175 | g_warning("NO BAD EVIL!"); | 175 | g_warning("NO BAD EVIL!"); |
4047 | 176 | 176 | ||
4048 | === renamed file 'src/status-service-dbus.h' => 'src/me-service-dbus.h' | |||
4049 | === renamed file 'src/status-service.c' => 'src/me-service.c' | |||
4050 | --- src/status-service.c 2009-10-06 22:51:09 +0000 | |||
4051 | +++ src/me-service.c 2010-01-04 21:25:21 +0000 | |||
4052 | @@ -35,9 +35,11 @@ | |||
4053 | 35 | #include <libdbusmenu-glib/server.h> | 35 | #include <libdbusmenu-glib/server.h> |
4054 | 36 | #include <libdbusmenu-glib/menuitem.h> | 36 | #include <libdbusmenu-glib/menuitem.h> |
4055 | 37 | 37 | ||
4056 | 38 | #include <libindicator/indicator-service.h> | ||
4057 | 39 | |||
4058 | 38 | #include "dbus-shared-names.h" | 40 | #include "dbus-shared-names.h" |
4059 | 39 | 41 | ||
4061 | 40 | #include "status-service-dbus.h" | 42 | #include "me-service-dbus.h" |
4062 | 41 | 43 | ||
4063 | 42 | #include "status-provider.h" | 44 | #include "status-provider.h" |
4064 | 43 | #include "status-provider-mc5.h" | 45 | #include "status-provider-mc5.h" |
4065 | @@ -73,7 +75,6 @@ | |||
4066 | 73 | 75 | ||
4067 | 74 | 76 | ||
4068 | 75 | static DbusmenuMenuitem * root_menuitem = NULL; | 77 | static DbusmenuMenuitem * root_menuitem = NULL; |
4069 | 76 | static DbusmenuMenuitem * status_menuitem = NULL; | ||
4070 | 77 | static DbusmenuMenuitem * status_menuitems[STATUS_PROVIDER_STATUS_LAST] = {0}; | 78 | static DbusmenuMenuitem * status_menuitems[STATUS_PROVIDER_STATUS_LAST] = {0}; |
4071 | 78 | static GMainLoop * mainloop = NULL; | 79 | static GMainLoop * mainloop = NULL; |
4072 | 79 | static StatusServiceDbus * dbus_interface = NULL; | 80 | static StatusServiceDbus * dbus_interface = NULL; |
4073 | @@ -107,7 +108,7 @@ | |||
4074 | 107 | StatusProviderStatus i; | 108 | StatusProviderStatus i; |
4075 | 108 | for (i = STATUS_PROVIDER_STATUS_ONLINE; i < STATUS_PROVIDER_STATUS_LAST; i++) { | 109 | for (i = STATUS_PROVIDER_STATUS_ONLINE; i < STATUS_PROVIDER_STATUS_LAST; i++) { |
4076 | 109 | if (status_menuitems[i] == NULL) continue; | 110 | if (status_menuitems[i] == NULL) continue; |
4078 | 110 | dbusmenu_menuitem_property_set(status_menuitems[i], DBUSMENU_MENUITEM_PROP_SENSITIVE, "false"); | 111 | dbusmenu_menuitem_property_set_bool(status_menuitems[i], DBUSMENU_MENUITEM_PROP_SENSITIVE, FALSE); |
4079 | 111 | } | 112 | } |
4080 | 112 | } | 113 | } |
4081 | 113 | 114 | ||
4082 | @@ -117,7 +118,7 @@ | |||
4083 | 117 | StatusProviderStatus i; | 118 | StatusProviderStatus i; |
4084 | 118 | for (i = STATUS_PROVIDER_STATUS_ONLINE; i < STATUS_PROVIDER_STATUS_LAST; i++) { | 119 | for (i = STATUS_PROVIDER_STATUS_ONLINE; i < STATUS_PROVIDER_STATUS_LAST; i++) { |
4085 | 119 | if (status_menuitems[i] == NULL) continue; | 120 | if (status_menuitems[i] == NULL) continue; |
4087 | 120 | dbusmenu_menuitem_property_set(status_menuitems[i], DBUSMENU_MENUITEM_PROP_SENSITIVE, "true"); | 121 | dbusmenu_menuitem_property_set_bool(status_menuitems[i], DBUSMENU_MENUITEM_PROP_SENSITIVE, TRUE); |
4088 | 121 | } | 122 | } |
4089 | 122 | } | 123 | } |
4090 | 123 | } | 124 | } |
4091 | @@ -171,7 +172,7 @@ | |||
4092 | 171 | if (name[0] != '\0') { | 172 | if (name[0] != '\0') { |
4093 | 172 | DbusmenuMenuitem * useritem = dbusmenu_menuitem_new(); | 173 | DbusmenuMenuitem * useritem = dbusmenu_menuitem_new(); |
4094 | 173 | dbusmenu_menuitem_property_set(useritem, DBUSMENU_MENUITEM_PROP_LABEL, name); | 174 | dbusmenu_menuitem_property_set(useritem, DBUSMENU_MENUITEM_PROP_LABEL, name); |
4096 | 174 | dbusmenu_menuitem_property_set(useritem, DBUSMENU_MENUITEM_PROP_SENSITIVE, "false"); | 175 | dbusmenu_menuitem_property_set_bool(useritem, DBUSMENU_MENUITEM_PROP_SENSITIVE, FALSE); |
4097 | 175 | dbusmenu_menuitem_child_append(root, useritem); | 176 | dbusmenu_menuitem_child_append(root, useritem); |
4098 | 176 | } | 177 | } |
4099 | 177 | 178 | ||
4100 | @@ -191,10 +192,6 @@ | |||
4101 | 191 | 192 | ||
4102 | 192 | build_user_item(root); | 193 | build_user_item(root); |
4103 | 193 | 194 | ||
4104 | 194 | status_menuitem = dbusmenu_menuitem_new(); | ||
4105 | 195 | dbusmenu_menuitem_property_set(status_menuitem, DBUSMENU_MENUITEM_PROP_LABEL, _("Set Status")); | ||
4106 | 196 | dbusmenu_menuitem_child_append(root, status_menuitem); | ||
4107 | 197 | |||
4108 | 198 | StatusProviderStatus i; | 195 | StatusProviderStatus i; |
4109 | 199 | for (i = STATUS_PROVIDER_STATUS_ONLINE; i < STATUS_PROVIDER_STATUS_LAST; i++) { | 196 | for (i = STATUS_PROVIDER_STATUS_ONLINE; i < STATUS_PROVIDER_STATUS_LAST; i++) { |
4110 | 200 | if (i == STATUS_PROVIDER_STATUS_DISCONNECTED) { | 197 | if (i == STATUS_PROVIDER_STATUS_DISCONNECTED) { |
4111 | @@ -205,15 +202,14 @@ | |||
4112 | 205 | 202 | ||
4113 | 206 | status_menuitems[i] = dbusmenu_menuitem_new(); | 203 | status_menuitems[i] = dbusmenu_menuitem_new(); |
4114 | 207 | 204 | ||
4115 | 208 | dbusmenu_menuitem_property_set(status_menuitems[i], "type", DBUSMENU_CLIENT_TYPES_IMAGE); | ||
4116 | 209 | dbusmenu_menuitem_property_set(status_menuitems[i], DBUSMENU_MENUITEM_PROP_LABEL, _(status_strings[i])); | 205 | dbusmenu_menuitem_property_set(status_menuitems[i], DBUSMENU_MENUITEM_PROP_LABEL, _(status_strings[i])); |
4117 | 210 | dbusmenu_menuitem_property_set(status_menuitems[i], DBUSMENU_MENUITEM_PROP_ICON, status_icons[i]); | 206 | dbusmenu_menuitem_property_set(status_menuitems[i], DBUSMENU_MENUITEM_PROP_ICON, status_icons[i]); |
4118 | 211 | if (global_status == STATUS_PROVIDER_STATUS_DISCONNECTED) { | 207 | if (global_status == STATUS_PROVIDER_STATUS_DISCONNECTED) { |
4120 | 212 | dbusmenu_menuitem_property_set(status_menuitems[i], DBUSMENU_MENUITEM_PROP_SENSITIVE, "false"); | 208 | dbusmenu_menuitem_property_set_bool(status_menuitems[i], DBUSMENU_MENUITEM_PROP_SENSITIVE, FALSE); |
4121 | 213 | } | 209 | } |
4122 | 214 | g_signal_connect(G_OBJECT(status_menuitems[i]), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK(status_menu_click), GINT_TO_POINTER(i)); | 210 | g_signal_connect(G_OBJECT(status_menuitems[i]), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK(status_menu_click), GINT_TO_POINTER(i)); |
4123 | 215 | 211 | ||
4125 | 216 | dbusmenu_menuitem_child_append(status_menuitem, status_menuitems[i]); | 212 | dbusmenu_menuitem_child_append(root, status_menuitems[i]); |
4126 | 217 | 213 | ||
4127 | 218 | g_debug("Built %s", status_strings[i]); | 214 | g_debug("Built %s", status_strings[i]); |
4128 | 219 | } | 215 | } |
4129 | @@ -221,6 +217,14 @@ | |||
4130 | 221 | return FALSE; | 217 | return FALSE; |
4131 | 222 | } | 218 | } |
4132 | 223 | 219 | ||
4133 | 220 | void | ||
4134 | 221 | service_shutdown (IndicatorService * service, gpointer user_data) | ||
4135 | 222 | { | ||
4136 | 223 | g_debug("Service shutting down"); | ||
4137 | 224 | g_main_loop_quit(mainloop); | ||
4138 | 225 | return; | ||
4139 | 226 | } | ||
4140 | 227 | |||
4141 | 224 | int | 228 | int |
4142 | 225 | main (int argc, char ** argv) | 229 | main (int argc, char ** argv) |
4143 | 226 | { | 230 | { |
4144 | @@ -232,25 +236,13 @@ | |||
4145 | 232 | bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR); | 236 | bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR); |
4146 | 233 | textdomain (GETTEXT_PACKAGE); | 237 | textdomain (GETTEXT_PACKAGE); |
4147 | 234 | 238 | ||
4162 | 235 | DBusGConnection * connection = dbus_g_bus_get(DBUS_BUS_SESSION, NULL); | 239 | IndicatorService * service = indicator_service_new_version(INDICATOR_ME_DBUS_NAME, INDICATOR_ME_DBUS_VERSION); |
4163 | 236 | DBusGProxy * bus_proxy = dbus_g_proxy_new_for_name(connection, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS); | 240 | g_signal_connect(G_OBJECT(service), INDICATOR_SERVICE_SIGNAL_SHUTDOWN, G_CALLBACK(service_shutdown), NULL); |
4150 | 237 | GError * error = NULL; | ||
4151 | 238 | guint nameret = 0; | ||
4152 | 239 | |||
4153 | 240 | if (!org_freedesktop_DBus_request_name(bus_proxy, INDICATOR_STATUS_DBUS_NAME, 0, &nameret, &error)) { | ||
4154 | 241 | g_error("Unable to call to request name"); | ||
4155 | 242 | return 1; | ||
4156 | 243 | } | ||
4157 | 244 | |||
4158 | 245 | if (nameret != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) { | ||
4159 | 246 | g_error("Unable to get name"); | ||
4160 | 247 | return 1; | ||
4161 | 248 | } | ||
4164 | 249 | 241 | ||
4165 | 250 | g_idle_add(build_providers, NULL); | 242 | g_idle_add(build_providers, NULL); |
4166 | 251 | 243 | ||
4167 | 252 | root_menuitem = dbusmenu_menuitem_new(); | 244 | root_menuitem = dbusmenu_menuitem_new(); |
4169 | 253 | DbusmenuServer * server = dbusmenu_server_new(INDICATOR_STATUS_DBUS_OBJECT); | 245 | DbusmenuServer * server = dbusmenu_server_new(INDICATOR_ME_DBUS_OBJECT); |
4170 | 254 | dbusmenu_server_set_root(server, root_menuitem); | 246 | dbusmenu_server_set_root(server, root_menuitem); |
4171 | 255 | 247 | ||
4172 | 256 | g_idle_add(build_menu, root_menuitem); | 248 | g_idle_add(build_menu, root_menuitem); |
4173 | 257 | 249 | ||
4174 | === renamed file 'src/status-service.xml' => 'src/me-service.xml' | |||
4175 | --- src/status-service.xml 2009-08-08 16:47:24 +0000 | |||
4176 | +++ src/me-service.xml 2010-01-04 21:25:21 +0000 | |||
4177 | @@ -1,6 +1,6 @@ | |||
4178 | 1 | <?xml version="1.0" encoding="UTF-8"?> | 1 | <?xml version="1.0" encoding="UTF-8"?> |
4179 | 2 | <node name="/"> | 2 | <node name="/"> |
4181 | 3 | <interface name="org.ayatana.indicator.status.service"> | 3 | <interface name="org.ayatana.indicator.me.service"> |
4182 | 4 | 4 | ||
4183 | 5 | <!-- Methods --> | 5 | <!-- Methods --> |
4184 | 6 | <method name="Watch"> | 6 | <method name="Watch"> |
4185 | 7 | 7 | ||
4186 | === removed file 'src/session-service.c' | |||
4187 | --- src/session-service.c 2009-10-07 16:56:05 +0000 | |||
4188 | +++ src/session-service.c 1970-01-01 00:00:00 +0000 | |||
4189 | @@ -1,339 +0,0 @@ | |||
4190 | 1 | /* | ||
4191 | 2 | A small wrapper utility to load indicators and put them as menu items | ||
4192 | 3 | into the gnome-panel using it's applet interface. | ||
4193 | 4 | |||
4194 | 5 | Copyright 2009 Canonical Ltd. | ||
4195 | 6 | |||
4196 | 7 | Authors: | ||
4197 | 8 | Ted Gould <ted@canonical.com> | ||
4198 | 9 | Christoph Korn <c_korn@gmx.de> | ||
4199 | 10 | |||
4200 | 11 | This program is free software: you can redistribute it and/or modify it | ||
4201 | 12 | under the terms of the GNU General Public License version 3, as published | ||
4202 | 13 | by the Free Software Foundation. | ||
4203 | 14 | |||
4204 | 15 | This program is distributed in the hope that it will be useful, but | ||
4205 | 16 | WITHOUT ANY WARRANTY; without even the implied warranties of | ||
4206 | 17 | MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR | ||
4207 | 18 | PURPOSE. See the GNU General Public License for more details. | ||
4208 | 19 | |||
4209 | 20 | You should have received a copy of the GNU General Public License along | ||
4210 | 21 | with this program. If not, see <http://www.gnu.org/licenses/>. | ||
4211 | 22 | */ | ||
4212 | 23 | |||
4213 | 24 | #include <config.h> | ||
4214 | 25 | |||
4215 | 26 | #include <glib/gi18n.h> | ||
4216 | 27 | |||
4217 | 28 | #include <dbus/dbus-glib.h> | ||
4218 | 29 | #include <dbus/dbus-glib-bindings.h> | ||
4219 | 30 | |||
4220 | 31 | #include <libdbusmenu-glib/server.h> | ||
4221 | 32 | #include <libdbusmenu-glib/menuitem.h> | ||
4222 | 33 | |||
4223 | 34 | #include "dbus-shared-names.h" | ||
4224 | 35 | |||
4225 | 36 | #include "gtk-dialog/gconf-helper.h" | ||
4226 | 37 | |||
4227 | 38 | #include "lock-helper.h" | ||
4228 | 39 | |||
4229 | 40 | #define DKP_ADDRESS "org.freedesktop.DeviceKit.Power" | ||
4230 | 41 | #define DKP_OBJECT "/org/freedesktop/DeviceKit/Power" | ||
4231 | 42 | #define DKP_INTERFACE "org.freedesktop.DeviceKit.Power" | ||
4232 | 43 | |||
4233 | 44 | static DbusmenuMenuitem * root_menuitem = NULL; | ||
4234 | 45 | static GMainLoop * mainloop = NULL; | ||
4235 | 46 | static DBusGProxy * dkp_main_proxy = NULL; | ||
4236 | 47 | static DBusGProxy * dkp_prop_proxy = NULL; | ||
4237 | 48 | |||
4238 | 49 | static DBusGProxyCall * suspend_call = NULL; | ||
4239 | 50 | static DBusGProxyCall * hibernate_call = NULL; | ||
4240 | 51 | |||
4241 | 52 | static DbusmenuMenuitem * hibernate_mi = NULL; | ||
4242 | 53 | static DbusmenuMenuitem * suspend_mi = NULL; | ||
4243 | 54 | static DbusmenuMenuitem * logout_mi = NULL; | ||
4244 | 55 | static DbusmenuMenuitem * restart_mi = NULL; | ||
4245 | 56 | static DbusmenuMenuitem * shutdown_mi = NULL; | ||
4246 | 57 | |||
4247 | 58 | /* A return from the command to sleep the system. Make sure | ||
4248 | 59 | that we unthrottle the screensaver. */ | ||
4249 | 60 | static void | ||
4250 | 61 | sleep_response (DBusGProxy * proxy, DBusGProxyCall * call, gpointer data) | ||
4251 | 62 | { | ||
4252 | 63 | screensaver_unthrottle(); | ||
4253 | 64 | return; | ||
4254 | 65 | } | ||
4255 | 66 | |||
4256 | 67 | /* Let's put this machine to sleep, with some info on how | ||
4257 | 68 | it should sleep. */ | ||
4258 | 69 | static void | ||
4259 | 70 | sleep (DbusmenuMenuitem * mi, gpointer userdata) | ||
4260 | 71 | { | ||
4261 | 72 | gchar * type = (gchar *)userdata; | ||
4262 | 73 | |||
4263 | 74 | if (dkp_main_proxy == NULL) { | ||
4264 | 75 | g_warning("Can not %s as no DeviceKit Power Proxy", type); | ||
4265 | 76 | } | ||
4266 | 77 | |||
4267 | 78 | screensaver_throttle(type); | ||
4268 | 79 | lock_screen(NULL, NULL); | ||
4269 | 80 | |||
4270 | 81 | dbus_g_proxy_begin_call(dkp_main_proxy, | ||
4271 | 82 | type, | ||
4272 | 83 | sleep_response, | ||
4273 | 84 | NULL, | ||
4274 | 85 | NULL, | ||
4275 | 86 | G_TYPE_INVALID); | ||
4276 | 87 | |||
4277 | 88 | return; | ||
4278 | 89 | } | ||
4279 | 90 | |||
4280 | 91 | /* A response to getting the suspend property */ | ||
4281 | 92 | static void | ||
4282 | 93 | suspend_prop_cb (DBusGProxy * proxy, DBusGProxyCall * call, gpointer userdata) | ||
4283 | 94 | { | ||
4284 | 95 | suspend_call = NULL; | ||
4285 | 96 | |||
4286 | 97 | GValue candoit = {0}; | ||
4287 | 98 | GError * error = NULL; | ||
4288 | 99 | dbus_g_proxy_end_call(proxy, call, &error, G_TYPE_VALUE, &candoit, G_TYPE_INVALID); | ||
4289 | 100 | if (error != NULL) { | ||
4290 | 101 | g_warning("Unable to check suspend: %s", error->message); | ||
4291 | 102 | g_error_free(error); | ||
4292 | 103 | return; | ||
4293 | 104 | } | ||
4294 | 105 | g_debug("Got Suspend: %s", g_value_get_boolean(&candoit) ? "true" : "false"); | ||
4295 | 106 | |||
4296 | 107 | if (suspend_mi != NULL) { | ||
4297 | 108 | dbusmenu_menuitem_property_set(suspend_mi, DBUSMENU_MENUITEM_PROP_VISIBLE, g_value_get_boolean(&candoit) ? "true" : "false"); | ||
4298 | 109 | } | ||
4299 | 110 | |||
4300 | 111 | return; | ||
4301 | 112 | } | ||
4302 | 113 | |||
4303 | 114 | /* Response to getting the hibernate property */ | ||
4304 | 115 | static void | ||
4305 | 116 | hibernate_prop_cb (DBusGProxy * proxy, DBusGProxyCall * call, gpointer userdata) | ||
4306 | 117 | { | ||
4307 | 118 | hibernate_call = NULL; | ||
4308 | 119 | |||
4309 | 120 | GValue candoit = {0}; | ||
4310 | 121 | GError * error = NULL; | ||
4311 | 122 | dbus_g_proxy_end_call(proxy, call, &error, G_TYPE_VALUE, &candoit, G_TYPE_INVALID); | ||
4312 | 123 | if (error != NULL) { | ||
4313 | 124 | g_warning("Unable to check hibernate: %s", error->message); | ||
4314 | 125 | g_error_free(error); | ||
4315 | 126 | return; | ||
4316 | 127 | } | ||
4317 | 128 | g_debug("Got Hibernate: %s", g_value_get_boolean(&candoit) ? "true" : "false"); | ||
4318 | 129 | |||
4319 | 130 | if (suspend_mi != NULL) { | ||
4320 | 131 | dbusmenu_menuitem_property_set(hibernate_mi, DBUSMENU_MENUITEM_PROP_VISIBLE, g_value_get_boolean(&candoit) ? "true" : "false"); | ||
4321 | 132 | } | ||
4322 | 133 | |||
4323 | 134 | return; | ||
4324 | 135 | } | ||
4325 | 136 | |||
4326 | 137 | /* A signal that we need to recheck to ensure we can still | ||
4327 | 138 | hibernate and/or suspend */ | ||
4328 | 139 | static void | ||
4329 | 140 | dpk_changed_cb (DBusGProxy * proxy, gpointer user_data) | ||
4330 | 141 | { | ||
4331 | 142 | /* Start Async call to see if we can hibernate */ | ||
4332 | 143 | if (suspend_call == NULL) { | ||
4333 | 144 | suspend_call = dbus_g_proxy_begin_call(dkp_prop_proxy, | ||
4334 | 145 | "Get", | ||
4335 | 146 | suspend_prop_cb, | ||
4336 | 147 | NULL, | ||
4337 | 148 | NULL, | ||
4338 | 149 | G_TYPE_STRING, | ||
4339 | 150 | DKP_INTERFACE, | ||
4340 | 151 | G_TYPE_STRING, | ||
4341 | 152 | "can-suspend", | ||
4342 | 153 | G_TYPE_INVALID, | ||
4343 | 154 | G_TYPE_VALUE, | ||
4344 | 155 | G_TYPE_INVALID); | ||
4345 | 156 | } | ||
4346 | 157 | |||
4347 | 158 | /* Start Async call to see if we can suspend */ | ||
4348 | 159 | if (hibernate_call == NULL) { | ||
4349 | 160 | hibernate_call = dbus_g_proxy_begin_call(dkp_prop_proxy, | ||
4350 | 161 | "Get", | ||
4351 | 162 | hibernate_prop_cb, | ||
4352 | 163 | NULL, | ||
4353 | 164 | NULL, | ||
4354 | 165 | G_TYPE_STRING, | ||
4355 | 166 | DKP_INTERFACE, | ||
4356 | 167 | G_TYPE_STRING, | ||
4357 | 168 | "can-hibernate", | ||
4358 | 169 | G_TYPE_INVALID, | ||
4359 | 170 | G_TYPE_VALUE, | ||
4360 | 171 | G_TYPE_INVALID); | ||
4361 | 172 | } | ||
4362 | 173 | |||
4363 | 174 | return; | ||
4364 | 175 | } | ||
4365 | 176 | |||
4366 | 177 | /* This function goes through and sets up what we need for | ||
4367 | 178 | DKp checking. We're even setting up the calls for the props | ||
4368 | 179 | we need */ | ||
4369 | 180 | static void | ||
4370 | 181 | setup_dkp (void) { | ||
4371 | 182 | DBusGConnection * bus = dbus_g_bus_get(DBUS_BUS_SYSTEM, NULL); | ||
4372 | 183 | g_return_if_fail(bus != NULL); | ||
4373 | 184 | |||
4374 | 185 | if (dkp_main_proxy == NULL) { | ||
4375 | 186 | dkp_main_proxy = dbus_g_proxy_new_for_name(bus, | ||
4376 | 187 | DKP_ADDRESS, | ||
4377 | 188 | DKP_OBJECT, | ||
4378 | 189 | DKP_INTERFACE); | ||
4379 | 190 | } | ||
4380 | 191 | g_return_if_fail(dkp_main_proxy != NULL); | ||
4381 | 192 | |||
4382 | 193 | if (dkp_prop_proxy == NULL) { | ||
4383 | 194 | dkp_prop_proxy = dbus_g_proxy_new_for_name(bus, | ||
4384 | 195 | DKP_ADDRESS, | ||
4385 | 196 | DKP_OBJECT, | ||
4386 | 197 | DBUS_INTERFACE_PROPERTIES); | ||
4387 | 198 | } | ||
4388 | 199 | g_return_if_fail(dkp_prop_proxy != NULL); | ||
4389 | 200 | |||
4390 | 201 | /* Connect to changed signal */ | ||
4391 | 202 | dbus_g_proxy_add_signal(dkp_main_proxy, | ||
4392 | 203 | "Changed", | ||
4393 | 204 | G_TYPE_INVALID); | ||
4394 | 205 | |||
4395 | 206 | dbus_g_proxy_connect_signal(dkp_main_proxy, | ||
4396 | 207 | "Changed", | ||
4397 | 208 | G_CALLBACK(dpk_changed_cb), | ||
4398 | 209 | NULL, | ||
4399 | 210 | NULL); | ||
4400 | 211 | |||
4401 | 212 | /* Force an original "changed" event */ | ||
4402 | 213 | dpk_changed_cb(dkp_main_proxy, NULL); | ||
4403 | 214 | |||
4404 | 215 | return; | ||
4405 | 216 | } | ||
4406 | 217 | |||
4407 | 218 | /* This is the function to show a dialog on actions that | ||
4408 | 219 | can destroy data. Currently it just calls the GTK version | ||
4409 | 220 | but it seems that in the future it should figure out | ||
4410 | 221 | what's going on and something better. */ | ||
4411 | 222 | static void | ||
4412 | 223 | show_dialog (DbusmenuMenuitem * mi, gchar * type) | ||
4413 | 224 | { | ||
4414 | 225 | gchar * helper = g_build_filename(LIBEXECDIR, "gtk-logout-helper", NULL); | ||
4415 | 226 | gchar * dialog_line = g_strdup_printf("%s --%s", helper, type); | ||
4416 | 227 | g_free(helper); | ||
4417 | 228 | |||
4418 | 229 | g_debug("Showing dialog '%s'", dialog_line); | ||
4419 | 230 | |||
4420 | 231 | GError * error = NULL; | ||
4421 | 232 | if (!g_spawn_command_line_async(dialog_line, &error)) { | ||
4422 | 233 | g_warning("Unable to show dialog: %s", error->message); | ||
4423 | 234 | g_error_free(error); | ||
4424 | 235 | } | ||
4425 | 236 | |||
4426 | 237 | g_free(dialog_line); | ||
4427 | 238 | |||
4428 | 239 | return; | ||
4429 | 240 | } | ||
4430 | 241 | |||
4431 | 242 | /* This function creates all of the menuitems that the service | ||
4432 | 243 | provides in the UI. It also connects them to the callbacks. */ | ||
4433 | 244 | static void | ||
4434 | 245 | create_items (DbusmenuMenuitem * root) { | ||
4435 | 246 | logout_mi = dbusmenu_menuitem_new(); | ||
4436 | 247 | if (supress_confirmations()) { | ||
4437 | 248 | dbusmenu_menuitem_property_set(logout_mi, DBUSMENU_MENUITEM_PROP_LABEL, _("Log Out")); | ||
4438 | 249 | } else { | ||
4439 | 250 | dbusmenu_menuitem_property_set(logout_mi, DBUSMENU_MENUITEM_PROP_LABEL, _("Log Out...")); | ||
4440 | 251 | } | ||
4441 | 252 | dbusmenu_menuitem_child_append(root, logout_mi); | ||
4442 | 253 | g_signal_connect(G_OBJECT(logout_mi), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK(show_dialog), "logout"); | ||
4443 | 254 | |||
4444 | 255 | suspend_mi = dbusmenu_menuitem_new(); | ||
4445 | 256 | dbusmenu_menuitem_property_set(suspend_mi, DBUSMENU_MENUITEM_PROP_VISIBLE, "false"); | ||
4446 | 257 | dbusmenu_menuitem_property_set(suspend_mi, DBUSMENU_MENUITEM_PROP_LABEL, _("Suspend")); | ||
4447 | 258 | dbusmenu_menuitem_child_append(root, suspend_mi); | ||
4448 | 259 | g_signal_connect(G_OBJECT(suspend_mi), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK(sleep), "Suspend"); | ||
4449 | 260 | |||
4450 | 261 | hibernate_mi = dbusmenu_menuitem_new(); | ||
4451 | 262 | dbusmenu_menuitem_property_set(hibernate_mi, DBUSMENU_MENUITEM_PROP_VISIBLE, "false"); | ||
4452 | 263 | dbusmenu_menuitem_property_set(hibernate_mi, DBUSMENU_MENUITEM_PROP_LABEL, _("Hibernate")); | ||
4453 | 264 | dbusmenu_menuitem_child_append(root, hibernate_mi); | ||
4454 | 265 | g_signal_connect(G_OBJECT(hibernate_mi), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK(sleep), "Hibernate"); | ||
4455 | 266 | |||
4456 | 267 | restart_mi = dbusmenu_menuitem_new(); | ||
4457 | 268 | if (supress_confirmations()) { | ||
4458 | 269 | dbusmenu_menuitem_property_set(restart_mi, DBUSMENU_MENUITEM_PROP_LABEL, _("Restart")); | ||
4459 | 270 | } else { | ||
4460 | 271 | dbusmenu_menuitem_property_set(restart_mi, DBUSMENU_MENUITEM_PROP_LABEL, _("Restart...")); | ||
4461 | 272 | } | ||
4462 | 273 | dbusmenu_menuitem_child_append(root, restart_mi); | ||
4463 | 274 | g_signal_connect(G_OBJECT(restart_mi), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK(show_dialog), "restart"); | ||
4464 | 275 | |||
4465 | 276 | shutdown_mi = dbusmenu_menuitem_new(); | ||
4466 | 277 | if (supress_confirmations()) { | ||
4467 | 278 | dbusmenu_menuitem_property_set(shutdown_mi, DBUSMENU_MENUITEM_PROP_LABEL, _("Shut Down")); | ||
4468 | 279 | } else { | ||
4469 | 280 | dbusmenu_menuitem_property_set(shutdown_mi, DBUSMENU_MENUITEM_PROP_LABEL, _("Shut Down...")); | ||
4470 | 281 | } | ||
4471 | 282 | dbusmenu_menuitem_child_append(root, shutdown_mi); | ||
4472 | 283 | g_signal_connect(G_OBJECT(shutdown_mi), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK(show_dialog), "shutdown"); | ||
4473 | 284 | |||
4474 | 285 | RestartShutdownLogoutMenuItems * restart_shutdown_logout_mi = g_new0 (RestartShutdownLogoutMenuItems, 1); | ||
4475 | 286 | restart_shutdown_logout_mi->logout_mi = logout_mi; | ||
4476 | 287 | restart_shutdown_logout_mi->restart_mi = restart_mi; | ||
4477 | 288 | restart_shutdown_logout_mi->shutdown_mi = shutdown_mi; | ||
4478 | 289 | |||
4479 | 290 | update_menu_entries(restart_shutdown_logout_mi); | ||
4480 | 291 | |||
4481 | 292 | return; | ||
4482 | 293 | } | ||
4483 | 294 | |||
4484 | 295 | /* Main, is well, main. It brings everything up and throws | ||
4485 | 296 | us into the mainloop of no return. */ | ||
4486 | 297 | int | ||
4487 | 298 | main (int argc, char ** argv) | ||
4488 | 299 | { | ||
4489 | 300 | g_type_init(); | ||
4490 | 301 | |||
4491 | 302 | /* Setting up i18n and gettext. Apparently, we need | ||
4492 | 303 | all of these. */ | ||
4493 | 304 | setlocale (LC_ALL, ""); | ||
4494 | 305 | bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR); | ||
4495 | 306 | textdomain (GETTEXT_PACKAGE); | ||
4496 | 307 | |||
4497 | 308 | DBusGConnection * connection = dbus_g_bus_get(DBUS_BUS_SESSION, NULL); | ||
4498 | 309 | DBusGProxy * bus_proxy = dbus_g_proxy_new_for_name(connection, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS); | ||
4499 | 310 | GError * error = NULL; | ||
4500 | 311 | guint nameret = 0; | ||
4501 | 312 | |||
4502 | 313 | if (!org_freedesktop_DBus_request_name(bus_proxy, INDICATOR_SESSION_DBUS_NAME, 0, &nameret, &error)) { | ||
4503 | 314 | g_error("Unable to call to request name"); | ||
4504 | 315 | return 1; | ||
4505 | 316 | } | ||
4506 | 317 | |||
4507 | 318 | if (nameret != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) { | ||
4508 | 319 | g_error("Unable to get name"); | ||
4509 | 320 | return 1; | ||
4510 | 321 | } | ||
4511 | 322 | |||
4512 | 323 | g_idle_add(lock_screen_setup, NULL); | ||
4513 | 324 | |||
4514 | 325 | root_menuitem = dbusmenu_menuitem_new(); | ||
4515 | 326 | g_debug("Root ID: %d", dbusmenu_menuitem_get_id(root_menuitem)); | ||
4516 | 327 | |||
4517 | 328 | create_items(root_menuitem); | ||
4518 | 329 | setup_dkp(); | ||
4519 | 330 | |||
4520 | 331 | DbusmenuServer * server = dbusmenu_server_new(INDICATOR_SESSION_DBUS_OBJECT); | ||
4521 | 332 | dbusmenu_server_set_root(server, root_menuitem); | ||
4522 | 333 | |||
4523 | 334 | mainloop = g_main_loop_new(NULL, FALSE); | ||
4524 | 335 | g_main_loop_run(mainloop); | ||
4525 | 336 | |||
4526 | 337 | return 0; | ||
4527 | 338 | } | ||
4528 | 339 | |||
4529 | 340 | 0 | ||
4530 | === modified file 'src/status-provider-mc5.c' | |||
4531 | --- src/status-provider-mc5.c 2009-10-08 20:12:42 +0000 | |||
4532 | +++ src/status-provider-mc5.c 2010-01-04 21:25:21 +0000 | |||
4533 | @@ -24,7 +24,7 @@ | |||
4534 | 24 | #include "config.h" | 24 | #include "config.h" |
4535 | 25 | #endif | 25 | #endif |
4536 | 26 | 26 | ||
4538 | 27 | #include "libempathy/empathy-account-manager.h" | 27 | #include <telepathy-glib/account-manager.h> |
4539 | 28 | 28 | ||
4540 | 29 | #include "status-provider.h" | 29 | #include "status-provider.h" |
4541 | 30 | #include "status-provider-mc5.h" | 30 | #include "status-provider-mc5.h" |
4542 | @@ -65,7 +65,7 @@ | |||
4543 | 65 | 65 | ||
4544 | 66 | typedef struct _StatusProviderMC5Private StatusProviderMC5Private; | 66 | typedef struct _StatusProviderMC5Private StatusProviderMC5Private; |
4545 | 67 | struct _StatusProviderMC5Private { | 67 | struct _StatusProviderMC5Private { |
4547 | 68 | EmpathyAccountManager * manager; | 68 | TpAccountManager * manager; |
4548 | 69 | StatusProviderStatus status; | 69 | StatusProviderStatus status; |
4549 | 70 | DBusGProxy * dbus_proxy; | 70 | DBusGProxy * dbus_proxy; |
4550 | 71 | }; | 71 | }; |
4551 | @@ -83,7 +83,7 @@ | |||
4552 | 83 | /* Internal Funcs */ | 83 | /* Internal Funcs */ |
4553 | 84 | static void set_status (StatusProvider * sp, StatusProviderStatus status); | 84 | static void set_status (StatusProvider * sp, StatusProviderStatus status); |
4554 | 85 | static StatusProviderStatus get_status (StatusProvider * sp); | 85 | static StatusProviderStatus get_status (StatusProvider * sp); |
4556 | 86 | static void presence_changed (EmpathyAccountManager * eam, guint type, const gchar * type_str, const gchar * message, StatusProviderMC5 * sp); | 86 | static void presence_changed (TpAccountManager * eam, guint type, const gchar * type_str, const gchar * message, StatusProviderMC5 * sp); |
4557 | 87 | static void dbus_namechange (DBusGProxy * proxy, const gchar * name, const gchar * prev, const gchar * new, StatusProviderMC5 * self); | 87 | static void dbus_namechange (DBusGProxy * proxy, const gchar * name, const gchar * prev, const gchar * new, StatusProviderMC5 * self); |
4558 | 88 | static void mc5_exists_cb (DBusGProxy * proxy, gboolean exists, GError * error, gpointer userdata); | 88 | static void mc5_exists_cb (DBusGProxy * proxy, gboolean exists, GError * error, gpointer userdata); |
4559 | 89 | 89 | ||
4560 | @@ -109,25 +109,41 @@ | |||
4561 | 109 | return; | 109 | return; |
4562 | 110 | } | 110 | } |
4563 | 111 | 111 | ||
4565 | 112 | /* Build our empathy account manager instance if we don't | 112 | /* Build our telepathy account manager instance if we don't |
4566 | 113 | have one. */ | 113 | have one. */ |
4567 | 114 | static void | 114 | static void |
4568 | 115 | build_eam (StatusProviderMC5 * self) | 115 | build_eam (StatusProviderMC5 * self) |
4569 | 116 | { | 116 | { |
4570 | 117 | StatusProviderMC5Private * priv = STATUS_PROVIDER_MC5_GET_PRIVATE(self); | 117 | StatusProviderMC5Private * priv = STATUS_PROVIDER_MC5_GET_PRIVATE(self); |
4571 | 118 | static TpDBusDaemon *daemon = NULL; | ||
4572 | 119 | GError *error = NULL; | ||
4573 | 118 | 120 | ||
4574 | 119 | if (priv->manager != NULL) { | 121 | if (priv->manager != NULL) { |
4575 | 120 | return; | 122 | return; |
4576 | 121 | } | 123 | } |
4580 | 122 | 124 | /* the daemon is used to communicate via DBus */ | |
4581 | 123 | priv->manager = EMPATHY_ACCOUNT_MANAGER(g_object_new(EMPATHY_TYPE_ACCOUNT_MANAGER, NULL)); | 125 | daemon = tp_dbus_daemon_dup(&error); |
4582 | 124 | g_signal_connect(G_OBJECT(priv->manager), "global-presence-changed", G_CALLBACK(presence_changed), self); | 126 | |
4583 | 127 | if (daemon == NULL) | ||
4584 | 128 | { | ||
4585 | 129 | g_debug("Cannot create DBus daemon: %s\n", error->message); | ||
4586 | 130 | g_error_free(error); | ||
4587 | 131 | return; | ||
4588 | 132 | } | ||
4589 | 133 | |||
4590 | 134 | priv->manager = TP_ACCOUNT_MANAGER (g_object_new (TP_TYPE_ACCOUNT_MANAGER, | ||
4591 | 135 | "dbus-daemon", daemon, | ||
4592 | 136 | "dbus-connection", ((TpProxy *) daemon)->dbus_connection, | ||
4593 | 137 | "bus-name", "org.freedesktop.Telepathy.MissionControl5", | ||
4594 | 138 | "object-path", "/org/freedesktop/Telepathy/AccountManager", | ||
4595 | 139 | NULL)); | ||
4596 | 140 | g_signal_connect(G_OBJECT(priv->manager), "most-available-presence-changed", G_CALLBACK(presence_changed), self); | ||
4597 | 125 | 141 | ||
4598 | 126 | return; | 142 | return; |
4599 | 127 | } | 143 | } |
4600 | 128 | 144 | ||
4601 | 129 | /* Creating an instance of the status provider. We set the variables | 145 | /* Creating an instance of the status provider. We set the variables |
4603 | 130 | and create an EmpathyAccountManager object. It does all the hard | 146 | and create an TpAccountManager object. It does all the hard |
4604 | 131 | work in this module of tracking MissionControl and enumerating the | 147 | work in this module of tracking MissionControl and enumerating the |
4605 | 132 | accounts and all that jazz. */ | 148 | accounts and all that jazz. */ |
4606 | 133 | static void | 149 | static void |
4607 | @@ -266,8 +282,7 @@ | |||
4608 | 266 | StatusProviderMC5Private * priv = STATUS_PROVIDER_MC5_GET_PRIVATE(sp); | 282 | StatusProviderMC5Private * priv = STATUS_PROVIDER_MC5_GET_PRIVATE(sp); |
4609 | 267 | 283 | ||
4610 | 268 | build_eam(STATUS_PROVIDER_MC5(sp)); | 284 | build_eam(STATUS_PROVIDER_MC5(sp)); |
4613 | 269 | 285 | tp_account_manager_set_all_requested_presences(priv->manager, sp_to_tp_map[status], sp_to_mc_map[status], ""); | |
4612 | 270 | empathy_account_manager_request_global_presence(priv->manager, sp_to_tp_map[status], sp_to_mc_map[status], ""); | ||
4614 | 271 | 286 | ||
4615 | 272 | return; | 287 | return; |
4616 | 273 | } | 288 | } |
4617 | @@ -287,11 +302,11 @@ | |||
4618 | 287 | return priv->status; | 302 | return priv->status; |
4619 | 288 | } | 303 | } |
4620 | 289 | 304 | ||
4622 | 290 | /* A signal handler for when the EmpatyAccountManager believes | 305 | /* A signal handler for when the TpAccountManager believes |
4623 | 291 | that the global status has changed. It roughly calculates this | 306 | that the global status has changed. It roughly calculates this |
4624 | 292 | by finding the most available of all accounts that are active. */ | 307 | by finding the most available of all accounts that are active. */ |
4625 | 293 | static void | 308 | static void |
4627 | 294 | presence_changed (EmpathyAccountManager * eam, guint type, const gchar * type_str, const gchar * message, StatusProviderMC5 * sp) | 309 | presence_changed (TpAccountManager * eam, guint type, const gchar * type_str, const gchar * message, StatusProviderMC5 * sp) |
4628 | 295 | { | 310 | { |
4629 | 296 | StatusProviderMC5Private * priv = STATUS_PROVIDER_MC5_GET_PRIVATE(sp); | 311 | StatusProviderMC5Private * priv = STATUS_PROVIDER_MC5_GET_PRIVATE(sp); |
4630 | 297 | 312 | ||
4631 | 298 | 313 | ||
4632 | === removed file 'src/users-service-dbus.c' | |||
4633 | --- src/users-service-dbus.c 2009-09-24 22:02:11 +0000 | |||
4634 | +++ src/users-service-dbus.c 1970-01-01 00:00:00 +0000 | |||
4635 | @@ -1,1147 +0,0 @@ | |||
4636 | 1 | /* | ||
4637 | 2 | * Copyright 2009 Canonical Ltd. | ||
4638 | 3 | * | ||
4639 | 4 | * Authors: | ||
4640 | 5 | * Cody Russell <crussell@canonical.com> | ||
4641 | 6 | * | ||
4642 | 7 | * This program is free software: you can redistribute it and/or modify it | ||
4643 | 8 | * under the terms of the GNU General Public License version 3, as published | ||
4644 | 9 | * by the Free Software Foundation. | ||
4645 | 10 | * | ||
4646 | 11 | * This program is distributed in the hope that it will be useful, but | ||
4647 | 12 | * WITHOUT ANY WARRANTY; without even the implied warranties of | ||
4648 | 13 | * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR | ||
4649 | 14 | * PURPOSE. See the GNU General Public License for more details. | ||
4650 | 15 | * | ||
4651 | 16 | * You should have received a copy of the GNU General Public License along | ||
4652 | 17 | * with this program. If not, see <http://www.gnu.org/licenses/>. | ||
4653 | 18 | */ | ||
4654 | 19 | |||
4655 | 20 | #ifdef HAVE_CONFIG_H | ||
4656 | 21 | #include "config.h" | ||
4657 | 22 | #endif | ||
4658 | 23 | |||
4659 | 24 | #include <string.h> | ||
4660 | 25 | #include <errno.h> | ||
4661 | 26 | #include <pwd.h> | ||
4662 | 27 | |||
4663 | 28 | #include <dbus/dbus-glib.h> | ||
4664 | 29 | #include <dbus/dbus-glib.h> | ||
4665 | 30 | #include <dbus/dbus-glib-lowlevel.h> | ||
4666 | 31 | |||
4667 | 32 | #include "dbus-shared-names.h" | ||
4668 | 33 | #include "users-service-dbus.h" | ||
4669 | 34 | #include "users-service-client.h" | ||
4670 | 35 | #include "users-service-marshal.h" | ||
4671 | 36 | |||
4672 | 37 | static void users_service_dbus_class_init (UsersServiceDbusClass *klass); | ||
4673 | 38 | static void users_service_dbus_init (UsersServiceDbus *self); | ||
4674 | 39 | static void users_service_dbus_dispose (GObject *object); | ||
4675 | 40 | static void users_service_dbus_finalize (GObject *object); | ||
4676 | 41 | static void create_gdm_proxy (UsersServiceDbus *self); | ||
4677 | 42 | static void create_seat_proxy (UsersServiceDbus *self); | ||
4678 | 43 | static void create_ck_proxy (UsersServiceDbus *self); | ||
4679 | 44 | static void create_cksession_proxy (UsersServiceDbus *self); | ||
4680 | 45 | static gchar *get_seat (UsersServiceDbus *service); | ||
4681 | 46 | static void users_loaded (DBusGProxy *proxy, | ||
4682 | 47 | gpointer user_data); | ||
4683 | 48 | static void user_added (DBusGProxy *proxy, | ||
4684 | 49 | gint64 uid, | ||
4685 | 50 | gpointer user_data); | ||
4686 | 51 | static void user_removed (DBusGProxy *proxy, | ||
4687 | 52 | gint64 uid, | ||
4688 | 53 | gpointer user_data); | ||
4689 | 54 | static void user_updated (DBusGProxy *proxy, | ||
4690 | 55 | guint uid, | ||
4691 | 56 | gpointer user_data); | ||
4692 | 57 | static void seat_proxy_session_added (DBusGProxy *seat_proxy, | ||
4693 | 58 | const gchar *session_id, | ||
4694 | 59 | UsersServiceDbus *service); | ||
4695 | 60 | static void seat_proxy_session_removed (DBusGProxy *seat_proxy, | ||
4696 | 61 | const gchar *session_id, | ||
4697 | 62 | UsersServiceDbus *service); | ||
4698 | 63 | static gboolean do_add_session (UsersServiceDbus *service, | ||
4699 | 64 | UserData *user, | ||
4700 | 65 | const gchar *ssid); | ||
4701 | 66 | static gchar * get_seat_internal (UsersServiceDbus *self); | ||
4702 | 67 | |||
4703 | 68 | /* Private */ | ||
4704 | 69 | typedef struct _UsersServiceDbusPrivate UsersServiceDbusPrivate; | ||
4705 | 70 | |||
4706 | 71 | struct _UsersServiceDbusPrivate | ||
4707 | 72 | { | ||
4708 | 73 | GHashTable *users; | ||
4709 | 74 | gint count; | ||
4710 | 75 | gchar *seat; | ||
4711 | 76 | gchar *ssid; | ||
4712 | 77 | |||
4713 | 78 | DBusGConnection *system_bus; | ||
4714 | 79 | |||
4715 | 80 | DBusGProxy *gdm_proxy; | ||
4716 | 81 | DBusGProxy *ck_proxy; | ||
4717 | 82 | DBusGProxy *seat_proxy; | ||
4718 | 83 | DBusGProxy *session_proxy; | ||
4719 | 84 | |||
4720 | 85 | GHashTable *exclusions; | ||
4721 | 86 | GHashTable *sessions; | ||
4722 | 87 | }; | ||
4723 | 88 | |||
4724 | 89 | #define USERS_SERVICE_DBUS_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), USERS_SERVICE_DBUS_TYPE, UsersServiceDbusPrivate)) | ||
4725 | 90 | |||
4726 | 91 | /* Signals */ | ||
4727 | 92 | enum { | ||
4728 | 93 | USERS_LOADED, | ||
4729 | 94 | USER_ADDED, | ||
4730 | 95 | USER_REMOVED, | ||
4731 | 96 | USER_UPDATED, | ||
4732 | 97 | LAST_SIGNAL | ||
4733 | 98 | }; | ||
4734 | 99 | |||
4735 | 100 | static guint signals[LAST_SIGNAL] = { 0 }; | ||
4736 | 101 | |||
4737 | 102 | /* GObject Boilerplate */ | ||
4738 | 103 | G_DEFINE_TYPE (UsersServiceDbus, users_service_dbus, G_TYPE_OBJECT); | ||
4739 | 104 | |||
4740 | 105 | static void | ||
4741 | 106 | users_service_dbus_class_init (UsersServiceDbusClass *klass) | ||
4742 | 107 | { | ||
4743 | 108 | GObjectClass *object_class = G_OBJECT_CLASS (klass); | ||
4744 | 109 | |||
4745 | 110 | g_type_class_add_private (object_class, sizeof (UsersServiceDbusPrivate)); | ||
4746 | 111 | |||
4747 | 112 | object_class->dispose = users_service_dbus_dispose; | ||
4748 | 113 | object_class->finalize = users_service_dbus_finalize; | ||
4749 | 114 | |||
4750 | 115 | signals[USERS_LOADED] = g_signal_new ("users-loaded", | ||
4751 | 116 | G_TYPE_FROM_CLASS (klass), | ||
4752 | 117 | G_SIGNAL_RUN_LAST, | ||
4753 | 118 | G_STRUCT_OFFSET (UsersServiceDbusClass, users_loaded), | ||
4754 | 119 | NULL, NULL, | ||
4755 | 120 | g_cclosure_marshal_VOID__VOID, | ||
4756 | 121 | G_TYPE_NONE, 0); | ||
4757 | 122 | |||
4758 | 123 | signals[USER_ADDED] = g_signal_new ("user-added", | ||
4759 | 124 | G_TYPE_FROM_CLASS (klass), | ||
4760 | 125 | G_SIGNAL_RUN_LAST, | ||
4761 | 126 | G_STRUCT_OFFSET (UsersServiceDbusClass, user_added), | ||
4762 | 127 | NULL, NULL, | ||
4763 | 128 | _users_service_marshal_VOID__INT64, | ||
4764 | 129 | G_TYPE_NONE, 1, G_TYPE_INT64); | ||
4765 | 130 | |||
4766 | 131 | signals[USER_REMOVED] = g_signal_new ("user-removed", | ||
4767 | 132 | G_TYPE_FROM_CLASS (klass), | ||
4768 | 133 | G_SIGNAL_RUN_LAST, | ||
4769 | 134 | G_STRUCT_OFFSET (UsersServiceDbusClass, user_removed), | ||
4770 | 135 | NULL, NULL, | ||
4771 | 136 | _users_service_marshal_VOID__INT64, | ||
4772 | 137 | G_TYPE_NONE, 1, G_TYPE_INT64); | ||
4773 | 138 | |||
4774 | 139 | signals[USER_UPDATED] = g_signal_new ("user-updated", | ||
4775 | 140 | G_TYPE_FROM_CLASS (klass), | ||
4776 | 141 | G_SIGNAL_RUN_LAST, | ||
4777 | 142 | G_STRUCT_OFFSET (UsersServiceDbusClass, user_updated), | ||
4778 | 143 | NULL, NULL, | ||
4779 | 144 | _users_service_marshal_VOID__INT64, | ||
4780 | 145 | G_TYPE_NONE, 1, G_TYPE_INT64); | ||
4781 | 146 | } | ||
4782 | 147 | |||
4783 | 148 | static void | ||
4784 | 149 | users_service_dbus_init (UsersServiceDbus *self) | ||
4785 | 150 | { | ||
4786 | 151 | GError *error = NULL; | ||
4787 | 152 | UsersServiceDbusPrivate *priv = USERS_SERVICE_DBUS_GET_PRIVATE (self); | ||
4788 | 153 | |||
4789 | 154 | priv->users = NULL; | ||
4790 | 155 | priv->count = 0; | ||
4791 | 156 | |||
4792 | 157 | /* Get the system bus */ | ||
4793 | 158 | priv->system_bus = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error); | ||
4794 | 159 | if (error != NULL) | ||
4795 | 160 | { | ||
4796 | 161 | g_error ("Unable to get system bus: %s", error->message); | ||
4797 | 162 | g_error_free(error); | ||
4798 | 163 | |||
4799 | 164 | return; | ||
4800 | 165 | } | ||
4801 | 166 | |||
4802 | 167 | priv->sessions = g_hash_table_new_full (g_str_hash, | ||
4803 | 168 | g_str_equal, | ||
4804 | 169 | g_free, | ||
4805 | 170 | g_free); | ||
4806 | 171 | |||
4807 | 172 | priv->users = g_hash_table_new_full (g_str_hash, | ||
4808 | 173 | g_str_equal, | ||
4809 | 174 | g_free, | ||
4810 | 175 | NULL); | ||
4811 | 176 | |||
4812 | 177 | dbus_g_object_register_marshaller (_users_service_marshal_VOID__INT64, | ||
4813 | 178 | G_TYPE_NONE, | ||
4814 | 179 | G_TYPE_INT64, | ||
4815 | 180 | G_TYPE_INVALID); | ||
4816 | 181 | |||
4817 | 182 | create_gdm_proxy (self); | ||
4818 | 183 | create_ck_proxy (self); | ||
4819 | 184 | create_seat_proxy (self); | ||
4820 | 185 | |||
4821 | 186 | users_loaded (priv->gdm_proxy, self); | ||
4822 | 187 | } | ||
4823 | 188 | |||
4824 | 189 | static void | ||
4825 | 190 | users_service_dbus_dispose (GObject *object) | ||
4826 | 191 | { | ||
4827 | 192 | G_OBJECT_CLASS (users_service_dbus_parent_class)->dispose (object); | ||
4828 | 193 | } | ||
4829 | 194 | |||
4830 | 195 | static void | ||
4831 | 196 | users_service_dbus_finalize (GObject *object) | ||
4832 | 197 | { | ||
4833 | 198 | G_OBJECT_CLASS (users_service_dbus_parent_class)->finalize (object); | ||
4834 | 199 | } | ||
4835 | 200 | |||
4836 | 201 | static void | ||
4837 | 202 | create_gdm_proxy (UsersServiceDbus *self) | ||
4838 | 203 | { | ||
4839 | 204 | UsersServiceDbusPrivate *priv = USERS_SERVICE_DBUS_GET_PRIVATE (self); | ||
4840 | 205 | GError *error = NULL; | ||
4841 | 206 | |||
4842 | 207 | priv->gdm_proxy = dbus_g_proxy_new_for_name_owner (priv->system_bus, | ||
4843 | 208 | "org.gnome.DisplayManager", | ||
4844 | 209 | "/org/gnome/DisplayManager/UserManager", | ||
4845 | 210 | "org.gnome.DisplayManager.UserManager", | ||
4846 | 211 | &error); | ||
4847 | 212 | |||
4848 | 213 | if (!priv->gdm_proxy) | ||
4849 | 214 | { | ||
4850 | 215 | if (error != NULL) | ||
4851 | 216 | { | ||
4852 | 217 | g_error ("Unable to get DisplayManager proxy on system bus: %s", error->message); | ||
4853 | 218 | g_error_free (error); | ||
4854 | 219 | } | ||
4855 | 220 | |||
4856 | 221 | return; | ||
4857 | 222 | } | ||
4858 | 223 | |||
4859 | 224 | dbus_g_proxy_add_signal (priv->gdm_proxy, | ||
4860 | 225 | "UsersLoaded", | ||
4861 | 226 | G_TYPE_INVALID); | ||
4862 | 227 | |||
4863 | 228 | dbus_g_proxy_add_signal (priv->gdm_proxy, | ||
4864 | 229 | "UserAdded", | ||
4865 | 230 | G_TYPE_INT64, | ||
4866 | 231 | G_TYPE_INVALID); | ||
4867 | 232 | |||
4868 | 233 | dbus_g_proxy_add_signal (priv->gdm_proxy, | ||
4869 | 234 | "UserRemoved", | ||
4870 | 235 | G_TYPE_INT64, | ||
4871 | 236 | G_TYPE_INVALID); | ||
4872 | 237 | |||
4873 | 238 | dbus_g_proxy_add_signal (priv->gdm_proxy, | ||
4874 | 239 | "UserUpdated", | ||
4875 | 240 | G_TYPE_INT64, | ||
4876 | 241 | G_TYPE_INVALID); | ||
4877 | 242 | |||
4878 | 243 | dbus_g_proxy_connect_signal (priv->gdm_proxy, | ||
4879 | 244 | "UsersLoaded", | ||
4880 | 245 | G_CALLBACK (users_loaded), | ||
4881 | 246 | self, | ||
4882 | 247 | NULL); | ||
4883 | 248 | |||
4884 | 249 | dbus_g_proxy_connect_signal (priv->gdm_proxy, | ||
4885 | 250 | "UserAdded", | ||
4886 | 251 | G_CALLBACK (user_added), | ||
4887 | 252 | self, | ||
4888 | 253 | NULL); | ||
4889 | 254 | |||
4890 | 255 | dbus_g_proxy_connect_signal (priv->gdm_proxy, | ||
4891 | 256 | "UserRemoved", | ||
4892 | 257 | G_CALLBACK (user_removed), | ||
4893 | 258 | self, | ||
4894 | 259 | NULL); | ||
4895 | 260 | |||
4896 | 261 | dbus_g_proxy_connect_signal (priv->gdm_proxy, | ||
4897 | 262 | "UserUpdated", | ||
4898 | 263 | G_CALLBACK (user_updated), | ||
4899 | 264 | self, | ||
4900 | 265 | NULL); | ||
4901 | 266 | } | ||
4902 | 267 | |||
4903 | 268 | static void | ||
4904 | 269 | create_ck_proxy (UsersServiceDbus *self) | ||
4905 | 270 | { | ||
4906 | 271 | UsersServiceDbusPrivate *priv = USERS_SERVICE_DBUS_GET_PRIVATE (self); | ||
4907 | 272 | |||
4908 | 273 | priv->ck_proxy = dbus_g_proxy_new_for_name (priv->system_bus, | ||
4909 | 274 | "org.freedesktop.ConsoleKit", | ||
4910 | 275 | "/org/freedesktop/ConsoleKit/Manager", | ||
4911 | 276 | "org.freedesktop.ConsoleKit.Manager"); | ||
4912 | 277 | |||
4913 | 278 | if (!priv->ck_proxy) | ||
4914 | 279 | { | ||
4915 | 280 | g_warning ("Failed to get ConsoleKit proxy."); | ||
4916 | 281 | return; | ||
4917 | 282 | } | ||
4918 | 283 | } | ||
4919 | 284 | |||
4920 | 285 | static void | ||
4921 | 286 | create_seat_proxy (UsersServiceDbus *self) | ||
4922 | 287 | { | ||
4923 | 288 | UsersServiceDbusPrivate *priv = USERS_SERVICE_DBUS_GET_PRIVATE (self); | ||
4924 | 289 | GError *error = NULL; | ||
4925 | 290 | |||
4926 | 291 | priv->seat = get_seat (self); | ||
4927 | 292 | if (priv->seat == NULL) | ||
4928 | 293 | { | ||
4929 | 294 | return; | ||
4930 | 295 | } | ||
4931 | 296 | |||
4932 | 297 | priv->seat_proxy = dbus_g_proxy_new_for_name_owner (priv->system_bus, | ||
4933 | 298 | "org.freedesktop.ConsoleKit", | ||
4934 | 299 | priv->seat, | ||
4935 | 300 | "org.freedesktop.ConsoleKit.Seat", | ||
4936 | 301 | &error); | ||
4937 | 302 | |||
4938 | 303 | if (!priv->seat_proxy) | ||
4939 | 304 | { | ||
4940 | 305 | if (error != NULL) | ||
4941 | 306 | { | ||
4942 | 307 | g_warning ("Failed to connect to the ConsoleKit seat: %s", error->message); | ||
4943 | 308 | g_error_free (error); | ||
4944 | 309 | } | ||
4945 | 310 | |||
4946 | 311 | return; | ||
4947 | 312 | } | ||
4948 | 313 | |||
4949 | 314 | dbus_g_proxy_add_signal (priv->seat_proxy, | ||
4950 | 315 | "SessionAdded", | ||
4951 | 316 | DBUS_TYPE_G_OBJECT_PATH, | ||
4952 | 317 | G_TYPE_INVALID); | ||
4953 | 318 | dbus_g_proxy_add_signal (priv->seat_proxy, | ||
4954 | 319 | "SessionRemoved", | ||
4955 | 320 | DBUS_TYPE_G_OBJECT_PATH, | ||
4956 | 321 | G_TYPE_INVALID); | ||
4957 | 322 | |||
4958 | 323 | dbus_g_proxy_connect_signal (priv->seat_proxy, | ||
4959 | 324 | "SessionAdded", | ||
4960 | 325 | G_CALLBACK (seat_proxy_session_added), | ||
4961 | 326 | self, | ||
4962 | 327 | NULL); | ||
4963 | 328 | dbus_g_proxy_connect_signal (priv->seat_proxy, | ||
4964 | 329 | "SessionRemoved", | ||
4965 | 330 | G_CALLBACK (seat_proxy_session_removed), | ||
4966 | 331 | self, | ||
4967 | 332 | NULL); | ||
4968 | 333 | } | ||
4969 | 334 | |||
4970 | 335 | static void | ||
4971 | 336 | create_cksession_proxy (UsersServiceDbus *service) | ||
4972 | 337 | { | ||
4973 | 338 | UsersServiceDbusPrivate *priv = USERS_SERVICE_DBUS_GET_PRIVATE (service); | ||
4974 | 339 | |||
4975 | 340 | priv->session_proxy = dbus_g_proxy_new_for_name (priv->system_bus, | ||
4976 | 341 | "org.freedesktop.ConsoleKit", | ||
4977 | 342 | priv->ssid, | ||
4978 | 343 | "org.freedesktop.ConsoleKit.Session"); | ||
4979 | 344 | |||
4980 | 345 | if (!priv->session_proxy) | ||
4981 | 346 | { | ||
4982 | 347 | g_warning ("Failed to get ConsoleKit session proxy"); | ||
4983 | 348 | return; | ||
4984 | 349 | } | ||
4985 | 350 | } | ||
4986 | 351 | |||
4987 | 352 | static gchar * | ||
4988 | 353 | get_seat (UsersServiceDbus *service) | ||
4989 | 354 | { | ||
4990 | 355 | UsersServiceDbusPrivate *priv = USERS_SERVICE_DBUS_GET_PRIVATE (service); | ||
4991 | 356 | GError *error = NULL; | ||
4992 | 357 | gchar *ssid = NULL; | ||
4993 | 358 | gchar *seat; | ||
4994 | 359 | |||
4995 | 360 | if (!dbus_g_proxy_call (priv->ck_proxy, | ||
4996 | 361 | "GetCurrentSession", | ||
4997 | 362 | &error, | ||
4998 | 363 | G_TYPE_INVALID, | ||
4999 | 364 | DBUS_TYPE_G_OBJECT_PATH, | ||
5000 | 365 | &ssid, |
The diff has been truncated for viewing.
Removing everything other than status. Now this is all status only. Also, quite a bit of renaming to make things clearer in the future.