From 055d34176027c4ffdd179af8c96bf8a5450527c6 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Wed, 4 Jun 2014 07:11:20 +0200 Subject: [PATCH] Make it possible to explicitely sort categories --- qutebrowser/models/basecompletion.py | 5 ++++- qutebrowser/models/completion.py | 4 ++-- qutebrowser/models/completionfilter.py | 7 +++++++ 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/qutebrowser/models/basecompletion.py b/qutebrowser/models/basecompletion.py index b6e6f95b7..3138badf1 100644 --- a/qutebrowser/models/basecompletion.py +++ b/qutebrowser/models/basecompletion.py @@ -82,16 +82,19 @@ class BaseCompletionModel(QStandardItemModel): marks = self._get_marks(needle, haystack) self.setData(index, marks, Role.marks) - def new_category(self, name): + def new_category(self, name, sort=None): """Add a new category to the model. Args: name: The name of the category to add. + sort: The value to use for the sort role. Return: The created QStandardItem. """ cat = QStandardItem(name) + if sort is not None: + cat.setData(sort, Role.sort) self.appendRow(cat) return cat diff --git a/qutebrowser/models/completion.py b/qutebrowser/models/completion.py index 9f356f838..0958b4dba 100644 --- a/qutebrowser/models/completion.py +++ b/qutebrowser/models/completion.py @@ -89,7 +89,7 @@ class SettingValueCompletionModel(BaseCompletionModel): def __init__(self, section, option=None, parent=None): super().__init__(parent) - cur_cat = self.new_category("Current") + cur_cat = self.new_category("Current", sort=0) value = config.get(section, option, raw=True) if not value: value = '""' @@ -104,7 +104,7 @@ class SettingValueCompletionModel(BaseCompletionModel): # Different type for each value (KeyValue) vals = configdata.DATA[section][option].typ.complete() if vals is not None: - cat = self.new_category("Allowed") + cat = self.new_category("Allowed", sort=1) for (val, desc) in vals: self.new_item(cat, val, desc) diff --git a/qutebrowser/models/completionfilter.py b/qutebrowser/models/completionfilter.py index 58f1056af..f3011365a 100644 --- a/qutebrowser/models/completionfilter.py +++ b/qutebrowser/models/completionfilter.py @@ -23,6 +23,7 @@ Contains: from PyQt5.QtCore import QSortFilterProxyModel, QModelIndex +from qutebrowser.models.basecompletion import Role from qutebrowser.utils.log import completion as logger @@ -146,6 +147,12 @@ class CompletionFilterModel(QSortFilterProxyModel): Return: True if left < right, else False """ + left_sort = self.srcmodel.data(lindex, role=Role.sort) + right_sort = self.srcmodel.data(rindex, role=Role.sort) + + if left_sort is not None and right_sort is not None: + return left_sort < right_sort + left = self.srcmodel.data(lindex) right = self.srcmodel.data(rindex)