src/eric7/WebBrowser/PageScreenDialog.py

branch
eric7
changeset 9221
bf71ee032bb4
parent 9209
b99e7fd55fd3
child 9413
80c06d472826
equal deleted inserted replaced
9220:e9e7eca7efee 9221:bf71ee032bb4
20 20
21 class PageScreenDialog(QDialog, Ui_PageScreenDialog): 21 class PageScreenDialog(QDialog, Ui_PageScreenDialog):
22 """ 22 """
23 Class implementing a dialog to save a screenshot of a web page. 23 Class implementing a dialog to save a screenshot of a web page.
24 """ 24 """
25
25 def __init__(self, view, parent=None): 26 def __init__(self, view, parent=None):
26 """ 27 """
27 Constructor 28 Constructor
28 29
29 @param view reference to the web view containing the page to be saved 30 @param view reference to the web view containing the page to be saved
30 (WebBrowserView) 31 (WebBrowserView)
31 @param parent reference to the parent widget (QWidget) 32 @param parent reference to the parent widget (QWidget)
32 """ 33 """
33 super().__init__(parent) 34 super().__init__(parent)
34 self.setupUi(self) 35 self.setupUi(self)
35 self.setWindowFlags(Qt.WindowType.Window) 36 self.setWindowFlags(Qt.WindowType.Window)
36 37
37 self.__view = view 38 self.__view = view
38 self.__createPixmap() 39 self.__createPixmap()
39 self.pageScreenLabel.setPixmap(self.__pagePixmap) 40 self.pageScreenLabel.setPixmap(self.__pagePixmap)
40 41
41 def __createPixmap(self): 42 def __createPixmap(self):
42 """ 43 """
43 Private slot to create a pixmap of the associated view's page. 44 Private slot to create a pixmap of the associated view's page.
44 """ 45 """
45 res = self.__view.page().execJavaScript( 46 res = self.__view.page().execJavaScript(
52 "res.height = document.body.scrollHeight;" 53 "res.height = document.body.scrollHeight;"
53 "return res;" 54 "return res;"
54 "})()" 55 "})()"
55 ) 56 )
56 if res is not None: 57 if res is not None:
57 image = QImage(QSize(res["width"], self.__view.height()), 58 image = QImage(
58 QImage.Format.Format_ARGB32) 59 QSize(res["width"], self.__view.height()), QImage.Format.Format_ARGB32
60 )
59 painter = QPainter(image) 61 painter = QPainter(image)
60 self.__view.render(painter) 62 self.__view.render(painter)
61 painter.end() 63 painter.end()
62 64
63 self.__pagePixmap = QPixmap.fromImage(image) 65 self.__pagePixmap = QPixmap.fromImage(image)
64 66
65 def __savePageScreen(self): 67 def __savePageScreen(self):
66 """ 68 """
67 Private slot to save the page screen. 69 Private slot to save the page screen.
68 70
69 @return flag indicating success (boolean) 71 @return flag indicating success (boolean)
70 """ 72 """
71 fileName = EricFileDialog.getSaveFileName( 73 fileName = EricFileDialog.getSaveFileName(
72 self, 74 self,
73 self.tr("Save Page Screen"), 75 self.tr("Save Page Screen"),
74 self.tr("screen.png"), 76 self.tr("screen.png"),
75 self.tr("Portable Network Graphics File (*.png)"), 77 self.tr("Portable Network Graphics File (*.png)"),
76 EricFileDialog.DontConfirmOverwrite) 78 EricFileDialog.DontConfirmOverwrite,
79 )
77 if not fileName: 80 if not fileName:
78 return False 81 return False
79 82
80 if pathlib.Path(fileName).exists(): 83 if pathlib.Path(fileName).exists():
81 res = EricMessageBox.yesNo( 84 res = EricMessageBox.yesNo(
82 self, 85 self,
83 self.tr("Save Page Screen"), 86 self.tr("Save Page Screen"),
84 self.tr("<p>The file <b>{0}</b> already exists." 87 self.tr(
85 " Overwrite it?</p>").format(fileName), 88 "<p>The file <b>{0}</b> already exists." " Overwrite it?</p>"
86 icon=EricMessageBox.Warning) 89 ).format(fileName),
90 icon=EricMessageBox.Warning,
91 )
87 if not res: 92 if not res:
88 return False 93 return False
89 94
90 res = self.__pagePixmap.save(fileName) 95 res = self.__pagePixmap.save(fileName)
91 if not res: 96 if not res:
92 EricMessageBox.warning( 97 EricMessageBox.warning(
93 self, 98 self,
94 self.tr("Save Page Screen"), 99 self.tr("Save Page Screen"),
95 self.tr("Cannot write file '{0}'.").format(fileName)) 100 self.tr("Cannot write file '{0}'.").format(fileName),
101 )
96 return False 102 return False
97 103
98 return True 104 return True
99 105
100 @pyqtSlot(QAbstractButton) 106 @pyqtSlot(QAbstractButton)
101 def on_buttonBox_clicked(self, button): 107 def on_buttonBox_clicked(self, button):
102 """ 108 """
103 Private slot to handle clicks of the dialog buttons. 109 Private slot to handle clicks of the dialog buttons.
104 110
105 @param button button that was clicked (QAbstractButton) 111 @param button button that was clicked (QAbstractButton)
106 """ 112 """
107 if button == self.buttonBox.button( 113 if button == self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel):
108 QDialogButtonBox.StandardButton.Cancel
109 ):
110 self.reject() 114 self.reject()
111 elif ( 115 elif (
112 button == self.buttonBox.button( 116 button == self.buttonBox.button(QDialogButtonBox.StandardButton.Save)
113 QDialogButtonBox.StandardButton.Save) and 117 and self.__savePageScreen()
114 self.__savePageScreen()
115 ): 118 ):
116 self.accept() 119 self.accept()

eric ide

mercurial