From 6a5c9ba138787984bbe91b8806793728861e48fb Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Wed, 24 Sep 2014 20:43:03 +0200 Subject: [PATCH] Use object registry for CompletionView. --- qutebrowser/utils/completer.py | 34 +++++++++++++++++-------------- qutebrowser/widgets/completion.py | 3 ++- qutebrowser/widgets/mainwindow.py | 1 - 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/qutebrowser/utils/completer.py b/qutebrowser/utils/completer.py index 748d3d38d..2b8a1dc27 100644 --- a/qutebrowser/utils/completer.py +++ b/qutebrowser/utils/completer.py @@ -33,7 +33,6 @@ class Completer(QObject): """Completer which manages completions in a CompletionView. Attributes: - view: The CompletionView associated with this completer. ignore_change: Whether to ignore the next completion update. _models: dict of available completion models. @@ -48,9 +47,8 @@ class Completer(QObject): change_completed_part = pyqtSignal(str, bool) - def __init__(self, view): - super().__init__(view) - self.view = view + def __init__(self, parent=None): + super().__init__() self.ignore_change = False self._models = { @@ -63,6 +61,10 @@ class Completer(QObject): def __repr__(self): 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): """Initialize the static completion models.""" self._models[usertypes.Completion.command] = CFM( @@ -165,7 +167,7 @@ class Completer(QObject): indexes = selected.indexes() if not indexes: return - model = self.view.model() + model = self._model() data = model.data(indexes[0]) if data is None: return @@ -193,36 +195,38 @@ class Completer(QObject): log.completion.debug("Ignoring completion update") return + completion = objreg.get('completion') + if prefix != ':': # This is a search or gibberish, so we don't need to complete # anything (yet) # FIXME complete searchs - self.view.hide() + completion.hide() return model = self._get_new_completion(parts, cursor_part) - if model != self.view.model(): + if model != self._model(): if model is None: - self.view.hide() + completion.hide() else: - self.view.set_model(model) + completion.set_model(model) if model is None: log.completion.debug("No completion model for {}.".format(parts)) return pattern = parts[cursor_part] if parts else '' - self.view.model().set_pattern(pattern) + self._model().set_pattern(pattern) log.completion.debug( "New completion for {}: {}, with pattern '{}'".format( parts, model.srcmodel.__class__.__name__, pattern)) - if self.view.model().count() == 0: - self.view.hide() + if self._model().count() == 0: + completion.hide() return - self.view.model().mark_all_items(pattern) - if self.view.enabled: - self.view.show() + self._model().mark_all_items(pattern) + if completion.enabled: + completion.show() diff --git a/qutebrowser/widgets/completion.py b/qutebrowser/widgets/completion.py index 5a237a824..8a3b9a28a 100644 --- a/qutebrowser/widgets/completion.py +++ b/qutebrowser/widgets/completion.py @@ -91,7 +91,8 @@ class CompletionView(QTreeView): def __init__(self, parent=None): super().__init__(parent) - completer_obj = completer.Completer(self) + objreg.register('completion', self) + completer_obj = completer.Completer() objreg.register('completer', completer_obj) self.enabled = config.get('completion', 'show') diff --git a/qutebrowser/widgets/mainwindow.py b/qutebrowser/widgets/mainwindow.py index 3455a2e56..ddb15e002 100644 --- a/qutebrowser/widgets/mainwindow.py +++ b/qutebrowser/widgets/mainwindow.py @@ -87,7 +87,6 @@ class MainWindow(QWidget): self._vbox.addWidget(self._tabbed_browser) self._completion = completion.CompletionView(self) - objreg.register('completion', self._completion) self.status = bar.StatusBar() self._vbox.addWidget(self.status)