def __init__(self, config, parent=None): super(MainWindow, self).__init__(parent) self.bbclient = BrytonClient(parent=self, server_host=config.get('server_host')) self.history_list_widget = HistoryWidget(self.bbclient, config, self) self.device_info_widget = DeviceInfoWidget(self) self.track_summary_widget = TrackSummaryWidget(self) self.track_tabs = QTabWidget(self) self.track_tabs.setMaximumWidth(200) self.track_tabs.addTab(self.history_list_widget, 'History') self.history_list_widget.currentTrackChanged.connect(self._onHistoryTrackChanged) self.bb_version = QLabel('', self) self.bb_version.setAlignment(Qt.AlignRight) self.bb_version.setContentsMargins(0, 0, 3, 0) self._createLayout() self.message_overlay = MessageWidget(self) self.message_overlay.setLoading('Connecting to BrytonBridge') self.message_overlay.retryClicked.connect(self._onRetry) self.bbclient.statusMessage.connect(self.message_overlay.setLoading) self.bbclient.connected.connect(self._onConnected) self.bbclient.deviceOffline.connect(self._onDeviceOffline) self.bbclient.deviceReady.connect(self._onDeviceReady) self.bbclient.trackListReady.connect(self._onTrackListReady) self.bbclient.error.connect(self._onError) self.bbclient.BBVersion.connect(self._onBBVersion) self.bbclient.start()
class MainWindow(QWidget): def __init__(self, config, parent=None): super(MainWindow, self).__init__(parent) self.bbclient = BrytonClient(parent=self, server_host=config.get('server_host')) self.history_list_widget = HistoryWidget(self.bbclient, config, self) self.device_info_widget = DeviceInfoWidget(self) self.track_summary_widget = TrackSummaryWidget(self) self.track_tabs = QTabWidget(self) self.track_tabs.setMaximumWidth(200) self.track_tabs.addTab(self.history_list_widget, 'History') self.history_list_widget.currentTrackChanged.connect(self._onHistoryTrackChanged) self.bb_version = QLabel('', self) self.bb_version.setAlignment(Qt.AlignRight) self.bb_version.setContentsMargins(0, 0, 3, 0) self._createLayout() self.message_overlay = MessageWidget(self) self.message_overlay.setLoading('Connecting to BrytonBridge') self.message_overlay.retryClicked.connect(self._onRetry) self.bbclient.statusMessage.connect(self.message_overlay.setLoading) self.bbclient.connected.connect(self._onConnected) self.bbclient.deviceOffline.connect(self._onDeviceOffline) self.bbclient.deviceReady.connect(self._onDeviceReady) self.bbclient.trackListReady.connect(self._onTrackListReady) self.bbclient.error.connect(self._onError) self.bbclient.BBVersion.connect(self._onBBVersion) self.bbclient.start() # self.message_overlay.hide() def _onConnected(self): self.message_overlay.setMessage('Searching for device') def _onDeviceReady(self): self.device_info_widget.setDeviceInfo(self.bbclient.dev_state) self.message_overlay.hide() def _onDeviceOffline(self): self.message_overlay.setDisconnected('Please connect your device') self.message_overlay.show() def _onError(self, msg): self.message_overlay.setError(msg) self.message_overlay.retry.show() self.message_overlay.show() def _onRetry(self): self.message_overlay.retry.hide() self.bbclient.reset() self.bbclient.start() def _onBBVersion(self, version): if version in TESTED_VERSIONS: self.bb_version.hide() self.bb_version.setText('BrytonBridge version <font color="green">{}</font>'.format(version)) else: self.bb_version.show() self.bb_version.setText('BrytonBridge version <font color="red"><b>{}</b></font>'.format(version)) self.bb_version.setToolTip('You are using an untested version of BrytonBridge') def _onTrackListReady(self): self.tracks = tracks = self.bbclient.track_list self.history_list_widget.setTrackList(tracks, self.bbclient.dev_state) def _onHistoryTrackChanged(self, track): self.track_summary_widget.setTrack(track) def resizeEvent(self, event): self.message_overlay.resize(event.size()) super(MainWindow, self).resizeEvent(event) def _createLayout(self): la = QVBoxLayout() la.addWidget(self.bb_version) l = QHBoxLayout() l.addWidget(self.track_tabs, 0) v = QVBoxLayout() group = QGroupBox('Device', self) l2 = QHBoxLayout() l2.addWidget(self.device_info_widget) group.setLayout(l2) v.addWidget(group) group = QGroupBox('Track Summary', self) l2 = QHBoxLayout() l2.addWidget(self.track_summary_widget) group.setLayout(l2) v.addWidget(group, 1) l.addLayout(v, 1) la.addLayout(l) self.setLayout(la)