55 Public method to get the supported screenshot modes. |
55 Public method to get the supported screenshot modes. |
56 |
56 |
57 @return tuple of supported screenshot modes |
57 @return tuple of supported screenshot modes |
58 @rtype tuple of SnapshotModes |
58 @rtype tuple of SnapshotModes |
59 """ |
59 """ |
60 if DBusAvailable and Globals.isKdeDesktop(): |
60 if DBusAvailable and DesktopUtilities.isKdeDesktop(): |
61 # __IGNORE_WARNING_Y114__ |
61 # __IGNORE_WARNING_Y114__ |
62 return ( |
62 return ( |
63 SnapshotModes.FULLSCREEN, |
63 SnapshotModes.FULLSCREEN, |
64 SnapshotModes.SELECTEDSCREEN, |
64 SnapshotModes.SELECTEDSCREEN, |
65 SnapshotModes.SELECTEDWINDOW, |
65 SnapshotModes.SELECTEDWINDOW, |
66 ) |
66 ) |
67 elif DBusAvailable and Globals.isGnomeDesktop(): |
67 elif DBusAvailable and DesktopUtilities.isGnomeDesktop(): |
68 return ( |
68 return ( |
69 SnapshotModes.FULLSCREEN, |
69 SnapshotModes.FULLSCREEN, |
70 SnapshotModes.SELECTEDSCREEN, |
70 SnapshotModes.SELECTEDSCREEN, |
71 SnapshotModes.SELECTEDWINDOW, |
71 SnapshotModes.SELECTEDWINDOW, |
72 SnapshotModes.RECTANGLE, |
72 SnapshotModes.RECTANGLE, |
128 """ |
128 """ |
129 Private method to grab the complete desktop. |
129 Private method to grab the complete desktop. |
130 """ |
130 """ |
131 snapshot = QPixmap() |
131 snapshot = QPixmap() |
132 |
132 |
133 if Globals.isKdeDesktop(): |
133 if DesktopUtilities.isKdeDesktop(): |
134 interface = QDBusInterface( |
134 interface = QDBusInterface( |
135 "org.kde.KWin", "/Screenshot", "org.kde.kwin.Screenshot" |
135 "org.kde.KWin", "/Screenshot", "org.kde.kwin.Screenshot" |
136 ) |
136 ) |
137 reply = interface.call("screenshotFullscreen", self.__captureCursor) |
137 reply = interface.call("screenshotFullscreen", self.__captureCursor) |
138 if self.__checkReply(reply, 1): |
138 if self.__checkReply(reply, 1): |
139 filename = reply.arguments()[0] |
139 filename = reply.arguments()[0] |
140 if filename: |
140 if filename: |
141 snapshot = QPixmap(filename) |
141 snapshot = QPixmap(filename) |
142 with contextlib.suppress(OSError): |
142 with contextlib.suppress(OSError): |
143 os.remove(filename) |
143 os.remove(filename) |
144 elif Globals.isGnomeDesktop(): |
144 elif DesktopUtilities.isGnomeDesktop(): |
145 path = self.__temporaryFilename() |
145 path = self.__temporaryFilename() |
146 interface = QDBusInterface( |
146 interface = QDBusInterface( |
147 "org.gnome.Shell", |
147 "org.gnome.Shell", |
148 "/org/gnome/Shell/Screenshot", |
148 "/org/gnome/Shell/Screenshot", |
149 "org.gnome.Shell.Screenshot", |
149 "org.gnome.Shell.Screenshot", |
162 """ |
162 """ |
163 Private method to grab a selected screen. |
163 Private method to grab a selected screen. |
164 """ |
164 """ |
165 snapshot = QPixmap() |
165 snapshot = QPixmap() |
166 |
166 |
167 if Globals.isKdeDesktop(): |
167 if DesktopUtilities.isKdeDesktop(): |
168 screen = QApplication.screenAt(QCursor.pos()) |
168 screen = QApplication.screenAt(QCursor.pos()) |
169 try: |
169 try: |
170 screenId = QApplication.screens().index(screen) |
170 screenId = QApplication.screens().index(screen) |
171 except ValueError: |
171 except ValueError: |
172 # default to screen 0 |
172 # default to screen 0 |
181 filename = reply.arguments()[0] |
181 filename = reply.arguments()[0] |
182 if filename: |
182 if filename: |
183 snapshot = QPixmap(filename) |
183 snapshot = QPixmap(filename) |
184 with contextlib.suppress(OSError): |
184 with contextlib.suppress(OSError): |
185 os.remove(filename) |
185 os.remove(filename) |
186 elif Globals.isGnomeDesktop(): |
186 elif DesktopUtilities.isGnomeDesktop(): |
187 # Step 1: grab entire desktop |
187 # Step 1: grab entire desktop |
188 path = self.__temporaryFilename() |
188 path = self.__temporaryFilename() |
189 interface = QDBusInterface( |
189 interface = QDBusInterface( |
190 "org.gnome.Shell", |
190 "org.gnome.Shell", |
191 "/org/gnome/Shell/Screenshot", |
191 "/org/gnome/Shell/Screenshot", |
234 filename = reply.arguments()[0] |
234 filename = reply.arguments()[0] |
235 if filename: |
235 if filename: |
236 snapshot = QPixmap(filename) |
236 snapshot = QPixmap(filename) |
237 with contextlib.suppress(OSError): |
237 with contextlib.suppress(OSError): |
238 os.remove(filename) |
238 os.remove(filename) |
239 elif Globals.isGnomeDesktop(): |
239 elif DesktopUtilities.isGnomeDesktop(): |
240 path = self.__temporaryFilename() |
240 path = self.__temporaryFilename() |
241 interface = QDBusInterface( |
241 interface = QDBusInterface( |
242 "org.gnome.Shell", |
242 "org.gnome.Shell", |
243 "/org/gnome/Shell/Screenshot", |
243 "/org/gnome/Shell/Screenshot", |
244 "org.gnome.Shell.Screenshot", |
244 "org.gnome.Shell.Screenshot", |
263 """ |
263 """ |
264 Private method to grab a rectangular desktop area. |
264 Private method to grab a rectangular desktop area. |
265 """ |
265 """ |
266 snapshot = QPixmap() |
266 snapshot = QPixmap() |
267 |
267 |
268 if Globals.isGnomeDesktop(): |
268 if DesktopUtilities.isGnomeDesktop(): |
269 # Step 1: let the user select the area |
269 # Step 1: let the user select the area |
270 interface = QDBusInterface( |
270 interface = QDBusInterface( |
271 "org.gnome.Shell", |
271 "org.gnome.Shell", |
272 "/org/gnome/Shell/Screenshot", |
272 "/org/gnome/Shell/Screenshot", |
273 "org.gnome.Shell.Screenshot", |
273 "org.gnome.Shell.Screenshot", |