updating code

according to https://github.com/The-Compiler/qutebrowser/pull/189#issuecomment-59220531
This commit is contained in:
Claude 2014-10-17 21:39:28 +02:00
parent 9613cc0eab
commit 36328a01a4
3 changed files with 29 additions and 17 deletions

View File

@ -343,6 +343,9 @@ class Application(QApplication):
self.lastWindowClosed.connect(self.shutdown) self.lastWindowClosed.connect(self.shutdown)
config_obj.style_changed.connect(style.get_stylesheet.cache_clear) config_obj.style_changed.connect(style.get_stylesheet.cache_clear)
self.focusChanged.connect(self.on_focus_changed) self.focusChanged.connect(self.on_focus_changed)
quickmark_model = objreg.get('completer').models[usertypes.Completion.quickmark]
quickmark_manager = objreg.get('quickmark-manager')
quickmark_manager.changed.connect(quickmark_model.on_quickmarks.changed)
def _get_widgets(self): def _get_widgets(self):
"""Get a string list of all widgets.""" """Get a string list of all widgets."""

View File

@ -205,7 +205,7 @@ class QuickmarkCompletionModel(basecompletion.BaseCompletionModel):
super().__init__(parent) super().__init__(parent)
qmlist = [] qmlist = []
for qm_name, qm_url in quickmarks.marks.items(): for qm_name, qm_url in objreg.get('quickmark-manager').marks.items():
qmlist.append((qm_url, qm_name)) qmlist.append((qm_url, qm_name))
cat = self.new_category("Quickmarks") cat = self.new_category("Quickmarks")

View File

@ -36,7 +36,7 @@ class Completer(QObject):
Attributes: Attributes:
_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.
_win_id: The window ID this completer is in. _win_id: The window ID this completer is in.
Signals: Signals:
@ -55,12 +55,13 @@ class Completer(QObject):
self._win_id = win_id self._win_id = win_id
self._ignore_change = False self._ignore_change = False
self._models = { self.models = {
usertypes.Completion.option: {}, usertypes.Completion.option: {},
usertypes.Completion.value: {}, usertypes.Completion.value: {},
} }
self._init_static_completions() self._init_static_completions()
self._init_setting_completions() self._init_setting_completions()
self._init_quickmark_completions()
def __repr__(self): def __repr__(self):
return utils.get_repr(self) return utils.get_repr(self)
@ -73,29 +74,32 @@ class Completer(QObject):
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(
models.CommandCompletionModel(self), self) models.CommandCompletionModel(self), self)
self._models[usertypes.Completion.helptopic] = CFM( self.models[usertypes.Completion.helptopic] = CFM(
models.HelpCompletionModel(self), self) models.HelpCompletionModel(self), self)
self._models[usertypes.Completion.quickmark] = CFM(
models.QuickmarkCompletionModel(self), self)
def _init_setting_completions(self): def _init_setting_completions(self):
"""Initialize setting completion models.""" """Initialize setting completion models."""
self._models[usertypes.Completion.section] = CFM( self.models[usertypes.Completion.section] = CFM(
models.SettingSectionCompletionModel(self), self) models.SettingSectionCompletionModel(self), self)
self._models[usertypes.Completion.option] = {} self.models[usertypes.Completion.option] = {}
self._models[usertypes.Completion.value] = {} self.models[usertypes.Completion.value] = {}
for sectname in configdata.DATA: for sectname in configdata.DATA:
model = models.SettingOptionCompletionModel(sectname, self) model = models.SettingOptionCompletionModel(sectname, self)
self._models[usertypes.Completion.option][sectname] = CFM( self.models[usertypes.Completion.option][sectname] = CFM(
model, self) model, self)
self._models[usertypes.Completion.value][sectname] = {} self.models[usertypes.Completion.value][sectname] = {}
for opt in configdata.DATA[sectname].keys(): for opt in configdata.DATA[sectname].keys():
model = models.SettingValueCompletionModel(sectname, opt, self) model = models.SettingValueCompletionModel(sectname, opt, self)
self._models[usertypes.Completion.value][sectname][opt] = CFM( self.models[usertypes.Completion.value][sectname][opt] = CFM(
model, self) model, self)
def _init_quickmark_completions(self):
"""Initialize quickmark completion models."""
self.models[usertypes.Completion.quickmark] = CFM(
models.QuickmarkCompletionModel(self), self)
def _get_new_completion(self, parts, cursor_part): def _get_new_completion(self, parts, cursor_part):
"""Get a new completion model. """Get a new completion model.
@ -105,7 +109,7 @@ class Completer(QObject):
""" """
if cursor_part == 0: if cursor_part == 0:
# '|' or 'set|' # '|' or 'set|'
return self._models[usertypes.Completion.command] return self.models[usertypes.Completion.command]
# delegate completion to command # delegate completion to command
try: try:
completions = cmdutils.cmd_dict[parts[0]].completion completions = cmdutils.cmd_dict[parts[0]].completion
@ -129,17 +133,17 @@ class Completer(QObject):
', '.join(dbg_completions))) ', '.join(dbg_completions)))
if completion == usertypes.Completion.option: if completion == usertypes.Completion.option:
section = parts[cursor_part - 1] section = parts[cursor_part - 1]
model = self._models[completion].get(section) model = self.models[completion].get(section)
elif completion == usertypes.Completion.value: elif completion == usertypes.Completion.value:
section = parts[cursor_part - 2] section = parts[cursor_part - 2]
option = parts[cursor_part - 1] option = parts[cursor_part - 1]
try: try:
model = self._models[completion][section][option] model = self.models[completion][section][option]
except KeyError: except KeyError:
# No completion model for this section/option. # No completion model for this section/option.
model = None model = None
else: else:
model = self._models.get(completion) model = self.models.get(completion)
return model return model
def _quote(self, s): def _quote(self, s):
@ -182,6 +186,11 @@ class Completer(QObject):
self._ignore_change = True self._ignore_change = True
self.change_completed_part.emit(data, False) self.change_completed_part.emit(data, False)
@pyqtSlot(str, list, int)
def on_quickmarks_changed(self):
self.clear()
self._init_quickmark_completions()
@pyqtSlot(str, list, int) @pyqtSlot(str, list, int)
def on_update_completion(self, prefix, parts, cursor_part): def on_update_completion(self, prefix, parts, cursor_part):
"""Schedule updating/enabling completion. """Schedule updating/enabling completion.