Snapshot/SnapWidget.py

Sat, 03 Dec 2016 12:49:53 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 03 Dec 2016 12:49:53 +0100
branch
maintenance
changeset 5356
d2bef1e78194
parent 4689
957339210f40
child 5389
9b1c800daff3
permissions
-rw-r--r--

Re-merged with the default branch.

1770
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
4631
5c1a96925da4 Updated copyright for 2016.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
3 # Copyright (c) 2012 - 2016 Detlev Offenbach <detlev@die-offenbachs.de>
1770
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the snapshot widget.
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
3145
a9de05d4a22f # __IGNORE_WARNING__ added/ removed.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3142
diff changeset
10 from __future__ import unicode_literals
2525
8b507a9a2d40 Script changes: Future import added, super calls modified and unicode behavior for str.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 2409
diff changeset
11
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
12 #
3656
441956d8fce5 Started porting eric5 to PyQt5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3484
diff changeset
13 # SnapWidget and its associated modules are PyQt5 ports of Ksnapshot.
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
14 #
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
15
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
16 import os
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
17
3656
441956d8fce5 Started porting eric5 to PyQt5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3484
diff changeset
18 from PyQt5.QtCore import pyqtSlot, QFile, QFileInfo, QTimer, QPoint, \
4689
957339210f40 Fixed the locale handling in the snapshot tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
19 QMimeData, Qt, QEvent, QRegExp, QLocale, qVersion, PYQT_VERSION_STR
3664
78e522719af3 Continued porting eric5 to PyQt5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
20 from PyQt5.QtGui import QImageWriter, QPixmap, QCursor, QDrag, QKeySequence
3656
441956d8fce5 Started porting eric5 to PyQt5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3484
diff changeset
21 from PyQt5.QtWidgets import QWidget, QApplication, QShortcut
1770
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 from E5Gui import E5FileDialog, E5MessageBox
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 from .Ui_SnapWidget import Ui_SnapWidget
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 import UI.PixmapCache
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 import Preferences
1776
6198675d24ea Changed the snapshot tool a little bit for Mac.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1772
diff changeset
29 import Globals
1770
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 class SnapWidget(QWidget, Ui_SnapWidget):
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 """
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 Class implementing the snapshot widget.
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 """
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
36 ModeFullscreen = 0
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
37 ModeScreen = 1
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
38 ModeRectangle = 2
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
39 ModeFreehand = 3
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
40 ModeEllipse = 4
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
41
1770
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 def __init__(self, parent=None):
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 """
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 Constructor
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 @param parent reference to the parent widget (QWidget)
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 """
2525
8b507a9a2d40 Script changes: Future import added, super calls modified and unicode behavior for str.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 2409
diff changeset
48 super(SnapWidget, self).__init__(parent)
1770
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 self.setupUi(self)
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 self.saveButton.setIcon(UI.PixmapCache.getIcon("fileSaveAs.png"))
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 self.takeButton.setIcon(UI.PixmapCache.getIcon("cameraPhoto.png"))
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 self.copyButton.setIcon(UI.PixmapCache.getIcon("editCopy.png"))
3129
138331f6b0a0 Corrected and extended the screenshot tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3039
diff changeset
54 self.copyPreviewButton.setIcon(UI.PixmapCache.getIcon("editCopy.png"))
1770
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 self.setWindowIcon(UI.PixmapCache.getIcon("ericSnap.png"))
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
57 self.modeCombo.addItem(self.tr("Fullscreen"),
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
58 SnapWidget.ModeFullscreen)
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
59 self.modeCombo.addItem(self.tr("Rectangular Selection"),
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
60 SnapWidget.ModeRectangle)
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
61 self.modeCombo.addItem(self.tr("Ellipical Selection"),
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
62 SnapWidget.ModeEllipse)
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
63 self.modeCombo.addItem(self.tr("Freehand Selection"),
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
64 SnapWidget.ModeFreehand)
3664
78e522719af3 Continued porting eric5 to PyQt5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
65 if QApplication.desktop().screenCount() > 1:
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
66 self.modeCombo.addItem(self.tr("Current Screen"),
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
67 SnapWidget.ModeScreen)
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
68 self.__mode = int(Preferences.Prefs.settings.value("Snapshot/Mode", 0))
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
69 index = self.modeCombo.findData(self.__mode)
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
70 if index == -1:
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
71 index = 0
1770
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 self.modeCombo.setCurrentIndex(index)
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73
2993
4933ac9daa80 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2763
diff changeset
74 self.__delay = int(
4933ac9daa80 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2763
diff changeset
75 Preferences.Prefs.settings.value("Snapshot/Delay", 0))
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
76 self.delaySpin.setValue(self.__delay)
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
77
3778
0c5bc18da740 Added more changes to make eric6 usable with PyQt4 as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3670
diff changeset
78 if PYQT_VERSION_STR >= "5.0.0":
0c5bc18da740 Added more changes to make eric6 usable with PyQt4 as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3670
diff changeset
79 from PyQt5.QtCore import QStandardPaths
0c5bc18da740 Added more changes to make eric6 usable with PyQt4 as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3670
diff changeset
80 picturesLocation = QStandardPaths.writableLocation(
0c5bc18da740 Added more changes to make eric6 usable with PyQt4 as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3670
diff changeset
81 QStandardPaths.PicturesLocation)
0c5bc18da740 Added more changes to make eric6 usable with PyQt4 as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3670
diff changeset
82 else:
0c5bc18da740 Added more changes to make eric6 usable with PyQt4 as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3670
diff changeset
83 from PyQt5.QtGui import QDesktopServices
0c5bc18da740 Added more changes to make eric6 usable with PyQt4 as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3670
diff changeset
84 picturesLocation = QDesktopServices.storageLocation(
0c5bc18da740 Added more changes to make eric6 usable with PyQt4 as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3670
diff changeset
85 QDesktopServices.PicturesLocation)
3030
4a0a82ddd9d2 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3020
diff changeset
86 self.__filename = Preferences.Prefs.settings.value(
4a0a82ddd9d2 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3020
diff changeset
87 "Snapshot/Filename",
3778
0c5bc18da740 Added more changes to make eric6 usable with PyQt4 as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3670
diff changeset
88 os.path.join(picturesLocation,
0c5bc18da740 Added more changes to make eric6 usable with PyQt4 as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3670
diff changeset
89 self.tr("snapshot") + "1.png"))
1770
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 self.__grabber = None
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
92 self.__snapshot = QPixmap()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
93 self.__savedPosition = QPoint()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
94 self.__modified = False
4689
957339210f40 Fixed the locale handling in the snapshot tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
95 self.__locale = QLocale()
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
96
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
97 self.__grabberWidget = QWidget(None, Qt.X11BypassWindowManagerHint)
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
98 self.__grabberWidget.move(-10000, -10000)
1965
96f5a76e1845 Fixed some PEP-8 related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1779
diff changeset
99 self.__grabberWidget.installEventFilter(self)
1770
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 self.__initFileFilters()
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
102
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
103 self.__initShortcuts()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
104
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
105 self.preview.startDrag.connect(self.__dragSnapshot)
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
106
2409
df3820f08247 Continued implementing the delayed import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
107 from .SnapshotTimer import SnapshotTimer
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
108 self.__grabTimer = SnapshotTimer()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
109 self.__grabTimer.timeout.connect(self.__grabTimerTimeout)
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
110 self.__updateTimer = QTimer()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
111 self.__updateTimer.setSingleShot(True)
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
112 self.__updateTimer.timeout.connect(self.__updatePreview)
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
113
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
114 self.__updateCaption()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
115 self.takeButton.setFocus()
1770
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 def __initFileFilters(self):
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 """
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 Private method to define the supported image file filters.
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 """
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 filters = {
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
122 'bmp': self.tr("Windows Bitmap File (*.bmp)"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
123 'gif': self.tr("Graphic Interchange Format File (*.gif)"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
124 'ico': self.tr("Windows Icon File (*.ico)"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
125 'jpg': self.tr("JPEG File (*.jpg)"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
126 'mng': self.tr("Multiple-Image Network Graphics File (*.mng)"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
127 'pbm': self.tr("Portable Bitmap File (*.pbm)"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
128 'pcx': self.tr("Paintbrush Bitmap File (*.pcx)"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
129 'pgm': self.tr("Portable Graymap File (*.pgm)"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
130 'png': self.tr("Portable Network Graphics File (*.png)"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
131 'ppm': self.tr("Portable Pixmap File (*.ppm)"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
132 'sgi': self.tr("Silicon Graphics Image File (*.sgi)"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
133 'svg': self.tr("Scalable Vector Graphics File (*.svg)"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
134 'tga': self.tr("Targa Graphic File (*.tga)"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
135 'tif': self.tr("TIFF File (*.tif)"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
136 'xbm': self.tr("X11 Bitmap File (*.xbm)"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
137 'xpm': self.tr("X11 Pixmap File (*.xpm)"),
1770
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 }
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 outputFormats = []
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 writeFormats = QImageWriter.supportedImageFormats()
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 for writeFormat in writeFormats:
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 try:
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 outputFormats.append(filters[bytes(writeFormat).decode()])
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 except KeyError:
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 pass
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 outputFormats.sort()
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 self.__outputFilter = ';;'.join(outputFormats)
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 self.__defaultFilter = filters['png']
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
152 def __initShortcuts(self):
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
153 """
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
154 Private method to initialize the keyboard shortcuts.
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
155 """
2993
4933ac9daa80 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2763
diff changeset
156 self.__quitShortcut = QShortcut(
4933ac9daa80 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2763
diff changeset
157 QKeySequence(QKeySequence.Quit), self, self.close)
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
158
3030
4a0a82ddd9d2 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3020
diff changeset
159 self.__copyShortcut = QShortcut(
4a0a82ddd9d2 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3020
diff changeset
160 QKeySequence(QKeySequence.Copy), self,
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
161 self.copyButton.animateClick)
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
162
3030
4a0a82ddd9d2 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3020
diff changeset
163 self.__quickSaveShortcut = QShortcut(
4a0a82ddd9d2 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3020
diff changeset
164 QKeySequence(Qt.Key_Q), self, self.__quickSave)
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
165
3030
4a0a82ddd9d2 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3020
diff changeset
166 self.__save1Shortcut = QShortcut(
4a0a82ddd9d2 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3020
diff changeset
167 QKeySequence(QKeySequence.Save), self,
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
168 self.saveButton.animateClick)
3030
4a0a82ddd9d2 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3020
diff changeset
169 self.__save2Shortcut = QShortcut(
4a0a82ddd9d2 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3020
diff changeset
170 QKeySequence(Qt.Key_S), self, self.saveButton.animateClick)
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
171
3030
4a0a82ddd9d2 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3020
diff changeset
172 self.__grab1Shortcut = QShortcut(
4a0a82ddd9d2 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3020
diff changeset
173 QKeySequence(QKeySequence.New), self, self.takeButton.animateClick)
4a0a82ddd9d2 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3020
diff changeset
174 self.__grab2Shortcut = QShortcut(
4a0a82ddd9d2 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3020
diff changeset
175 QKeySequence(Qt.Key_N), self, self.takeButton.animateClick)
4a0a82ddd9d2 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3020
diff changeset
176 self.__grab3Shortcut = QShortcut(
4a0a82ddd9d2 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3020
diff changeset
177 QKeySequence(Qt.Key_Space), self, self.takeButton.animateClick)
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
178
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
179 def __quickSave(self):
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
180 """
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
181 Private slot to save the snapshot bypassing the file selection dialog.
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
182 """
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
183 if not self.__snapshot.isNull():
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
184 while os.path.exists(self.__filename):
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
185 self.__autoIncFilename()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
186
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
187 if self.__saveImage(self.__filename):
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
188 self.__modified = False
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
189 self.__autoIncFilename()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
190 self.__updateCaption()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
191
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
192 @pyqtSlot()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
193 def on_saveButton_clicked(self):
1770
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 """
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 Private slot to save the snapshot.
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 """
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
197 if not self.__snapshot.isNull():
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
198 while os.path.exists(self.__filename):
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
199 self.__autoIncFilename()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
200
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
201 fileName, selectedFilter = E5FileDialog.getSaveFileNameAndFilter(
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
202 self,
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
203 self.tr("Save Snapshot"),
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
204 self.__filename,
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
205 self.__outputFilter,
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
206 self.__defaultFilter,
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
207 E5FileDialog.Options(E5FileDialog.DontConfirmOverwrite))
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
208 if not fileName:
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
209 return
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
210
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
211 ext = QFileInfo(fileName).suffix()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
212 if not ext:
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
213 ex = selectedFilter.split("(*")[1].split(")")[0]
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
214 if ex:
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
215 fileName += ex
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
216
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
217 if self.__saveImage(fileName):
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
218 self.__modified = False
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
219 self.__filename = fileName
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
220 self.__autoIncFilename()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
221 self.__updateCaption()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
222
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
223 def __saveImage(self, fileName):
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
224 """
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
225 Private method to save the snapshot.
1770
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
227 @param fileName name of the file to save to (string)
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
228 @return flag indicating success (boolean)
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
229 """
1770
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 if QFileInfo(fileName).exists():
3020
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2993
diff changeset
231 res = E5MessageBox.yesNo(
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2993
diff changeset
232 self,
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
233 self.tr("Save Snapshot"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
234 self.tr("<p>The file <b>{0}</b> already exists."
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
235 " Overwrite it?</p>").format(fileName),
1770
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 icon=E5MessageBox.Warning)
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237 if not res:
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
238 return False
1770
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 file = QFile(fileName)
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241 if not file.open(QFile.WriteOnly):
3020
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2993
diff changeset
242 E5MessageBox.warning(
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
243 self, self.tr("Save Snapshot"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
244 self.tr("Cannot write file '{0}:\n{1}.")
3039
8dd0165d805d Fixed a bunch of indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3034
diff changeset
245 .format(fileName, file.errorString()))
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
246 return False
1770
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
248 ok = self.__snapshot.save(file)
1770
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249 file.close()
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
251 if not ok:
3020
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2993
diff changeset
252 E5MessageBox.warning(
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
253 self, self.tr("Save Snapshot"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
254 self.tr("Cannot write file '{0}:\n{1}.")
3039
8dd0165d805d Fixed a bunch of indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3034
diff changeset
255 .format(fileName, file.errorString()))
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
256
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
257 return ok
1770
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
259 def __autoIncFilename(self):
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
260 """
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
261 Private method to auto-increment the file name.
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
262 """
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
263 # Extract the file name
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
264 name = os.path.basename(self.__filename)
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
265
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
266 # If the name contains a number, then increment it.
3034
7ce719013078 Fixed various coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3030
diff changeset
267 numSearch = QRegExp("(^|[^\\d])(\\d+)")
2993
4933ac9daa80 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2763
diff changeset
268 # We want to match as far left as possible, and when the number is
4933ac9daa80 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2763
diff changeset
269 # at the start of the name.
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
270
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
271 # Does it have a number?
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
272 start = numSearch.lastIndexIn(name)
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
273 if start != -1:
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
274 # It has a number, increment it.
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
275 start = numSearch.pos(2) # Only the second group is of interest.
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
276 numAsStr = numSearch.capturedTexts()[2]
2993
4933ac9daa80 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2763
diff changeset
277 number = "{0:0{width}d}".format(
4933ac9daa80 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2763
diff changeset
278 int(numAsStr) + 1, width=len(numAsStr))
1965
96f5a76e1845 Fixed some PEP-8 related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1779
diff changeset
279 name = name[:start] + number + name[start + len(numAsStr):]
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
280 else:
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
281 # no number
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
282 start = name.rfind('.')
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
283 if start != -1:
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
284 # has a '.' somewhere, e.g. it has an extension
1965
96f5a76e1845 Fixed some PEP-8 related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1779
diff changeset
285 name = name[:start] + '1' + name[start:]
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
286 else:
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
287 # no extension, just tack it on to the end
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
288 name += '1'
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
289
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
290 self.__filename = os.path.join(os.path.dirname(self.__filename), name)
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
291 self.__updateCaption()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
292
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
293 @pyqtSlot()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
294 def on_takeButton_clicked(self):
1770
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
295 """
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
296 Private slot to take a snapshot.
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
297 """
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
298 self.__mode = self.modeCombo.itemData(self.modeCombo.currentIndex())
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
299 self.__delay = self.delaySpin.value()
1770
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
300
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
301 self.__savedPosition = self.pos()
1770
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
302 self.hide()
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
303
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
304 if self.__delay:
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
305 self.__grabTimer.start(self.__delay)
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
306 else:
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
307 QTimer.singleShot(200, self.__startUndelayedGrab)
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
308
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
309 def __grabTimerTimeout(self):
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
310 """
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
311 Private slot to perform a delayed grab operation.
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
312 """
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
313 if self.__mode == SnapWidget.ModeRectangle:
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
314 self.__grabRectangle()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
315 elif self.__mode == SnapWidget.ModeEllipse:
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
316 self.__grabEllipse()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
317 elif self.__mode == SnapWidget.ModeFreehand:
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
318 self.__grabFreehand()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
319 else:
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
320 self.__performGrab()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
321
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
322 def __startUndelayedGrab(self):
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
323 """
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
324 Private slot to perform an undelayed grab operation.
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
325 """
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
326 if self.__mode == SnapWidget.ModeRectangle:
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
327 self.__grabRectangle()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
328 elif self.__mode == SnapWidget.ModeEllipse:
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
329 self.__grabEllipse()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
330 elif self.__mode == SnapWidget.ModeFreehand:
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
331 self.__grabFreehand()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
332 else:
1776
6198675d24ea Changed the snapshot tool a little bit for Mac.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1772
diff changeset
333 if Globals.isMacPlatform():
6198675d24ea Changed the snapshot tool a little bit for Mac.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1772
diff changeset
334 self.__performGrab()
6198675d24ea Changed the snapshot tool a little bit for Mac.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1772
diff changeset
335 else:
6198675d24ea Changed the snapshot tool a little bit for Mac.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1772
diff changeset
336 self.__grabberWidget.show()
6198675d24ea Changed the snapshot tool a little bit for Mac.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1772
diff changeset
337 self.__grabberWidget.grabMouse(Qt.CrossCursor)
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
338
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
339 def __grabRectangle(self):
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
340 """
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
341 Private method to grab a rectangular screen region.
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
342 """
2409
df3820f08247 Continued implementing the delayed import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
343 from .SnapshotRegionGrabber import SnapshotRegionGrabber
2993
4933ac9daa80 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2763
diff changeset
344 self.__grabber = SnapshotRegionGrabber(
4933ac9daa80 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2763
diff changeset
345 mode=SnapshotRegionGrabber.Rectangle)
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
346 self.__grabber.grabbed.connect(self.__captured)
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
347
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
348 def __grabEllipse(self):
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
349 """
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
350 Private method to grab an elliptical screen region.
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
351 """
2409
df3820f08247 Continued implementing the delayed import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
352 from .SnapshotRegionGrabber import SnapshotRegionGrabber
2993
4933ac9daa80 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2763
diff changeset
353 self.__grabber = SnapshotRegionGrabber(
4933ac9daa80 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2763
diff changeset
354 mode=SnapshotRegionGrabber.Ellipse)
1770
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
355 self.__grabber.grabbed.connect(self.__captured)
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
356
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
357 def __grabFreehand(self):
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
358 """
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
359 Private method to grab a non-rectangular screen region.
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
360 """
2409
df3820f08247 Continued implementing the delayed import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
361 from .SnapshotFreehandGrabber import SnapshotFreehandGrabber
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
362 self.__grabber = SnapshotFreehandGrabber()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
363 self.__grabber.grabbed.connect(self.__captured)
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
364
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
365 def __performGrab(self):
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
366 """
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
367 Private method to perform a screen grab other than a selected region.
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
368 """
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
369 self.__grabberWidget.releaseMouse()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
370 self.__grabberWidget.hide()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
371 self.__grabTimer.stop()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
372
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
373 if self.__mode == SnapWidget.ModeFullscreen:
1778
31e70a6f8e7f Implemented a fix for dual screen config on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1772
diff changeset
374 desktop = QApplication.desktop()
2106
cca04724bff8 Made the eighth set of Qt5 compatibility changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1965
diff changeset
375 if qVersion() >= "5.0.0":
2993
4933ac9daa80 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2763
diff changeset
376 self.__snapshot = QApplication.screens()[0].grabWindow(
4933ac9daa80 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2763
diff changeset
377 desktop.winId(), desktop.x(), desktop.y(),
4933ac9daa80 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2763
diff changeset
378 desktop.width(), desktop.height())
2106
cca04724bff8 Made the eighth set of Qt5 compatibility changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1965
diff changeset
379 else:
2993
4933ac9daa80 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2763
diff changeset
380 self.__snapshot = QPixmap.grabWindow(
4933ac9daa80 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2763
diff changeset
381 desktop.winId(), desktop.x(), desktop.y(),
4933ac9daa80 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2763
diff changeset
382 desktop.width(), desktop.height())
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
383 elif self.__mode == SnapWidget.ModeScreen:
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
384 desktop = QApplication.desktop()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
385 screenId = desktop.screenNumber(QCursor.pos())
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
386 geom = desktop.screenGeometry(screenId)
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
387 x = geom.x()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
388 y = geom.y()
2106
cca04724bff8 Made the eighth set of Qt5 compatibility changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1965
diff changeset
389 if qVersion() >= "5.0.0":
2131
e79d0610347a Corrected the screen grabbing code for Qt5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2106
diff changeset
390 self.__snapshot = QApplication.screens()[0].grabWindow(
2106
cca04724bff8 Made the eighth set of Qt5 compatibility changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1965
diff changeset
391 desktop.winId(), x, y, geom.width(), geom.height())
cca04724bff8 Made the eighth set of Qt5 compatibility changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1965
diff changeset
392 else:
cca04724bff8 Made the eighth set of Qt5 compatibility changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1965
diff changeset
393 self.__snapshot = QPixmap.grabWindow(
cca04724bff8 Made the eighth set of Qt5 compatibility changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1965
diff changeset
394 desktop.winId(), x, y, geom.width(), geom.height())
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
395 else:
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
396 self.__snapshot = QPixmap()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
397
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
398 self.__redisplay()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
399 self.__modified = True
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
400 self.__updateCaption()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
401
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
402 def __redisplay(self):
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
403 """
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
404 Private method to redisplay the window.
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
405 """
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
406 self.__updatePreview()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
407 QApplication.restoreOverrideCursor()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
408 if not self.__savedPosition.isNull():
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
409 self.move(self.__savedPosition)
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
410 self.show()
1776
6198675d24ea Changed the snapshot tool a little bit for Mac.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1772
diff changeset
411 self.raise_()
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
412
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
413 self.saveButton.setEnabled(not self.__snapshot.isNull())
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
414 self.copyButton.setEnabled(not self.__snapshot.isNull())
3129
138331f6b0a0 Corrected and extended the screenshot tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3039
diff changeset
415 self.copyPreviewButton.setEnabled(not self.__snapshot.isNull())
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
416
1770
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
417 @pyqtSlot()
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
418 def on_copyButton_clicked(self):
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
419 """
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
420 Private slot to copy the snapshot to the clipboard.
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
421 """
3129
138331f6b0a0 Corrected and extended the screenshot tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3039
diff changeset
422 if not self.__snapshot.isNull():
138331f6b0a0 Corrected and extended the screenshot tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3039
diff changeset
423 QApplication.clipboard().setPixmap(QPixmap(self.__snapshot))
138331f6b0a0 Corrected and extended the screenshot tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3039
diff changeset
424
138331f6b0a0 Corrected and extended the screenshot tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3039
diff changeset
425 @pyqtSlot()
138331f6b0a0 Corrected and extended the screenshot tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3039
diff changeset
426 def on_copyPreviewButton_clicked(self):
138331f6b0a0 Corrected and extended the screenshot tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3039
diff changeset
427 """
138331f6b0a0 Corrected and extended the screenshot tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3039
diff changeset
428 Private slot to copy the snapshot preview to the clipboard.
138331f6b0a0 Corrected and extended the screenshot tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3039
diff changeset
429 """
1770
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
430 QApplication.clipboard().setPixmap(self.preview.pixmap())
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
431
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
432 def __captured(self, pixmap):
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
433 """
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
434 Private slot to show a preview of the snapshot.
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
435
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
436 @param pixmap pixmap of the snapshot (QPixmap)
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
437 """
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
438 self.__grabber.close()
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
439 self.__snapshot = QPixmap(pixmap)
1770
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
440
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
441 self.__grabber.grabbed.disconnect(self.__captured)
1770
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
442 self.__grabber = None
c17e67e69ef5 Added a tool to take screenshots (fullscreen or rectangular selection).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
443
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
444 self.__redisplay()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
445 self.__modified = True
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
446 self.__updateCaption()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
447
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
448 def __updatePreview(self):
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
449 """
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
450 Private slot to update the preview picture.
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
451 """
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
452 self.preview.setToolTip(self.tr(
4689
957339210f40 Fixed the locale handling in the snapshot tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
453 "Preview of the snapshot image ({0} x {1})").format(
957339210f40 Fixed the locale handling in the snapshot tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
454 self.__locale.toString(self.__snapshot.width()),
957339210f40 Fixed the locale handling in the snapshot tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
455 self.__locale.toString(self.__snapshot.height()))
957339210f40 Fixed the locale handling in the snapshot tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
456 )
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
457 self.preview.setPreview(self.__snapshot)
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
458 self.preview.adjustSize()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
459
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
460 def resizeEvent(self, evt):
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
461 """
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
462 Protected method handling a resizing of the window.
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
463
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
464 @param evt resize event (QResizeEvent)
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
465 """
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
466 self.__updateTimer.start(200)
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
467
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
468 def __dragSnapshot(self):
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
469 """
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
470 Private slot handling the dragging of the preview picture.
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
471 """
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
472 drag = QDrag(self)
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
473 mimeData = QMimeData()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
474 mimeData.setImageData(self.__snapshot)
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
475 drag.setMimeData(mimeData)
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
476 drag.setPixmap(self.preview.pixmap())
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
477 drag.exec_(Qt.CopyAction)
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
478
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
479 def eventFilter(self, obj, evt):
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
480 """
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
481 Public method to handle event for other objects.
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
482
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
483 @param obj reference to the object (QObject)
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
484 @param evt reference to the event (QEvent)
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
485 @return flag indicating that the event should be filtered out (boolean)
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
486 """
2993
4933ac9daa80 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2763
diff changeset
487 if obj == self.__grabberWidget and \
4933ac9daa80 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2763
diff changeset
488 evt.type() == QEvent.MouseButtonPress:
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
489 if QWidget.mouseGrabber() != self.__grabberWidget:
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
490 return False
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
491 if evt.button() == Qt.LeftButton:
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
492 self.__performGrab()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
493
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
494 return False
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
495
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
496 def closeEvent(self, evt):
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
497 """
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
498 Protected method handling the close event.
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
499
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
500 @param evt close event (QCloseEvent)
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
501 """
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
502 if self.__modified:
3020
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2993
diff changeset
503 res = E5MessageBox.question(
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2993
diff changeset
504 self,
3670
f0cb7579c0b4 Finished renaming eric5 for PyQt5 to eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3664
diff changeset
505 self.tr("eric6 Snapshot"),
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
506 self.tr(
2993
4933ac9daa80 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2763
diff changeset
507 """The application contains an unsaved snapshot."""),
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
508 E5MessageBox.StandardButtons(
3034
7ce719013078 Fixed various coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3030
diff changeset
509 E5MessageBox.Abort |
7ce719013078 Fixed various coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3030
diff changeset
510 E5MessageBox.Discard |
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
511 E5MessageBox.Save))
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
512 if res == E5MessageBox.Abort:
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
513 evt.ignore()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
514 return
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
515 elif res == E5MessageBox.Save:
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
516 self.on_saveButton_clicked()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
517
2993
4933ac9daa80 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2763
diff changeset
518 Preferences.Prefs.settings.setValue(
4933ac9daa80 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2763
diff changeset
519 "Snapshot/Delay", self.delaySpin.value())
4933ac9daa80 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2763
diff changeset
520 Preferences.Prefs.settings.setValue(
4933ac9daa80 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2763
diff changeset
521 "Snapshot/Mode",
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
522 self.modeCombo.itemData(self.modeCombo.currentIndex()))
2993
4933ac9daa80 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2763
diff changeset
523 Preferences.Prefs.settings.setValue(
4933ac9daa80 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2763
diff changeset
524 "Snapshot/Filename", self.__filename)
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
525 Preferences.Prefs.settings.sync()
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
526
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
527 def __updateCaption(self):
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
528 """
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
529 Private method to update the window caption.
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
530 """
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
531 self.setWindowTitle("{0}[*] - {1}".format(
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
532 os.path.basename(self.__filename),
3670
f0cb7579c0b4 Finished renaming eric5 for PyQt5 to eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3664
diff changeset
533 self.tr("eric6 Snapshot")))
1772
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
534 self.setWindowModified(self.__modified)
f325dfdc8f6b Extended the snapshot tool to allow for the selection of a screen (for multi screen systems), elliptical selection and a freehand selection.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1770
diff changeset
535 self.pathNameEdit.setText(os.path.dirname(self.__filename))

eric ide

mercurial