Snapshot/SnapWidget.py

branch
screenshot
changeset 6916
76810bef8425
parent 6914
5ae038f273c4
child 6917
7075ede48c2f
diff -r 57f7afc788e4 -r 76810bef8425 Snapshot/SnapWidget.py
--- a/Snapshot/SnapWidget.py	Tue Apr 02 19:49:00 2019 +0200
+++ b/Snapshot/SnapWidget.py	Tue Apr 02 19:52:36 2019 +0200
@@ -16,8 +16,8 @@
 import os
 
 from PyQt5.QtCore import pyqtSlot, QFile, QFileInfo, QTimer, QPoint, \
-    QMimeData, Qt, QEvent, QRegExp, QLocale, PYQT_VERSION_STR
-from PyQt5.QtGui import QImageWriter, QPixmap, QCursor, QDrag, QKeySequence
+    QMimeData, Qt, QRegExp, QLocale, PYQT_VERSION_STR
+from PyQt5.QtGui import QImageWriter, QPixmap, QDrag, QKeySequence
 from PyQt5.QtWidgets import QWidget, QApplication, QShortcut
 
 from E5Gui import E5FileDialog, E5MessageBox
@@ -27,7 +27,6 @@
 import UI.PixmapCache
 import Preferences
 import Globals
-from Globals import qVersionTuple
 
 from .SnapshotModes import SnapshotModes
 
@@ -36,12 +35,6 @@
     """
     Class implementing the snapshot widget.
     """
-    ModeFullscreen = 0
-    ModeScreen = 1
-    ModeRectangle = 2
-    ModeFreehand = 3
-    ModeEllipse = 4
-    
     def __init__(self, parent=None):
         """
         Constructor
@@ -57,8 +50,16 @@
         self.copyPreviewButton.setIcon(UI.PixmapCache.getIcon("editCopy.png"))
         self.setWindowIcon(UI.PixmapCache.getIcon("ericSnap.png"))
         
-        from .SnapshotDefaultGrabber import SnapshotDefaultGrabber
-        self.__grabber = SnapshotDefaultGrabber(self)
+        # TODO: correct this once tested
+#        if Globals.isWaylandSession():
+        if True:
+            from .SnapshotWaylandGrabber import SnapshotWaylandGrabber
+            self.__grabber = SnapshotWaylandGrabber(self)
+        else:
+            from .SnapshotDefaultGrabber import SnapshotDefaultGrabber
+            self.__grabber = SnapshotDefaultGrabber(self)
+            self.decorationsCheckBox.hide()
+            self.mouseCursorCheckBox.hide()
         self.__grabber.grabbed.connect(self.__captured)
         supportedModes = self.__grabber.supportedModes()
         
@@ -66,16 +67,16 @@
             self.modeCombo.addItem(self.tr("Fullscreen"),
                                    SnapshotModes.Fullscreen)
         if SnapshotModes.SelectedScreen in supportedModes:
-            if qVersionTuple() >= (5, 10, 0):
+            if Globals.qVersionTuple() >= (5, 10, 0):
                 if len(QApplication.screens()) > 1:
-                    self.modeCombo.addItem(self.tr("Selected Screen"),
+                    self.modeCombo.addItem(self.tr("Select Screen"),
                                            SnapshotModes.SelectedScreen)
             else:
                 if QApplication.desktop().screenCount() > 1:
-                    self.modeCombo.addItem(self.tr("Selected Screen"),
+                    self.modeCombo.addItem(self.tr("Select Screen"),
                                            SnapshotModes.SelectedScreen)
         if SnapshotModes.SelectedWindow in supportedModes:
-            self.modeCombo.addItem(self.tr("Selected Window"),
+            self.modeCombo.addItem(self.tr("Select Window"),
                                    SnapshotModes.SelectedWindow)
         if SnapshotModes.Rectangle in supportedModes:
             self.modeCombo.addItem(self.tr("Rectangular Selection"),
@@ -92,9 +93,8 @@
             index = 0
         self.modeCombo.setCurrentIndex(index)
         
-        self.__delay = int(
-            Preferences.Prefs.settings.value("Snapshot/Delay", 0))
-        self.delaySpin.setValue(self.__delay)
+        delay = int(Preferences.Prefs.settings.value("Snapshot/Delay", 0))
+        self.delaySpin.setValue(delay)
         
         if PYQT_VERSION_STR >= "5.0.0":
             from PyQt5.QtCore import QStandardPaths
@@ -307,11 +307,10 @@
         """
         Private slot to take a snapshot.
         """
-        self.__delay = self.delaySpin.value()
-        
         self.__savedPosition = self.pos()
         self.hide()
         
+        # TODO: add support for decorations and mouse cursor
         self.__grabber.grab(
             self.modeCombo.itemData(self.modeCombo.currentIndex()),
             self.delaySpin.value())
@@ -429,3 +428,19 @@
             self.tr("eric6 Snapshot")))
         self.setWindowModified(self.__modified)
         self.pathNameEdit.setText(os.path.dirname(self.__filename))
+    
+    @pyqtSlot(int)
+    def on_modeCombo_currentIndexChanged(self, index):
+        """
+        Private slot handling the selection of a screenshot mode.
+        
+        @param index index of the selection
+        @type int
+        """
+        isWindowMode = False
+        if index >= 0:
+            mode = self.modeCombo.itemData(index)
+            isWindowMode = (mode == SnapshotModes.SelectedWindow)
+        
+        self.decorationsCheckBox.setEnabled(isWindowMode)
+        self.decorationsCheckBox.setChecked(isWindowMode)

eric ide

mercurial