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

View File

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