Example #1
0
    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()
Example #2
0
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)