Use object registry for CompletionView.
This commit is contained in:
parent
7e8e9ee21f
commit
6a5c9ba138
@ -33,7 +33,6 @@ class Completer(QObject):
|
|||||||
"""Completer which manages completions in a CompletionView.
|
"""Completer which manages completions in a CompletionView.
|
||||||
|
|
||||||
Attributes:
|
Attributes:
|
||||||
view: The CompletionView associated with this completer.
|
|
||||||
ignore_change: Whether to ignore the next completion update.
|
ignore_change: Whether to ignore the next completion update.
|
||||||
_models: dict of available completion models.
|
_models: dict of available completion models.
|
||||||
|
|
||||||
@ -48,9 +47,8 @@ class Completer(QObject):
|
|||||||
|
|
||||||
change_completed_part = pyqtSignal(str, bool)
|
change_completed_part = pyqtSignal(str, bool)
|
||||||
|
|
||||||
def __init__(self, view):
|
def __init__(self, parent=None):
|
||||||
super().__init__(view)
|
super().__init__()
|
||||||
self.view = view
|
|
||||||
self.ignore_change = False
|
self.ignore_change = False
|
||||||
|
|
||||||
self._models = {
|
self._models = {
|
||||||
@ -63,6 +61,10 @@ class Completer(QObject):
|
|||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return '<{}>'.format(self.__class__.__name__)
|
return '<{}>'.format(self.__class__.__name__)
|
||||||
|
|
||||||
|
def _model(self):
|
||||||
|
"""Convienience method to get the current completion model."""
|
||||||
|
return objreg.get('completion').model()
|
||||||
|
|
||||||
def _init_static_completions(self):
|
def _init_static_completions(self):
|
||||||
"""Initialize the static completion models."""
|
"""Initialize the static completion models."""
|
||||||
self._models[usertypes.Completion.command] = CFM(
|
self._models[usertypes.Completion.command] = CFM(
|
||||||
@ -165,7 +167,7 @@ class Completer(QObject):
|
|||||||
indexes = selected.indexes()
|
indexes = selected.indexes()
|
||||||
if not indexes:
|
if not indexes:
|
||||||
return
|
return
|
||||||
model = self.view.model()
|
model = self._model()
|
||||||
data = model.data(indexes[0])
|
data = model.data(indexes[0])
|
||||||
if data is None:
|
if data is None:
|
||||||
return
|
return
|
||||||
@ -193,36 +195,38 @@ class Completer(QObject):
|
|||||||
log.completion.debug("Ignoring completion update")
|
log.completion.debug("Ignoring completion update")
|
||||||
return
|
return
|
||||||
|
|
||||||
|
completion = objreg.get('completion')
|
||||||
|
|
||||||
if prefix != ':':
|
if prefix != ':':
|
||||||
# This is a search or gibberish, so we don't need to complete
|
# This is a search or gibberish, so we don't need to complete
|
||||||
# anything (yet)
|
# anything (yet)
|
||||||
# FIXME complete searchs
|
# FIXME complete searchs
|
||||||
self.view.hide()
|
completion.hide()
|
||||||
return
|
return
|
||||||
|
|
||||||
model = self._get_new_completion(parts, cursor_part)
|
model = self._get_new_completion(parts, cursor_part)
|
||||||
|
|
||||||
if model != self.view.model():
|
if model != self._model():
|
||||||
if model is None:
|
if model is None:
|
||||||
self.view.hide()
|
completion.hide()
|
||||||
else:
|
else:
|
||||||
self.view.set_model(model)
|
completion.set_model(model)
|
||||||
|
|
||||||
if model is None:
|
if model is None:
|
||||||
log.completion.debug("No completion model for {}.".format(parts))
|
log.completion.debug("No completion model for {}.".format(parts))
|
||||||
return
|
return
|
||||||
|
|
||||||
pattern = parts[cursor_part] if parts else ''
|
pattern = parts[cursor_part] if parts else ''
|
||||||
self.view.model().set_pattern(pattern)
|
self._model().set_pattern(pattern)
|
||||||
|
|
||||||
log.completion.debug(
|
log.completion.debug(
|
||||||
"New completion for {}: {}, with pattern '{}'".format(
|
"New completion for {}: {}, with pattern '{}'".format(
|
||||||
parts, model.srcmodel.__class__.__name__, pattern))
|
parts, model.srcmodel.__class__.__name__, pattern))
|
||||||
|
|
||||||
if self.view.model().count() == 0:
|
if self._model().count() == 0:
|
||||||
self.view.hide()
|
completion.hide()
|
||||||
return
|
return
|
||||||
|
|
||||||
self.view.model().mark_all_items(pattern)
|
self._model().mark_all_items(pattern)
|
||||||
if self.view.enabled:
|
if completion.enabled:
|
||||||
self.view.show()
|
completion.show()
|
||||||
|
@ -91,7 +91,8 @@ class CompletionView(QTreeView):
|
|||||||
|
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
super().__init__(parent)
|
super().__init__(parent)
|
||||||
completer_obj = completer.Completer(self)
|
objreg.register('completion', self)
|
||||||
|
completer_obj = completer.Completer()
|
||||||
objreg.register('completer', completer_obj)
|
objreg.register('completer', completer_obj)
|
||||||
self.enabled = config.get('completion', 'show')
|
self.enabled = config.get('completion', 'show')
|
||||||
|
|
||||||
|
@ -87,7 +87,6 @@ class MainWindow(QWidget):
|
|||||||
self._vbox.addWidget(self._tabbed_browser)
|
self._vbox.addWidget(self._tabbed_browser)
|
||||||
|
|
||||||
self._completion = completion.CompletionView(self)
|
self._completion = completion.CompletionView(self)
|
||||||
objreg.register('completion', self._completion)
|
|
||||||
|
|
||||||
self.status = bar.StatusBar()
|
self.status = bar.StatusBar()
|
||||||
self._vbox.addWidget(self.status)
|
self._vbox.addWidget(self.status)
|
||||||
|
Loading…
Reference in New Issue
Block a user