Advertisement
sanfx

changeCompleter.py

Nov 3rd, 2013
309
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.01 KB | None | 0 0
  1.  
  2. from PyQt4.Qt import Qt, QObject,QLineEdit
  3. from PyQt4.QtCore import pyqtSlot,SIGNAL,SLOT
  4. from PyQt4 import QtGui, QtCore
  5.  
  6. import sys
  7.  
  8.  
  9. class DirLineEdit(QLineEdit):
  10.     """docstring for DirLineEdit"""
  11.      
  12.    
  13.     def __init__(self):
  14.         super(DirLineEdit, self).__init__()
  15.  
  16.         self.defaultList = ['~/Development/python/searchMethod', '~/Development/Nuke_python',
  17.         '~/Development/python/openexr', '~/Development/python/cpp2python']
  18.         self.textEdited.connect(self._dirCompleter)
  19.  
  20.     def focusInEvent(self, event):
  21.         if len(self.text()) == 0:
  22.             self._pathsList()
  23.         QtGui.QLineEdit.focusInEvent(self, event)
  24.         self.completer().complete()
  25.         self.setModified(False)
  26.  
  27.     def _dirCompleter(self):
  28.         if len(self.text()) == 0:
  29.             self._pathsList()
  30.         else:
  31.             model = QtGui.QFileSystemModel()
  32.             model.setRootPath(QtCore.QDir.currentPath())
  33.             model.setFilter(QtCore.QDir.AllDirs | QtCore.QDir.NoDotAndDotDot | QtCore.QDir.Files)
  34.             model.setNameFilterDisables(0)
  35.             completer = QtGui.QCompleter(model, self)
  36.             completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive)
  37.             completer.setModel(model)
  38.             self.setCompleter(completer)
  39.  
  40.     def _pathsList(self):
  41.         completerList = QtCore.QStringList()
  42.         for i in self.defaultList:
  43.             completerList.append(QtCore.QString(i))
  44.         lineEditCompleter = QtGui.QCompleter(completerList)
  45.         lineEditCompleter.setCompletionMode(QtGui.QCompleter.UnfilteredPopupCompletion)
  46.         self.setCompleter(lineEditCompleter)
  47.  
  48.  
  49. class MyListModel(QtCore.QAbstractListModel):
  50.     def __init__(self, datain, parent=None, *args):
  51.         """ datain: a list where each item is a row
  52.         """
  53.         QtCore.QAbstractListModel.__init__(self, parent, *args)
  54.         self.listdata = datain
  55.  
  56.     def rowCount(self, parent=QtCore.QModelIndex()):
  57.         return len(self.listdata)
  58.  
  59.     def data(self, index, role):
  60.         if index.isValid() and role == QtCore.Qt.DisplayRole:
  61.             return QtCore.QVariant(self.listdata[index.row()])
  62.         else:
  63.             return QtCore.QVariant()
  64.  
  65.  
  66. app = QtGui.QApplication(sys.argv)
  67. smObj = DirLineEdit()
  68. smObj.show()
  69. app.exec_()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement