This commit is contained in:
Claude 2014-10-18 22:00:28 +02:00
parent afe45f9970
commit 572a9857ec
2 changed files with 26 additions and 25 deletions

View File

@ -55,13 +55,13 @@ class Completer(QObject):
self._win_id = win_id
self._ignore_change = False
self.models = {
self._models = {
usertypes.Completion.option: {},
usertypes.Completion.value: {},
}
self._init_static_completions()
self._init_setting_completions()
self._init_quickmark_completions()
self.init_quickmark_completions()
def __repr__(self):
return utils.get_repr(self)
@ -74,30 +74,35 @@ class Completer(QObject):
def _init_static_completions(self):
"""Initialize the static completion models."""
self.models[usertypes.Completion.command] = CFM(
self._models[usertypes.Completion.command] = CFM(
models.CommandCompletionModel(self), self)
self.models[usertypes.Completion.helptopic] = CFM(
self._models[usertypes.Completion.helptopic] = CFM(
models.HelpCompletionModel(self), self)
def _init_setting_completions(self):
"""Initialize setting completion models."""
self.models[usertypes.Completion.section] = CFM(
self._models[usertypes.Completion.section] = CFM(
models.SettingSectionCompletionModel(self), self)
self.models[usertypes.Completion.option] = {}
self.models[usertypes.Completion.value] = {}
self._models[usertypes.Completion.option] = {}
self._models[usertypes.Completion.value] = {}
for sectname in configdata.DATA:
model = models.SettingOptionCompletionModel(sectname, self)
self.models[usertypes.Completion.option][sectname] = CFM(
self._models[usertypes.Completion.option][sectname] = CFM(
model, self)
self.models[usertypes.Completion.value][sectname] = {}
self._models[usertypes.Completion.value][sectname] = {}
for opt in configdata.DATA[sectname].keys():
model = models.SettingValueCompletionModel(sectname, opt, self)
self.models[usertypes.Completion.value][sectname][opt] = CFM(
self._models[usertypes.Completion.value][sectname][opt] = CFM(
model, self)
def _init_quickmark_completions(self):
@pyqtSlot()
def init_quickmark_completions(self):
"""Initialize quickmark completion models."""
self.models[usertypes.Completion.quickmark] = CFM(
try:
self._models[usertypes.Completion.quickmark].deleteLater()
except KeyError:
pass
self._models[usertypes.Completion.quickmark] = CFM(
models.QuickmarkCompletionModel(self), self)
def _get_new_completion(self, parts, cursor_part):
@ -109,7 +114,7 @@ class Completer(QObject):
"""
if cursor_part == 0:
# '|' or 'set|'
return self.models[usertypes.Completion.command]
return self._models[usertypes.Completion.command]
# delegate completion to command
try:
completions = cmdutils.cmd_dict[parts[0]].completion
@ -133,17 +138,17 @@ class Completer(QObject):
', '.join(dbg_completions)))
if completion == usertypes.Completion.option:
section = parts[cursor_part - 1]
model = self.models[completion].get(section)
model = self._models[completion].get(section)
elif completion == usertypes.Completion.value:
section = parts[cursor_part - 2]
option = parts[cursor_part - 1]
try:
model = self.models[completion][section][option]
model = self._models[completion][section][option]
except KeyError:
# No completion model for this section/option.
model = None
else:
model = self.models.get(completion)
model = self._models.get(completion)
return model
def _quote(self, s):
@ -186,11 +191,6 @@ class Completer(QObject):
self._ignore_change = True
self.change_completed_part.emit(data, False)
@pyqtSlot()
def on_quickmarks_changed(self):
self.clear()
self._init_quickmark_completions()
@pyqtSlot(str, list, int)
def on_update_completion(self, prefix, parts, cursor_part):
"""Schedule updating/enabling completion.

View File

@ -119,10 +119,6 @@ class MainWindow(QWidget):
config.on_change(self.resize_completion, 'completion', 'height')
config.on_change(self.resize_completion, 'completion', 'shrink')
quickmark_model = self._get_object('completer').models[usertypes.Completion.quickmark]
quickmark_manager = objreg.get('quickmark-manager')
quickmark_manager.changed.connect(quickmark_model.srcmodel.on_quickmarks_changed)
#self.retranslateUi(MainWindow)
#self.tabWidget.setCurrentIndex(0)
#QtCore.QMetaObject.connectSlotsByName(MainWindow)
@ -264,6 +260,11 @@ class MainWindow(QWidget):
# downloads
tabs.start_download.connect(download_manager.fetch)
# quickmark completion
completer = self._get_object('completer')
quickmark_manager = objreg.get('quickmark-manager')
quickmark_manager.changed.connect(completer.init_quickmark_completions)
@pyqtSlot()
def resize_completion(self):
"""Adjust completion according to config."""