def __init__(self, switcherState, parent=None): super(OutputsGrid, self).__init__(parent) self.signalMapper = QSignalMapper(self) self.longPressSignalMapper = QSignalMapper(self) layout = QGridLayout() mainMixFrame = MainMixControl() mainMixFrame.cut.connect(self.cut.emit) mainMixFrame.take.connect(self.take.emit) layout.addWidget(mainMixFrame, 0, 0, 1, 2) self.aux_buttons = [] for idx, output in switcherState.outputs.iteritems(): ob = OutputButton(output) layout.addWidget(ob, 1 + (idx / 2), idx % 2) ob.clicked.connect(self.signalMapper.map) self.signalMapper.setMapping(ob, idx) ob.longpress.connect(self.longPressSignalMapper.map) self.longPressSignalMapper.setMapping(ob, idx) self.aux_buttons.append(ob) self.signalMapper.mapped.connect(self.registerClick) self.longPressSignalMapper.mapped.connect(self.longPress) btnAll = ExpandingButton() btnAll.setProperty("class", "mainMix") btnAll.setText("Mix to all") btnAll.clicked.connect(self.mainToAll.emit) layout.addWidget(btnAll, 4, 0) self.btnAll = ExpandingButton() self.btnAll.setText("All") self.btnAll.clicked.connect(self.all.emit) layout.addWidget(self.btnAll, 4, 1) layout.setColumnMinimumWidth(0, 100) layout.setColumnMinimumWidth(1, 100) layout.setColumnStretch(0, 1) layout.setColumnStretch(1, 1) layout.setRowStretch(0, 2) for i in range(1, 5): layout.setRowStretch(i, 1) self.setLayout(layout)
def __init__(self, parent=None): super(MainMixControl, self).__init__(parent) layout = QGridLayout() label = QLabel('Main mix', None) label.setAlignment(Qt.AlignHCenter) layout.addWidget(label, 0, 0, 1, 2) btnTake = ExpandingButton() btnTake.setProperty("class", "mainMix") btnTake.setText("Cut") btnTake.clicked.connect(self.cut.emit) layout.addWidget(btnTake, 1, 0) btnFade = ExpandingButton() btnFade.setProperty("class", "mainMix") btnFade.setText("Fade") btnFade.clicked.connect(self.take.emit) layout.addWidget(btnFade, 1, 1) self.setLayout(layout)
class OverlayControl(QWidget): def __init__(self, dsk, atem, parent=None): super(OverlayControl, self).__init__(parent) self.atem = atem self.dsk = dsk dsk.changedState.connect(self.update_from_dsk) layout = QGridLayout() lbl = QLabel("Overlay on main output:") lbl.setAlignment(Qt.AlignHCenter) layout.addWidget(lbl, 0, 0, 2, 1) self.onAirButton = ExpandingButton() self.onAirButton.setText("On Air") self.onAirButton.setCheckable(True) self.onAirButton.clicked.connect(self.setOnAir) layout.addWidget(self.onAirButton, 0, 1, 2, 1) self.autoButton = ExpandingButton() self.autoButton.setText("Auto Fade") self.autoButton.clicked.connect(self.takeAuto) layout.addWidget(self.autoButton, 2, 1, 2, 1) lblRate = QLabel("Rate:") lblRate.setAlignment(Qt.AlignHCenter | Qt.AlignBottom) layout.addWidget(lblRate, 2, 0) self.rate = FrameRateTouchSpinner() self.rate.setMinimum(1) self.rate.setMaximum(250) self.rate.setValue(25) self.rate.valueChanged.connect(self.setRate) layout.addWidget(self.rate, 3, 0) layout.setRowStretch(0, 1) layout.setRowStretch(1, 1) layout.setRowStretch(2, 1) layout.setRowStretch(3, 1) self.resetParams() self.update_from_dsk() self.setLayout(layout) def update_from_dsk(self): self.onAirButton.setChecked(self.dsk.onAir) self.onAirButton.setProperty("isLive", self.dsk.onAir) self.onAirButton.style().unpolish(self.onAirButton) self.onAirButton.style().polish(self.onAirButton) self.rate.setValue(self.dsk.rate) @with_atem def setOnAir(self): self.atem.setDSKOnAir(self.dsk.idx, self.onAirButton.isChecked()) @with_atem def takeAuto(self): self.atem.performDSKAuto(self.dsk.idx) @with_atem def setRate(self, rate): self.atem.setDSKRate(self.dsk.idx, rate) @with_atem def resetParams(self): self.atem.setDSKFillSource(self.dsk.idx, VideoSource.INPUT_5) self.atem.setDSKKeySource(self.dsk.idx, VideoSource.INPUT_5) self.atem.setDSKParams(self.dsk.idx, preMultiplied=False, gain=500, clip=210)