Helpviewer/SiteInfo/SiteInfoDialog.py

changeset 1780
f42757fd021b
parent 1509
c0b5e693b0eb
child 1857
baf039cc2d9a
equal deleted inserted replaced
1779:98c1967118a7 1780:f42757fd021b
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()))

eric ide

mercurial