Revert "remove inactive tags from dialogs"

This reverts commit d2e454930d.
This commit is contained in:
Damien Elmes 2010-11-02 02:16:18 +09:00
parent a6066d5033
commit bd08dc487b
3 changed files with 65 additions and 7 deletions

View file

@ -9,11 +9,12 @@ from ankiqt.ui.utils import saveGeom, restoreGeom
class ActiveTagsChooser(QDialog):
def __init__(self, parent, active):
def __init__(self, parent, active, inactive):
QDialog.__init__(self, parent, Qt.Window)
self.parent = parent
self.deck = self.parent.deck
self.active = active
self.inactive = inactive
self.dialog = ankiqt.forms.activetags.Ui_Dialog()
self.dialog.setupUi(self)
self.connect(self.dialog.buttonBox, SIGNAL("helpRequested()"),
@ -26,9 +27,13 @@ class ActiveTagsChooser(QDialog):
self.items = []
self.suspended = {}
yes = parseTags(self.deck.getVar(self.active))
no = parseTags(self.deck.getVar(self.inactive))
yesHash = {}
noHash = {}
for y in yes:
yesHash[y] = True
for n in no:
noHash[n] = True
groupedTags = []
usertags.sort()
# render models and templates
@ -65,6 +70,16 @@ class ActiveTagsChooser(QDialog):
mode = QItemSelectionModel.Deselect
idx = self.dialog.activeList.indexFromItem(item)
self.dialog.activeList.selectionModel().select(idx, mode)
# inactive
item = QListWidgetItem(icon, t.replace("_", " "))
self.dialog.inactiveList.addItem(item)
if t in noHash:
mode = QItemSelectionModel.Select
self.dialog.inactiveCheck.setChecked(True)
else:
mode = QItemSelectionModel.Deselect
idx = self.dialog.inactiveList.indexFromItem(item)
self.dialog.inactiveList.selectionModel().select(idx, mode)
def accept(self):
self.hide()
@ -77,10 +92,20 @@ class ActiveTagsChooser(QDialog):
idx = self.dialog.activeList.indexFromItem(item)
if self.dialog.activeList.selectionModel().isSelected(idx):
yes.append(self.tags[c])
# inactive
item = self.dialog.inactiveList.item(c)
idx = self.dialog.inactiveList.indexFromItem(item)
if self.dialog.inactiveList.selectionModel().isSelected(idx):
no.append(self.tags[c])
if self.dialog.activeCheck.isChecked():
self.deck.setVar(self.active, joinTags(yes))
else:
self.deck.setVar(self.active, "")
if self.dialog.inactiveCheck.isChecked():
self.deck.setVar(self.inactive, joinTags(no))
else:
self.deck.setVar(self.inactive, "")
self.parent.reset()
saveGeom(self, "activeTags")
QDialog.accept(self)
@ -89,6 +114,6 @@ class ActiveTagsChooser(QDialog):
QDesktopServices.openUrl(QUrl(ankiqt.appWiki +
"ActiveTags"))
def show(parent, active):
at = ActiveTagsChooser(parent, active)
def show(parent, active, inactive):
at = ActiveTagsChooser(parent, active, inactive)
at.exec_()

View file

@ -1488,10 +1488,10 @@ later by using File>Close.
self.mainWin.tabWidget.setCurrentIndex(self.config['studyOptionsScreen'])
def onNewCategoriesClicked(self):
ui.activetags.show(self, "newActive")
ui.activetags.show(self, "newActive", "newInactive")
def onRevCategoriesClicked(self):
ui.activetags.show(self, "revActive")
ui.activetags.show(self, "revActive", "revInactive")
def onFailedMaxChanged(self):
try:
@ -1569,12 +1569,12 @@ later by using File>Close.
u"Show All Due Cards",
u"Show Chosen Categories"
]
if self.deck.getVar("newActive"):
if self.deck.getVar("newActive") or self.deck.getVar("newInactive"):
new = labels[1]
else:
new = labels[0]
self.mainWin.newCategoryLabel.setText(new)
if self.deck.getVar("revActive"):
if self.deck.getVar("revActive") or self.deck.getVar("revInactive"):
rev = labels[1]
else:
rev = labels[0]

View file

@ -35,6 +35,23 @@
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="inactiveCheck">
<property name="text">
<string>Hide cards with these tags:</string>
</property>
</widget>
</item>
<item>
<widget class="QListWidget" name="inactiveList">
<property name="enabled">
<bool>false</bool>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::MultiSelection</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
@ -101,5 +118,21 @@
</hint>
</hints>
</connection>
<connection>
<sender>inactiveCheck</sender>
<signal>toggled(bool)</signal>
<receiver>inactiveList</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>146</x>
<y>213</y>
</hint>
<hint type="destinationlabel">
<x>68</x>
<y>276</y>
</hint>
</hints>
</connection>
</connections>
</ui>