def __init__(self, switcherState, parent=None): super(AllInputsPanel, self).__init__(parent) self.switcherState = switcherState self.selectedInput = None self.page = 0 self.sources = [] self.layout = QGridLayout() self.input_buttons = QButtonGroup() self.btnPageUp = ExpandingButton() self.btnPageUp.setIcon(QIcon(":icons/go-up")) self.btnPageUp.clicked.connect(lambda: self.setPage(self.page - 1)) self.layout.addWidget(self.btnPageUp, 0, 5, 3, 1) self.btnPageDown = ExpandingButton() self.btnPageDown.setIcon(QIcon(":icons/go-down")) self.btnPageDown.clicked.connect(lambda: self.setPage(self.page + 1)) self.layout.addWidget(self.btnPageDown, 3, 5, 3, 1) for col in range(5): self.layout.setColumnStretch(col, 1) for row in range(3): btn = InputButton(None) self.layout.addWidget(btn, row * 2, col, 2, 1) self.input_buttons.addButton(btn) btn.clicked.connect(self.selectInput) btn.setFixedWidth(120) self.setLayout(self.layout) self.switcherState.inputsChanged.connect(self.setSources) self.setSources() self.displayInputs()
def __init__(self, parent=None): super(TouchSpinner, self).__init__(parent) self._value = 50 self._max = 100 self._min = 0 layout = QHBoxLayout() self.btnMinus = ExpandingButton() self.btnMinus.setIcon(QIcon(":icons/list-remove")) self.btnMinus.setText("-") self.btnMinus.clicked.connect(lambda: self.setValue(self._value - 1)) layout.addWidget(self.btnMinus, 1) self.lblValue = QLabel(self.formattedValue(self._value)) self.lblValue.setAlignment(Qt.AlignHCenter) layout.addWidget(self.lblValue, 1) self.btnPlus = ExpandingButton() self.btnPlus.setIcon(QIcon(":icons/list-add")) self.btnPlus.setText("+") self.btnPlus.clicked.connect(lambda: self.setValue(self._value + 1)) layout.addWidget(self.btnPlus, 1) self.setLayout(layout)
def makeContent(self): layout = QHBoxLayout() prefs = PreferencesWidget(self.controller, self.transition) layout.addWidget(prefs, 1) rhs = QVBoxLayout() lblVersion = QLabel() lblVersion.setText("av-control version {0} (avx version {1})".format(_ui_version, _avx_version)) rhs.addWidget(lblVersion) self.lv = LogViewer(self.controller, self.mainWindow) log = ExpandingButton() log.setText("Log") log.clicked.connect(self.showLog) rhs.addWidget(log) btnQuit = ExpandingButton() btnQuit.setText("Exit AV Control") btnQuit.clicked.connect(self.mainWindow.close) rhs.addWidget(btnQuit) layout.addLayout(rhs, 1) return layout
def _welcomeAreaControls(self): def onOff(presetString): @handlePyroErrors def inner(isOn): if isOn: self.lights.activate(presetString) else: self.lights.deactivate(presetString) return inner layout = QHBoxLayout() gallery_ext = QVBoxLayout() gallery_ext.addWidget(TitleLabel("Gallery and External")) gallery = ExpandingButton() gallery.setText("Gallery") gallery.setCheckable(True) gallery.toggled.connect(onOff("St Aldate's.Welcome Area.gall on")) gallery_ext.addWidget(gallery) external = ExpandingButton() external.setText("External Lights") external.setCheckable(True) external.toggled.connect(onOff("EXTERIOR.Section Zero.ENTRA ONLY ON")) gallery_ext.addWidget(external) layout.addLayout(gallery_ext) welcomeArea = QVBoxLayout() welcomeArea.addWidget(TitleLabel("Welcome Area")) full = OptionButton() full.setText("100%") _safelyConnect(full.clicked, lambda: self.lights.activate("St Aldate's.Welcome Area.Welcome100%")) welcomeArea.addWidget(full) std = OptionButton() std.setText("70%") _safelyConnect(std.clicked, lambda: self.lights.activate("St Aldate's.Welcome Area.Welcome70%")) welcomeArea.addWidget(std) off = OptionButton() off.setText("Off") _safelyConnect(off.clicked, lambda: self.lights.activate("St Aldate's.Welcome Area.Ent&GalOFF")) welcomeArea.addWidget(off) self.welcomeArea = QButtonGroup() self.welcomeArea.addButton(full, 1) self.welcomeArea.addButton(std, 2) self.welcomeArea.addButton(off, 3) layout.addLayout(welcomeArea) return layout
def __init__(self, hyperdeck, state, mainWindow): super(RecorderClipSelectionScreen, self).__init__() self.hyperdeck = hyperdeck self.state = state self.mainWindow = mainWindow self.selected_clip = None layout = QGridLayout() lblTitle = TitleLabel("Select clip") layout.addWidget(lblTitle, 0, 0, 1, 3) self.clipTable = QTableWidget() self.clipTable.setColumnCount(2) self.clipTable.setHorizontalHeaderLabels(['ID', 'Clip name']) self.clipTable.horizontalHeader().setStretchLastSection(True) self.clipTable.setSelectionBehavior( QAbstractItemView.SelectionBehavior.SelectRows) self.clipTable.itemSelectionChanged.connect(self._onClipSelected) layout.addWidget(self.clipTable, 1, 0, 1, 3) b = ExpandingButton() b.setText("Back") b.setIcon(QIcon(":icons/go-previous")) b.setToolButtonStyle(Qt.ToolButtonStyle.ToolButtonTextBesideIcon) b.clicked.connect(mainWindow.stepBack) layout.addWidget(b, 2, 0) btnRefresh = ExpandingButton() btnRefresh.setText('Refresh') btnRefresh.setIcon(QIcon(':icons/refresh')) btnRefresh.setToolButtonStyle( Qt.ToolButtonStyle.ToolButtonTextBesideIcon) def refresh(): self.populateClipsList({}) hyperdeck.broadcastClipsList() btnRefresh.clicked.connect(refresh) layout.addWidget(btnRefresh, 2, 1) self.btnSelect = ExpandingButton() self.btnSelect.setText("Cue clip") self.btnSelect.clicked.connect(self._cueClip) layout.addWidget(self.btnSelect, 2, 2) layout.setRowStretch(0, 0) layout.setRowStretch(1, 1) layout.setRowStretch(2, 0) self.setLayout(layout) self.populateClipsList(state.clip_listing)
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 _make_button(caption, icon, onclick): b = ExpandingButton() b.setIcon(QIcon(icon)) b.setText(caption) b.setToolButtonStyle(Qt.ToolButtonStyle.ToolButtonTextUnderIcon) b.clicked.connect(onclick) return b
def __init__(self, ftb, atem, parent=None): super(FadeToBlackControl, self).__init__(parent) self.atem = atem self.ftb = ftb layout = QGridLayout() lblRate = QLabel("Rate") lblRate.setAlignment(Qt.AlignHCenter | Qt.AlignBottom) layout.addWidget(lblRate, 0, 0) self.rate = FrameRateTouchSpinner() self.rate.setValue(self.ftb.rate) layout.addWidget(self.rate, 1, 0) self.btnFade = ExpandingButton() self.btnFade.setText("Fade to Black") self.btnFade.setCheckable(True) self.btnFade.setChecked(self.ftb.active) layout.addWidget(self.btnFade, 1, 1) self.ftb.rateChanged.connect(self.rate.setValue) self.ftb.activeChanged.connect(self.btnFade.setChecked) if self.atem: self.rate.valueChanged.connect(self.atem.setFadeToBlackRate) self.btnFade.clicked.connect(self.atem.performFadeToBlack) layout.setRowStretch(0, 1) layout.setRowStretch(1, 1) self.setLayout(layout)
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 __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)
def __init__(self, parent=None): super(JoystickInvertPreference, self).__init__(parent) layout = QHBoxLayout() self._btnGroup = QButtonGroup() self.btnNormal = ExpandingButton() self.btnNormal.setText('Down') self.btnNormal.setCheckable(True) self.btnNormal.clicked.connect(self.set_preference) self._btnGroup.addButton(self.btnNormal) layout.addWidget(self.btnNormal) self.btnInvert = ExpandingButton() self.btnInvert.setText('Up') self.btnInvert.setCheckable(True) self.btnInvert.clicked.connect(self.set_preference) self._btnGroup.addButton(self.btnInvert) layout.addWidget(self.btnInvert) self.setLayout(layout) self.update_from_preferences() Preferences.subscribe(self.update_from_preferences)
def makeContent(self): layout = QHBoxLayout() # self.exposureControls = ExposureControl(self.camera) # layout.addWidget(self.exposureControls) whiteBalanceGrid = QGridLayout() wbTitle = QLabel("White Balance") wbTitle.setAlignment(Qt.AlignCenter) whiteBalanceGrid.addWidget(wbTitle, 0, 0, 1, 2) btnAuto = OptionButton() btnAuto.setText("Auto") _safelyConnect(btnAuto.clicked, self.camera.whiteBalanceAuto) whiteBalanceGrid.addWidget(btnAuto, 1, 0) btnIndoor = OptionButton() btnIndoor.setText("Indoor") _safelyConnect(btnIndoor.clicked, self.camera.whiteBalanceIndoor) whiteBalanceGrid.addWidget(btnIndoor, 2, 0) btnOutdoor = OptionButton() btnOutdoor.setText("Outdoor") _safelyConnect(btnOutdoor.clicked, self.camera.whiteBalanceOutdoor) whiteBalanceGrid.addWidget(btnOutdoor, 3, 0) btnOnePush = OptionButton() btnOnePush.setText("One Push") _safelyConnect(btnOnePush.clicked, self.camera.whiteBalanceOnePush) whiteBalanceGrid.addWidget(btnOnePush, 4, 0) btnOnePushTrigger = ExpandingButton() btnOnePushTrigger.setText("Set") _safelyConnect(btnOnePushTrigger.clicked, self.camera.whiteBalanceOnePushTrigger) btnOnePushTrigger.setEnabled(False) whiteBalanceGrid.addWidget(btnOnePushTrigger, 4, 1) self.wbOpts = QButtonGroup() self.wbOpts.addButton(btnAuto, 1) self.wbOpts.addButton(btnIndoor, 2) self.wbOpts.addButton(btnOutdoor, 3) self.wbOpts.addButton(btnOnePush, 4) self.wbOpts.buttonClicked.connect(lambda: btnOnePushTrigger.setEnabled(self.wbOpts.checkedId() == 4)) layout.addLayout(whiteBalanceGrid) return layout
def __init__(self, parent=None): super(PowerNotificationDialog, self).__init__(parent) self.setWindowFlags(Qt.Dialog | Qt.FramelessWindowHint) layout = QGridLayout() spinBox = QLabel() spinner = QMovie(":icons/spinner") spinner.start() spinBox.setMovie(spinner) layout.addWidget(spinBox, 0, 0) self.textBox = QLabel() layout.addWidget(self.textBox, 0, 1, 1, 3) btnOK = ExpandingButton() btnOK.setText("OK") btnOK.clicked.connect(self.accept) layout.addWidget(btnOK, 1, 1, 1, 2) self.setLayout(layout)
def __init__(self, title, mainWindow): super(ScreenWithBackButton, self).__init__() self.title = title self.mainWindow = mainWindow layout = QGridLayout() title = QLabel(title) title.setStyleSheet("font-size: 48px;") title.setAlignment(Qt.AlignCenter) layout.addWidget(title, 0, 0, 1, 7) layout.addLayout(self.makeContent(), 1, 0, 1, 7) b = ExpandingButton() b.setText("Back") b.setIcon(QIcon(":icons/go-previous")) b.setToolButtonStyle(Qt.ToolButtonStyle.ToolButtonTextBesideIcon) b.clicked.connect(mainWindow.stepBack) layout.addWidget(b, 2, 0, 1, 3) layout.setRowStretch(0, 1) layout.setRowStretch(1, 6) layout.setRowStretch(2, 1) self.setLayout(layout)
def makeContent(self): layout = QGridLayout() self.btnGroupSDCard = QButtonGroup() self.sdSlotMapper = QSignalMapper() for i in range(2): btn = ExpandingButton() btn.setCheckable(True) btn.setText("SD card {}".format(i + 1)) btn.clicked.connect(self.sdSlotMapper.map) self.sdSlotMapper.setMapping(btn, i + 1) self.btnGroupSDCard.addButton(btn, i) layout.addWidget(btn, 0, i) self.sdSlotMapper.mapped.connect(self.hyperdeck.selectSlot) self.btnSetPreview = ExpandingButton() self.btnSetPreview.setText("To preview") self.btnSetPreview.clicked.connect( lambda: self.atem.setPreview(VideoSource.INPUT_7)) layout.addWidget(self.btnSetPreview, 0, 4) btnClearPeaks = ExpandingButton() btnClearPeaks.setText("Clear VU peaks") btnClearPeaks.clicked.connect(self.atem.resetAudioMixerPeaks) layout.addWidget(btnClearPeaks, 0, 5) self.btnGroupTransportMode = QButtonGroup() self.btnPlaybackMode = ExpandingButton() self.btnPlaybackMode.setCheckable(True) self.btnPlaybackMode.setChecked(True) self.btnPlaybackMode.setText("Playback mode") self.btnGroupTransportMode.addButton(self.btnPlaybackMode) self.btnPlaybackMode.clicked.connect( lambda: self._setRecordMode(False)) layout.addWidget(self.btnPlaybackMode, 1, 1, 1, 2) self.btnRecordMode = ExpandingButton() self.btnRecordMode.setCheckable(True) self.btnRecordMode.setText("Record mode") self.btnGroupTransportMode.addButton(self.btnRecordMode) self.btnRecordMode.clicked.connect(lambda: self._setRecordMode(True)) layout.addWidget(self.btnRecordMode, 1, 3, 1, 2) self.btnSkipBack = _make_button("Back", ":icons/media-skip-backward", self.hyperdeck.prev) layout.addWidget(self.btnSkipBack, 2, 0) self.btngroup = QButtonGroup() self.btnPlay = _make_button("Play", ":icons/media-playback-start", self.hyperdeck.play) self.btnPlay.setCheckable(True) self.btngroup.addButton(self.btnPlay) layout.addWidget(self.btnPlay, 2, 1) self.btnLoopPlay = _make_button("Loop", ":icons/media-playback-loop", lambda: self.hyperdeck.play(loop=True)) layout.addWidget(self.btnLoopPlay, 2, 2) self.btnSkipForward = _make_button("Forward", ":icons/media-skip-forward", self.hyperdeck.next) layout.addWidget(self.btnSkipForward, 2, 3) self.btnStop = _make_button("Stop", ":icons/media-playback-stop", self.hyperdeck.stop) self.btnStop.setCheckable(True) self.btngroup.addButton(self.btnStop) layout.addWidget(self.btnStop, 2, 4) self.btnRecord = _make_button("Record", ":icons/media-record", self.hyperdeck.record) self.btnRecord.setCheckable(True) self.btnRecord.setEnabled(False) self.btngroup.addButton(self.btnRecord) layout.addWidget(self.btnRecord, 2, 5) self.clipSelectionScreen = RecorderClipSelectionScreen( self.hyperdeck, self.state, self.mainWindow) self.state.clipsListChange.connect( self.clipSelectionScreen.populateClipsList) self.state.transportChange.connect( self.clipSelectionScreen._updateClipSelectionFromState) self.btnChooseClip = ExpandingButton() self.btnChooseClip.setText("Select clip") self.btnChooseClip.clicked.connect(self._showClipSelection) layout.addWidget(self.btnChooseClip, 3, 1, 1, 2) layout.setRowStretch(0, 1) layout.setRowStretch(1, 1) layout.setRowStretch(2, 2) layout.setRowStretch(3, 1) return layout