eric6/Helpviewer/OpenSearch/OpenSearchEngineModel.py

changeset 7220
5cf645f6daab
parent 7218
eaf2cf171f3a
parent 7211
1c97f3142fa8
child 7221
0485ccdf7877
diff -r eaf2cf171f3a -r 5cf645f6daab eric6/Helpviewer/OpenSearch/OpenSearchEngineModel.py
--- a/eric6/Helpviewer/OpenSearch/OpenSearchEngineModel.py	Sat Sep 07 14:45:27 2019 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,207 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module implementing a model for search engines.
-"""
-
-from __future__ import unicode_literals
-
-import re
-
-from PyQt5.QtCore import Qt, QUrl, QAbstractTableModel, QModelIndex
-from PyQt5.QtGui import QPixmap, QIcon
-
-
-class OpenSearchEngineModel(QAbstractTableModel):
-    """
-    Class implementing a model for search engines.
-    """
-    def __init__(self, manager, parent=None):
-        """
-        Constructor
-        
-        @param manager reference to the search engine manager
-            (OpenSearchManager)
-        @param parent reference to the parent object (QObject)
-        """
-        super(OpenSearchEngineModel, self).__init__(parent)
-        
-        self.__manager = manager
-        manager.changed.connect(self.__enginesChanged)
-        
-        self.__headers = [
-            self.tr("Name"),
-            self.tr("Keywords"),
-        ]
-    
-    def removeRows(self, row, count, parent=None):
-        """
-        Public method to remove entries from the model.
-        
-        @param row start row (integer)
-        @param count number of rows to remove (integer)
-        @param parent parent index (QModelIndex)
-        @return flag indicating success (boolean)
-        """
-        if parent is None:
-            parent = QModelIndex()
-        
-        if parent.isValid():
-            return False
-        
-        if count <= 0:
-            return False
-        
-        if self.rowCount() <= 1:
-            return False
-        
-        lastRow = row + count - 1
-        
-        self.beginRemoveRows(parent, row, lastRow)
-        
-        nameList = self.__manager.allEnginesNames()
-        for index in range(row, lastRow + 1):
-            self.__manager.removeEngine(nameList[index])
-        
-        # removeEngine emits changed()
-        #self.endRemoveRows()
-        
-        return True
-    
-    def rowCount(self, parent=None):
-        """
-        Public method to get the number of rows of the model.
-        
-        @param parent parent index (QModelIndex)
-        @return number of rows (integer)
-        """
-        if parent is None:
-            parent = QModelIndex()
-        
-        if parent.isValid():
-            return 0
-        else:
-            return self.__manager.enginesCount()
-    
-    def columnCount(self, parent=None):
-        """
-        Public method to get the number of columns of the model.
-        
-        @param parent parent index (QModelIndex) (Unused)
-        @return number of columns (integer)
-        """
-        return 2
-    
-    def flags(self, index):
-        """
-        Public method to get flags for a model cell.
-        
-        @param index index of the model cell (QModelIndex)
-        @return flags (Qt.ItemFlags)
-        """
-        if index.column() == 1:
-            return Qt.ItemIsEnabled | Qt.ItemIsSelectable | Qt.ItemIsEditable
-        else:
-            return Qt.ItemIsEnabled | Qt.ItemIsSelectable
-    
-    def data(self, index, role):
-        """
-        Public method to get data from the model.
-        
-        @param index index to get data for (QModelIndex)
-        @param role role of the data to retrieve (integer)
-        @return requested data
-        """
-        if index.row() >= self.__manager.enginesCount() or index.row() < 0:
-            return None
-        
-        engine = self.__manager.engine(
-            self.__manager.allEnginesNames()[index.row()])
-        
-        if engine is None:
-            return None
-        
-        if index.column() == 0:
-            if role == Qt.DisplayRole:
-                return engine.name()
-                
-            elif role == Qt.DecorationRole:
-                image = engine.image()
-                if image.isNull():
-                    from Helpviewer.HelpWindow import HelpWindow
-                    icon = HelpWindow.icon(QUrl(engine.imageUrl()))
-                else:
-                    icon = QIcon(QPixmap.fromImage(image))
-                return icon
-                
-            elif role == Qt.ToolTipRole:
-                description = self.tr("<strong>Description:</strong> {0}")\
-                    .format(engine.description())
-                if engine.providesSuggestions():
-                    description += "<br/>"
-                    description += self.tr(
-                        "<strong>Provides contextual suggestions</strong>")
-                
-                return description
-        elif index.column() == 1:
-            if role in [Qt.EditRole, Qt.DisplayRole]:
-                return ",".join(self.__manager.keywordsForEngine(engine))
-            elif role == Qt.ToolTipRole:
-                return self.tr(
-                    "Comma-separated list of keywords that may"
-                    " be entered in the location bar followed by search terms"
-                    " to search with this engine")
-        
-        return None
-    
-    def setData(self, index, value, role=Qt.EditRole):
-        """
-        Public method to set the data of a model cell.
-        
-        @param index index of the model cell (QModelIndex)
-        @param value value to be set
-        @param role role of the data (integer)
-        @return flag indicating success (boolean)
-        """
-        if not index.isValid() or index.column() != 1:
-            return False
-        
-        if index.row() >= self.rowCount() or index.row() < 0:
-            return False
-        
-        if role != Qt.EditRole:
-            return False
-        
-        engineName = self.__manager.allEnginesNames()[index.row()]
-        keywords = re.split("[ ,]+", value)
-        self.__manager.setKeywordsForEngine(
-            self.__manager.engine(engineName), keywords)
-        
-        return True
-    
-    def headerData(self, section, orientation, role=Qt.DisplayRole):
-        """
-        Public method to get the header data.
-        
-        @param section section number (integer)
-        @param orientation header orientation (Qt.Orientation)
-        @param role data role (integer)
-        @return header data
-        """
-        if orientation == Qt.Horizontal and role == Qt.DisplayRole:
-            try:
-                return self.__headers[section]
-            except IndexError:
-                pass
-        
-        return None
-    
-    def __enginesChanged(self):
-        """
-        Private slot handling a change of the registered engines.
-        """
-        self.beginResetModel()
-        self.endResetModel()

eric ide

mercurial