mirror of
https://github.com/ankitects/anki.git
synced 2025-09-21 15:32:23 -04:00
make active tags like tag dropdown in browser
This commit is contained in:
parent
d5ad53fe54
commit
8582c514aa
1 changed files with 43 additions and 10 deletions
|
@ -12,6 +12,7 @@ class ActiveTagsChooser(QDialog):
|
||||||
def __init__(self, parent):
|
def __init__(self, parent):
|
||||||
QDialog.__init__(self, parent, Qt.Window)
|
QDialog.__init__(self, parent, Qt.Window)
|
||||||
self.parent = parent
|
self.parent = parent
|
||||||
|
self.deck = self.parent.deck
|
||||||
self.dialog = ankiqt.forms.activetags.Ui_Dialog()
|
self.dialog = ankiqt.forms.activetags.Ui_Dialog()
|
||||||
self.dialog.setupUi(self)
|
self.dialog.setupUi(self)
|
||||||
self.selectAll = QPushButton(_("Select All"))
|
self.selectAll = QPushButton(_("Select All"))
|
||||||
|
@ -44,24 +45,55 @@ class ActiveTagsChooser(QDialog):
|
||||||
sm.select(sel, QItemSelectionModel.Deselect)
|
sm.select(sel, QItemSelectionModel.Deselect)
|
||||||
|
|
||||||
def rebuildTagList(self):
|
def rebuildTagList(self):
|
||||||
self.tags = self.parent.deck.allTags()
|
self.tags = self.deck.allTags()
|
||||||
self.items = []
|
self.items = []
|
||||||
self.suspended = {}
|
self.suspended = {}
|
||||||
for t in parseTags(self.parent.deck.suspended):
|
alltags = []
|
||||||
|
# get list of currently suspended
|
||||||
|
for t in parseTags(self.deck.suspended):
|
||||||
if t == "Suspended":
|
if t == "Suspended":
|
||||||
continue
|
continue
|
||||||
self.suspended[t] = 1
|
self.suspended[t] = 1
|
||||||
if t not in self.tags:
|
if t not in self.tags:
|
||||||
self.tags.append(t)
|
self.tags.append(t)
|
||||||
|
# sort and remove special 'Suspended' tag
|
||||||
self.tags.sort()
|
self.tags.sort()
|
||||||
try:
|
try:
|
||||||
self.tags.remove("Suspended")
|
self.tags.remove("Suspended")
|
||||||
except ValueError:
|
except ValueError:
|
||||||
pass
|
pass
|
||||||
|
# render models and templates
|
||||||
|
for (type, sql, icon) in (
|
||||||
|
("models", "select tags from models", "contents.png"),
|
||||||
|
("cms", "select name from cardModels", "Anki_Card.png")):
|
||||||
|
d = {}
|
||||||
|
tagss = self.deck.s.column0(sql)
|
||||||
|
for tags in tagss:
|
||||||
|
for tag in parseTags(tags):
|
||||||
|
d[tag] = 1
|
||||||
|
sortedtags = sorted(d.keys())
|
||||||
|
alltags.extend(sortedtags)
|
||||||
|
icon = QIcon(":/icons/" + icon)
|
||||||
|
for t in sortedtags:
|
||||||
|
item = QListWidgetItem(icon, t.replace("_", " "))
|
||||||
|
self.dialog.list.addItem(item)
|
||||||
|
self.items.append(item)
|
||||||
|
idx = self.dialog.list.indexFromItem(item)
|
||||||
|
if t in self.suspended:
|
||||||
|
mode = QItemSelectionModel.Select
|
||||||
|
else:
|
||||||
|
mode = QItemSelectionModel.Deselect
|
||||||
|
self.dialog.list.selectionModel().select(idx, mode)
|
||||||
|
# remove from user tags
|
||||||
|
for tag in alltags + ["Suspended"]:
|
||||||
|
try:
|
||||||
|
self.tags.remove(tag)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
# user tags
|
||||||
|
icon = QIcon(":/icons/Anki_Fact.png")
|
||||||
for t in self.tags:
|
for t in self.tags:
|
||||||
if t == "Suspended":
|
item = QListWidgetItem(icon, t.replace("_", " "))
|
||||||
continue
|
|
||||||
item = QListWidgetItem(t, self.dialog.list)
|
|
||||||
self.dialog.list.addItem(item)
|
self.dialog.list.addItem(item)
|
||||||
self.items.append(item)
|
self.items.append(item)
|
||||||
idx = self.dialog.list.indexFromItem(item)
|
idx = self.dialog.list.indexFromItem(item)
|
||||||
|
@ -70,10 +102,11 @@ class ActiveTagsChooser(QDialog):
|
||||||
else:
|
else:
|
||||||
mode = QItemSelectionModel.Deselect
|
mode = QItemSelectionModel.Deselect
|
||||||
self.dialog.list.selectionModel().select(idx, mode)
|
self.dialog.list.selectionModel().select(idx, mode)
|
||||||
|
self.tags = alltags + self.tags
|
||||||
|
|
||||||
def accept(self):
|
def accept(self):
|
||||||
self.hide()
|
self.hide()
|
||||||
self.parent.deck.startProgress()
|
self.deck.startProgress()
|
||||||
n = 0
|
n = 0
|
||||||
suspended = []
|
suspended = []
|
||||||
for item in self.items:
|
for item in self.items:
|
||||||
|
@ -81,12 +114,12 @@ class ActiveTagsChooser(QDialog):
|
||||||
if self.dialog.list.selectionModel().isSelected(idx):
|
if self.dialog.list.selectionModel().isSelected(idx):
|
||||||
suspended.append(self.tags[n])
|
suspended.append(self.tags[n])
|
||||||
n += 1
|
n += 1
|
||||||
self.parent.deck.suspended = canonifyTags(joinTags(suspended + ["Suspended"]))
|
self.deck.suspended = canonifyTags(joinTags(suspended + ["Suspended"]))
|
||||||
self.parent.deck.setModified()
|
self.deck.setModified()
|
||||||
self.parent.deck.updateAllPriorities(partial=True)
|
self.deck.updateAllPriorities(partial=True)
|
||||||
self.parent.reset()
|
self.parent.reset()
|
||||||
saveGeom(self, "activeTags")
|
saveGeom(self, "activeTags")
|
||||||
self.parent.deck.finishProgress()
|
self.deck.finishProgress()
|
||||||
QDialog.accept(self)
|
QDialog.accept(self)
|
||||||
|
|
||||||
def onHelp(self):
|
def onHelp(self):
|
||||||
|
|
Loading…
Reference in a new issue