def _update_model(self, completions): """ Creates a QStandardModel that holds the suggestion from the completion models for the QCompleter :param completionPrefix: """ # build the completion model cc_model = QtGui.QStandardItemModel() self._tooltips.clear() for completion in completions: name = completion['name'] # skip redundant completion # if (name and name != self.completion_prefix and # name not in displayed_texts): item = QtGui.QStandardItem() item.setData(name, QtCore.Qt.DisplayRole) if 'tooltip' in completion and completion['tooltip']: self._tooltips[name] = completion['tooltip'] if 'icon' in completion: item.setData(self._make_icon(completion['icon']), QtCore.Qt.DecorationRole) cc_model.appendRow(item) self._completer.setModel(cc_model) return cc_model
def _update_model(self, completions): """ Creates a QStandardModel that holds the suggestion from the completion models for the QCompleter :param completionPrefix: """ # build the completion model cc_model = QtGui.QStandardItemModel() self._tooltips.clear() for completion in completions: name = completion['name'] item = QtGui.QStandardItem() item.setData(name, QtCore.Qt.DisplayRole) if 'tooltip' in completion and completion['tooltip']: self._tooltips[name] = completion['tooltip'] if 'icon' in completion: icon = completion['icon'] if isinstance(icon, list): icon = QtGui.QIcon.fromTheme(icon[0], QtGui.QIcon(icon[1])) else: icon = QtGui.QIcon(icon) item.setData(QtGui.QIcon(icon), QtCore.Qt.DecorationRole) cc_model.appendRow(item) try: self._completer.setModel(cc_model) except RuntimeError: self._create_completer() self._completer.setModel(cc_model) return cc_model
def set_root_path(self, path, hide_extra_columns=True): """ Sets the root path to watch :param path: root path - str :param hide_extra_columns: Hide extra column (size, paths,...) """ if not self.isVisible(): self._path_to_set = path self._hide_extra_colums = hide_extra_columns return if sys.platform == 'win32' and os.path.splitunc(path)[0]: mdl = QtGui.QStandardItemModel(1, 1) item = QtGui.QStandardItem( QtGui.QIcon.fromTheme( 'dialog-warning', QtGui.QIcon(':/pyqode-icons/rc/dialog-warning.png')), 'UNC pathnames not supported.') mdl.setItem(0, 0, item) self.setModel(mdl) self.root_path = None return self._hide_extra_colums = hide_extra_columns if os.path.isfile(path): path = os.path.abspath(os.path.join(path, os.pardir)) self._fs_model_source = QtWidgets.QFileSystemModel() self._fs_model_source.setFilter(QtCore.QDir.Dirs | QtCore.QDir.Files | QtCore.QDir.NoDotAndDotDot | QtCore.QDir.Hidden) self._fs_model_source.setIconProvider(self._icon_provider) self._fs_model_proxy = self.FilterProxyModel() for item in self._ignored_patterns: self._fs_model_proxy.ignored_patterns.append(item) self._fs_model_proxy.setSourceModel(self._fs_model_source) self._fs_model_proxy.set_root_path(path) # takes parent of the root path, filter will keep only `path`, that # way `path` appear as the top level node of the tree self._root_path = os.path.dirname(path) self.root_path = path self._fs_model_source.directoryLoaded.connect(self._on_path_loaded) self._fs_model_source.setRootPath(self._root_path)
def test_subsequence_completer(case): completer = SubsequenceCompleter() words = ['actionA', 'actionB', 'setMySuperAction', 'geTToolTip', 'setStatusTip', 'seTToolTip'] model = QtGui.QStandardItemModel() for word in words: item = QtGui.QStandardItem() item.setData(word, QtCore.Qt.DisplayRole) model.appendRow(item) completer.setCaseSensitivity(case) completer.setModel(model) if case == QtCore.Qt.CaseInsensitive: completer.setCompletionPrefix('tip') completer.update_model() assert completer.completionCount() == 3 completer.setCompletionPrefix('settip') completer.update_model() assert completer.completionCount() == 2 completer.update_model() completer.setCompletionPrefix('action') completer.update_model() assert completer.completionCount() == 3