Always enable spin box and live cross update of spin box and check box

This commit is contained in:
Markus Lampert
2018-12-25 18:47:48 -08:00
committed by wmayer
parent 15713186af
commit 4621584f08

View File

@@ -45,6 +45,18 @@ if False:
else:
PathLog.setLevel(PathLog.Level.INFO, PathLog.thisModule())
class _ItemDelegate(QtGui.QStyledItemDelegate):
def __init__(self, controller, parent):
self.controller = controller
QtGui.QStyledItemDelegate.__init__(self, parent)
def createEditor(self, parent, option, index):
editor = QtGui.QStyledItemDelegate.createEditor(self, parent, option, index)
if index.column() == 1:
self.controller.setupColumnEditor(index, editor)
return editor
class JobCreate:
DataObject = QtCore.Qt.ItemDataRole.UserRole
@@ -84,15 +96,16 @@ class JobCreate:
item0.setCheckable(True)
item0.setEditable(False)
item1.setEnabled(True)
item1.setEditable(True)
if base.Label in preSelected:
itemSelected = True
item0.setCheckState(QtCore.Qt.CheckState.Checked)
item1.setEnabled(True)
item1.setData(preSelected[base.Label], QtCore.Qt.EditRole)
else:
itemSelected = False
item0.setCheckState(QtCore.Qt.CheckState.Unchecked)
item1.setEnabled(False)
item1.setData(0, QtCore.Qt.EditRole)
if PathUtil.isSolid(base):
@@ -111,22 +124,23 @@ class JobCreate:
item0.setData(j.Label, QtCore.Qt.EditRole)
item0.setData(j, self.DataObject)
item0.setCheckable(True)
item0.setEditable(False)
item1.setEnabled(True)
item1.setEditable(True)
if j.Label in preSelected:
expandJobs = True
item0.setCheckState(QtCore.Qt.CheckState.Checked)
item1.setEnabled(True)
item1.setData(preSelected[j.Label], QtCore.Qt.EditRole)
else:
item0.setCheckState(QtCore.Qt.CheckState.Unchecked)
item1.setEnabled(False)
item1.setData(0, QtCore.Qt.EditRole)
self.itemsJob.appendRow([item0, item1])
self.delegate = _ItemDelegate(self, self.dialog.modelTree)
self.model = QtGui.QStandardItemModel(self.dialog)
self.model.setHorizontalHeaderLabels(['Model', 'Count'])
@@ -141,6 +155,7 @@ class JobCreate:
self.model.appendRow(self.itemsJob)
self.dialog.modelTree.setModel(self.model)
self.dialog.modelTree.setItemDelegate(self.delegate)
self.dialog.modelTree.expandAll()
self.dialog.modelTree.resizeColumnToContents(0)
self.dialog.modelTree.resizeColumnToContents(1)
@@ -164,14 +179,32 @@ class JobCreate:
item0 = self.model.itemFromIndex(topLeft)
item1 = self.model.itemFromIndex(topLeft.sibling(topLeft.row(), 1))
if item0.checkState() == QtCore.Qt.Checked:
item1.setEnabled(True)
item1.setEditable(True)
item1.setData(1, QtCore.Qt.EditRole)
if item1.data(QtCore.Qt.EditRole) == 0:
item1.setData(1, QtCore.Qt.EditRole)
else:
item1.setEnabled(False)
item1.setEditable(False)
item1.setData(0, QtCore.Qt.EditRole)
if topLeft.column() == bottomRight.column() == 1:
item0 = self.model.itemFromIndex(topLeft.sibling(topLeft.row(), 0))
item1 = self.model.itemFromIndex(topLeft)
if item1.data(QtCore.Qt.EditRole) == 0:
item0.setCheckState(QtCore.Qt.CheckState.Unchecked)
else:
item0.setCheckState(QtCore.Qt.CheckState.Checked)
def item1ValueChanged(self, v):
item0 = self.model.itemFromIndex(self.index.sibling(self.index.row(), 0))
if 0 == v:
item0.setCheckState(QtCore.Qt.CheckState.Unchecked)
else:
item0.setCheckState(QtCore.Qt.CheckState.Checked)
def setupColumnEditor(self, index, editor):
editor.setMinimum(0)
editor.setMaximum(999999)
self.index = index
editor.valueChanged.connect(self.item1ValueChanged)
def setupTemplate(self):
templateFiles = []
for path in PathPreferences.searchPaths():