Refactor Completer/CompletionView interface, removing set_pattern()
This commit is contained in:
parent
e4cec43cf4
commit
cbecd48871
@ -257,25 +257,19 @@ class Completer(QObject):
|
|||||||
|
|
||||||
model = self._get_new_completion(parts, self._cursor_part)
|
model = self._get_new_completion(parts, self._cursor_part)
|
||||||
|
|
||||||
if model != self._model():
|
|
||||||
completion.set_model(model)
|
|
||||||
|
|
||||||
if model is None:
|
|
||||||
log.completion.debug("No completion model for {}.".format(parts))
|
|
||||||
return
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
pattern = parts[self._cursor_part].strip()
|
pattern = parts[self._cursor_part].strip()
|
||||||
except IndexError:
|
except IndexError:
|
||||||
pattern = ''
|
pattern = ''
|
||||||
completion.set_pattern(pattern)
|
|
||||||
|
|
||||||
log.completion.debug(
|
if model is None:
|
||||||
"New completion for {}: {}, with pattern '{}'".format(
|
log.completion.debug("No completion model for {}.".format(parts))
|
||||||
parts, model.srcmodel.__class__.__name__, pattern))
|
else:
|
||||||
|
log.completion.debug(
|
||||||
|
"New completion for {}: {}, with pattern '{}'".format(
|
||||||
|
parts, model.srcmodel.__class__.__name__, pattern))
|
||||||
|
|
||||||
if self._model().count() == 0:
|
completion.set_model(model, pattern)
|
||||||
completion.hide()
|
|
||||||
|
|
||||||
def _split(self, keep=False):
|
def _split(self, keep=False):
|
||||||
"""Get the text split up in parts.
|
"""Get the text split up in parts.
|
||||||
|
@ -246,13 +246,14 @@ class CompletionView(QTreeView):
|
|||||||
elif config.get('completion', 'show') == 'auto':
|
elif config.get('completion', 'show') == 'auto':
|
||||||
self.show()
|
self.show()
|
||||||
|
|
||||||
def set_model(self, model):
|
def set_model(self, model, pattern=None):
|
||||||
"""Switch completion to a new model.
|
"""Switch completion to a new model.
|
||||||
|
|
||||||
Called from on_update_completion().
|
Called from on_update_completion().
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
model: The model to use.
|
model: The model to use.
|
||||||
|
pattern: The filter pattern to set (what the user entered).
|
||||||
"""
|
"""
|
||||||
if model is None:
|
if model is None:
|
||||||
self._active = False
|
self._active = False
|
||||||
@ -260,17 +261,19 @@ class CompletionView(QTreeView):
|
|||||||
return
|
return
|
||||||
|
|
||||||
old_model = self.model()
|
old_model = self.model()
|
||||||
sel_model = self.selectionModel()
|
if model != old_model:
|
||||||
|
sel_model = self.selectionModel()
|
||||||
|
|
||||||
self.setModel(model)
|
self.setModel(model)
|
||||||
self._active = True
|
self._active = True
|
||||||
|
|
||||||
if sel_model is not None:
|
if sel_model is not None:
|
||||||
sel_model.deleteLater()
|
sel_model.deleteLater()
|
||||||
if old_model is not None:
|
if old_model is not None:
|
||||||
old_model.deleteLater()
|
old_model.deleteLater()
|
||||||
|
|
||||||
if config.get('completion', 'show') == 'always':
|
if (config.get('completion', 'show') == 'always'
|
||||||
|
and model.count() > 0):
|
||||||
self.show()
|
self.show()
|
||||||
else:
|
else:
|
||||||
self.hide()
|
self.hide()
|
||||||
@ -278,21 +281,13 @@ class CompletionView(QTreeView):
|
|||||||
for i in range(model.rowCount()):
|
for i in range(model.rowCount()):
|
||||||
self.expand(model.index(i, 0))
|
self.expand(model.index(i, 0))
|
||||||
|
|
||||||
|
if pattern is not None:
|
||||||
|
model.set_pattern(pattern)
|
||||||
|
|
||||||
self._column_widths = model.srcmodel.COLUMN_WIDTHS
|
self._column_widths = model.srcmodel.COLUMN_WIDTHS
|
||||||
self._resize_columns()
|
self._resize_columns()
|
||||||
self.maybe_resize_completion()
|
self.maybe_resize_completion()
|
||||||
|
|
||||||
def set_pattern(self, pattern):
|
|
||||||
"""Set the completion pattern for the current model.
|
|
||||||
|
|
||||||
Called from on_update_completion().
|
|
||||||
|
|
||||||
Args:
|
|
||||||
pattern: The filter pattern to set (what the user entered).
|
|
||||||
"""
|
|
||||||
self.model().set_pattern(pattern)
|
|
||||||
self.maybe_resize_completion()
|
|
||||||
|
|
||||||
@pyqtSlot()
|
@pyqtSlot()
|
||||||
def maybe_resize_completion(self):
|
def maybe_resize_completion(self):
|
||||||
"""Emit the resize_completion signal if the config says so."""
|
"""Emit the resize_completion signal if the config says so."""
|
||||||
|
@ -83,8 +83,7 @@ def test_set_model(completionview):
|
|||||||
def test_set_pattern(completionview):
|
def test_set_pattern(completionview):
|
||||||
model = sortfilter.CompletionFilterModel(base.BaseCompletionModel())
|
model = sortfilter.CompletionFilterModel(base.BaseCompletionModel())
|
||||||
model.set_pattern = unittest.mock.Mock()
|
model.set_pattern = unittest.mock.Mock()
|
||||||
completionview.set_model(model)
|
completionview.set_model(model, 'foo')
|
||||||
completionview.set_pattern('foo')
|
|
||||||
model.set_pattern.assert_called_with('foo')
|
model.set_pattern.assert_called_with('foo')
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user