Save sourceModel().

This commit is contained in:
Florian Bruhin 2014-02-04 18:37:35 +01:00
parent c32ba2f2c8
commit 109522e43f
2 changed files with 13 additions and 9 deletions

View File

@ -276,6 +276,7 @@ class CompletionFilterModel(QSortFilterProxyModel):
"""Subclass of QSortFilterProxyModel with custom sorting/filtering."""
_pattern = None
srcmodel = None
def __init__(self, parent=None):
super().__init__(parent)
@ -286,6 +287,11 @@ class CompletionFilterModel(QSortFilterProxyModel):
"""Getter for pattern."""
return self._pattern
def setsrc(self, model):
self.setSourceModel(model)
self.srcmodel = model
self.pattern = ''
@pattern.setter
def pattern(self, val):
"""Setter for pattern.
@ -318,8 +324,8 @@ class CompletionFilterModel(QSortFilterProxyModel):
"""
if parent == QModelIndex():
return True
idx = self.sourceModel().index(row, 0, parent)
data = self.sourceModel().data(idx).value()
idx = self.srcmodel.index(row, 0, parent)
data = self.srcmodel.data(idx).value()
# TODO more sophisticated filtering
if not self.pattern:
return True
@ -334,8 +340,8 @@ class CompletionFilterModel(QSortFilterProxyModel):
Prefers all items which start with self.pattern. Other than that, uses
normal Python string sorting.
"""
left = self.sourceModel().data(lindex).value()
right = self.sourceModel().data(rindex).value()
left = self.srcmodel.data(lindex).value()
right = self.srcmodel.data(rindex).value()
leftstart = left.startswith(self.pattern)
rightstart = right.startswith(self.pattern)

View File

@ -73,11 +73,10 @@ class CompletionView(QTreeView):
self.completion_models['command'] = CommandCompletionModel()
self.model = CompletionFilterModel()
self.setModel(self.model)
self.model.setSourceModel(self.completion_models['command'])
self.setmodel('command')
self.setItemDelegate(CompletionItemDelegate())
self.setStyleSheet(config.get_stylesheet(self._stylesheet))
self.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Minimum)
self.expandAll()
self.setHeaderHidden(True)
self.setIndentation(0)
self.setItemsExpandable(False)
@ -109,8 +108,7 @@ class CompletionView(QTreeView):
model -- A QAbstractItemModel with available completions.
"""
self.model.setSourceModel(self.completion_models[model])
self.model.pattern = ''
self.model.setsrc(self.completion_models[model])
self.expandAll()
def resize_to_bar(self, geom):
@ -147,7 +145,7 @@ class CompletionView(QTreeView):
self.setmodel('command')
text = text.lstrip(':')
self.model.pattern = text
self.model.sourceModel().mark_all_items(text)
self.model.srcmodel.mark_all_items(text)
if self.enabled:
self.show()