Sun, 05 Jan 2014 15:20:02 +0100
Fixed an issue in the syntax and code style checker dialogs causing markers of open files not to be checked being cleared.
1620
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
3160
209a07d7e401
Updated copyright for 2014.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3034
diff
changeset
|
3 | # Copyright (c) 2012 - 2014 Detlev Offenbach <detlev@die-offenbachs.de> |
1620
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing a dialog to save a screenshot of a web page. |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | from PyQt4.QtCore import pyqtSlot, QFile, QFileInfo |
2999
28c75409a78f
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2804
diff
changeset
|
11 | from PyQt4.QtGui import QDialog, QDialogButtonBox, QAbstractButton, QImage, \ |
28c75409a78f
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2804
diff
changeset
|
12 | QPainter, QPixmap |
1620
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | from E5Gui import E5FileDialog, E5MessageBox |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | from .Ui_PageScreenDialog import Ui_PageScreenDialog |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | class PageScreenDialog(QDialog, Ui_PageScreenDialog): |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | """ |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | Class documentation goes here. |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | """ |
2804
a331371462a3
Added the capability to save the visible part of the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
23 | def __init__(self, view, visibleOnly=False, parent=None): |
1620
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | """ |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | Constructor |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | @param view reference to the web view containing the page to be saved |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | (HelpBrowser) |
2804
a331371462a3
Added the capability to save the visible part of the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
29 | @param visibleOnly flag indicating to just save the visible part |
a331371462a3
Added the capability to save the visible part of the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
30 | of the page (boolean) |
1620
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | @param parent reference to the parent widget (QWidget) |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | """ |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | super().__init__(parent) |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | self.setupUi(self) |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | self.__view = view |
2804
a331371462a3
Added the capability to save the visible part of the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
37 | self.__createPixmap(visibleOnly) |
1620
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | self.pageScreenLabel.setPixmap(self.__pagePixmap) |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | |
2804
a331371462a3
Added the capability to save the visible part of the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
40 | def __createPixmap(self, visibleOnly): |
1620
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | """ |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | Private slot to create a pixmap of the associated view's page. |
2804
a331371462a3
Added the capability to save the visible part of the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
43 | |
a331371462a3
Added the capability to save the visible part of the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
44 | @param visibleOnly flag indicating to just save the visible part |
a331371462a3
Added the capability to save the visible part of the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
45 | of the page (boolean) |
1620
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | """ |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | page = self.__view.page() |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | origSize = page.viewportSize() |
2804
a331371462a3
Added the capability to save the visible part of the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
49 | if not visibleOnly: |
a331371462a3
Added the capability to save the visible part of the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
50 | page.setViewportSize(page.mainFrame().contentsSize()) |
1620
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | image = QImage(page.viewportSize(), QImage.Format_ARGB32) |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | painter = QPainter(image) |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | page.mainFrame().render(painter) |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | painter.end() |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | self.__pagePixmap = QPixmap.fromImage(image) |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | page.setViewportSize(origSize) |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | def __savePageScreen(self): |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | """ |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | Private slot to save the page screen. |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | @return flag indicating success (boolean) |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | """ |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | fileName = E5FileDialog.getSaveFileName( |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | self, |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | self.trUtf8("Save Page Screen"), |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | self.trUtf8("screen.png"), |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | self.trUtf8("Portable Network Graphics File (*.png)"), |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | E5FileDialog.Options(E5FileDialog.DontConfirmOverwrite)) |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | if not fileName: |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | return False |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | if QFileInfo(fileName).exists(): |
3020
542e97d4ecb3
Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2999
diff
changeset
|
77 | res = E5MessageBox.yesNo( |
542e97d4ecb3
Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2999
diff
changeset
|
78 | self, |
1620
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | self.trUtf8("Save Page Screen"), |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | self.trUtf8("<p>The file <b>{0}</b> already exists." |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | " Overwrite it?</p>").format(fileName), |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | icon=E5MessageBox.Warning) |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | if not res: |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | return False |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | file = QFile(fileName) |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | if not file.open(QFile.WriteOnly): |
3020
542e97d4ecb3
Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2999
diff
changeset
|
88 | E5MessageBox.warning( |
542e97d4ecb3
Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2999
diff
changeset
|
89 | self, |
542e97d4ecb3
Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2999
diff
changeset
|
90 | self.trUtf8("Save Page Screen"), |
3034
7ce719013078
Fixed various coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3020
diff
changeset
|
91 | self.trUtf8("Cannot write file '{0}:\n{1}.") |
1620
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | .format(fileName, file.errorString())) |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | return False |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
94 | |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95 | res = self.__pagePixmap.save(file) |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | file.close() |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | if not res: |
3020
542e97d4ecb3
Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2999
diff
changeset
|
99 | E5MessageBox.warning( |
542e97d4ecb3
Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2999
diff
changeset
|
100 | self, |
542e97d4ecb3
Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2999
diff
changeset
|
101 | self.trUtf8("Save Page Screen"), |
3034
7ce719013078
Fixed various coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3020
diff
changeset
|
102 | self.trUtf8("Cannot write file '{0}:\n{1}.") |
1620
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | .format(fileName, file.errorString())) |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | return False |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106 | return True |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | @pyqtSlot(QAbstractButton) |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | def on_buttonBox_clicked(self, button): |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110 | """ |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | Private slot to handle clicks of the dialog buttons. |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113 | @param button button that was clicked (QAbstractButton) |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
114 | """ |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | if button == self.buttonBox.button(QDialogButtonBox.Cancel): |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | self.reject() |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117 | elif button == self.buttonBox.button(QDialogButtonBox.Save): |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
118 | if self.__savePageScreen(): |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119 | self.accept() |