Refactored bookmark removal to use a command.
This commit is contained in:
parent
cf4b89efe3
commit
57a72a7120
@ -26,7 +26,7 @@ subclasses to provide completions.
|
||||
from PyQt5.QtWidgets import QStyle, QTreeView, QSizePolicy
|
||||
from PyQt5.QtCore import pyqtSlot, pyqtSignal, Qt, QItemSelectionModel
|
||||
|
||||
from qutebrowser.commands import cmdutils
|
||||
from qutebrowser.commands import cmdexc, cmdutils
|
||||
from qutebrowser.config import config, style
|
||||
from qutebrowser.completion import completiondelegate, completer
|
||||
from qutebrowser.utils import usertypes, qtutils, objreg, utils
|
||||
@ -245,6 +245,15 @@ class CompletionView(QTreeView):
|
||||
"""Select the next completion item."""
|
||||
self._next_prev_item(prev=False)
|
||||
|
||||
@cmdutils.register(instance='completion', hide=True,
|
||||
modes=[usertypes.KeyMode.command], scope='window')
|
||||
def completion_item_del(self):
|
||||
"""Delete the current completion item."""
|
||||
try:
|
||||
self.model().srcmodel.delete_cur_item(self._win_id)
|
||||
except NotImplementedError:
|
||||
raise cmdexc.CommandError("Cannot delete this item.")
|
||||
|
||||
def selectionChanged(self, selected, deselected):
|
||||
"""Extend selectionChanged to call completers selection_changed."""
|
||||
super().selectionChanged(selected, deselected)
|
||||
|
@ -95,6 +95,10 @@ class BaseCompletionModel(QStandardItemModel):
|
||||
nameitem.setData(userdata, Role.userdata)
|
||||
return nameitem, descitem, miscitem
|
||||
|
||||
def delete_cur_item(self, win_id):
|
||||
"""Delete the selected item."""
|
||||
raise NotImplementedError
|
||||
|
||||
def flags(self, index):
|
||||
"""Return the item flags for index.
|
||||
|
||||
|
@ -23,7 +23,7 @@ import datetime
|
||||
|
||||
from PyQt5.QtCore import pyqtSlot, Qt
|
||||
|
||||
from qutebrowser.utils import objreg, utils
|
||||
from qutebrowser.utils import message, objreg, utils
|
||||
from qutebrowser.completion.models import base
|
||||
from qutebrowser.config import config
|
||||
|
||||
@ -174,3 +174,27 @@ class UrlCompletionModel(base.BaseCompletionModel):
|
||||
if url_item.data(Qt.DisplayRole) == url:
|
||||
self._bookmark_cat.removeRow(i)
|
||||
break
|
||||
|
||||
def delete_cur_item(self, win_id):
|
||||
"""Delete the selected item.
|
||||
|
||||
Args:
|
||||
win_id: The current windows id.
|
||||
"""
|
||||
completion = objreg.get('completion', scope='window',
|
||||
window=win_id)
|
||||
index = completion.currentIndex()
|
||||
model = completion.model()
|
||||
url = model.data(index)
|
||||
category = index.parent()
|
||||
if category.isValid():
|
||||
if category.data() == 'Bookmarks':
|
||||
bookmark_manager = objreg.get('bookmark-manager')
|
||||
bookmark_manager.bookmark_del(url)
|
||||
message.info(win_id, "Bookmarks deleted")
|
||||
elif category.data() == 'Quickmarks':
|
||||
quickmark_manager = objreg.get('quickmark-manager')
|
||||
name = model.data(index.sibling(index.row(),
|
||||
index.column() + 1))
|
||||
quickmark_manager.quickmark_del(name)
|
||||
message.info(win_id, "Quickmarks deleted")
|
||||
|
@ -1280,6 +1280,7 @@ KEY_DATA = collections.OrderedDict([
|
||||
('command-history-next', ['<Ctrl-N>']),
|
||||
('completion-item-prev', ['<Shift-Tab>', '<Up>']),
|
||||
('completion-item-next', ['<Tab>', '<Down>']),
|
||||
('completion-item-del', ['<Ctrl-D>']),
|
||||
('command-accept', RETURN_KEYS),
|
||||
])),
|
||||
|
||||
|
@ -26,7 +26,7 @@ from qutebrowser.keyinput import modeman, modeparsers
|
||||
from qutebrowser.commands import cmdexc, cmdutils
|
||||
from qutebrowser.misc import cmdhistory
|
||||
from qutebrowser.misc import miscwidgets as misc
|
||||
from qutebrowser.utils import message, usertypes, log, objreg, qtutils
|
||||
from qutebrowser.utils import usertypes, log, objreg, qtutils
|
||||
|
||||
|
||||
class Command(misc.MinimalLineEditMixin, misc.CommandLineEdit):
|
||||
@ -211,31 +211,7 @@ class Command(misc.MinimalLineEditMixin, misc.CommandLineEdit):
|
||||
e.ignore()
|
||||
return
|
||||
else:
|
||||
if e.key() == Qt.Key_D and (e.modifiers() & Qt.ControlModifier ==
|
||||
Qt.ControlModifier):
|
||||
self.delete_current_item()
|
||||
else:
|
||||
super().keyPressEvent(e)
|
||||
|
||||
def delete_current_item(self):
|
||||
"""Delete the selected bookmark/quickmark."""
|
||||
completion = objreg.get('completion', scope='window',
|
||||
window=self._win_id)
|
||||
index = completion.currentIndex()
|
||||
model = completion.model()
|
||||
url = model.data(index)
|
||||
category = index.parent()
|
||||
if category.isValid():
|
||||
if category.data() == 'Bookmarks':
|
||||
bookmark_manager = objreg.get('bookmark-manager')
|
||||
bookmark_manager.bookmark_del(url)
|
||||
message.info(self._win_id, "Bookmarks deleted")
|
||||
elif category.data() == 'Quickmarks':
|
||||
quickmark_manager = objreg.get('quickmark-manager')
|
||||
name = model.data(index.sibling(index.row(),
|
||||
index.column() + 1))
|
||||
quickmark_manager.quickmark_del(name)
|
||||
message.info(self._win_id, "Quickmarks deleted")
|
||||
super().keyPressEvent(e)
|
||||
|
||||
def sizeHint(self):
|
||||
"""Dynamically calculate the needed size."""
|
||||
|
Loading…
Reference in New Issue
Block a user