9 |
9 |
10 import os |
10 import os |
11 |
11 |
12 from PyQt4.QtCore import pyqtSlot, QUrl, Qt, QFile |
12 from PyQt4.QtCore import pyqtSlot, QUrl, Qt, QFile |
13 from PyQt4.QtGui import QDialog, QTreeWidgetItem, QPixmap, QGraphicsScene, QMenu, \ |
13 from PyQt4.QtGui import QDialog, QTreeWidgetItem, QPixmap, QGraphicsScene, QMenu, \ |
14 QCursor, QApplication, QFileDialog |
14 QCursor, QApplication, QListWidgetItem |
15 from PyQt4.QtWebKit import QWebSettings |
15 from PyQt4.QtWebKit import QWebSettings |
16 |
16 |
17 from E5Gui import E5MessageBox, E5FileDialog |
17 from E5Gui import E5MessageBox, E5FileDialog |
18 |
18 |
19 from .Ui_SiteInfoDialog import Ui_SiteInfoDialog |
19 from .Ui_SiteInfoDialog import Ui_SiteInfoDialog |
43 self.setupUi(self) |
43 self.setupUi(self) |
44 |
44 |
45 # put icons |
45 # put icons |
46 self.tabWidget.setTabIcon(0, UI.PixmapCache.getIcon("siteinfo-general.png")) |
46 self.tabWidget.setTabIcon(0, UI.PixmapCache.getIcon("siteinfo-general.png")) |
47 self.tabWidget.setTabIcon(1, UI.PixmapCache.getIcon("siteinfo-media.png")) |
47 self.tabWidget.setTabIcon(1, UI.PixmapCache.getIcon("siteinfo-media.png")) |
48 self.tabWidget.setTabIcon(2, UI.PixmapCache.getIcon("siteinfo-security.png")) |
48 self.tabWidget.setTabIcon(2, UI.PixmapCache.getIcon("siteinfo-databases.png")) |
49 |
49 self.tabWidget.setTabIcon(3, UI.PixmapCache.getIcon("siteinfo-security.png")) |
50 frame = browser.page().mainFrame() |
50 |
|
51 self.__mainFrame = browser.page().mainFrame() |
51 title = browser.title() |
52 title = browser.title() |
52 sslInfo = browser.page().getSslInfo() |
53 sslInfo = browser.page().getSslInfo() |
53 |
54 |
54 # populate General tab |
55 # populate General tab |
55 self.heading.setText("<b>{0}</b>".format(title)) |
56 self.heading.setText("<b>{0}</b>".format(title)) |
56 self.siteAddressLabel.setText(frame.baseUrl().toString()) |
57 self.siteAddressLabel.setText(self.__mainFrame.baseUrl().toString()) |
57 self.sizeLabel.setText(dataString(browser.page().totalBytes())) |
58 self.sizeLabel.setText(dataString(browser.page().totalBytes())) |
58 encoding = "" |
59 encoding = "" |
59 |
60 |
60 # populate Meta tags |
61 # populate Meta tags |
61 meta = frame.findAllElements("meta") |
62 meta = self.__mainFrame.findAllElements("meta") |
62 for element in meta: |
63 for element in meta: |
63 content = element.attribute("content") |
64 content = element.attribute("content") |
64 name = element.attribute("name") |
65 name = element.attribute("name") |
65 if not name: |
66 if not name: |
66 name = element.attribute("http-equiv") |
67 name = element.attribute("http-equiv") |
90 self.securityLabel.setStyleSheet(SiteInfoDialog.nokStyle) |
91 self.securityLabel.setStyleSheet(SiteInfoDialog.nokStyle) |
91 self.securityLabel.setText('<b>Connection is not encrypted.</b>') |
92 self.securityLabel.setText('<b>Connection is not encrypted.</b>') |
92 self.securityDetailsButton.setEnabled(False) |
93 self.securityDetailsButton.setEnabled(False) |
93 |
94 |
94 # populate Media tab |
95 # populate Media tab |
95 images = frame.findAllElements("img") |
96 images = self.__mainFrame.findAllElements("img") |
96 for element in images: |
97 for element in images: |
97 src = element.attribute("src") |
98 src = element.attribute("src") |
98 alt = element.attribute("alt") |
99 alt = element.attribute("alt") |
99 if src and src.startswith("data:"): |
100 if src and src.startswith("data:"): |
100 continue |
101 continue |
115 self.imagesTree.setColumnWidth(0, 300) |
116 self.imagesTree.setColumnWidth(0, 300) |
116 self.imagesTree.setCurrentItem(self.imagesTree.topLevelItem(0)) |
117 self.imagesTree.setCurrentItem(self.imagesTree.topLevelItem(0)) |
117 self.imagesTree.setContextMenuPolicy(Qt.CustomContextMenu) |
118 self.imagesTree.setContextMenuPolicy(Qt.CustomContextMenu) |
118 self.imagesTree.customContextMenuRequested.connect( |
119 self.imagesTree.customContextMenuRequested.connect( |
119 self.__imagesTreeContextMenuRequested) |
120 self.__imagesTreeContextMenuRequested) |
|
121 |
|
122 # populate the Databases tab |
|
123 databases = self.__mainFrame.securityOrigin().databases() |
|
124 counter = 0 |
|
125 for database in databases: |
|
126 itm = QListWidgetItem(self.databasesList) |
|
127 itm.setText(database.displayName()) |
|
128 itm.setData(Qt.UserRole, counter) |
|
129 counter += 1 |
|
130 |
|
131 if counter == 0: |
|
132 itm = QListWidgetItem(self.databasesList) |
|
133 itm.setText(self.trUtf8("No databases are used by this page.")) |
|
134 itm.setFlags(itm.flags() & Qt.ItemIsSelectable) |
120 |
135 |
121 @pyqtSlot() |
136 @pyqtSlot() |
122 def on_securityDetailsButton_clicked(self): |
137 def on_securityDetailsButton_clicked(self): |
123 """ |
138 """ |
124 Private slot to show security details. |
139 Private slot to show security details. |
222 filename = E5FileDialog.getSaveFileName( |
237 filename = E5FileDialog.getSaveFileName( |
223 self, |
238 self, |
224 self.trUtf8("Save Image"), |
239 self.trUtf8("Save Image"), |
225 fn, |
240 fn, |
226 self.trUtf8("All Files (*)"), |
241 self.trUtf8("All Files (*)"), |
227 QFileDialog.Options(QFileDialog.DontConfirmOverwrite)) |
242 E5FileDialog.Options(E5FileDialog.DontConfirmOverwrite)) |
228 |
243 |
229 if not filename: |
244 if not filename: |
230 return |
245 return |
231 |
246 |
232 f = QFile(filename) |
247 f = QFile(filename) |
236 self.trUtf8( |
251 self.trUtf8( |
237 """<p>Cannot write to file <b>{0}</b>.</p>""".format(filename))) |
252 """<p>Cannot write to file <b>{0}</b>.</p>""".format(filename))) |
238 return |
253 return |
239 f.write(cacheData.readAll()) |
254 f.write(cacheData.readAll()) |
240 f.close() |
255 f.close() |
|
256 |
|
257 @pyqtSlot(QListWidgetItem, QListWidgetItem) |
|
258 def on_databasesList_currentItemChanged(self, current, previous): |
|
259 """ |
|
260 Private slot to show data about the selected database. |
|
261 |
|
262 @param current current database entry (QTreeWidgetItem) |
|
263 @param previous old current entry (QTreeWidgetItem) |
|
264 """ |
|
265 if current is None: |
|
266 return |
|
267 |
|
268 id = current.data(Qt.UserRole) |
|
269 databases = self.__mainFrame.securityOrigin().databases() |
|
270 |
|
271 if id >= len(databases): |
|
272 return |
|
273 |
|
274 db = databases[id] |
|
275 self.databaseName.setText("{0} ({1})".format(db.displayName(), db.name())) |
|
276 self.databasePath.setText(db.fileName()) |
|
277 self.databaseSize.setText(dataString(db.size())) |