eric6/E5Gui/E5Completers.py

changeset 6942
2602857055c5
parent 6645
ad476851d7e0
child 7229
53054eb5b15a
diff -r f99d60d6b59b -r 2602857055c5 eric6/E5Gui/E5Completers.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric6/E5Gui/E5Completers.py	Sun Apr 14 15:09:21 2019 +0200
@@ -0,0 +1,149 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2007 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing various kinds of completers.
+"""
+
+from __future__ import unicode_literals
+
+import os
+
+from PyQt5.QtCore import QDir, Qt, QStringListModel
+from PyQt5.QtWidgets import QCompleter, QFileSystemModel
+
+from Globals import isWindowsPlatform
+
+
+class E5FileCompleter(QCompleter):
+    """
+    Class implementing a completer for file names.
+    """
+    def __init__(self, parent=None,
+                 completionMode=QCompleter.PopupCompletion,
+                 showHidden=False):
+        """
+        Constructor
+        
+        @param parent parent widget of the completer (QWidget)
+        @keyparam completionMode completion mode of the
+            completer (QCompleter.CompletionMode)
+        @keyparam showHidden flag indicating to show hidden entries as well
+            (boolean)
+        """
+        super(E5FileCompleter, self).__init__(parent)
+        self.__model = QFileSystemModel(self)
+        if showHidden:
+            self.__model.setFilter(
+                QDir.Filters(QDir.Dirs | QDir.Files | QDir.Drives |
+                             QDir.AllDirs | QDir.Hidden))
+        else:
+            self.__model.setFilter(QDir.Filters(
+                QDir.Dirs | QDir.Files | QDir.Drives | QDir.AllDirs))
+        self.__model.setRootPath("")
+        self.setModel(self.__model)
+        self.setCompletionMode(completionMode)
+        if isWindowsPlatform():
+            self.setCaseSensitivity(Qt.CaseInsensitive)
+        if parent:
+            parent.setCompleter(self)
+    
+    def setRootPath(self, path):
+        """
+        Public method to set the root path of the model.
+        
+        @param path root path for the model
+        @type str
+        """
+        if not os.path.isdir(path):
+            path = os.path.dirname(path)
+        self.__model.setRootPath(path)
+    
+    def rootPath(self):
+        """
+        Public method to get the root path of the model.
+        
+        @return root path of the model
+        @rtype str
+        """
+        return self.__model.rootPath()
+
+
+class E5DirCompleter(QCompleter):
+    """
+    Class implementing a completer for directory names.
+    """
+    def __init__(self, parent=None,
+                 completionMode=QCompleter.PopupCompletion,
+                 showHidden=False):
+        """
+        Constructor
+        
+        @param parent parent widget of the completer (QWidget)
+        @keyparam completionMode completion mode of the
+            completer (QCompleter.CompletionMode)
+        @keyparam showHidden flag indicating to show hidden entries as well
+            (boolean)
+        """
+        super(E5DirCompleter, self).__init__(parent)
+        self.__model = QFileSystemModel(self)
+        if showHidden:
+            self.__model.setFilter(
+                QDir.Filters(QDir.Drives | QDir.AllDirs | QDir.Hidden))
+        else:
+            self.__model.setFilter(
+                QDir.Filters(QDir.Drives | QDir.AllDirs))
+        self.__model.setRootPath("")
+        self.setModel(self.__model)
+        self.setCompletionMode(completionMode)
+        if isWindowsPlatform():
+            self.setCaseSensitivity(Qt.CaseInsensitive)
+        if parent:
+            parent.setCompleter(self)
+    
+    def setRootPath(self, path):
+        """
+        Public method to set the root path of the model.
+        
+        @param path root path for the model
+        @type str
+        """
+        if not os.path.isdir(path):
+            path = os.path.dirname(path)
+        self.__model.setRootPath(path)
+    
+    def rootPath(self):
+        """
+        Public method to get the root path of the model.
+        
+        @return root path of the model
+        @rtype str
+        """
+        return self.__model.rootPath()
+
+
+class E5StringListCompleter(QCompleter):
+    """
+    Class implementing a completer for string lists.
+    """
+    def __init__(self, parent=None, strings=None,
+                 completionMode=QCompleter.PopupCompletion):
+        """
+        Constructor
+        
+        @param parent parent widget of the completer (QWidget)
+        @param strings list of string to load into the completer
+            (list of strings)
+        @keyparam completionMode completion mode of the
+            completer (QCompleter.CompletionMode)
+        """
+        super(E5StringListCompleter, self).__init__(parent)
+        self.__model = QStringListModel(
+            [] if strings is None else strings[:],
+            parent)
+        self.setModel(self.__model)
+        self.setCompletionMode(completionMode)
+        if parent:
+            parent.setCompleter(self)

eric ide

mercurial