adding renaming of individual items and tree branches

This commit is contained in:
Damien Elmes 2011-03-29 14:24:16 +09:00
parent d923753c4d
commit b6ff15b062

View file

@ -5,7 +5,7 @@
from PyQt4.QtCore import * from PyQt4.QtCore import *
from PyQt4.QtGui import * from PyQt4.QtGui import *
import aqt import aqt
from aqt.utils import showInfo from aqt.utils import showInfo, getOnlyText
COLNAME = 0 COLNAME = 0
COLCHECK = 1 COLCHECK = 1
@ -24,24 +24,28 @@ class GroupManager(QDialog):
self.addButtons() self.addButtons()
self.exec_() self.exec_()
def loadTable(self): def reload(self):
# 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 = {}
self.fullNames = {}
items = self._makeItems(grps) items = self._makeItems(grps)
self.form.tree.clear()
self.form.tree.addTopLevelItems(items) self.form.tree.addTopLevelItems(items)
# default to check column
self.form.tree.setCurrentItem(items[0], 1)
self.items = items self.items = items
self.form.tree.expandAll()
def loadTable(self):
self.reload()
# default to check column
self.form.tree.setCurrentItem(self.items[0], 1)
# config tree # 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)
h.setMovable(False) h.setMovable(False)
self.form.tree.setIndentation(15) self.form.tree.setIndentation(15)
self.form.tree.expandAll()
def addButtons(self): def addButtons(self):
box = self.form.buttonBox box = self.form.buttonBox
@ -55,6 +59,7 @@ class GroupManager(QDialog):
# selection # selection
button(_("Select &All"), self.onSelectAll) button(_("Select &All"), self.onSelectAll)
button(_("Select &None"), self.onSelectNone) button(_("Select &None"), self.onSelectNone)
button(_("&Rename..."), self.onRename)
button(_("&Config..."), self.onEdit) button(_("&Config..."), self.onEdit)
self.connect(box, self.connect(box,
SIGNAL("helpRequested()"), SIGNAL("helpRequested()"),
@ -77,6 +82,32 @@ class GroupManager(QDialog):
for i in self.items: for i in self.items:
i.setCheckState(COLCHECK, Qt.Unchecked) i.setCheckState(COLCHECK, Qt.Unchecked)
def onRename(self):
item = self.form.tree.currentItem()
old = unicode(item.text(0))
oldfull = self.fullNames[old]
gid = self.groupMap[old]
# if not gid:
# showInfo(_("Selected item is not a group."))
# return
txt = getOnlyText(_("Rename to:"), self, default=oldfull)
if txt and not txt.startswith("::") and not txt.endswith("::"):
self._rename(oldfull, txt, gid, item)
def _rename(self, old, txt, gid, item):
def updateChild(item):
cold = unicode(item.text(0))
gid = self.groupMap[cold]
cnew = self.fullNames[cold].replace(old, txt)
if gid:
self.mw.deck.db.execute(
"update groups set name = ? where id = ?",
cnew, gid)
for i in range(item.childCount()):
updateChild(item.child(i))
updateChild(item)
self.reload()
def onEdit(self): def onEdit(self):
gids = [] gids = []
for item in self.form.tree.selectedItems(): for item in self.form.tree.selectedItems():
@ -118,7 +149,7 @@ class GroupManager(QDialog):
for gid in self.mw.deck.qconf['groups']: for gid in self.mw.deck.qconf['groups']:
on[gid] = True on[gid] = True
grey = QBrush(QColor(GREY)) grey = QBrush(QColor(GREY))
def makeItems(grp): def makeItems(grp, head=""):
branch = QTreeWidgetItem() branch = QTreeWidgetItem()
branch.setFlags( branch.setFlags(
Qt.ItemIsUserCheckable|Qt.ItemIsEnabled|Qt.ItemIsSelectable| Qt.ItemIsUserCheckable|Qt.ItemIsEnabled|Qt.ItemIsSelectable|
@ -135,11 +166,12 @@ class GroupManager(QDialog):
branch.setText(COLDUE, str(grp[3])) branch.setText(COLDUE, str(grp[3]))
branch.setText(COLNEW, str(grp[4])) branch.setText(COLNEW, str(grp[4]))
self.groupMap[grp[0]] = grp[1] self.groupMap[grp[0]] = grp[1]
self.fullNames[grp[0]] = head+grp[0]
if grp[1]: if grp[1]:
self.gidCount += 1 self.gidCount += 1
if grp[5]: if grp[5]:
for c in grp[5]: for c in grp[5]:
branch.addChild(makeItems(c)) branch.addChild(makeItems(c, head+grp[0]+"::"))
return branch return branch
top = [makeItems(g) for g in grps] top = [makeItems(g) for g in grps]
return top return top