Show tooltip instead of prompt for removing tags
This commit is contained in:
parent
8e9331e424
commit
186a0202ea
@ -114,6 +114,11 @@ browsing-note-deleted =
|
||||
[one] { $count } note deleted.
|
||||
*[other] { $count } notes deleted.
|
||||
}
|
||||
browsing-notes-updated =
|
||||
{ $count ->
|
||||
[one] { $count } note updated.
|
||||
*[other] { $count } notes updated.
|
||||
}
|
||||
browsing-window-title = Browse ({ $selected } of { $total } cards selected)
|
||||
browsing-sidebar-expand = Expand
|
||||
browsing-sidebar-collapse = Collapse
|
||||
@ -134,5 +139,3 @@ browsing-edited-today = Edited
|
||||
browsing-sidebar-due-today = Due
|
||||
browsing-sidebar-untagged = Untagged
|
||||
browsing-sidebar-overdue = Overdue
|
||||
browsing-sidebar-remove-tag = Are you sure you want to delete the tag “{ $name }” from { $count } notes?
|
||||
browsing-sidebar-remove-tags = Are you sure you want to delete all selected tags from { $count } notes?
|
||||
|
@ -27,6 +27,7 @@ from aqt.utils import (
|
||||
show_invalid_search_error,
|
||||
showInfo,
|
||||
showWarning,
|
||||
tooltip,
|
||||
tr,
|
||||
)
|
||||
|
||||
@ -1146,16 +1147,14 @@ class SidebarTreeView(QTreeView):
|
||||
|
||||
def _remove_tags(self, _item: SidebarItem) -> None:
|
||||
tags = self._selected_tags()
|
||||
if not self.ask_remove_tags(tags):
|
||||
return
|
||||
|
||||
def do_remove() -> None:
|
||||
self.col._backend.expunge_tags(" ".join(tags))
|
||||
return self.col._backend.expunge_tags(" ".join(tags))
|
||||
|
||||
def on_done(fut: Future) -> None:
|
||||
self.mw.requireReset(reason=ResetReason.BrowserRemoveTags, context=self)
|
||||
self.browser.model.endReset()
|
||||
fut.result()
|
||||
tooltip(tr(TR.BROWSING_NOTES_UPDATED, count=fut.result()), parent=self)
|
||||
self.refresh()
|
||||
|
||||
self.mw.checkpoint(tr(TR.ACTIONS_REMOVE_TAG))
|
||||
@ -1331,19 +1330,3 @@ class SidebarTreeView(QTreeView):
|
||||
for item in self._selected_items()
|
||||
if item.item_type == SidebarItemType.TAG
|
||||
]
|
||||
|
||||
def ask_remove_tags(self, tags: List[str]) -> bool:
|
||||
count = len(
|
||||
self.col.find_notes(
|
||||
self.col.build_search_string(
|
||||
*(SearchNode(tag=tag) for tag in tags), joiner="OR"
|
||||
)
|
||||
)
|
||||
)
|
||||
if not count:
|
||||
return True
|
||||
if len(tags) == 1:
|
||||
return askUser(
|
||||
tr(TR.BROWSING_SIDEBAR_REMOVE_TAG, name=tags[0], count=count)
|
||||
)
|
||||
return askUser(tr(TR.BROWSING_SIDEBAR_REMOVE_TAGS, count=count))
|
||||
|
@ -230,7 +230,7 @@ service BackendService {
|
||||
|
||||
rpc ClearUnusedTags(Empty) returns (Empty);
|
||||
rpc AllTags(Empty) returns (StringList);
|
||||
rpc ExpungeTags(String) returns (Empty);
|
||||
rpc ExpungeTags(String) returns (UInt32);
|
||||
rpc SetTagExpanded(SetTagExpandedIn) returns (Empty);
|
||||
rpc ClearTag(String) returns (Empty);
|
||||
rpc TagTree(Empty) returns (TagTreeNode);
|
||||
|
@ -33,6 +33,12 @@ impl From<u32> for pb::UInt32 {
|
||||
}
|
||||
}
|
||||
|
||||
impl From<usize> for pb::UInt32 {
|
||||
fn from(val: usize) -> Self {
|
||||
pb::UInt32 { val: val as u32 }
|
||||
}
|
||||
}
|
||||
|
||||
impl From<()> for pb::Empty {
|
||||
fn from(_val: ()) -> Self {
|
||||
pb::Empty {}
|
||||
|
@ -1217,10 +1217,9 @@ impl BackendService for Backend {
|
||||
})
|
||||
}
|
||||
|
||||
fn expunge_tags(&self, tags: pb::String) -> BackendResult<pb::Empty> {
|
||||
fn expunge_tags(&self, tags: pb::String) -> BackendResult<pb::UInt32> {
|
||||
self.with_col(|col| {
|
||||
col.expunge_tags(tags.val.as_str())?;
|
||||
Ok(().into())
|
||||
col.expunge_tags(tags.val.as_str()).map(Into::into)
|
||||
})
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user