mirror of
https://github.com/ankitects/anki.git
synced 2025-09-21 15:32:23 -04:00
use checkmarks instead of multi selection so we don't lose keyboard focus
This commit is contained in:
parent
c8aafa7edf
commit
783d8f2a5f
2 changed files with 61 additions and 31 deletions
|
@ -6,29 +6,34 @@ from PyQt4.QtCore import *
|
||||||
from PyQt4.QtGui import *
|
from PyQt4.QtGui import *
|
||||||
import aqt
|
import aqt
|
||||||
|
|
||||||
|
COLNAME = 0
|
||||||
|
COLCHECK = 1
|
||||||
|
COLCOUNT = 2
|
||||||
|
COLDUE = 3
|
||||||
|
COLNEW = 4
|
||||||
|
|
||||||
class GroupSel(QDialog):
|
class GroupSel(QDialog):
|
||||||
def __init__(self, mw):
|
def __init__(self, mw):
|
||||||
QDialog.__init__(self, mw)
|
QDialog.__init__(self, mw)
|
||||||
self.mw = mw
|
self.mw = mw
|
||||||
self.form = aqt.forms.groupsel.Ui_Dialog()
|
self.form = aqt.forms.groupsel.Ui_Dialog()
|
||||||
self.form.setupUi(self)
|
self.form.setupUi(self)
|
||||||
self.load()
|
self.loadTable()
|
||||||
# self.connect(self.form.optionsHelpButton,
|
self.addButtons()
|
||||||
# SIGNAL("clicked()"),
|
|
||||||
# lambda: QDesktopServices.openUrl(QUrl(
|
|
||||||
# aqt.appWiki + "StudyOptions")))
|
|
||||||
self.exec_()
|
self.exec_()
|
||||||
|
|
||||||
def load(self):
|
def loadTable(self):
|
||||||
import time
|
# load the data into the tree
|
||||||
self.mw.progress.start()
|
self.mw.progress.start()
|
||||||
grps = self.mw.deck.sched.groupCountTree()
|
grps = self.mw.deck.sched.groupCountTree()
|
||||||
self.mw.progress.finish()
|
self.mw.progress.finish()
|
||||||
self._groupMap = {}
|
self._groupMap = {}
|
||||||
items = self._makeItems(grps)
|
items = self._makeItems(grps)
|
||||||
self.form.tree.addTopLevelItems(items)
|
self.form.tree.addTopLevelItems(items)
|
||||||
for item in items:
|
# default to check column
|
||||||
self._addButtons(item)
|
self.form.tree.setCurrentItem(items[0], 1)
|
||||||
|
self.items = items
|
||||||
|
# config tree
|
||||||
h = self.form.tree.header()
|
h = self.form.tree.header()
|
||||||
h.setResizeMode(QHeaderView.ResizeToContents)
|
h.setResizeMode(QHeaderView.ResizeToContents)
|
||||||
h.setResizeMode(0, QHeaderView.Stretch)
|
h.setResizeMode(0, QHeaderView.Stretch)
|
||||||
|
@ -36,26 +41,51 @@ class GroupSel(QDialog):
|
||||||
self.form.tree.setIndentation(15)
|
self.form.tree.setIndentation(15)
|
||||||
self.form.tree.expandAll()
|
self.form.tree.expandAll()
|
||||||
|
|
||||||
def _addButtons(self, item):
|
def addButtons(self):
|
||||||
gid = self._groupMap[unicode(item.text(0))]
|
box = self.form.buttonBox
|
||||||
if gid:
|
def button(name, func):
|
||||||
b = QPushButton("Edit")
|
b = box.addButton(name, QDialogButtonBox.ActionRole)
|
||||||
b.setFixedHeight(20)
|
b.connect(b, SIGNAL("clicked()"), func)
|
||||||
b.connect(b, SIGNAL("clicked()"), lambda g=gid: self._edit(gid))
|
button(_("Select &All"), self.onSelectAll)
|
||||||
self.form.tree.setItemWidget(item, 4, b)
|
button(_("Select &None"), self.onSelectNone)
|
||||||
for i in range(item.childCount()):
|
button(_("&Edit..."), self.onEdit)
|
||||||
self._addButtons(item.child(i))
|
self.connect(box,
|
||||||
|
SIGNAL("helpRequested()"),
|
||||||
|
lambda: QDesktopServices.openUrl(QUrl(
|
||||||
|
aqt.appWiki + "GroupSelection")))
|
||||||
|
|
||||||
def _edit(self, gid):
|
def onSelectAll(self):
|
||||||
|
for i in self.items:
|
||||||
|
i.setCheckState(COLCHECK, Qt.Checked)
|
||||||
|
|
||||||
|
def onSelectNone(self):
|
||||||
|
for i in self.items:
|
||||||
|
i.setCheckState(COLCHECK, Qt.Unchecked)
|
||||||
|
|
||||||
|
def onEdit(self):
|
||||||
|
item = self.form.tree.currentItem()
|
||||||
|
gid = self._groupMap[unicode(item.text(0))]
|
||||||
print "edit", gid
|
print "edit", gid
|
||||||
|
|
||||||
def _makeItems(self, grps):
|
def _makeItems(self, grps):
|
||||||
|
if not self.mw.deck.qconf['groups']:
|
||||||
|
on = None
|
||||||
|
else:
|
||||||
|
for gid in self.mw.deck.qconf['groups']:
|
||||||
|
on[gid] = True
|
||||||
def makeItems(grp):
|
def makeItems(grp):
|
||||||
branch = QTreeWidgetItem()
|
branch = QTreeWidgetItem()
|
||||||
branch.setText(0, grp[0])
|
branch.setFlags(
|
||||||
branch.setText(1, str(grp[2]))
|
Qt.ItemIsUserCheckable|Qt.ItemIsEnabled|Qt.ItemIsSelectable|
|
||||||
branch.setText(2, str(grp[3]))
|
Qt.ItemIsTristate)
|
||||||
branch.setText(3, str(grp[4]))
|
if not on or on[gid]:
|
||||||
|
branch.setCheckState(1, Qt.Checked)
|
||||||
|
else:
|
||||||
|
branch.setCheckState(1, Qt.Unchecked)
|
||||||
|
branch.setText(COLNAME, grp[0])
|
||||||
|
branch.setText(COLCOUNT, str(grp[2]))
|
||||||
|
branch.setText(COLDUE, str(grp[3]))
|
||||||
|
branch.setText(COLNEW, str(grp[4]))
|
||||||
self._groupMap[grp[0]] = grp[1]
|
self._groupMap[grp[0]] = grp[1]
|
||||||
if grp[5]:
|
if grp[5]:
|
||||||
for c in grp[5]:
|
for c in grp[5]:
|
||||||
|
|
|
@ -16,8 +16,8 @@
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QTreeWidget" name="tree">
|
<widget class="QTreeWidget" name="tree">
|
||||||
<property name="selectionMode">
|
<property name="alternatingRowColors">
|
||||||
<enum>QAbstractItemView::MultiSelection</enum>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
<attribute name="headerStretchLastSection">
|
<attribute name="headerStretchLastSection">
|
||||||
<bool>false</bool>
|
<bool>false</bool>
|
||||||
|
@ -27,6 +27,11 @@
|
||||||
<string>Group</string>
|
<string>Group</string>
|
||||||
</property>
|
</property>
|
||||||
</column>
|
</column>
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>On</string>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
<column>
|
<column>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Cards</string>
|
<string>Cards</string>
|
||||||
|
@ -42,11 +47,6 @@
|
||||||
<string>New</string>
|
<string>New</string>
|
||||||
</property>
|
</property>
|
||||||
</column>
|
</column>
|
||||||
<column>
|
|
||||||
<property name="text">
|
|
||||||
<string>Actions</string>
|
|
||||||
</property>
|
|
||||||
</column>
|
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
|
@ -55,7 +55,7 @@
|
||||||
<enum>Qt::Vertical</enum>
|
<enum>Qt::Vertical</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="standardButtons">
|
<property name="standardButtons">
|
||||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
|
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Help|QDialogButtonBox::Ok</set>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|
Loading…
Reference in a new issue