Sun, 03 Nov 2013 15:58:22 +0100
Merge with default branch after fixed indentation issues and lates changes.
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 | |
2302
f29e9405c851
Updated copyright for 2013.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1620
diff
changeset
|
3 | # Copyright (c) 2012 - 2013 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 | |
2525
8b507a9a2d40
Script changes: Future import added, super calls modified and unicode behavior for str.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2302
diff
changeset
|
10 | from __future__ import unicode_literals # __IGNORE_WARNING__ |
8b507a9a2d40
Script changes: Future import added, super calls modified and unicode behavior for str.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2302
diff
changeset
|
11 | |
1620
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | 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
|
13 | 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
|
14 | QPainter, QPixmap |
1620
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 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
|
17 | |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | 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
|
19 | |
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 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
|
22 | """ |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | 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
|
24 | """ |
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
|
25 | 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
|
26 | """ |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | Constructor |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | @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
|
30 | (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
|
31 | @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
|
32 | 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
|
33 | @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
|
34 | """ |
2525
8b507a9a2d40
Script changes: Future import added, super calls modified and unicode behavior for str.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2302
diff
changeset
|
35 | super(PageScreenDialog, self).__init__(parent) |
1620
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | self.setupUi(self) |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | 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
|
39 | 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
|
40 | 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
|
41 | |
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
|
42 | 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
|
43 | """ |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | 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
|
45 | |
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
|
46 | @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
|
47 | 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
|
48 | """ |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | 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
|
50 | 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
|
51 | 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
|
52 | 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
|
53 | |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | 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
|
55 | painter = QPainter(image) |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | 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
|
57 | painter.end() |
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 | 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
|
60 | |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | page.setViewportSize(origSize) |
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 | def __savePageScreen(self): |
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 | 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
|
66 | |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | @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
|
68 | """ |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | fileName = E5FileDialog.getSaveFileName( |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | self, |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | 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
|
72 | 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
|
73 | 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
|
74 | 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
|
75 | if not fileName: |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | return False |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | if QFileInfo(fileName).exists(): |
3020
542e97d4ecb3
Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2999
diff
changeset
|
79 | res = E5MessageBox.yesNo( |
542e97d4ecb3
Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2999
diff
changeset
|
80 | self, |
1620
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | 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
|
82 | 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
|
83 | " 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
|
84 | icon=E5MessageBox.Warning) |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | if not res: |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | return False |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | file = QFile(fileName) |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | 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
|
90 | E5MessageBox.warning( |
542e97d4ecb3
Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2999
diff
changeset
|
91 | self, |
542e97d4ecb3
Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2999
diff
changeset
|
92 | self.trUtf8("Save Page Screen"), |
3034
7ce719013078
Fixed various coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3020
diff
changeset
|
93 | 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
|
94 | .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
|
95 | return False |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | 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
|
98 | file.close() |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | if not res: |
3020
542e97d4ecb3
Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2999
diff
changeset
|
101 | E5MessageBox.warning( |
542e97d4ecb3
Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2999
diff
changeset
|
102 | self, |
542e97d4ecb3
Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2999
diff
changeset
|
103 | self.trUtf8("Save Page Screen"), |
3034
7ce719013078
Fixed various coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3020
diff
changeset
|
104 | 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
|
105 | .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
|
106 | return False |
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 | return True |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110 | @pyqtSlot(QAbstractButton) |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | 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
|
112 | """ |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113 | 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
|
114 | |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | @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
|
116 | """ |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117 | 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
|
118 | self.reject() |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119 | 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
|
120 | if self.__savePageScreen(): |
8172cc5d4dda
Added code to save the current page as a screen shot.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121 | self.accept() |