Use QSignalMapper instead of function closures for inventory slots.

This commit is contained in:
David Vierra 2015-09-16 22:06:21 -10:00
parent 17d7afaba2
commit 29c960925c

View File

@ -211,21 +211,18 @@ class InventoryView(QtGui.QWidget):
if columns:
gridLayout.addWidget(QtGui.QWidget(), 0, columns-1)
def _makeClicked(slot):
def _clicked():
self.slotClicked.emit(slot)
return _clicked
self.slots = []
self.buttonGroup = QtGui.QButtonGroup()
self.slotMapper = QtCore.QSignalMapper()
self.slotMapper.mapped[int].connect(self.slotClicked)
for (x, y, slotNumber) in slotLayout:
itemWidget = InventoryItemWidget(self, slotNumber)
itemWidget._clicked = _makeClicked(slotNumber)
self.slotWidgets[slotNumber] = itemWidget
gridLayout.addWidget(itemWidget, y, x)
itemWidget.clicked.connect(itemWidget._clicked)
itemWidget.clicked.connect(self.slotMapper.map)
self.slotMapper.setMapping(itemWidget, slotNumber)
self.slots.append(slotNumber)
self.buttonGroup.addButton(itemWidget)