--- 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)