def updateView(self): if self.editorSession: log.info("Updating button with %s", self.blocks) layout = self.layout() if self._viewWidget: layout.removeWidget(self._viewWidget) self._viewWidget = BlockTypesItemWidget(self, self.blocks, self.editorSession.textureAtlas) layout.addWidget(self._viewWidget) assert isinstance(layout, QtGui.QLayout) self.setMinimumHeight(self._viewWidget.sizeHint().height())
def updateView(self): if self.editorSession: log.info("Updating button with %s", self.blocks) layout = self.layout() if self._viewWidget: layout.removeWidget(self._viewWidget) self._viewWidget = BlockTypesItemWidget(self, self.blocks, self.editorSession.textureAtlas) layout.addWidget(self._viewWidget) assert isinstance(layout, QtGui.QLayout) self.setMinimumHeight(self._viewWidget.sizeHint().height())
class BlockTypeButton(QtGui.QPushButton): def __init__(self, *args, **kwargs): self.multipleSelect = kwargs.pop('multipleSelect', False) super(BlockTypeButton, self).__init__(*args, **kwargs) self._blocks = [] self.clicked.connect(self.showPicker) self.picker = BlockTypePicker(self.multipleSelect) self.setLayout(QtGui.QStackedLayout()) self._viewWidget = None self.setSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Fixed) blocksChanged = QtCore.Signal(list) _editorSession = None @property def editorSession(self): return self._editorSession @editorSession.setter def editorSession(self, editorSession): """ :type editorSession: mcedit2.editorsession.EditorSession """ self._editorSession = editorSession self.picker.textureAtlas = editorSession.textureAtlas editorSession.configuredBlocksChanged.connect(self.configuredBlocksDidChange) self.updateView() def configuredBlocksDidChange(self): self.picker.textureAtlas = self.editorSession.textureAtlas self.updateView() def updateView(self): if self.editorSession: log.info("Updating button with %s", self.blocks) layout = self.layout() if self._viewWidget: layout.removeWidget(self._viewWidget) self._viewWidget = BlockTypesItemWidget(self, self.blocks, self.editorSession.textureAtlas) layout.addWidget(self._viewWidget) assert isinstance(layout, QtGui.QLayout) self.setMinimumHeight(self._viewWidget.sizeHint().height()) @property def block(self): return self._blocks[0] if len(self._blocks) else None @block.setter def block(self, value): self.blocks = [value] @property def blocks(self): return self._blocks @blocks.setter def blocks(self, value): value = [self.editorSession.worldEditor.blocktypes[block] if not isinstance(block, BlockType) else block for block in value] old = self._blocks self._blocks = value if old != value: self.blocksChanged.emit(value) self.updateView() def showPicker(self): self.picker.selectedBlocks = self.blocks if self.picker.exec_(): self.blocks = self.picker.selectedBlocks log.info("Picked block %s", self.block)
class BlockTypeButton(QtGui.QPushButton): def __init__(self, *args, **kwargs): self.multipleSelect = kwargs.pop('multipleSelect', False) super(BlockTypeButton, self).__init__(*args, **kwargs) self._blocks = [] self.clicked.connect(self.showPicker) self.picker = BlockTypePicker(self.multipleSelect) self.setLayout(QtGui.QStackedLayout()) self._viewWidget = None self.setSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Fixed) blocksChanged = QtCore.Signal(list) _editorSession = None @property def editorSession(self): return self._editorSession @editorSession.setter def editorSession(self, editorSession): """ :type editorSession: mcedit2.editorsession.EditorSession """ self._editorSession = editorSession self.picker.textureAtlas = editorSession.textureAtlas editorSession.configuredBlocksChanged.connect(self.configuredBlocksDidChange) self.updateView() def configuredBlocksDidChange(self): self.picker.textureAtlas = self.editorSession.textureAtlas self.updateView() def updateView(self): if self.editorSession: log.info("Updating button with %s", self.blocks) layout = self.layout() if self._viewWidget: layout.removeWidget(self._viewWidget) self._viewWidget = BlockTypesItemWidget(self, self.blocks, self.editorSession.textureAtlas) layout.addWidget(self._viewWidget) assert isinstance(layout, QtGui.QLayout) self.setMinimumHeight(self._viewWidget.sizeHint().height()) @property def block(self): return self._blocks[0] if len(self._blocks) else None @block.setter def block(self, value): self.blocks = [value] @property def blocks(self): return self._blocks @blocks.setter def blocks(self, value): value = [self.editorSession.worldEditor.blocktypes[block] if not isinstance(block, BlockType) else block for block in value] old = self._blocks self._blocks = value if old != value: self.blocksChanged.emit(value) self.updateView() def showPicker(self): self.picker.selectedBlocks = self.blocks if self.picker.exec_(): self.blocks = self.picker.selectedBlocks log.info("Picked block %s", self.block)