Started to implement the image search functionality for the new web browser.

Tue, 26 Apr 2016 19:09:18 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 26 Apr 2016 19:09:18 +0200
changeset 4955
8a966fc19ce3
parent 4954
36e92a908f3f
child 4956
1496516b0f2c

Started to implement the image search functionality for the new web browser.

Preferences/__init__.py file | annotate | diff | comparison | revisions
WebBrowser/ImageSearch/ImageSearchEngine.py file | annotate | diff | comparison | revisions
WebBrowser/ImageSearch/__init__.py file | annotate | diff | comparison | revisions
eric6.e4p file | annotate | diff | comparison | revisions
icons/default/google.png file | annotate | diff | comparison | revisions
icons/default/tineye.png file | annotate | diff | comparison | revisions
icons/default/yandex.png file | annotate | diff | comparison | revisions
--- a/Preferences/__init__.py	Sun Apr 24 17:26:54 2016 +0200
+++ b/Preferences/__init__.py	Tue Apr 26 19:09:18 2016 +0200
@@ -1025,6 +1025,7 @@
         "WebSearchKeywords": [],    # array of two tuples (keyword,
                                     # search engine name)
         "SearchLanguage": QLocale().language(),
+        "ImmageSearchEngine": "Google",
         "RssFeeds": [],
         "ShowPreview": True,
         "WebInspectorPort": 42024,
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/WebBrowser/ImageSearch/ImageSearchEngine.py	Tue Apr 26 19:09:18 2016 +0200
@@ -0,0 +1,74 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2016 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the image search engine.
+"""
+
+from __future__ import unicode_literals
+
+from PyQt5.QtCore import QObject, QUrl
+
+import Preferences
+
+class ImageSearchEngine(QObject):
+    """
+    Class implementing the image search engine.
+    """
+    def __init__(self, parent=None):
+        """
+        Constructor
+        
+        @param parent reference to the parent object
+        @type QObject
+        """
+        super(ImageSearchEngine, self).__init__(parent)
+        
+        self.__searchEngine = Preferences.getWebBrowser("ImmageSearchEngine")
+    
+    def searchEngine(self):
+        """
+        Public method to get the name of the current search engine.
+        """
+        return self.__searchEngine
+    
+    def setSearchEngine(self, searchEngine):
+        """
+        Public method to set the current search engine.
+        
+        @param searchEngine name of the search engine
+        @type str
+        """
+        self.__searchEngine = searchEngine
+        Preferences.setWebBrowser("ImmageSearchEngine", searchEngine)
+    
+    def getSearchQuery(self, imageUrl, searchEngine=None):
+        """
+        Public method to get the image search query URL.
+        
+        @param imageUrl URL of the image to search for
+        @type QUrl
+        @param searchEngine name of the image search engine to be used
+        @type str
+        @return search query URL
+        @rtype QUrl
+        """
+        if not searchEngine:
+            searchEngine = self.__searchEngine
+        
+        searchEngine_l = searchEngine.lower()
+        if searchEngine_l == "google":
+            return QUrl("https://www.google.com/searchbyimage?"
+                        "site=search&image_url={0}".format(
+                        imageUrl.toString()))
+        elif searchEngine_l == "yandex":
+            return QUrl("https://yandex.com/images/search?"
+                        "&img_url={0}&rpt=imageview".format(
+                        imageUrl.toString()))
+        elif searchEngine_l == "tineye":
+            return QUrl("http://www.tineye.com/search?url={0}".format(
+                        imageUrl.toString()))
+        else:
+            return QUrl()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/WebBrowser/ImageSearch/__init__.py	Tue Apr 26 19:09:18 2016 +0200
@@ -0,0 +1,8 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2016 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Package implementing the image search engine interfaces.
+"""
--- a/eric6.e4p	Sun Apr 24 17:26:54 2016 +0200
+++ b/eric6.e4p	Tue Apr 26 19:09:18 2016 +0200
@@ -26,54 +26,6 @@
     <Source>DataViews/PyCoverageDialog.py</Source>
     <Source>DataViews/PyProfileDialog.py</Source>
     <Source>DataViews/__init__.py</Source>
-    <Source>DebugClients/Python/AsyncFile.py</Source>
-    <Source>DebugClients/Python/AsyncIO.py</Source>
-    <Source>DebugClients/Python/DCTestResult.py</Source>
-    <Source>DebugClients/Python/DebugBase.py</Source>
-    <Source>DebugClients/Python/DebugClient.py</Source>
-    <Source>DebugClients/Python/DebugClientBase.py</Source>
-    <Source>DebugClients/Python/DebugClientCapabilities.py</Source>
-    <Source>DebugClients/Python/DebugClientThreads.py</Source>
-    <Source>DebugClients/Python/DebugConfig.py</Source>
-    <Source>DebugClients/Python/DebugProtocol.py</Source>
-    <Source>DebugClients/Python/DebugThread.py</Source>
-    <Source>DebugClients/Python/FlexCompleter.py</Source>
-    <Source>DebugClients/Python/PyProfile.py</Source>
-    <Source>DebugClients/Python/__init__.py</Source>
-    <Source>DebugClients/Python/coverage/__init__.py</Source>
-    <Source>DebugClients/Python/coverage/__main__.py</Source>
-    <Source>DebugClients/Python/coverage/annotate.py</Source>
-    <Source>DebugClients/Python/coverage/backunittest.py</Source>
-    <Source>DebugClients/Python/coverage/backward.py</Source>
-    <Source>DebugClients/Python/coverage/bytecode.py</Source>
-    <Source>DebugClients/Python/coverage/cmdline.py</Source>
-    <Source>DebugClients/Python/coverage/collector.py</Source>
-    <Source>DebugClients/Python/coverage/config.py</Source>
-    <Source>DebugClients/Python/coverage/control.py</Source>
-    <Source>DebugClients/Python/coverage/data.py</Source>
-    <Source>DebugClients/Python/coverage/debug.py</Source>
-    <Source>DebugClients/Python/coverage/env.py</Source>
-    <Source>DebugClients/Python/coverage/execfile.py</Source>
-    <Source>DebugClients/Python/coverage/files.py</Source>
-    <Source>DebugClients/Python/coverage/html.py</Source>
-    <Source>DebugClients/Python/coverage/misc.py</Source>
-    <Source>DebugClients/Python/coverage/monkey.py</Source>
-    <Source>DebugClients/Python/coverage/parser.py</Source>
-    <Source>DebugClients/Python/coverage/phystokens.py</Source>
-    <Source>DebugClients/Python/coverage/pickle2json.py</Source>
-    <Source>DebugClients/Python/coverage/plugin.py</Source>
-    <Source>DebugClients/Python/coverage/plugin_support.py</Source>
-    <Source>DebugClients/Python/coverage/python.py</Source>
-    <Source>DebugClients/Python/coverage/pytracer.py</Source>
-    <Source>DebugClients/Python/coverage/report.py</Source>
-    <Source>DebugClients/Python/coverage/results.py</Source>
-    <Source>DebugClients/Python/coverage/summary.py</Source>
-    <Source>DebugClients/Python/coverage/templite.py</Source>
-    <Source>DebugClients/Python/coverage/test_helpers.py</Source>
-    <Source>DebugClients/Python/coverage/version.py</Source>
-    <Source>DebugClients/Python/coverage/xmlreport.py</Source>
-    <Source>DebugClients/Python/eric6dbgstub.py</Source>
-    <Source>DebugClients/Python/getpass.py</Source>
     <Source>DebugClients/Python3/AsyncFile.py</Source>
     <Source>DebugClients/Python3/AsyncIO.py</Source>
     <Source>DebugClients/Python3/DCTestResult.py</Source>
@@ -123,6 +75,54 @@
     <Source>DebugClients/Python3/coverage/xmlreport.py</Source>
     <Source>DebugClients/Python3/eric6dbgstub.py</Source>
     <Source>DebugClients/Python3/getpass.py</Source>
+    <Source>DebugClients/Python/AsyncFile.py</Source>
+    <Source>DebugClients/Python/AsyncIO.py</Source>
+    <Source>DebugClients/Python/DCTestResult.py</Source>
+    <Source>DebugClients/Python/DebugBase.py</Source>
+    <Source>DebugClients/Python/DebugClient.py</Source>
+    <Source>DebugClients/Python/DebugClientBase.py</Source>
+    <Source>DebugClients/Python/DebugClientCapabilities.py</Source>
+    <Source>DebugClients/Python/DebugClientThreads.py</Source>
+    <Source>DebugClients/Python/DebugConfig.py</Source>
+    <Source>DebugClients/Python/DebugProtocol.py</Source>
+    <Source>DebugClients/Python/DebugThread.py</Source>
+    <Source>DebugClients/Python/FlexCompleter.py</Source>
+    <Source>DebugClients/Python/PyProfile.py</Source>
+    <Source>DebugClients/Python/__init__.py</Source>
+    <Source>DebugClients/Python/coverage/__init__.py</Source>
+    <Source>DebugClients/Python/coverage/__main__.py</Source>
+    <Source>DebugClients/Python/coverage/annotate.py</Source>
+    <Source>DebugClients/Python/coverage/backunittest.py</Source>
+    <Source>DebugClients/Python/coverage/backward.py</Source>
+    <Source>DebugClients/Python/coverage/bytecode.py</Source>
+    <Source>DebugClients/Python/coverage/cmdline.py</Source>
+    <Source>DebugClients/Python/coverage/collector.py</Source>
+    <Source>DebugClients/Python/coverage/config.py</Source>
+    <Source>DebugClients/Python/coverage/control.py</Source>
+    <Source>DebugClients/Python/coverage/data.py</Source>
+    <Source>DebugClients/Python/coverage/debug.py</Source>
+    <Source>DebugClients/Python/coverage/env.py</Source>
+    <Source>DebugClients/Python/coverage/execfile.py</Source>
+    <Source>DebugClients/Python/coverage/files.py</Source>
+    <Source>DebugClients/Python/coverage/html.py</Source>
+    <Source>DebugClients/Python/coverage/misc.py</Source>
+    <Source>DebugClients/Python/coverage/monkey.py</Source>
+    <Source>DebugClients/Python/coverage/parser.py</Source>
+    <Source>DebugClients/Python/coverage/phystokens.py</Source>
+    <Source>DebugClients/Python/coverage/pickle2json.py</Source>
+    <Source>DebugClients/Python/coverage/plugin.py</Source>
+    <Source>DebugClients/Python/coverage/plugin_support.py</Source>
+    <Source>DebugClients/Python/coverage/python.py</Source>
+    <Source>DebugClients/Python/coverage/pytracer.py</Source>
+    <Source>DebugClients/Python/coverage/report.py</Source>
+    <Source>DebugClients/Python/coverage/results.py</Source>
+    <Source>DebugClients/Python/coverage/summary.py</Source>
+    <Source>DebugClients/Python/coverage/templite.py</Source>
+    <Source>DebugClients/Python/coverage/test_helpers.py</Source>
+    <Source>DebugClients/Python/coverage/version.py</Source>
+    <Source>DebugClients/Python/coverage/xmlreport.py</Source>
+    <Source>DebugClients/Python/eric6dbgstub.py</Source>
+    <Source>DebugClients/Python/getpass.py</Source>
     <Source>DebugClients/__init__.py</Source>
     <Source>Debugger/BreakPointModel.py</Source>
     <Source>Debugger/BreakPointViewer.py</Source>
@@ -1350,6 +1350,8 @@
     <Source>WebBrowser/History/HistoryModel.py</Source>
     <Source>WebBrowser/History/HistoryTreeModel.py</Source>
     <Source>WebBrowser/History/__init__.py</Source>
+    <Source>WebBrowser/ImageSearch/ImageSearchEngine.py</Source>
+    <Source>WebBrowser/ImageSearch/__init__.py</Source>
     <Source>WebBrowser/JavaScript/ExternalJsObject.py</Source>
     <Source>WebBrowser/JavaScript/PasswordManagerJsObject.py</Source>
     <Source>WebBrowser/JavaScript/StartPageJsObject.py</Source>
@@ -1952,14 +1954,14 @@
   <Interfaces/>
   <Others>
     <Other>.hgignore</Other>
-    <Other>APIs/Python/zope-2.10.7.api</Other>
-    <Other>APIs/Python/zope-2.11.2.api</Other>
-    <Other>APIs/Python/zope-3.3.1.api</Other>
     <Other>APIs/Python3/PyQt4.bas</Other>
     <Other>APIs/Python3/PyQt5.bas</Other>
     <Other>APIs/Python3/QScintilla2.bas</Other>
     <Other>APIs/Python3/eric6.api</Other>
     <Other>APIs/Python3/eric6.bas</Other>
+    <Other>APIs/Python/zope-2.10.7.api</Other>
+    <Other>APIs/Python/zope-2.11.2.api</Other>
+    <Other>APIs/Python/zope-3.3.1.api</Other>
     <Other>APIs/QSS/qss.api</Other>
     <Other>APIs/Ruby/Ruby-1.8.7.api</Other>
     <Other>APIs/Ruby/Ruby-1.8.7.bas</Other>
@@ -1968,8 +1970,8 @@
     <Other>CSSs</Other>
     <Other>CodeTemplates</Other>
     <Other>DTDs</Other>
+    <Other>DebugClients/Python3/coverage/doc</Other>
     <Other>DebugClients/Python/coverage/doc</Other>
-    <Other>DebugClients/Python3/coverage/doc</Other>
     <Other>DesignerTemplates</Other>
     <Other>Dictionaries</Other>
     <Other>Documentation/Help</Other>
Binary file icons/default/google.png has changed
Binary file icons/default/tineye.png has changed
Binary file icons/default/yandex.png has changed

eric ide

mercurial