Fri, 11 Mar 2016 19:22:37 +0100
Continued porting the web browser.
- added the dialog to manage the referer whitelist
--- a/Preferences/ConfigurationPages/WebBrowserPage.py Thu Mar 10 20:02:45 2016 +0100 +++ b/Preferences/ConfigurationPages/WebBrowserPage.py Fri Mar 11 19:22:37 2016 +0100 @@ -78,11 +78,10 @@ # TODO: Click2Flash ## self.clickToFlashCheckBox.setChecked( ## Preferences.getWebBrowser("ClickToFlashEnabled")) - # TODO: Qt 5.6 -## self.doNotTrackCheckBox.setChecked( -## Preferences.getWebBrowser("DoNotTrack")) -## self.sendRefererCheckBox.setChecked( -## Preferences.getWebBrowser("SendReferer")) + self.doNotTrackCheckBox.setChecked( + Preferences.getWebBrowser("DoNotTrack")) + self.sendRefererCheckBox.setChecked( + Preferences.getWebBrowser("SendReferer")) self.diskCacheCheckBox.setChecked( Preferences.getWebBrowser("DiskCacheEnabled")) @@ -149,9 +148,6 @@ self.accessKeysCheckBox.hide() self.jsCloseWindowsCheckBox.hide() self.pluginsGroup.hide() - self.doNotTrackCheckBox.hide() - self.sendRefererCheckBox.hide() - self.refererWhitelistButton.hide() def save(self): """ @@ -197,13 +193,12 @@ ## Preferences.setWebBrowser( ## "ClickToFlashEnabled", ## self.clickToFlashCheckBox.isChecked()) - # TODO: Qt 5.6 -## Preferences.setWebBrowser( -## "DoNotTrack", -## self.doNotTrackCheckBox.isChecked()) -## Preferences.setWebBrowser( -## "SendReferer", -## self.sendRefererCheckBox.isChecked()) + Preferences.setWebBrowser( + "DoNotTrack", + self.doNotTrackCheckBox.isChecked()) + Preferences.setWebBrowser( + "SendReferer", + self.sendRefererCheckBox.isChecked()) Preferences.setWebBrowser( "DiskCacheEnabled", @@ -294,15 +289,14 @@ self.defaultHomeButton.setEnabled(enable) self.setCurrentPageButton.setEnabled(enable) - # TODO: Referer -## @pyqtSlot() -## def on_refererWhitelistButton_clicked(self): -## """ -## Private slot to edit the referer whitelist. -## """ -## from Helpviewer.Network.SendRefererWhitelistDialog import \ -## SendRefererWhitelistDialog -## SendRefererWhitelistDialog(self).exec_() + @pyqtSlot() + def on_refererWhitelistButton_clicked(self): + """ + Private slot to edit the referer whitelist. + """ + from WebBrowser.Network.SendRefererWhitelistDialog import \ + SendRefererWhitelistDialog + SendRefererWhitelistDialog(self).exec_() def create(dlg):
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebBrowser/Network/SendRefererWhitelistDialog.py Fri Mar 11 19:22:37 2016 +0100 @@ -0,0 +1,70 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2012 - 2016 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a dialog to manage the Send Referer whitelist. +""" + +from __future__ import unicode_literals + +from PyQt5.QtCore import pyqtSlot, Qt, QSortFilterProxyModel, QStringListModel +from PyQt5.QtWidgets import QDialog, QInputDialog, QLineEdit + +from .Ui_SendRefererWhitelistDialog import Ui_SendRefererWhitelistDialog + +import Preferences + + +class SendRefererWhitelistDialog(QDialog, Ui_SendRefererWhitelistDialog): + """ + Class implementing a dialog to manage the Send Referer whitelist. + """ + def __init__(self, parent=None): + """ + Constructor + + @param parent reference to the parent widget (QWidget) + """ + super(SendRefererWhitelistDialog, self).__init__(parent) + self.setupUi(self) + + self.__model = QStringListModel( + Preferences.getWebBrowser("SendRefererWhitelist"), self) + self.__model.sort(0) + self.__proxyModel = QSortFilterProxyModel(self) + self.__proxyModel.setFilterCaseSensitivity(Qt.CaseInsensitive) + self.__proxyModel.setSourceModel(self.__model) + self.whitelist.setModel(self.__proxyModel) + + self.searchEdit.textChanged.connect( + self.__proxyModel.setFilterFixedString) + + self.removeButton.clicked.connect(self.whitelist.removeSelected) + self.removeAllButton.clicked.connect(self.whitelist.removeAll) + + @pyqtSlot() + def on_addButton_clicked(self): + """ + Private slot to add an entry to the whitelist. + """ + host, ok = QInputDialog.getText( + self, + self.tr("Send Referer Whitelist"), + self.tr("Enter host name to add to the whitelist:"), + QLineEdit.Normal) + if ok and host != "" and host not in self.__model.stringList(): + self.__model.insertRow(self.__model.rowCount()) + self.__model.setData( + self.__model.index(self.__model.rowCount() - 1), host) + self.__model.sort(0) + + def accept(self): + """ + Public method to accept the dialog data. + """ + Preferences.setWebBrowser( + "SendRefererWhitelist", self.__model.stringList()) + + super(SendRefererWhitelistDialog, self).accept()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebBrowser/Network/SendRefererWhitelistDialog.ui Fri Mar 11 19:22:37 2016 +0100 @@ -0,0 +1,199 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>SendRefererWhitelistDialog</class> + <widget class="QDialog" name="SendRefererWhitelistDialog"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>500</width> + <height>350</height> + </rect> + </property> + <property name="windowTitle"> + <string>Send Referer Whitelist</string> + </property> + <property name="sizeGripEnabled"> + <bool>true</bool> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <layout class="QGridLayout" name="gridLayout_2"> + <property name="horizontalSpacing"> + <number>0</number> + </property> + <item row="0" column="1"> + <widget class="E5ClearableLineEdit" name="searchEdit"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>300</width> + <height>0</height> + </size> + </property> + <property name="toolTip"> + <string>Enter search term for hosts</string> + </property> + </widget> + </item> + <item row="0" column="0"> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item> + <layout class="QGridLayout" name="gridLayout"> + <item row="4" column="1"> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + <item row="0" column="1"> + <widget class="QPushButton" name="addButton"> + <property name="toolTip"> + <string>Press to add site to the whitelist</string> + </property> + <property name="text"> + <string>&Add...</string> + </property> + <property name="autoDefault"> + <bool>false</bool> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="Line" name="line"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="QPushButton" name="removeButton"> + <property name="toolTip"> + <string>Press to remove the selected entries</string> + </property> + <property name="text"> + <string>&Remove</string> + </property> + <property name="autoDefault"> + <bool>false</bool> + </property> + </widget> + </item> + <item row="3" column="1"> + <widget class="QPushButton" name="removeAllButton"> + <property name="toolTip"> + <string>Press to remove all entries</string> + </property> + <property name="text"> + <string>R&emove All</string> + </property> + <property name="autoDefault"> + <bool>false</bool> + </property> + </widget> + </item> + <item row="0" column="0" rowspan="5"> + <widget class="E5ListView" name="whitelist"> + <property name="alternatingRowColors"> + <bool>true</bool> + </property> + <property name="selectionMode"> + <enum>QAbstractItemView::ExtendedSelection</enum> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons"> + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </widget> + <customwidgets> + <customwidget> + <class>E5ClearableLineEdit</class> + <extends>QLineEdit</extends> + <header>E5Gui/E5LineEdit.h</header> + </customwidget> + <customwidget> + <class>E5ListView</class> + <extends>QListView</extends> + <header>E5Gui/E5ListView.h</header> + </customwidget> + </customwidgets> + <tabstops> + <tabstop>searchEdit</tabstop> + <tabstop>whitelist</tabstop> + <tabstop>addButton</tabstop> + <tabstop>removeButton</tabstop> + <tabstop>removeAllButton</tabstop> + <tabstop>buttonBox</tabstop> + </tabstops> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>SendRefererWhitelistDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel"> + <x>227</x> + <y>329</y> + </hint> + <hint type="destinationlabel"> + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>SendRefererWhitelistDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel"> + <x>295</x> + <y>335</y> + </hint> + <hint type="destinationlabel"> + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui>
--- a/eric6.e4p Thu Mar 10 20:02:45 2016 +0100 +++ b/eric6.e4p Fri Mar 11 19:22:37 2016 +0100 @@ -1338,6 +1338,7 @@ <Source>WebBrowser/Network/LoadRequest.py</Source> <Source>WebBrowser/Network/NetworkManager.py</Source> <Source>WebBrowser/Network/NetworkUrlInterceptor.py</Source> + <Source>WebBrowser/Network/SendRefererWhitelistDialog.py</Source> <Source>WebBrowser/Network/SslErrorExceptionsDialog.py</Source> <Source>WebBrowser/Network/UrlInterceptor.py</Source> <Source>WebBrowser/Network/__init__.py</Source> @@ -1830,6 +1831,7 @@ <Form>WebBrowser/GreaseMonkey/GreaseMonkeyConfiguration/GreaseMonkeyConfigurationDialog.ui</Form> <Form>WebBrowser/GreaseMonkey/GreaseMonkeyConfiguration/GreaseMonkeyConfigurationScriptInfoDialog.ui</Form> <Form>WebBrowser/History/HistoryDialog.ui</Form> + <Form>WebBrowser/Network/SendRefererWhitelistDialog.ui</Form> <Form>WebBrowser/Network/SslErrorExceptionsDialog.ui</Form> <Form>WebBrowser/OpenSearch/OpenSearchDialog.ui</Form> <Form>WebBrowser/OpenSearch/OpenSearchEditDialog.ui</Form>