Merge branch 'acogneau-separate_completion_filters'

This commit is contained in:
Florian Bruhin 2015-08-22 23:05:50 +02:00
commit c18b68ac99
6 changed files with 22 additions and 33 deletions

View File

@ -141,9 +141,9 @@ Contributors, sorted by the number of commits in descending order:
* Joel Torstensson * Joel Torstensson
* Claude * Claude
* Lamar Pavel * Lamar Pavel
* Alexander Cogneau
* Austin Anderson * Austin Anderson
* Artur Shaik * Artur Shaik
* Alexander Cogneau
* ZDarian * ZDarian
* Peter Vilim * Peter Vilim
* John ShaggyTwoDope Jenkins * John ShaggyTwoDope Jenkins

View File

@ -24,7 +24,7 @@ from PyQt5.QtCore import pyqtSignal, pyqtSlot, QObject, QTimer
from qutebrowser.config import config from qutebrowser.config import config
from qutebrowser.commands import cmdexc, cmdutils, runners from qutebrowser.commands import cmdexc, cmdutils, runners
from qutebrowser.utils import usertypes, log, objreg, utils from qutebrowser.utils import usertypes, log, objreg, utils
from qutebrowser.completion.models import instances from qutebrowser.completion.models import instances, sortfilter
class Completer(QObject): class Completer(QObject):
@ -153,7 +153,7 @@ class Completer(QObject):
model = None model = None
else: else:
model = instances.get(completion) model = instances.get(completion)
return model return sortfilter.CompletionFilterModel(source=model, parent=self)
def _filter_cmdline_parts(self, parts, cursor_part): def _filter_cmdline_parts(self, parts, cursor_part):
"""Filter a list of commandline parts to exclude flags. """Filter a list of commandline parts to exclude flags.
@ -202,7 +202,8 @@ class Completer(QObject):
"{}".format(parts, cursor_part)) "{}".format(parts, cursor_part))
if cursor_part == 0: if cursor_part == 0:
# '|' or 'set|' # '|' or 'set|'
return instances.get(usertypes.Completion.command) model = instances.get(usertypes.Completion.command)
return sortfilter.CompletionFilterModel(source=model, parent=self)
# delegate completion to command # delegate completion to command
try: try:
completions = cmdutils.cmd_dict[parts[0]].completion completions = cmdutils.cmd_dict[parts[0]].completion

View File

@ -43,9 +43,11 @@ class BaseCompletionModel(QStandardItemModel):
Class Attributes: Class Attributes:
COLUMN_WIDTHS: The width percentages of the columns used in the COLUMN_WIDTHS: The width percentages of the columns used in the
completion view. completion view.
DUMB_SORT: the dumb sorting used by the model
""" """
COLUMN_WIDTHS = (30, 70, 0) COLUMN_WIDTHS = (30, 70, 0)
DUMB_SORT = None
def __init__(self, parent=None): def __init__(self, parent=None):
super().__init__(parent) super().__init__(parent)

View File

@ -27,10 +27,9 @@ Module attributes:
import functools import functools
from PyQt5.QtCore import pyqtSlot, Qt from PyQt5.QtCore import pyqtSlot
from qutebrowser.completion.models import miscmodels, urlmodel, configmodel from qutebrowser.completion.models import miscmodels, urlmodel, configmodel
from qutebrowser.completion.models.sortfilter import CompletionFilterModel
from qutebrowser.utils import objreg, usertypes, log, debug from qutebrowser.utils import objreg, usertypes, log, debug
from qutebrowser.config import configdata from qutebrowser.config import configdata
@ -38,31 +37,17 @@ from qutebrowser.config import configdata
_instances = {} _instances = {}
def _init_model(klass, *args, dumb_sort=None, **kwargs):
"""Helper to initialize a model.
Args:
klass: The class of the model to initialize.
*args: Arguments to pass to the model.
**kwargs: Keyword arguments to pass to the model.
dumb_sort: Passed to CompletionFilterModel.
"""
app = objreg.get('app')
return CompletionFilterModel(klass(*args, parent=app, **kwargs),
dumb_sort=dumb_sort, parent=app)
def _init_command_completion(): def _init_command_completion():
"""Initialize the command completion model.""" """Initialize the command completion model."""
log.completion.debug("Initializing command completion.") log.completion.debug("Initializing command completion.")
model = _init_model(miscmodels.CommandCompletionModel) model = miscmodels.CommandCompletionModel()
_instances[usertypes.Completion.command] = model _instances[usertypes.Completion.command] = model
def _init_helptopic_completion(): def _init_helptopic_completion():
"""Initialize the helptopic completion model.""" """Initialize the helptopic completion model."""
log.completion.debug("Initializing helptopic completion.") log.completion.debug("Initializing helptopic completion.")
model = _init_model(miscmodels.HelpCompletionModel) model = miscmodels.HelpCompletionModel()
_instances[usertypes.Completion.helptopic] = model _instances[usertypes.Completion.helptopic] = model
@ -70,25 +55,23 @@ def _init_url_completion():
"""Initialize the URL completion model.""" """Initialize the URL completion model."""
log.completion.debug("Initializing URL completion.") log.completion.debug("Initializing URL completion.")
with debug.log_time(log.completion, 'URL completion init'): with debug.log_time(log.completion, 'URL completion init'):
model = _init_model(urlmodel.UrlCompletionModel, model = urlmodel.UrlCompletionModel()
dumb_sort=Qt.DescendingOrder)
_instances[usertypes.Completion.url] = model _instances[usertypes.Completion.url] = model
def _init_setting_completions(): def _init_setting_completions():
"""Initialize setting completion models.""" """Initialize setting completion models."""
log.completion.debug("Initializing setting completion.") log.completion.debug("Initializing setting completion.")
_instances[usertypes.Completion.section] = _init_model( _instances[usertypes.Completion.section] = (
configmodel.SettingSectionCompletionModel) configmodel.SettingSectionCompletionModel())
_instances[usertypes.Completion.option] = {} _instances[usertypes.Completion.option] = {}
_instances[usertypes.Completion.value] = {} _instances[usertypes.Completion.value] = {}
for sectname in configdata.DATA: for sectname in configdata.DATA:
model = _init_model(configmodel.SettingOptionCompletionModel, sectname) model = configmodel.SettingOptionCompletionModel(sectname)
_instances[usertypes.Completion.option][sectname] = model _instances[usertypes.Completion.option][sectname] = model
_instances[usertypes.Completion.value][sectname] = {} _instances[usertypes.Completion.value][sectname] = {}
for opt in configdata.DATA[sectname].keys(): for opt in configdata.DATA[sectname].keys():
model = _init_model(configmodel.SettingValueCompletionModel, model = configmodel.SettingValueCompletionModel(sectname, opt)
sectname, opt)
_instances[usertypes.Completion.value][sectname][opt] = model _instances[usertypes.Completion.value][sectname][opt] = model
@ -100,7 +83,7 @@ def init_quickmark_completions():
_instances[usertypes.Completion.quickmark_by_name].deleteLater() _instances[usertypes.Completion.quickmark_by_name].deleteLater()
except KeyError: except KeyError:
pass pass
model = _init_model(miscmodels.QuickmarkCompletionModel) model = miscmodels.QuickmarkCompletionModel()
_instances[usertypes.Completion.quickmark_by_name] = model _instances[usertypes.Completion.quickmark_by_name] = model
@ -112,7 +95,7 @@ def init_bookmark_completions():
_instances[usertypes.Completion.bookmark_by_url].deleteLater() _instances[usertypes.Completion.bookmark_by_url].deleteLater()
except KeyError: except KeyError:
pass pass
model = _init_model(miscmodels.BookmarkCompletionModel) model = miscmodels.BookmarkCompletionModel()
_instances[usertypes.Completion.bookmark_by_url] = model _instances[usertypes.Completion.bookmark_by_url] = model
@ -124,7 +107,7 @@ def init_session_completion():
_instances[usertypes.Completion.sessions].deleteLater() _instances[usertypes.Completion.sessions].deleteLater()
except KeyError: except KeyError:
pass pass
model = _init_model(miscmodels.SessionCompletionModel) model = miscmodels.SessionCompletionModel()
_instances[usertypes.Completion.sessions] = model _instances[usertypes.Completion.sessions] = model

View File

@ -41,11 +41,13 @@ class CompletionFilterModel(QSortFilterProxyModel):
_sort_order: The order to use for sorting if using dumb_sort. _sort_order: The order to use for sorting if using dumb_sort.
""" """
def __init__(self, source, parent=None, *, dumb_sort=None): def __init__(self, source, parent=None):
super().__init__(parent) super().__init__(parent)
super().setSourceModel(source) super().setSourceModel(source)
self.srcmodel = source self.srcmodel = source
self.pattern = '' self.pattern = ''
dumb_sort = self.srcmodel.DUMB_SORT
if dumb_sort is None: if dumb_sort is None:
# pylint: disable=invalid-name # pylint: disable=invalid-name
self.lessThan = self.intelligentLessThan self.lessThan = self.intelligentLessThan

View File

@ -41,6 +41,7 @@ class UrlCompletionModel(base.BaseCompletionModel):
TIME_COLUMN = 2 TIME_COLUMN = 2
COLUMN_WIDTHS = (40, 50, 10) COLUMN_WIDTHS = (40, 50, 10)
DUMB_SORT = Qt.DescendingOrder
def __init__(self, parent=None): def __init__(self, parent=None):
super().__init__(parent) super().__init__(parent)