Continued porting the web browser. QtWebEngine

Fri, 11 Mar 2016 19:22:37 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 11 Mar 2016 19:22:37 +0100
branch
QtWebEngine
changeset 4832
6032ba9fdcc7
parent 4831
bf53c06fa0fb
child 4838
daa974f7dbac

Continued porting the web browser.

- added the dialog to manage the referer whitelist

Preferences/ConfigurationPages/WebBrowserPage.py file | annotate | diff | comparison | revisions
WebBrowser/Network/SendRefererWhitelistDialog.py file | annotate | diff | comparison | revisions
WebBrowser/Network/SendRefererWhitelistDialog.ui file | annotate | diff | comparison | revisions
eric6.e4p file | annotate | diff | comparison | revisions
--- 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>&amp;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>&amp;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&amp;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>

eric ide

mercurial