def __init__(self): super(FlowToolChooser, self).__init__() self._group = QButtonGroup() self._group.setExclusive(True) layout = QGridLayout() layout.setSpacing(0) layout.setContentsMargins(8, 3, 8, 3) layout.setAlignment(Qt.AlignCenter) endpointTools = map(FlowToolEndpoint, FlowBoardPainter.endpointKeys()) endpointToolCount = len(FlowBoardPainter.endpointKeys()) self._endpointButtons = [] row = 0 col = 2 for tool in endpointTools: toolButton = FlowToolButton(tool) self._endpointButtons.append(toolButton) self._group.addButton(toolButton) layout.addWidget(toolButton, row, col) col += 1 if col - 1 > endpointToolCount / 2: row += 1 col = 2 clearToolButton = FlowToolButton(FlowToolClear()) clearToolButton.setToolTip("clear") self._group.addButton(clearToolButton) layout.addWidget(clearToolButton, 0, 0) clearToolButton.select() self._bridgeToolButton = FlowToolButton(FlowToolBridge()) self._bridgeToolButton.setToolTip("bridge") self._group.addButton(self._bridgeToolButton) layout.addWidget(self._bridgeToolButton, 1, 1) self._blockToolButton = FlowToolButton(FlowToolBlock()) self._blockToolButton.setToolTip("blockage") self._group.addButton(self._blockToolButton) layout.addWidget(self._blockToolButton, 1, 0) self.setLayout(layout)
def stepEndpointSelection(self, forward=True): if isinstance(self.selected, FlowToolEndpoint): keys = FlowBoardPainter.endpointKeys() i = keys.index(self.selected.endpointKey) i = (i + (1 if forward else -1)) % len(keys) self.selectEndpoint(keys[i])