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.QtWidgets import QStyle, QTreeView, QSizePolicy
|
||||||
from PyQt5.QtCore import pyqtSlot, pyqtSignal, Qt, QItemSelectionModel
|
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.config import config, style
|
||||||
from qutebrowser.completion import completiondelegate, completer
|
from qutebrowser.completion import completiondelegate, completer
|
||||||
from qutebrowser.utils import usertypes, qtutils, objreg, utils
|
from qutebrowser.utils import usertypes, qtutils, objreg, utils
|
||||||
@ -245,6 +245,15 @@ class CompletionView(QTreeView):
|
|||||||
"""Select the next completion item."""
|
"""Select the next completion item."""
|
||||||
self._next_prev_item(prev=False)
|
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):
|
def selectionChanged(self, selected, deselected):
|
||||||
"""Extend selectionChanged to call completers selection_changed."""
|
"""Extend selectionChanged to call completers selection_changed."""
|
||||||
super().selectionChanged(selected, deselected)
|
super().selectionChanged(selected, deselected)
|
||||||
|
@ -95,6 +95,10 @@ class BaseCompletionModel(QStandardItemModel):
|
|||||||
nameitem.setData(userdata, Role.userdata)
|
nameitem.setData(userdata, Role.userdata)
|
||||||
return nameitem, descitem, miscitem
|
return nameitem, descitem, miscitem
|
||||||
|
|
||||||
|
def delete_cur_item(self, win_id):
|
||||||
|
"""Delete the selected item."""
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
def flags(self, index):
|
def flags(self, index):
|
||||||
"""Return the item flags for index.
|
"""Return the item flags for index.
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ import datetime
|
|||||||
|
|
||||||
from PyQt5.QtCore import pyqtSlot, Qt
|
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.completion.models import base
|
||||||
from qutebrowser.config import config
|
from qutebrowser.config import config
|
||||||
|
|
||||||
@ -174,3 +174,27 @@ class UrlCompletionModel(base.BaseCompletionModel):
|
|||||||
if url_item.data(Qt.DisplayRole) == url:
|
if url_item.data(Qt.DisplayRole) == url:
|
||||||
self._bookmark_cat.removeRow(i)
|
self._bookmark_cat.removeRow(i)
|
||||||
break
|
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>']),
|
('command-history-next', ['<Ctrl-N>']),
|
||||||
('completion-item-prev', ['<Shift-Tab>', '<Up>']),
|
('completion-item-prev', ['<Shift-Tab>', '<Up>']),
|
||||||
('completion-item-next', ['<Tab>', '<Down>']),
|
('completion-item-next', ['<Tab>', '<Down>']),
|
||||||
|
('completion-item-del', ['<Ctrl-D>']),
|
||||||
('command-accept', RETURN_KEYS),
|
('command-accept', RETURN_KEYS),
|
||||||
])),
|
])),
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ from qutebrowser.keyinput import modeman, modeparsers
|
|||||||
from qutebrowser.commands import cmdexc, cmdutils
|
from qutebrowser.commands import cmdexc, cmdutils
|
||||||
from qutebrowser.misc import cmdhistory
|
from qutebrowser.misc import cmdhistory
|
||||||
from qutebrowser.misc import miscwidgets as misc
|
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):
|
class Command(misc.MinimalLineEditMixin, misc.CommandLineEdit):
|
||||||
@ -211,31 +211,7 @@ class Command(misc.MinimalLineEditMixin, misc.CommandLineEdit):
|
|||||||
e.ignore()
|
e.ignore()
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
if e.key() == Qt.Key_D and (e.modifiers() & Qt.ControlModifier ==
|
super().keyPressEvent(e)
|
||||||
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")
|
|
||||||
|
|
||||||
def sizeHint(self):
|
def sizeHint(self):
|
||||||
"""Dynamically calculate the needed size."""
|
"""Dynamically calculate the needed size."""
|
||||||
|
Loading…
Reference in New Issue
Block a user