Merge branch 'acogneau-separate_completion_filters'
This commit is contained in:
commit
c18b68ac99
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
|
Loading…
Reference in New Issue
Block a user