src/eric7/Snapshot/SnapshotWaylandGrabber.py

branch
eric7
changeset 9624
b47dfa7a137d
parent 9482
a2bc06a54d9d
child 9653
e67609152c5e
equal deleted inserted replaced
9623:9c1f429cb56b 9624:b47dfa7a137d
20 20
21 DBusAvailable = True 21 DBusAvailable = True
22 except ImportError: 22 except ImportError:
23 DBusAvailable = False 23 DBusAvailable = False
24 24
25 from eric7 import Globals
26 from eric7.EricWidgets import EricMessageBox 25 from eric7.EricWidgets import EricMessageBox
26 from eric7.SystemUtilities import DesktopUtilities
27 27
28 from .SnapshotModes import SnapshotModes 28 from .SnapshotModes import SnapshotModes
29 from .SnapshotTimer import SnapshotTimer 29 from .SnapshotTimer import SnapshotTimer
30 30
31 31
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",
218 """ 218 """
219 Private method to grab a selected window. 219 Private method to grab a selected window.
220 """ 220 """
221 snapshot = QPixmap() 221 snapshot = QPixmap()
222 222
223 if Globals.isKdeDesktop(): 223 if DesktopUtilities.isKdeDesktop():
224 mask = 0 224 mask = 0
225 if self.__captureDecorations: 225 if self.__captureDecorations:
226 mask |= 1 226 mask |= 1
227 if self.__captureCursor: 227 if self.__captureCursor:
228 mask |= 2 228 mask |= 2
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",

eric ide

mercurial