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._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() self.init_quickmark_completions()
def __repr__(self): def __repr__(self):
return utils.get_repr(self) return utils.get_repr(self)
@ -74,30 +74,35 @@ 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)
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): @pyqtSlot()
def init_quickmark_completions(self):
"""Initialize quickmark completion models.""" """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) models.QuickmarkCompletionModel(self), self)
def _get_new_completion(self, parts, cursor_part): def _get_new_completion(self, parts, cursor_part):
@ -109,7 +114,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
@ -133,17 +138,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):
@ -186,11 +191,6 @@ 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()
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.

View File

@ -119,10 +119,6 @@ class MainWindow(QWidget):
config.on_change(self.resize_completion, 'completion', 'height') config.on_change(self.resize_completion, 'completion', 'height')
config.on_change(self.resize_completion, 'completion', 'shrink') 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.retranslateUi(MainWindow)
#self.tabWidget.setCurrentIndex(0) #self.tabWidget.setCurrentIndex(0)
#QtCore.QMetaObject.connectSlotsByName(MainWindow) #QtCore.QMetaObject.connectSlotsByName(MainWindow)
@ -264,6 +260,11 @@ class MainWindow(QWidget):
# downloads # downloads
tabs.start_download.connect(download_manager.fetch) 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() @pyqtSlot()
def resize_completion(self): def resize_completion(self):
"""Adjust completion according to config.""" """Adjust completion according to config."""