def initUI(self):
        ### below commented out on 2020.2.24
        '''
        self.clientButton1chan = QtWidgets.QPushButton('Predict (EEG only)', self)
        self.clientButton1chan.setCheckable(True)
        # self.channelNumForPrediction = 1
        self.clientButton1chan.clicked.connect(self.predictionStateOnEEGonly)
        self.clientButton1chan.resize(self.clientButton1chan.sizeHint())
        self.clientButton1chan.move(5, 10)
        '''

        self.clientButton2chan = QtWidgets.QPushButton('Predict (EEG + Ch.2)', self)
        self.clientButton2chan.setCheckable(True)
        # self.channelNumForPrediction = 2
        self.clientButton2chan.clicked.connect(self.predictionStateOnEEGandCh2)
        self.clientButton2chan.resize(self.clientButton2chan.sizeHint())
        ### self.clientButton2chan.move(145, 10)
        self.clientButton2chan.move(5, 10)

        '''
        self.methodName = self.str_method_deep
        method_combobox = QtWidgets.QComboBox(self)
        method_combobox.addItem(self.str_method_deep)
        method_combobox.addItem(self.str_method_classical)
        method_combobox.addItem(self.str_method_rf)
        method_combobox.move(335, 10)
        method_combobox.activated[str].connect(self.method_choice)
        '''

        checkConnectionButton = QtWidgets.QPushButton('Check connection', self)
        checkConnectionButton.clicked.connect(self.check_connection)
        checkConnectionButton.resize(checkConnectionButton.sizeHint())
        checkConnectionButton.move(440, 10)

        '''
        self.nameLabel_eeg = QLabel(self)
        self.nameLabel_eeg.setText('EEG std:')
        self.nameLabel_eeg.move(10, 35)
        self.eeg_std = QLineEdit(self)
        self.eeg_std.move(65, 40)
        self.eeg_std.resize(30, 20)

        self.nameLabel_ch2 = QLabel(self)
        self.nameLabel_ch2.setText('Ch.2 std:')
        self.nameLabel_ch2.move(105, 35)
        self.ch2_std = QLineEdit(self)
        self.ch2_std.move(160, 40)
        self.ch2_std.resize(30, 20)
        '''

        self.nameLabel_ch2_mode_label = QLabel(self)
        self.nameLabel_ch2_mode_label.setText('Mode:')
        self.nameLabel_ch2_mode_label.move(10, 35)

        if self.params.useCh2ForReplace:
            self.ch2_mode = self.ch2_mode_str_video
        else:
            self.ch2_mode = self.ch2_mode_str_none
        self.ch2_mode_combobox = QtWidgets.QComboBox(self)
        self.ch2_mode_combobox.addItem(self.ch2_mode_str_video)
        self.ch2_mode_combobox.addItem(self.ch2_mode_str_emg)
        self.ch2_mode_combobox.addItem(self.ch2_mode_str_none)
        self.ch2_mode_combobox.move(50, 38)
        self.ch2_mode_combobox.activated[str].connect(self.ch2_mode_choice)

        self.nameLabel_ch2_thresh = QLabel(self)
        self.nameLabel_ch2_thresh.setText('Thresh for R->W:')
        self.nameLabel_ch2_thresh.move(160, 35)
        self.nameLabel_ch2_thresh.resize(125, 20)
        self.ch2_thresh = QLineEdit(self)
        self.ch2_thresh.setText(str(self.params.ch2_thresh_default))
        self.ch2_thresh.move(270, 40)
        self.ch2_thresh.resize(30, 20)

        self.ch2_thresh_slider = QSlider(Qt.Horizontal, self)
        self.ch2_thresh_slider.move(310, 35)
        self.ch2_thresh_slider.resize(220, 20)
        self.ch2_thresh_slider.setMinimum(-8)
        self.ch2_thresh_slider.setMaximum(16)
        self.ch2_thresh_slider.setValue(4)
        self.ch2_thresh_slider.setTickPosition(QSlider.TicksBelow)
        self.ch2_thresh_slider.setTickInterval(1)
        self.ch2_thresh_slider.valueChanged.connect(self.ch2_thresh_change)

        self.font = QtGui.QFont()
        self.font.setPointSize(18)
        self.font.setBold(True)
        self.font.setWeight(75)

        self.nameLabel_chi2 = QLabel(self)
        self.nameLabel_chi2.setText('KS chi2:')
        self.nameLabel_chi2.move(540, 35)
        self.nameLabel_chi2.setFont(self.font)
        self.chi2ResLabel = QLabel(self)
        self.chi2ResLabel.move(620, 35)
        self.chi2ResLabel.resize(70, 30)
        self.chi2ResLabel.setFont(self.font)

        self.dHist = DynamicGraphCanvas4KSHist(self, width=1.5, height=0.8, dpi=100)
        self.dHist.move(690, 5)

        self.dGraph = DynamicGraphCanvas4KS(self, width=4.5, height=0.8, dpi=100)
        self.dGraph.move(830, 5)

        self.nameLabel_d = QLabel(self)
        self.nameLabel_d.setText('d:')
        self.nameLabel_d.move(520, 60)
        self.nameLabel_d.setFont(self.font)
        self.dResLabel = QLabel(self)
        self.dResLabel.move(580, 60)
        self.dResLabel.resize(90, 30)
        self.dResLabel.setFont(self.font)

        self.waveRecordButton = QtWidgets.QPushButton(self.label_recordWaves, self)
        self.waveRecordButton.clicked.connect(self.toggleWaveRecord)
        self.waveRecordButton.resize(self.waveRecordButton.sizeHint())
        self.waveRecordButton.update()
        self.waveRecordButton.move(10, 60)
        self.waveRecordButton.setCheckable(True)

        self.waveNotRecordButton = QtWidgets.QPushButton(self.label_notRecordWaves, self)
        self.waveNotRecordButton.clicked.connect(self.toggleWaveNotRecord)
        self.waveNotRecordButton.resize(self.waveNotRecordButton.sizeHint())
        self.waveNotRecordButton.update()
        self.waveNotRecordButton.move(180, 60)
        self.waveNotRecordButton.setCheckable(True)
        if self.recordWaves:
            self.toggleWaveRecord()
        else:
            self.toggleWaveNotRecord()

        quitButton = QtWidgets.QPushButton('Quit Application', self)
        ### commented out on 2020.2.24
        ### quitButton.clicked.connect(self.stop_reader)
        quitButton.clicked.connect(QtCore.QCoreApplication.instance().quit)
        quitButton.resize(quitButton.sizeHint())
        quitButton.move(350, 60)

        self.listOfPredictionResults = []
        self.listOfGraphs = []
        self.listOfGraphs.append([])
        self.listOfGraphs.append([])

        for graphID in range(self.graphNum):

            self.listOfPredictionResults.append(PredictionResultLabel(self))
            predXLoc = (graphID * 300) + 110
            predYLoc = 100
            self.listOfPredictionResults[graphID].move(predXLoc, predYLoc)

            xLoc = (graphID * 300) + 10
            for chanID in range(2):
                yLoc = (chanID * 200) + 140
                self.listOfGraphs[chanID].append(DynamicGraphCanvas(self, width=3, height=2, dpi=100))
                self.listOfGraphs[chanID][graphID].move(xLoc, yLoc)

        self.setWindowTitle('Sleep Staging')
        xSize = self.graphNum * 310
        self.resize(xSize, 600)
        self.show()
        self.activateWindow()
        statusbar = self.statusBar()
        self.readFromDaq = False
        try:
            if len(args) > 5:
                print('Too many arquments for running app.py.')
                quit()
            self.sleepTime = float(args[4]) if len(args) > 4 else self.defaultSleepTime
            self.offsetWindowID = int(args[3]) if len(args) > 3 else 0
            self.inputFileID = args[2] if len(args) > 2 else self.randomlySelectInputFileID()
            if len(args) > 1:
                classifierID = args[1]
                if classifierID == 'm':
                    classifierID = self.randomlySelectClassifierID()
                self.client = ClassifierClient(self.recordWaves, self.extractorType, self.classifierType, classifierID, self.inputFileID, self.offsetWindowID)
            else:   # Neither classifierID nor inputFileID are specified.
                self.readFromDaq = True
                classifierID = self.randomlySelectClassifierID()
                print('Data is read from DAQ. classifier ID is randomly selected.')
                self.client = ClassifierClient(self.recordWaves, self.extractorType, self.classifierType, classifierID)
            self.client.hasGUI = True
        except Exception as e:
            print('Exception in self.client = ...')
            statusbar.showMessage(str(e))
            raise e
Exemple #2
0
    def reset_canvas_action(self):
        self.item_cnt = 0
        self.statusBar().showMessage('重置画布')

        dialog = QDialog()
        dialog.setWindowTitle('重置画布')
        formlayout = QFormLayout(dialog)
        box1 = QSpinBox(dialog)
        box1.setRange(100, 1000)
        box1.setSingleStep(1)
        box1.setValue(self.w)
        slider1 = QSlider(Qt.Horizontal)
        slider1.setRange(100, 1000)
        slider1.setSingleStep(1)
        slider1.setValue(self.w)
        slider1.setTickPosition(QSlider.TicksBelow)
        slider1.setTickInterval(100)
        box2 = QSpinBox(dialog)
        box2.setRange(100, 1000)
        box2.setSingleStep(1)
        box2.setValue(self.h)
        slider2 = QSlider(Qt.Horizontal)
        slider2.setRange(100, 1000)
        slider2.setSingleStep(1)
        slider2.setValue(self.h)
        slider2.setTickPosition(QSlider.TicksBelow)
        slider2.setTickInterval(100)
        slider1.valueChanged.connect(box1.setValue)
        box1.valueChanged.connect(slider1.setValue)
        slider2.valueChanged.connect(box2.setValue)
        box2.valueChanged.connect(slider2.setValue)
        formlayout.addRow('Width:', box1)
        formlayout.addRow(slider1)
        formlayout.addRow('Height:', box2)
        formlayout.addRow(slider2)

        box3 = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel)
        box3.accepted.connect(dialog.accept)
        box3.rejected.connect(dialog.reject)
        formlayout.addRow(box3)

        if dialog.exec():
            if (box1.value() < 100 or box1.value() > 1000 or box2.value() < 100
                    or box2.value() > 1000):
                QMessageBox.about(self, "提示", "修改失败,请保证输入的数字大于等于100小于等于1000")
            else:
                self.w = box1.value()
                self.h = box2.value()
            self.canvas_widget.clear_canvas()
            self.list_widget.clearSelection()
            self.canvas_widget.clear_selection()
            self.list_widget.clear()
            self.scene = QGraphicsScene(self)
            self.scene.setSceneRect(0, 0, self.w, self.h)
            self.canvas_widget.resize(self.w, self.h)
            self.canvas_widget.setFixedSize(self.w, self.h)
            self.statusBar().showMessage('空闲')
            self.setMaximumHeight(self.h)
            self.setMaximumWidth(self.w)
            self.resize(self.w, self.h)
            self.canvas_widget.undo_num = 0
            self.canvas_widget.undo_save = []
Exemple #3
0
    def InitWindowGrid(self):

        self.timer = QTimer(self)
        self.timer.setSingleShot(False)
        self.timer.setInterval(constants.DEF_TIMEOUT / 100)
        self.timer.timeout.connect(self.signal)

        h_layout_main = QHBoxLayout()
        h_right_layout = QHBoxLayout()
        v_right_layout = QVBoxLayout() # правый макет с элементами управления

        start_button = QPushButton('Start', self)
        start_button.clicked.connect(self.start_timer)

        stop_button = QPushButton('Stop', self)
        stop_button.clicked.connect(self.stop_timer)

        h_right_layout.addWidget(start_button)
        h_right_layout.addWidget(stop_button)

        gr_layout = QGridLayout()
        gr_layout.setSpacing(20)
        gr_layout.addWidget(QWidget())

        self.lcd = QLabel(f'Кол-во эл.: {self.count_bar_items}', self)
        self.lcd.setStyleSheet('color: white')

        self.lb_speed = QLabel(f'Шаг каждые: {constants.DEF_TIMEOUT / 1000}(мс)')
        self.lb_speed.setStyleSheet('color: white')

        sld = QSlider(Qt.Horizontal, self)
        sld.valueChanged.connect(self.slider_value_changed)
        sld.setMinimum(1)
        sld.setMaximum(1000)
        sld.setSingleStep(1)
        sld.setValue(100)

        sld_speed = QSlider(Qt.Horizontal, self)
        sld_speed.valueChanged.connect(self.set_timer_interval)
        sld_speed.setMinimum(1)
        sld_speed.setMaximum(100000)
        sld_speed.setSingleStep(1)
        sld_speed.setValue(constants.DEF_TIMEOUT)

        v_right_layout.addLayout(h_right_layout)
        v_right_layout.addWidget(self.lcd)
        v_right_layout.addWidget(sld)

        q_grid_boxes = QGridLayout()
        row, col = 0, 0
        for i, sub_class in enumerate(self.get_alghoritms()):
            ch_box = QCheckBox(sub_class.NAME, self)
            ch_box.setStyleSheet('color: white')
            self.selected_algh[sub_class.NAME] = False
            ch_box.stateChanged.connect(self.add_q_box_signal(i, sub_class.NAME))

            if col >= 2:
                row += 1
                col = 0
            q_grid_boxes.addWidget(ch_box, row, col)
            col += 1

        v_right_layout.addLayout(q_grid_boxes)
        v_right_layout.addWidget(self.lb_speed)
        v_right_layout.addWidget(sld_speed)
        v_right_layout.addWidget(QWidget(), 5)


        h_layout_main.addLayout(gr_layout, 5)
        h_layout_main.addLayout(v_right_layout, 1)

        widget = QWidget()
        palette = widget.palette()
        widget.setAutoFillBackground(True)
        palette.setColor(widget.backgroundRole(), Qt.black)
        widget.setPalette(palette)
        widget.setLayout(h_layout_main)
        self.main_layout = gr_layout
        self.setCentralWidget(widget)
Exemple #4
0
    def initUI(self):
        self.setWindowTitle('test')
        window_width = GetSystemMetrics(0)
        window_height = GetSystemMetrics(1)
        self.resize(0.7 * window_width, 0.7 * window_height)
        self.center()
        self.setWindowIcon(QIcon('Icon.png'))

        #inits
        self.openDirectoryDialog = ""
        self.data = np.empty(shape=(1, 2), dtype=np.float)
        self.setMinimumSize(QSize(640, 480))
        self.setWindowTitle("Регрессионный анализ одномерных данных")
        centralWidget = QWidget(self)
        self.setCentralWidget(centralWidget)

        #Exit on menubar
        exitAct = QAction('&Exit', self)
        exitAct.setShortcut('Ctrl+Q')
        exitAct.setStatusTip('Exit applicatiion')
        exitAct.triggered.connect(qApp.quit)

        #Open on menubar
        openAct = QAction('&Open', self)
        openAct.setShortcut('Ctrl+O')
        openAct.setStatusTip('Open Directory')
        openAct.triggered.connect(self.openFile)
        openAct.triggered.connect(lambda: plotCan.plot_loaded(self.data))

        #menubar
        menubar = self.menuBar()
        fileMenu = menubar.addMenu('&File')
        fileMenu.addAction(exitAct)
        fileMenu.addAction(openAct)

        #Central
        #centralwidget = QWidget(self)
        #self.setCentralWidget(centralwidget)

        #Grid
        #grid = QGridLayout(centralwidget)
        #self.setLayout(grid)

        #Plot
        plotCan = PlotCanvas(self, width=10.88, height=7.48)
        #grid.addWidget(plotCan, 0,1)
        plotCan.move(250, 0)

        self.pc = PlotCanvas(self, width=10.88, height=7.48)
        self.pc.move(250, 0)
        #Закон распределения СВ
        self.label_4 = QtWidgets.QLabel(self)
        self.label_4.setGeometry(QtCore.QRect(10, 475, 110, 25))
        self.label_4.setText("Выбор закона СВ")
        #Закон распределения СВ
        self.comboBox = QtWidgets.QComboBox(self)
        self.comboBox.setGeometry(QtCore.QRect(10, 500, 110, 25))
        self.comboBox.addItems([
            'Нормальный',
            'Равномерный',
        ])
        self.comboBox.activated[str].connect(self.rename_sv_params)
        #self.comboBox.activated[str].connect(self.show_params)

        #Способ добавления СВ
        self.label = QtWidgets.QLabel(self)
        self.label.setGeometry(QtCore.QRect(130, 475, 110, 25))
        self.label.setText("Способ доб. СВ")
        #Способ добавления СВ
        self.comboBox2 = QtWidgets.QComboBox(self)
        self.comboBox2.setGeometry(QtCore.QRect(130, 500, 110, 25))
        self.comboBox2.addItems(['None', 'Additive', 'Multiplicative'])
        #self.comboBox2.activated[str].connect(self.show_params)
        #parameter1 СВ
        self.doubleSpinBox = QtWidgets.QDoubleSpinBox(self)
        self.doubleSpinBox.setGeometry(QtCore.QRect(45, 530, 75, 25))
        self.doubleSpinBox.setSingleStep(0.01)
        #parameter1 СВ
        self.label_2 = QtWidgets.QLabel(self)
        self.label_2.setGeometry(QtCore.QRect(10, 530, 34, 24))
        self.label_2.setText("μ")

        #parameter2 СВ
        self.doubleSpinBox_2 = QtWidgets.QDoubleSpinBox(self)
        self.doubleSpinBox_2.setGeometry(QtCore.QRect(45, 560, 75, 25))
        self.doubleSpinBox_2.setValue(1)
        self.doubleSpinBox_2.setSingleStep(0.01)
        #parameter2 СВ
        self.label_3 = QtWidgets.QLabel(self)
        self.label_3.setGeometry(QtCore.QRect(10, 560, 34, 24))
        self.label_3.setText("σ")

        self.slider = QSlider(Qt.Horizontal, self)
        self.slider.setGeometry(QtCore.QRect(150, 530, 70, 30))
        self.slider.setMinimum(0)
        self.slider.setMaximum(100)
        self.slider.setValue(90)
        self.slider.setTickPosition(QSlider.TicksBelow)
        self.slider.setTickInterval(20)

        self.label_5 = QtWidgets.QLabel(self)
        self.label_5.setGeometry(QtCore.QRect(130, 560, 120, 24))
        self.label_5.setText("Случайность: 10%")
        self.label_6 = QtWidgets.QLabel(self)
        self.label_6.setGeometry(QtCore.QRect(130, 590, 120, 24))
        self.label_6.setText("Опред-ть: 90%")
        self.slider.valueChanged.connect(self.valuechange)

        #button
        #btn = QPushButton("Load Data", self)
        #btn.move(100,200)
        #btn.setVisible(True)
        #btn.resize(btn.sizeHint())
        #grid.addWidget(btn, 1,0)
        #btn.clicked.connect(lambda: plotCan.plot(self.data)) #good

        self.btn5 = QPushButton("Построить тренд", self)
        self.btn5.move(120, 350)
        self.btn5.resize(125, 25)
        self.btn5.clicked.connect(lambda: self.pc.plot_determined(
            self.slider, self.comboBox, self.comboBox2, self.doubleSpinBox,
            self.doubleSpinBox_2, self.combo1, self.spin1, self.param1, self.
            param2, self.param3))

        self.spin1 = QSpinBox(self)
        self.spin1.move(8, 350)
        self.spin1.resize(100, 25)
        self.spin1.setRange(5, 9999)
        self.spin1.setValue(100)

        self.param1_label = QLabel(self)
        self.param1_label.move(8, 375)
        self.param1_label.setText("a")

        self.param1 = QLineEdit(self)
        self.param1.move(8, 400)
        self.param1.resize(50, 20)
        self.param1.setText('1')

        self.param2_label = QLabel(self)
        self.param2_label.move(65, 375)
        self.param2_label.setText("b")
        self.param2 = QLineEdit(self)
        self.param2.move(65, 400)
        self.param2.resize(50, 20)
        self.param2.setText('1')

        self.param3_label = QLabel(self)
        self.param3_label.move(138, 375)
        self.param3_label.setText("c")
        self.param3_label.resize(0, 0)
        self.param3 = QLineEdit(self)
        self.param3.move(138, 400)
        self.param3.resize(0, 0)
        self.param3.setText('1')

        self.combo1 = QComboBox(self)
        self.combo1.move(8, 300)
        self.combo1.resize(150, 25)
        self.combo1.addItems([
            'Линейный', 'Параболический', 'Гиперболический',
            'Экспоненциальный', 'Показательный', 'Степенной',
            'Логарифмический', 'Гармонический'
        ])
        self.combo1.activated[str].connect(self.show_params)

        #label
        self.eq_label = QLabel(self)
        self.eq_label.move(8, 30)
        #self.eq_label.setText('Fit')
        self.eq_label.setGeometry(QtCore.QRect(25, 0, 500,
                                               100))  #(x, y, width, height)
        self.eq_label.setText("y=a+b*t")

        #combobox
        self.combo = QComboBox(self)
        self.combo.move(8, 70)
        self.combo.resize(235, 25)
        self.combo.addItems([
            'Линейный', 'Параболический', 'Гиперболический',
            'Экспоненциальный', 'Показательный', 'Степенной',
            'Логарифмический', 'Гармонический'
        ])
        self.combo.activated[str].connect(self.combobox_changed)

        self.btn2 = QPushButton('Fit Regression', self)
        self.btn2.move(8, 160)
        self.btn2.resize(235, 30)
        self.btn2.setText('Оценить линейный тренд')
        self.btn2.setEnabled(False)
        self.btn2.clicked.connect(self.fit_regression)
        #self.btn2.clicked.connect(lambda: plotCan.plot(self.data))
        self.btn2.clicked.connect(lambda: self.pc.plot_fitted(
            self.estimator, self.combo, self.data))  #plot fitted

        self.btn_all = QPushButton('Всех посмотреть', self)
        self.btn_all.move(8, 200)
        self.btn_all.resize(115, 30)
        self.btn_all.setText('Всех посмотреть')
        self.btn_all.setEnabled(False)
        self.btn_all.clicked.connect(self.find_all)

        self.btn_best = QPushButton('Взять лучшую', self)
        self.btn_best.move(128, 200)
        self.btn_best.resize(115, 30)
        self.btn_best.setText('Взять лучшую')
        self.btn_best.setEnabled(False)
        self.btn_best.clicked.connect(self.find_best)

        btn3 = QPushButton('Open file', self)
        btn3.move(8, 100)
        btn3.resize(235, 30)
        #btn3.clicked.connect(lambda: plotCan.clear(self))
        btn3.clicked.connect(self.pc.clear)
        btn3.clicked.connect(self.openFile)
        #btn3.clicked.connect(lambda: plotCan.clear(self))
        btn3.clicked.connect(self.pc.clear)
        btn3.clicked.connect(lambda: self.pc.plot_loaded(self.data))
        #btn3.clicked.connect(lambda: plotCan.plot_loaded(self.data))
        #btn3.clicked.connect(self.pc.plot_loaded(data))
        #btn3.clicked.connect(lambda: plotCan.plot(self.data))

        btn4 = QPushButton('Clear', self)
        btn4.move(8, 130)
        btn4.resize(235, 30)
        #btn4.clicked.connect(lambda: plotCan.clear(self))
        btn4.clicked.connect(self.pc.clear)

        self.show()
Exemple #5
0
    def createUI(self, path, pos=[0,0]):
        # Settings
        window_gap = 25
        v_gap = 10
        title_h = 25
        img_size = [100, 100]
        img_gap = [25, 25]
        slider_h = 20
        w_size = [
            img_size[0] * 3 + window_gap * 2 + img_gap[0] * 2, 
            img_size[1] + window_gap * 3 + v_gap * 5 + slider_h * 2 + title_h * 2
        ]
        # General setup
        self._path = path
        self.setGeometry(
            pos[0] - w_size[0] / 2, pos[1] - w_size[1] / 2,
            w_size[0], w_size[1]
        )
        y = window_gap
        # Hyperion Control Title
        title_stylesheet = "font-size: 18pt;border: 0;"
        title = QLabel("Hyperion", self)
        title.setGeometry(window_gap, y, w_size[0] - window_gap * 2, title_h)
        title.setAlignment(Qt.AlignCenter)
        title.setStyleSheet(title_stylesheet)
        title.show()
        y += title_h + v_gap
        # Screen Capture Button
        self._monitor = QPushButton('', self)
        self._monitor.setIcon(QIcon(path + '/Resources/Hyperion/Monitor.png'))
        self._monitor.setIconSize(QSize(img_size[0], img_size[1]))
        self._monitor.setGeometry(window_gap, y, img_size[0], img_size[1])
        self._monitor.setStyleSheet('border: none;')
        self._monitor.clicked.connect(lambda:self.onClickMonitor()) 
        self._monitor.show()
        # Notifcations Button
        self._notifications = QPushButton('', self)
        self._notifications.setIconSize(QSize(img_size[0], img_size[1]))
        self._notifications.setGeometry(img_size[0] + window_gap + img_gap[0], y, img_size[0], img_size[1])
        self._notifications.setStyleSheet('border: none;')
        self._notifications.clicked.connect(lambda:self.onClickNotifications())
        if Hyperion().notifications:
            self._notifications.setIcon(QIcon(self._path + '/Resources/Hyperion/Bell.png'))
        else:
            self._notifications.setIcon(QIcon(self._path + '/Resources/Hyperion/Bell-crossed.png'))
        self._notifications.show()
        # Mood Lamp Button
        self._lamp = QPushButton('', self)
        self._lamp.setIcon(QIcon(path + '/Resources/Hyperion/Lamp.png'))
        self._lamp.setIconSize(QSize(img_size[0], img_size[1]))
        self._lamp.setGeometry(img_size[0] * 2 + window_gap + img_gap[0] * 2, y, img_size[0], img_size[1])
        self._lamp.setStyleSheet('border: none;')
        self._lamp.clicked.connect(lambda:self.onClickLamp())
        self._lamp.show()

        y+= img_size[1] + v_gap
        # Hyperion Brightness Control
        sliderStylesheet = (
            "QSlider{"
                "background-color: transparent;"
	            "border-style: outset;"
	            "border-radius: 15px;"
                "border: transparent;"
            "}"
            "QSlider::groove:horizontal{"
	            "height: 24px;"
	            "background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #B1B1B1, stop:1 #c4c4c4);"
	            "margin: 2px 0;"
                "border-radius:10px;"
            "}"
            "QSlider::handle:horizontal {"
                "width: 32px;"
	            "height: 32px;"
	            "margin: -5px 0px -5px 0px;"
	            "border-radius:15px;"
                "background-color:#0043a1;"
	            "border: 3px solid #0043a1;"
            "}"
        )
        self.lights_brightness_slider = QSlider(Qt.Horizontal, self)
        self.lights_brightness_slider.setFocusPolicy(Qt.NoFocus)
        self.lights_brightness_slider.setTickPosition(QSlider.NoTicks)
        self.lights_brightness_slider.setGeometry(
            window_gap, y,
            w_size[0] - window_gap * 2, window_gap
        )
        self.lights_brightness_slider.setStyleSheet(sliderStylesheet)
        self.lights_brightness_slider.setMinimum(0); self.lights_brightness_slider.setMaximum(100);
        self.lights_brightness_slider.valueChanged.connect(self.onClickSetLightsBrightness)
        self.lights_brightness_slider.setTracking(False)
        self.lights_brightness_slider.show()
        y += slider_h + window_gap
        # Monitor Control Title
        title_stylesheet = "font-size: 18pt;border: 0;"
        title = QLabel("Monitor", self)
        title.setGeometry(window_gap, y, w_size[0] - window_gap * 2, title_h)
        title.setAlignment(Qt.AlignCenter)
        title.setStyleSheet(title_stylesheet)
        title.show()
        y += title_h + v_gap
        # Monitor Brightness Control
        self.monitor_brightness_slider = QSlider(Qt.Horizontal, self)
        self.monitor_brightness_slider.setFocusPolicy(Qt.NoFocus)
        self.monitor_brightness_slider.setTickPosition(QSlider.NoTicks)
        self.monitor_brightness_slider.setGeometry(
            window_gap, y,
            w_size[0] - window_gap * 2, window_gap
        )
        self.monitor_brightness_slider.setStyleSheet(sliderStylesheet)
        self.monitor_brightness_slider.setMinimum(0); self.monitor_brightness_slider.setMaximum(100);
        self.monitor_brightness_slider.valueChanged.connect(self.onClickSetMonitorBrightness)
        self.monitor_brightness_slider.setTracking(False)
        self.monitor_brightness_slider.show()
Exemple #6
0
    def _createView(self):
        """Create the view."""
        layout = QVBoxLayout()

        self.le_league = MonitoredLineEdit()
        self.le_league.setText("League TBD")
        self.le_league.setAlignment(Qt.AlignCenter)
        self.le_league.setPlaceholderText("League TBD")
        self.le_league.textModified.connect(self.league_changed)
        policy = QSizePolicy()
        policy.setHorizontalStretch(3)
        policy.setHorizontalPolicy(QSizePolicy.Expanding)
        policy.setVerticalStretch(1)
        policy.setVerticalPolicy(QSizePolicy.Fixed)
        self.le_league.setSizePolicy(policy)
        self.le_league.setContextMenuPolicy(Qt.CustomContextMenu)
        self.le_league.customContextMenuRequested.connect(
            self.openLeagueContextMenu)

        self.le_team = [MonitoredLineEdit() for y in range(2)]
        self.le_player = [[MonitoredLineEdit() for x in range(
            self.max_no_sets)] for y in range(2)]
        self.cb_race = [[QComboBox() for x in range(self.max_no_sets)]
                        for y in range(2)]
        self.sl_score = [QSlider(Qt.Horizontal)
                         for y in range(self.max_no_sets)]
        self.le_map = [MapLineEdit() for y in range(self.max_no_sets)]
        self.label_set = [QPushButton('#{}'.format(y + 1), self)
                          for y in range(self.max_no_sets)]
        self.setContainer = [QHBoxLayout()
                             for y in range(self.max_no_sets)]

        container = QHBoxLayout()
        for team_idx in range(2):
            self.le_team[team_idx].setText("TBD")
            self.le_team[team_idx].setAlignment(
                Qt.AlignCenter)
            self.le_team[team_idx].setPlaceholderText(
                "Team " + str(team_idx + 1))
            policy = QSizePolicy()
            policy.setHorizontalStretch(4)
            policy.setHorizontalPolicy(
                QSizePolicy.Expanding)
            policy.setVerticalStretch(1)
            policy.setVerticalPolicy(QSizePolicy.Fixed)
            self.le_team[team_idx].setSizePolicy(policy)
            self.le_team[team_idx].setMinimumWidth(self.mimumLineEditWidth)
            self.le_team[team_idx].textModified.connect(
                lambda team_idx=team_idx: self.team_changed(team_idx))
            self.le_team[team_idx].setContextMenuPolicy(Qt.CustomContextMenu)
            self.le_team[team_idx].customContextMenuRequested.connect(
                lambda x, team_idx=team_idx:
                self.openTeamContextMenu(team_idx))

        self.qb_logo1 = IconPushButton()
        self.qb_logo1.setFixedWidth(self.raceWidth)
        self.qb_logo1.clicked.connect(lambda: self.parent.logoDialog(1, self))
        logo = self.controller.logoManager.getTeam1(self._ctrlID)
        self.qb_logo1.setIcon(QIcon(logo.provideQPixmap()))

        self.qb_logo2 = IconPushButton()
        self.qb_logo2.setFixedWidth(self.raceWidth)
        self.qb_logo2.clicked.connect(lambda: self.parent.logoDialog(2, self))
        logo = self.controller.logoManager.getTeam2(self._ctrlID)
        self.qb_logo2.setIcon(QIcon(logo.provideQPixmap()))

        self.sl_team = QSlider(Qt.Horizontal)
        self.sl_team.setTracking(False)
        self.sl_team.setMinimum(-1)
        self.sl_team.setMaximum(1)
        self.sl_team.setValue(0)
        self.sl_team.setTickPosition(
            QSlider.TicksBothSides)
        self.sl_team.setTickInterval(1)
        self.sl_team.valueChanged.connect(lambda x: self.sl_changed(-1, x))
        self.sl_team.setToolTip(_('Choose your team'))
        self.sl_team.setMinimumHeight(5)
        self.sl_team.setFixedWidth(self.scoreWidth)
        policy = QSizePolicy()
        policy.setHorizontalStretch(0)
        policy.setHorizontalPolicy(QSizePolicy.Fixed)
        policy.setVerticalStretch(1)
        policy.setVerticalPolicy(QSizePolicy.Fixed)
        self.sl_team.setSizePolicy(policy)

        container = QGridLayout()

        self.pb_swap = QPushButton()
        pixmap = QIcon(
            scctool.settings.getResFile('update.png'))
        self.pb_swap.setIcon(pixmap)
        self.pb_swap.clicked.connect(self.controller.swapTeams)
        self.pb_swap.setFixedWidth(self.labelWidth)
        self.pb_swap.setToolTip(_("Swap teams and logos."))
        container.addWidget(self.pb_swap, 0, 0, 2, 1)

        label = QLabel(_("League:"))
        label.setAlignment(Qt.AlignCenter)
        policy = QSizePolicy()
        policy.setHorizontalStretch(4)
        policy.setHorizontalPolicy(QSizePolicy.Expanding)
        policy.setVerticalStretch(1)
        policy.setVerticalPolicy(QSizePolicy.Fixed)
        label.setSizePolicy(policy)
        container.addWidget(label, 0, 1, 1, 1)

        label = QLabel(_('Maps \\ Teams:'))
        label.setAlignment(Qt.AlignCenter)
        policy = QSizePolicy()
        policy.setHorizontalStretch(4)
        policy.setHorizontalPolicy(QSizePolicy.Expanding)
        policy.setVerticalStretch(1)
        policy.setVerticalPolicy(QSizePolicy.Fixed)
        label.setSizePolicy(policy)
        container.addWidget(label, 1, 1, 1, 1)

        container.addWidget(self.qb_logo1, 0, 2, 2, 1)
        container.addWidget(self.le_league, 0, 3, 1, 3)
        container.addWidget(self.le_team[0], 1, 3, 1, 1)
        container.addWidget(self.sl_team, 1, 4, 1, 1)
        container.addWidget(self.le_team[1], 1, 5, 1, 1)
        container.addWidget(self.qb_logo2, 0, 6, 2, 1)

        layout.addLayout(container)

        for player_idx in range(self.max_no_sets):
            self.le_map[player_idx].textModified.connect(
                lambda player_idx=player_idx: self.map_changed(player_idx))
            for team_idx in range(2):
                self.cb_race[team_idx][player_idx].\
                    currentIndexChanged.connect(
                    lambda idx,
                    t=team_idx,
                    p=player_idx: self.race_changed(t, p))
                self.le_player[team_idx][player_idx].textModified.connect(
                    lambda t=team_idx,
                    p=player_idx: self.player_changed(t, p))
                self.le_player[team_idx][player_idx].setText("TBD")
                self.le_player[team_idx][player_idx].setAlignment(
                    Qt.AlignCenter)
                self.le_player[team_idx][player_idx].setPlaceholderText(
                    _("Player {} of team {}").format(player_idx + 1,
                                                     team_idx + 1))
                self.le_player[team_idx][player_idx].setMinimumWidth(
                    self.mimumLineEditWidth)
                self.le_player[team_idx][player_idx].setContextMenuPolicy(
                    Qt.CustomContextMenu)
                self.le_player[team_idx][player_idx].\
                    customContextMenuRequested.connect(
                    lambda x, team_idx=team_idx,
                    player_idx=player_idx:
                    self.openPlayerContextMenu(team_idx, player_idx))

                for i in range(4):
                    self.cb_race[team_idx][player_idx].addItem(
                        QIcon(scctool.settings.getResFile(
                            str(i) + ".png")), "")

                self.cb_race[team_idx][player_idx].setFixedWidth(
                    self.raceWidth)

            self.sl_score[player_idx].setMinimum(-1)
            self.sl_score[player_idx].setMaximum(1)
            self.sl_score[player_idx].setValue(0)
            self.sl_score[player_idx].setTickPosition(
                QSlider.TicksBothSides)
            self.sl_score[player_idx].setTickInterval(1)
            self.sl_score[player_idx].setTracking(False)
            self.sl_score[player_idx].valueChanged.connect(
                lambda x,
                player_idx=player_idx: self.sl_changed(player_idx, x))
            self.sl_score[player_idx].setToolTip(_('Set the score'))
            self.sl_score[player_idx].setFixedWidth(self.scoreWidth)

            self.le_map[player_idx].setText("TBD")
            self.le_map[player_idx].setAlignment(
                Qt.AlignCenter)
            self.le_map[player_idx].setPlaceholderText(
                _("Map {}").format(player_idx + 1))
            self.le_map[player_idx].setMinimumWidth(
                self.mimumLineEditWidth)

            # self.le_map[player_idx].setReadOnly(True)

            self.setContainer[player_idx] = QHBoxLayout()
            # self.label_set[player_idx].setText("#" + str(player_idx + 1))
            # self.label_set[player_idx].setAlignment(
            #    Qt.AlignCenter)
            self.label_set[player_idx].setToolTip(
                _("Select map on Mapstats Browser Source."))
            self.label_set[player_idx].setEnabled(False)
            self.label_set[player_idx].clicked.connect(
                lambda x,
                player_idx=player_idx:
                self.showMap(player_idx))
            self.label_set[player_idx].setFixedWidth(self.labelWidth)
            self.setContainer[player_idx].addWidget(
                self.label_set[player_idx], 0)
            self.setContainer[player_idx].addWidget(
                self.le_map[player_idx], 4)
            self.setContainer[player_idx].addWidget(
                self.cb_race[0][player_idx], 0)
            self.setContainer[player_idx].addWidget(
                self.le_player[0][player_idx], 4)
            self.setContainer[player_idx].addWidget(
                self.sl_score[player_idx], 0)
            self.setContainer[player_idx].addWidget(
                self.le_player[1][player_idx], 4)
            self.setContainer[player_idx].addWidget(
                self.cb_race[1][player_idx], 0)
            layout.addLayout(self.setContainer[player_idx])

        self.createVetoGroupBox()
        layout.addWidget(self.veto_groupbox)

        layout.addItem(QSpacerItem(
            0, 0, QSizePolicy.Minimum,
            QSizePolicy.Expanding))
        self.setLayout(layout)

        self.updateMapCompleters()
        self.updatePlayerCompleters()
        self.updateTeamCompleters()
Exemple #7
0
    def __init__(self, aPath, parent=None):
        super(VideoPlayer, self).__init__(parent)

        self.setAttribute(Qt.WA_NoSystemBackground, True)
        self.setAcceptDrops(True)
        self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.StreamPlayback)
        self.mediaPlayer.mediaStatusChanged.connect(self.printMediaData)
        self.mediaPlayer.setVolume(80)
        self.videoWidget = QVideoWidget(self)

        self.setAcceptDrops(True)
        self.setWindowTitle("QT5 Player")
        self.setWindowIcon(QIcon.fromTheme("multimedia-video-player"))
        self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)
        self.setGeometry(100, 300, 600, 380)
        self.setContextMenuPolicy(Qt.CustomContextMenu)
        self.customContextMenuRequested[QPoint].connect(
            self.contextMenuRequested)
        self.show()
        self.widescreen = True

        self.lbl = QLineEdit('00:00:00')
        self.lbl.setReadOnly(True)
        self.lbl.setFixedWidth(70)
        self.lbl.setUpdatesEnabled(True)
        self.lbl.setStyleSheet(stylesheet(self))

        self.elbl = QLineEdit('00:00:00')
        self.elbl.setReadOnly(True)
        self.elbl.setFixedWidth(70)
        self.elbl.setUpdatesEnabled(True)
        self.elbl.setStyleSheet(stylesheet(self))

        self.playButton = QPushButton()
        self.playButton.setEnabled(False)
        self.playButton.setFixedWidth(32)
        self.playButton.setStyleSheet("background-color: black")
        self.playButton.setIcon(self.style().standardIcon(QStyle.SP_MediaPlay))
        self.playButton.clicked.connect(self.play)

        self.positionSlider = QSlider(Qt.Horizontal, self)
        self.positionSlider.setStyleSheet(stylesheet(self))
        self.positionSlider.setRange(0, 100)
        self.positionSlider.sliderMoved.connect(self.setPosition)
        self.positionSlider.sliderMoved.connect(self.handleLabel)
        self.positionSlider.setSingleStep(2)
        self.positionSlider.setPageStep(20)
        self.positionSlider.setAttribute(Qt.WA_TranslucentBackground, True)

        self.clip = QApplication.clipboard()

        self.myurl = ""

        controlLayout = QHBoxLayout()
        controlLayout.setContentsMargins(5, 0, 5, 0)
        controlLayout.addWidget(self.playButton)
        controlLayout.addWidget(self.lbl)
        controlLayout.addWidget(self.positionSlider)
        controlLayout.addWidget(self.elbl)

        layout = QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        layout.addWidget(self.videoWidget)
        layout.addLayout(controlLayout)

        self.setLayout(layout)

        self.myinfo = "©2016\nAxel Schneider\n\nMouse Wheel = Zoom\nUP = Volume Up\nDOWN = Volume Down\n" + \
                "LEFT = < 1 Minute\nRIGHT = > 1 Minute\n" + \
                "SHIFT+LEFT = < 10 Minutes\nSHIFT+RIGHT = > 10 Minutes"

        self.widescreen = True
        self.hideSlider()

        #### shortcuts ####
        self.shortcut = QShortcut(QKeySequence("q"), self)
        self.shortcut.activated.connect(self.handleQuit)
        self.shortcut = QShortcut(QKeySequence(" "), self)
        self.shortcut.activated.connect(self.play)
        self.shortcut = QShortcut(QKeySequence("f"), self)
        self.shortcut.activated.connect(self.handleFullscreen)
        self.shortcut = QShortcut(QKeySequence("i"), self)
        self.shortcut.activated.connect(self.handleInfo)
        self.shortcut = QShortcut(QKeySequence("s"), self)
        self.shortcut.activated.connect(self.toggleSlider)
        self.shortcut = QShortcut(QKeySequence(Qt.Key_Right), self)
        self.shortcut.activated.connect(self.forwardSlider)
        self.shortcut = QShortcut(QKeySequence(Qt.Key_Left), self)
        self.shortcut.activated.connect(self.backSlider)
        self.shortcut = QShortcut(QKeySequence(Qt.Key_Up), self)
        self.shortcut.activated.connect(self.volumeUp)
        self.shortcut = QShortcut(QKeySequence(Qt.Key_Down), self)
        self.shortcut.activated.connect(self.volumeDown)
        self.shortcut = QShortcut(
            QKeySequence(Qt.ShiftModifier + Qt.Key_Right), self)
        self.shortcut.activated.connect(self.forwardSlider10)
        self.shortcut = QShortcut(QKeySequence(Qt.ShiftModifier + Qt.Key_Left),
                                  self)
        self.shortcut.activated.connect(self.backSlider10)

        self.mediaPlayer.setVideoOutput(self.videoWidget)
        self.mediaPlayer.stateChanged.connect(self.mediaStateChanged)
        self.mediaPlayer.positionChanged.connect(self.positionChanged)
        self.mediaPlayer.positionChanged.connect(self.handleLabel)
        self.mediaPlayer.durationChanged.connect(self.durationChanged)
        self.mediaPlayer.error.connect(self.handleError)

        print("QT5 Player started")
        self.suspend_screensaver()
Exemple #8
0
    def __init__(self, window, plugin, keystore, device_id):
        title = _("{} Settings").format(plugin.device)
        super(SettingsDialog, self).__init__(window, title)

        config = app_state.config
        hs_rows, hs_cols = (64, 128)

        def invoke_client(method, *args, **kw_args):
            unpair_after = kw_args.pop('unpair_after', False)

            def task():
                client = app_state.device_manager.client_by_id(device_id)
                if not client:
                    raise RuntimeError("Device not connected")
                if method:
                    getattr(client, method)(*args, **kw_args)
                if unpair_after:
                    app_state.device_manager.unpair_id(device_id)
                return client.features

            window.run_in_thread(task, on_success=update)

        def update(features):
            self.features = features
            set_label_enabled()
            bl_hash = bh2u(features.bootloader_hash)
            bl_hash = "\n".join([bl_hash[:32], bl_hash[32:]])
            noyes = [_("No"), _("Yes")]
            endis = [_("Enable Passphrases"), _("Disable Passphrases")]
            disen = [_("Disabled"), _("Enabled")]
            setchange = [_("Set a PIN"), _("Change PIN")]

            version = "%d.%d.%d" % (features.major_version,
                                    features.minor_version,
                                    features.patch_version)

            device_label.setText(features.label)
            pin_set_label.setText(noyes[features.pin_protection])
            passphrases_label.setText(disen[features.passphrase_protection])
            bl_hash_label.setText(bl_hash)
            label_edit.setText(features.label)
            device_id_label.setText(features.device_id)
            initialized_label.setText(noyes[features.initialized])
            version_label.setText(version)
            clear_pin_button.setVisible(features.pin_protection)
            clear_pin_warning.setVisible(features.pin_protection)
            pin_button.setText(setchange[features.pin_protection])
            pin_msg.setVisible(not features.pin_protection)
            passphrase_button.setText(endis[features.passphrase_protection])
            language_label.setText(features.language)

        def set_label_enabled():
            label_apply.setEnabled(label_edit.text() != self.features.label)

        def rename():
            invoke_client('change_label', label_edit.text())

        def toggle_passphrase():
            title = _("Confirm Toggle Passphrase Protection")
            currently_enabled = self.features.passphrase_protection
            if currently_enabled:
                msg = _("After disabling passphrases, you can only pair this "
                        "ElectrumSV wallet if it had an empty passphrase.  "
                        "If its passphrase was not empty, you will need to "
                        "create a new wallet with the install wizard.  You "
                        "can use this wallet again at any time by re-enabling "
                        "passphrases and entering its passphrase.")
            else:
                msg = _("Your current ElectrumSV wallet can only be used with "
                        "an empty passphrase.  You must create a separate "
                        "wallet with the install wizard for other passphrases "
                        "as each one generates a new set of addresses.")
            msg += "\n\n" + _("Are you sure you want to proceed?")
            if not self.question(msg, title=title):
                return
            invoke_client('toggle_passphrase', unpair_after=currently_enabled)

        def set_pin():
            invoke_client('set_pin', remove=False)

        def clear_pin():
            invoke_client('set_pin', remove=True)

        def wipe_device():
            wallet = window.wallet
            if wallet and sum(wallet.get_balance()):
                title = _("Confirm Device Wipe")
                msg = _("Are you SURE you want to wipe the device?\n"
                        "Your wallet still has bitcoins in it!")
                if not self.question(msg, title=title,
                                     icon=QMessageBox.Critical):
                    return
            invoke_client('wipe_device', unpair_after=True)

        def slider_moved():
            mins = timeout_slider.sliderPosition()
            timeout_minutes.setText(_("%2d minutes") % mins)

        def slider_released():
            config.set_session_timeout(timeout_slider.sliderPosition() * 60)

        # Information tab
        info_tab = QWidget()
        info_layout = QVBoxLayout(info_tab)
        info_glayout = QGridLayout()
        info_glayout.setColumnStretch(2, 1)
        device_label = QLabel()
        pin_set_label = QLabel()
        passphrases_label = QLabel()
        version_label = QLabel()
        device_id_label = QLabel()
        bl_hash_label = QLabel()
        bl_hash_label.setWordWrap(True)
        language_label = QLabel()
        initialized_label = QLabel()
        rows = [
            (_("Device Label"), device_label),
            (_("PIN set"), pin_set_label),
            (_("Passphrases"), passphrases_label),
            (_("Firmware Version"), version_label),
            (_("Device ID"), device_id_label),
            (_("Bootloader Hash"), bl_hash_label),
            (_("Language"), language_label),
            (_("Initialized"), initialized_label),
        ]
        for row_num, (label, widget) in enumerate(rows):
            info_glayout.addWidget(QLabel(label), row_num, 0)
            info_glayout.addWidget(widget, row_num, 1)
        info_layout.addLayout(info_glayout)

        # Settings tab
        settings_tab = QWidget()
        settings_layout = QVBoxLayout(settings_tab)
        settings_glayout = QGridLayout()

        # Settings tab - Label
        label_msg = QLabel(_("Name this {}.  If you have multiple devices "
                             "their labels help distinguish them.")
                           .format(plugin.device))
        label_msg.setWordWrap(True)
        label_label = QLabel(_("Device Label"))
        label_edit = QLineEdit()
        label_edit.setMinimumWidth(150)
        label_edit.setMaxLength(plugin.MAX_LABEL_LEN)
        label_apply = QPushButton(_("Apply"))
        label_apply.clicked.connect(rename)
        label_edit.textChanged.connect(set_label_enabled)
        settings_glayout.addWidget(label_label, 0, 0)
        settings_glayout.addWidget(label_edit, 0, 1, 1, 2)
        settings_glayout.addWidget(label_apply, 0, 3)
        settings_glayout.addWidget(label_msg, 1, 1, 1, -1)

        # Settings tab - PIN
        pin_label = QLabel(_("PIN Protection"))
        pin_button = QPushButton()
        pin_button.clicked.connect(set_pin)
        settings_glayout.addWidget(pin_label, 2, 0)
        settings_glayout.addWidget(pin_button, 2, 1)
        pin_msg = QLabel(_("PIN protection is strongly recommended.  "
                           "A PIN is your only protection against someone "
                           "stealing your bitcoins if they obtain physical "
                           "access to your {}.").format(plugin.device))
        pin_msg.setWordWrap(True)
        pin_msg.setStyleSheet("color: red")
        settings_glayout.addWidget(pin_msg, 3, 1, 1, -1)

        # Settings tab - Session Timeout
        timeout_label = QLabel(_("Session Timeout"))
        timeout_minutes = QLabel()
        timeout_slider = QSlider(Qt.Horizontal)
        timeout_slider.setRange(1, 60)
        timeout_slider.setSingleStep(1)
        timeout_slider.setTickInterval(5)
        timeout_slider.setTickPosition(QSlider.TicksBelow)
        timeout_slider.setTracking(True)
        timeout_msg = QLabel(
            _("Clear the session after the specified period "
              "of inactivity.  Once a session has timed out, "
              "your PIN and passphrase (if enabled) must be "
              "re-entered to use the device."))
        timeout_msg.setWordWrap(True)
        timeout_slider.setSliderPosition(config.get_session_timeout() // 60)
        slider_moved()
        timeout_slider.valueChanged.connect(slider_moved)
        timeout_slider.sliderReleased.connect(slider_released)
        settings_glayout.addWidget(timeout_label, 6, 0)
        settings_glayout.addWidget(timeout_slider, 6, 1, 1, 3)
        settings_glayout.addWidget(timeout_minutes, 6, 4)
        settings_glayout.addWidget(timeout_msg, 7, 1, 1, -1)
        settings_layout.addLayout(settings_glayout)
        settings_layout.addStretch(1)

        # Advanced tab
        advanced_tab = QWidget()
        advanced_layout = QVBoxLayout(advanced_tab)
        advanced_glayout = QGridLayout()

        # Advanced tab - clear PIN
        clear_pin_button = QPushButton(_("Disable PIN"))
        clear_pin_button.clicked.connect(clear_pin)
        clear_pin_warning = QLabel(
            _("If you disable your PIN, anyone with physical access to your "
              "{} device can spend your bitcoins.").format(plugin.device))
        clear_pin_warning.setWordWrap(True)
        clear_pin_warning.setStyleSheet("color: red")
        advanced_glayout.addWidget(clear_pin_button, 0, 2)
        advanced_glayout.addWidget(clear_pin_warning, 1, 0, 1, 5)

        # Advanced tab - toggle passphrase protection
        passphrase_button = QPushButton()
        passphrase_button.clicked.connect(toggle_passphrase)
        passphrase_msg = WWLabel(PASSPHRASE_HELP)
        passphrase_warning = WWLabel(PASSPHRASE_NOT_PIN)
        passphrase_warning.setStyleSheet("color: red")
        advanced_glayout.addWidget(passphrase_button, 3, 2)
        advanced_glayout.addWidget(passphrase_msg, 4, 0, 1, 5)
        advanced_glayout.addWidget(passphrase_warning, 5, 0, 1, 5)

        # Advanced tab - wipe device
        wipe_device_button = QPushButton(_("Wipe Device"))
        wipe_device_button.clicked.connect(wipe_device)
        wipe_device_msg = QLabel(
            _("Wipe the device, removing all data from it.  The firmware "
              "is left unchanged."))
        wipe_device_msg.setWordWrap(True)
        wipe_device_warning = QLabel(
            _("Only wipe a device if you have the recovery seed written down "
              "and the device wallet(s) are empty, otherwise the bitcoins "
              "will be lost forever."))
        wipe_device_warning.setWordWrap(True)
        wipe_device_warning.setStyleSheet("color: red")
        advanced_glayout.addWidget(wipe_device_button, 6, 2)
        advanced_glayout.addWidget(wipe_device_msg, 7, 0, 1, 5)
        advanced_glayout.addWidget(wipe_device_warning, 8, 0, 1, 5)
        advanced_layout.addLayout(advanced_glayout)
        advanced_layout.addStretch(1)

        tabs = QTabWidget(self)
        tabs.addTab(info_tab, _("Information"))
        tabs.addTab(settings_tab, _("Settings"))
        tabs.addTab(advanced_tab, _("Advanced"))
        dialog_vbox = QVBoxLayout(self)
        dialog_vbox.addWidget(tabs)
        dialog_vbox.addLayout(Buttons(CloseButton(self)))

        # Update information
        invoke_client(None)
Exemple #9
0
    def __init__(self):
        super().__init__()

        # iniciando conexio con google
        self.translate_client = translate.Client()

        self.my_state = _STATE_PLAY

        # Controles principales para organizar la ventana.
        self.widget = QWidget(self)
        self.layout = QVBoxLayout()
        self.bottom_layout = QHBoxLayout()

        # status layout
        self.statusLayout = StatusLayout()

        # Sutitles layout
        self.subLayout = SubtitleLayout()

        # time stuff
        self.time_layout = QHBoxLayout()
        self.label_time = QLabel()
        self.label_mi = QLabel()
        self.label_end = QLabel()

        # inicializar subtitulos
        self.list_frames = sub.frames(MY_PATH + SUB_PATH)
        self.text_frame = self.list_frames.pop()

        # Control de reproducción de video de Qt.
        self.video_widget = QVideoWidget(self)
        self.media_player = QMediaPlayer(None, QMediaPlayer.VideoSurface)
        self.media_player.setMedia(
            QMediaContent(QUrl.fromLocalFile(MY_PATH + VIDEO_PATH)))
        self.media_player.setVideoOutput(self.video_widget)

        # Botones de reproducción y pausa.

        # Deslizadores para el volumen y transición del video.
        self.seek_slider = QSlider(Qt.Horizontal)
        self.volume_slider = QSlider(Qt.Horizontal)
        self.volume_slider.setRange(0, 100)
        self.volume_slider.setValue(self.media_player.volume())

        self.volume_slider.sliderMoved.connect(self.media_player.setVolume)

        # actualizar la posicion

        self.seek_slider.sliderMoved.connect(self.change_media_player)
        self.media_player.positionChanged.connect(self.change_seek_bar)

        self.media_player.durationChanged.connect(self.change_duration)

        # Acomodar controles en la pantalla.
        self.layout.addLayout(self.statusLayout)
        self.layout.addWidget(self.video_widget)
        self.layout.addLayout(self.bottom_layout)
        self.layout.addLayout(self.time_layout)
        self.layout.addWidget(self.seek_slider)

        # andir layout
        self.layout.addLayout(self.subLayout)
        #conections
        self.subLayout.prev_button.clicked.connect(self.click_prev)
        self.subLayout.next_button.clicked.connect(self.click_next)

        self.bottom_layout.addWidget(self.volume_slider)

        # time stuff
        self.time_layout.addWidget(self.label_time)
        self.time_layout.addWidget(self.label_mi)
        self.time_layout.addWidget(self.label_end)

        #self.set_sub_text(self.labels_sub2, self.frame.txt)
        self.subLayout.set_sub_text(
            self.subLayout.labelSub1,
            self.text_frame.f1.get_txt_conver_asteric())
        self.subLayout.set_sub_text(
            self.subLayout.labelSub2,
            self.text_frame.f2.get_txt_conver_asteric())

        # Conectar los eventos con sus correspondientes funciones.
        self.statusLayout.play_button.clicked.connect(self.play_clicked)
        self.statusLayout.stop_button.clicked.connect(self.stop_clicked)
        self.media_player.stateChanged.connect(self.state_changed)

        # conectando labels
        self.connect_labels()

        # Personalizar la ventana.
        self.setWindowTitle("Reproductor de video")
        self.resize(800, 600)
        self.layout.setContentsMargins(0, 0, 0, 0)
        self.bottom_layout.setContentsMargins(0, 0, 0, 0)
        self.widget.setLayout(self.layout)
        self.setCentralWidget(self.widget)

        # setear Timer
        self.timer = QTimer()
        self.timer.timeout.connect(self.timer_change_status)
        self.timer.start(_TIMER_TICK)

        # Reproducir el video.
        self.media_player.setNotifyInterval(_NOTIFY_INTERVAL)
        self.media_player.play()
Exemple #10
0
    def add_pro_tab_buttons(self):
        btn1 = QPushButton('Unsharp Mask')
        btn1.setIcon(QIcon('Icons/mask.png'))
        btn1.clicked.connect(self.parent.handler.handle_unsharp_mask)
        self.tab4.layout.addWidget(btn1)

        self.tab4.layout.addWidget(QLabel("Radius:"))
        self.mask_r_level = QSlider(Qt.Horizontal)
        self.mask_r_level.setTickPosition(QSlider.TicksBelow)
        self.mask_r_level.setTickInterval(1)
        self.mask_r_level.setMinimum(1)
        self.mask_r_level.setMaximum(8)
        self.mask_r_level.setValue(4)
        self.tab4.layout.addWidget(self.mask_r_level)
        self.mask_r_level.valueChanged.connect(self.change_mask_r)

        self.tab4.layout.addWidget(QLabel("Percent:"))
        self.mask_p_level = QSlider(Qt.Horizontal)
        self.mask_p_level.setTickPosition(QSlider.TicksBelow)
        self.mask_p_level.setTickInterval(50)
        self.mask_p_level.setMinimum(1)
        self.mask_p_level.setMaximum(300)
        self.mask_p_level.setValue(150)
        self.tab4.layout.addWidget(self.mask_p_level)
        self.mask_p_level.valueChanged.connect(self.change_mask_p)

        self.tab4.layout.addWidget(QLabel("Threshold:"))
        self.mask_t_level = QSlider(Qt.Horizontal)
        self.mask_t_level.setTickPosition(QSlider.TicksBelow)
        self.mask_t_level.setTickInterval(1)
        self.mask_t_level.setMinimum(1)
        self.mask_t_level.setMaximum(6)
        self.mask_t_level.setValue(3)
        self.tab4.layout.addWidget(self.mask_t_level)
        self.mask_t_level.valueChanged.connect(self.change_mask_t)

        btn2 = QPushButton('Min Filter')
        btn2.setIcon(QIcon('Icons/filter-512.png'))
        btn2.clicked.connect(self.parent.handler.handle_min_filter)
        self.tab4.layout.addWidget(btn2)

        btn3 = QPushButton('Max Filter')
        btn3.setIcon(QIcon('Icons/filter-512.png'))
        btn3.clicked.connect(self.parent.handler.handle_max_filter)
        self.tab4.layout.addWidget(btn3)

        btn4 = QPushButton('Median Filter')
        btn4.setIcon(QIcon('Icons/filter-512.png'))
        btn4.clicked.connect(self.parent.handler.handle_median_filter)
        self.tab4.layout.addWidget(btn4)

        btn5 = QPushButton('Rank Filter')
        btn5.setIcon(QIcon('Icons/filter-512.png'))
        btn5.clicked.connect(self.parent.handler.handle_min_filter)
        self.tab4.layout.addWidget(btn5)

        self.tab4.layout.addWidget(QLabel("Rank:"))
        self.rank_level = QSlider(Qt.Horizontal)
        self.rank_level.setTickPosition(QSlider.TicksBelow)
        self.rank_level.setTickInterval(1)
        self.rank_level.setMinimum(1)
        self.rank_level.setMaximum(5)
        self.rank_level.setValue(2)
        self.tab4.layout.addWidget(self.rank_level)
        self.rank_level.valueChanged.connect(self.change_rank)

        self.tab4.layout.addWidget(QLabel("Size:"))
        self.size_level = QSlider(Qt.Horizontal)
        self.size_level.setTickPosition(QSlider.TicksBelow)
        self.size_level.setTickInterval(4)
        self.size_level.setMinimum(1)
        self.size_level.setMaximum(18)
        self.size_level.setValue(9)
        self.tab4.layout.addWidget(self.size_level)
        self.size_level.valueChanged.connect(self.change_size)

        btn16 = QPushButton('Timer')
        btn16.setIcon(QIcon('Icons/timer.png'))
        btn16.clicked.connect(self.parent.handler.handle_timer)
        self.tab4.layout.addWidget(btn16)

        btn10 = QPushButton('Object Labeling')
        btn10.setIcon(QIcon('Icons/CCL.png'))
        btn10.clicked.connect(self.parent.handler.handle_ccl)
        self.tab4.layout.addWidget(btn10)
Exemple #11
0
    def add_ker_tab_buttons(self):
        self.tab5.layout.addWidget(QLabel("Kernel (3 * 3):"))

        btn16 = QPushButton('Kernel')
        btn16.setIcon(QIcon('Icons/kernel.png'))
        btn16.clicked.connect(self.parent.handler.handle_kernel)
        self.tab5.layout.addWidget(btn16)

        self.scale_lable = QLabel("Scale: 1.0")
        self.tab5.layout.addWidget(self.scale_lable)
        self.kernel_scale_level = QSlider(Qt.Horizontal)
        self.kernel_scale_level.setTickPosition(QSlider.TicksBelow)
        self.kernel_scale_level.setTickInterval(5)
        self.kernel_scale_level.setMinimum(0)
        self.kernel_scale_level.setMaximum(20)
        self.kernel_scale_level.setValue(10)
        self.tab5.layout.addWidget(self.kernel_scale_level)
        self.kernel_scale_level.valueChanged.connect(self.change_kerkel_scale)

        self.offset_label = QLabel("Offset: 0.0")
        self.tab5.layout.addWidget(self.offset_label)
        self.kernel_offset_level = QSlider(Qt.Horizontal)
        self.kernel_offset_level.setTickPosition(QSlider.TicksBelow)
        self.kernel_offset_level.setTickInterval(5)
        self.kernel_offset_level.setMinimum(0)
        self.kernel_offset_level.setMaximum(20)
        self.kernel_offset_level.setValue(10)
        self.tab5.layout.addWidget(self.kernel_offset_level)
        self.kernel_offset_level.valueChanged.connect(
            self.change_kerkel_offset)

        self.grid = QGridLayout()
        self.grid.setSpacing(8)
        self.grid.setAlignment(Qt.AlignTop)
        frame = QFrame()
        frame.setLayout(self.grid)
        self.tab5.layout.addWidget(frame)

        self.idx11 = QDoubleSpinBox()
        self.grid.addWidget(self.idx11, 1, 1, Qt.AlignLeading)
        self.idx12 = QDoubleSpinBox()
        self.grid.addWidget(self.idx12, 1, 2, Qt.AlignLeading)
        self.idx13 = QDoubleSpinBox()
        self.grid.addWidget(self.idx13, 1, 3, Qt.AlignLeading)
        self.idx21 = QDoubleSpinBox()
        self.grid.addWidget(self.idx21, 2, 1, Qt.AlignLeading)
        self.idx22 = QDoubleSpinBox()
        self.grid.addWidget(self.idx22, 2, 2, Qt.AlignLeading)
        self.idx23 = QDoubleSpinBox()
        self.grid.addWidget(self.idx23, 2, 3, Qt.AlignLeading)
        self.idx31 = QDoubleSpinBox()
        self.grid.addWidget(self.idx31, 3, 1, Qt.AlignLeading)
        self.idx32 = QDoubleSpinBox()
        self.grid.addWidget(self.idx32, 3, 2, Qt.AlignLeading)
        self.idx33 = QDoubleSpinBox()
        self.grid.addWidget(self.idx33, 3, 3, Qt.AlignLeading)

        self.idx_fields = [
            self.idx11, self.idx12, self.idx13, self.idx21, self.idx22,
            self.idx23, self.idx31, self.idx32, self.idx33
        ]
        for idx in self.idx_fields:
            idx.setFixedWidth(50)
            idx.setFixedHeight(25)
            idx.setValue(0)
            idx.setMinimum(0 - 8.0)
            idx.setMaximum(8.0)

        self.tab5.layout.addWidget(QLabel(" "))
        btn13 = QPushButton('Custom Filter')
        btn13.setIcon(QIcon('Icons/filter.png'))
        btn13.clicked.connect(self.parent.handler.handle_custom_filter)
        self.tab5.layout.addWidget(btn13)

        self.rgb_grid = QGridLayout()
        self.rgb_grid.setSpacing(3)
        self.rgb_grid.setAlignment(Qt.AlignTop)
        rgb_frame = QFrame()
        rgb_frame.setLayout(self.rgb_grid)
        self.tab5.layout.addWidget(rgb_frame)

        self.rgb_input = []
        self.rgb_grid.addWidget(QLabel("Red transformation:"), 0, 0, 1, 3)
        r1 = QDoubleSpinBox()
        r1.setMinimum(-255)
        r1.setMaximum(255)
        r1.setValue(1.0)
        self.rgb_input.append(r1)
        self.rgb_grid.addWidget(r1, 1, 0)
        self.rgb_grid.addWidget(QLabel(" * R + "), 1, 1)
        r2 = QDoubleSpinBox()
        r2.setMinimum(-255)
        r2.setMaximum(255)
        self.rgb_input.append(r2)
        self.rgb_grid.addWidget(r2, 1, 2)
        self.rgb_grid.addWidget(QLabel("Green transformation:"), 2, 0, 1, 3)
        g1 = QDoubleSpinBox()
        g1.setMinimum(-255)
        g1.setMaximum(255)
        g1.setValue(1.0)
        self.rgb_input.append(g1)
        self.rgb_grid.addWidget(g1, 3, 0)
        self.rgb_grid.addWidget(QLabel(" * G + "), 3, 1)
        g2 = QDoubleSpinBox()
        g2.setMinimum(-255)
        g2.setMaximum(255)
        self.rgb_input.append(g2)
        self.rgb_grid.addWidget(g2, 3, 2)
        self.rgb_grid.addWidget(QLabel("Blue transformation:"), 4, 0, 1, 3)
        b1 = QDoubleSpinBox()
        b1.setMinimum(-255)
        b1.setMaximum(255)
        b1.setValue(1.0)
        self.rgb_input.append(b1)
        self.rgb_grid.addWidget(b1, 5, 0)
        self.rgb_grid.addWidget(QLabel(" * B + "), 5, 1)
        b2 = QDoubleSpinBox()
        self.rgb_input.append(b2)
        b2.setMinimum(-255)
        b2.setMaximum(255)
        self.rgb_grid.addWidget(b2, 5, 2)
Exemple #12
0
    def add_more_tab_buttons(self):
        btn7 = QPushButton('Smooth')
        btn7.setIcon(QIcon('Icons/smooth.png'))
        btn7.clicked.connect(self.parent.handler.handle_blur)
        self.tab3.layout.addWidget(btn7)

        btn20 = QPushButton('Smooth More')
        btn20.setIcon(QIcon('Icons/smooth.png'))
        btn20.clicked.connect(self.parent.handler.handle_smooth_more)
        self.tab3.layout.addWidget(btn20)

        btn6 = QPushButton('Detail')
        btn6.setIcon(QIcon('Icons/detail.png'))
        btn6.clicked.connect(self.parent.handler.handle_detail)
        self.tab3.layout.addWidget(btn6)

        btn5 = QPushButton('Emboss')
        btn5.setIcon(QIcon('Icons/emboss.png'))
        btn5.clicked.connect(self.parent.handler.handle_emboss)
        self.tab3.layout.addWidget(btn5)

        self.tab3.layout.addWidget(QLabel(" "))

        btn21 = QPushButton('Edge')
        btn21.setIcon(QIcon('Icons/edge.png'))
        btn21.clicked.connect(self.parent.handler.handle_edge)
        self.tab3.layout.addWidget(btn21)

        btn22 = QPushButton('Edge More')
        btn22.setIcon(QIcon('Icons/edge.png'))
        btn22.clicked.connect(self.parent.handler.handle_edge_more)
        self.tab3.layout.addWidget(btn22)

        btn23 = QPushButton('Find Edges')
        btn23.setIcon(QIcon('Icons/find_edges.png'))
        btn23.clicked.connect(self.parent.handler.handle_find_edges)
        self.tab3.layout.addWidget(btn23)

        self.tab3.layout.addWidget(QLabel(" "))

        btn8 = QPushButton('Blur')
        btn8.setIcon(QIcon('Icons/blur.png'))
        btn8.clicked.connect(self.parent.handler.handle_blur)
        self.tab3.layout.addWidget(btn8)

        btn24 = QPushButton('Gaussian Blur')
        btn24.setIcon(QIcon('Icons/gaussian.png'))
        btn24.clicked.connect(self.parent.handler.handle_gaussian_blur)
        self.tab3.layout.addWidget(btn24)

        btn25 = QPushButton('Box Blur')
        btn25.setIcon(QIcon('Icons/box.png'))
        btn25.clicked.connect(self.parent.handler.handle_box_blur)
        self.tab3.layout.addWidget(btn25)

        self.tab3.layout.addWidget(QLabel("Radius:"))
        self.gaussian_level = QSlider(Qt.Horizontal)
        self.gaussian_level.setTickPosition(QSlider.TicksBelow)
        self.gaussian_level.setTickInterval(1)
        self.gaussian_level.setMinimum(1)
        self.gaussian_level.setMaximum(8)
        self.gaussian_level.setValue(4)
        self.tab3.layout.addWidget(self.gaussian_level)
        self.gaussian_level.valueChanged.connect(self.change_gaussian)

        btn9 = QPushButton('Sharpen')
        btn9.setIcon(QIcon('Icons/sharpen.png'))
        btn9.clicked.connect(self.parent.handler.handle_sharpen)
        self.tab3.layout.addWidget(btn9)

        btn12 = QPushButton('Outline Detection')
        btn12.setIcon(QIcon('Icons/outline.png'))
        btn12.clicked.connect(self.parent.handler.handle_outline)
        self.tab3.layout.addWidget(btn12)

        btn17 = QPushButton('Dithering')
        btn17.setIcon(QIcon('Icons/floyd.png'))
        btn17.clicked.connect(self.parent.handler.handle_dithering)
        self.tab3.layout.addWidget(btn17)
Exemple #13
0
import sys
from medcv.gui import QMedLabel
from medcv.data import chest_dcm
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QSlider

application = QApplication(sys.argv)

main_widget = QWidget()
layout = QVBoxLayout(main_widget)

med_label = QMedLabel()
med_label.setMaximumSize(600, 600)
med_label.setScaledContents(True)
med_label.setMedicalImage(chest_dcm())

width_slider = QSlider(Qt.Horizontal)
level_slider = QSlider(Qt.Horizontal)
width_slider.setRange(1, 50000)
width_slider.valueChanged.connect(med_label.setImageWindowWidth)
level_slider.setRange(0, 50000)
level_slider.valueChanged.connect(med_label.setImageWindowLevel)

layout.addWidget(med_label)
layout.addWidget(width_slider)
layout.addWidget(level_slider)

main_widget.show()

sys.exit(application.exec_())
Exemple #14
0
    def __init__(self, parent=None):
        super(VideoWindow, self).__init__(parent)
        self.setWindowTitle(
            "PyQt Video Player Widget Example - pythonprogramminglanguage.com")

        self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface)

        videoWidget = QVideoWidget()

        self.playButton = QPushButton()
        self.playButton.setEnabled(False)
        self.playButton.setIcon(self.style().standardIcon(QStyle.SP_MediaPlay))
        self.playButton.clicked.connect(self.play)

        self.positionSlider = QSlider(Qt.Horizontal)
        self.positionSlider.setRange(0, 0)
        self.positionSlider.sliderMoved.connect(self.setPosition)

        self.errorLabel = QLabel()
        self.errorLabel.setSizePolicy(QSizePolicy.Preferred,
                                      QSizePolicy.Maximum)

        # Create new action
        openAction = QAction(QIcon("open.png"), "&Open", self)
        openAction.setShortcut("Ctrl+O")
        openAction.setStatusTip("Open movie")
        openAction.triggered.connect(self.openFile)

        # Create exit action
        exitAction = QAction(QIcon("exit.png"), "&Exit", self)
        exitAction.setShortcut("Ctrl+Q")
        exitAction.setStatusTip("Exit application")
        exitAction.triggered.connect(self.exitCall)

        # Create menu bar and add action
        menuBar = self.menuBar()
        fileMenu = menuBar.addMenu("&File")
        # fileMenu.addAction(newAction)
        fileMenu.addAction(openAction)
        fileMenu.addAction(exitAction)

        # Create a widget for window contents
        wid = QWidget(self)
        self.setCentralWidget(wid)

        # Create layouts to place inside widget
        controlLayout = QHBoxLayout()
        controlLayout.setContentsMargins(0, 0, 0, 0)
        controlLayout.addWidget(self.playButton)
        controlLayout.addWidget(self.positionSlider)

        layout = QVBoxLayout()
        layout.addWidget(videoWidget)
        layout.addLayout(controlLayout)
        layout.addWidget(self.errorLabel)

        # Set widget to contain window contents
        wid.setLayout(layout)

        self.mediaPlayer.setVideoOutput(videoWidget)
        self.mediaPlayer.stateChanged.connect(self.mediaStateChanged)
        self.mediaPlayer.positionChanged.connect(self.positionChanged)
        self.mediaPlayer.durationChanged.connect(self.durationChanged)
        self.mediaPlayer.error.connect(self.handleError)
Exemple #15
0
 def __init__(self, coordinates, size, parent=None):
     super(QSlider(Qt.Horizontal), self).__init__(parent)
     self.parent = parent
     self.setFocusPolicy(Qt.NoFocus)
     self.setGeometry(coordinates[0], coordinates[1], size[0], size[1])
     self.valueChanged[int].connect(self.changeValue)
Exemple #16
0
    def initUI(self):
        self.setGeometry(300, 100, 1000, 750)
        self.lumen = ()
        self.plaque = ()
        layout = QHBoxLayout()
        vbox1 = QVBoxLayout()
        vbox2 = QVBoxLayout()
        vbox1.setContentsMargins(0, 0, 100, 100)
        vbox2.setContentsMargins(100, 0, 0, 100)
        vbox2hbox1 = QHBoxLayout()
        vbox2.addLayout(vbox2hbox1)
        layout.addLayout(vbox1)
        layout.addLayout(vbox2)

        dicomButton = QPushButton('Read DICOM')
        contoursButton = QPushButton('Read Contours')
        gatingButton = QPushButton('Extract Diastolic Frames')
        segmentButton = QPushButton('Segment')
        writeButton = QPushButton('Write Report')

        self.infoTable = QTableWidget()
        self.infoTable.setRowCount(8)
        self.infoTable.setColumnCount(2)
        self.infoTable.setItem(0, 0, QTableWidgetItem('Patient Name'))
        self.infoTable.setItem(1, 0, QTableWidgetItem('Patient DOB'))
        self.infoTable.setItem(2, 0, QTableWidgetItem('Patient Sex'))
        self.infoTable.setItem(3, 0, QTableWidgetItem('Pullback Speed'))
        self.infoTable.setItem(4, 0, QTableWidgetItem('Resolution'))
        self.infoTable.setItem(5, 0, QTableWidgetItem('Dimensions'))
        self.infoTable.setItem(6, 0, QTableWidgetItem('Manufacturer'))
        self.infoTable.setItem(7, 0, QTableWidgetItem('Model'))

        dicomButton.clicked.connect(self.readDICOM)
        contoursButton.clicked.connect(self.readContours)
        segmentButton.clicked.connect(self.segment)
        gatingButton.clicked.connect(self.gate)
        """
        self.lumen, self.plaque, self.stent, self.resolution, frames = read_xml.read('/home/ubuntu/Documents/Qt/1-63/1-63.xml')
        self.lumen = self.mapToList(self.lumen)
        self.plaque = self.mapToList(self.plaque)
        self.stent = self.mapToList(self.stent)
        dicom = dcm.read_file('/home/ubuntu/Documents/Qt/1-63/2.16.840.1.114380.1.1.347327.186.1.1.20100506085134890.3.dcm')
        self.images = dicom.pixel_array
        """

        self.slider = QSlider(Qt.Horizontal)
        #self.slider.setRange(0, self.images.shape[0])
        self.slider.setRange(0, 100)
        self.slider.setValue(0)
        self.slider.setFocusPolicy(Qt.StrongFocus)
        sizePolicy = QSizePolicy()
        sizePolicy.setHorizontalPolicy(QSizePolicy.Fixed)
        sizePolicy.setVerticalPolicy(QSizePolicy.Fixed)
        self.slider.setSizePolicy(sizePolicy)
        self.slider.setMinimumSize(QSize(500, 25))
        self.slider.setMaximumSize(QSize(500, 25))
        self.slider.valueChanged[int].connect(self.changeValue)
        #self.slider.keyPressEvent = self.keyPressEvent()

        self.hideBox = QCheckBox('Hide Contours')
        self.hideBox.setChecked(True)
        self.hideBox.stateChanged[int].connect(self.changeState)
        self.useGatedBox = QCheckBox('Display Gated Frames')
        self.useGatedBox.stateChanged[int].connect(self.useGated)

        self.wid = Display()
        #self.wid.setData(self.lumen, self.plaque, self.images)

        self.c = Communicate()
        self.c.updateBW[int].connect(self.wid.setFrame)
        self.c.updateBool[bool].connect(self.wid.setDisplay)

        self.text = QLabel()
        self.text.setAlignment(Qt.AlignCenter)
        self.text.setText("Frame {}".format(self.slider.value()))

        vbox1.addWidget(self.wid)
        vbox1.addWidget(self.slider)
        vbox1.addWidget(self.text)

        vbox2.addWidget(self.hideBox)
        vbox2.addWidget(self.useGatedBox)
        vbox2.addWidget(dicomButton)
        vbox2.addWidget(contoursButton)
        vbox2.addWidget(gatingButton)
        vbox2.addWidget(segmentButton)
        vbox2.addWidget(writeButton)
        vbox2hbox1.addWidget(self.infoTable)

        centralWidget = QWidget()
        centralWidget.setLayout(layout)
        self.setCentralWidget(centralWidget)
        self.show()
Exemple #17
0
 def __init__(self, *args, **kwargs):
     super(Window, self).__init__(*args, **kwargs)
     self.setAttribute(Qt.WA_StyledBackground, True)
     layout = QVBoxLayout(self)
     layout.addWidget(QSlider(Qt.Vertical, self))
     layout.addWidget(QSlider(Qt.Horizontal, self))
Exemple #18
0
    def __init__(self, parent=None):
        """头部区域,包括图标/搜索/设置/登陆/最大/小化/关闭。"""
        super().__init__()

        self.setObjectName('Header')
        self.parent = parent

        self.player = QMediaPlayer()
        self.playlist = QMediaPlaylist()
        self.player.setPlaylist(self.playlist)
        self.playlist.setPlaybackMode(QMediaPlaylist.Loop)

        self.mainLayout = QHBoxLayout(self)
        #self.mainLayout.setSpacing(0)

        self.preButton = QPushButton()
        #self.preButton.setIcon(QIcon("../icons/music_pre.png"))
        self.preButton.setStyleSheet(
            "QPushButton{border-image: url(icons/music_pre.png)}")
        #self.preButton.setMaximumSize(48,48)
        self.preButton.setMinimumSize(36, 36)
        self.preButton.setObjectName("preButton")
        self.mainLayout.addWidget(self.preButton)

        self.playButton = QPushButton()
        self.playButton.setStyleSheet(
            "QPushButton{border-image: url(icons/music_on.png)}")
        #self.playButton.setMaximumSize(48, 48)
        self.playButton.setMinimumSize(36, 36)
        self.playButton.setObjectName("playButton")
        self.mainLayout.addWidget(self.playButton)

        self.nextButton = QPushButton()
        self.nextButton.setStyleSheet(
            "QPushButton{border-image: url(icons/music_next.png)}")
        #self.nextButton.setMaximumSize(48, 48)
        self.nextButton.setMinimumSize(36, 36)
        self.nextButton.setObjectName("nextButton")
        self.mainLayout.addWidget(self.nextButton)

        self.currentTimeLabel = QLabel("00:00")
        self.currentTimeLabel.setMinimumSize(QSize(60, 0))
        self.currentTimeLabel.setAlignment(Qt.AlignRight | Qt.AlignTrailing
                                           | Qt.AlignVCenter)
        self.currentTimeLabel.setObjectName("currentTimeLabel")
        self.mainLayout.addWidget(self.currentTimeLabel)

        self.timeSlider = QSlider()
        self.timeSlider.setSizePolicy(QSizePolicy.Expanding,
                                      QSizePolicy.Expanding)
        self.timeSlider.setOrientation(Qt.Horizontal)
        self.timeSlider.setObjectName("timeSlider")
        self.mainLayout.addWidget(self.timeSlider)

        self.totalTimeLabel = QLabel("00:00")
        self.totalTimeLabel.setMinimumSize(QSize(60, 0))
        self.totalTimeLabel.setAlignment(Qt.AlignLeading | Qt.AlignLeft
                                         | Qt.AlignVCenter)
        self.totalTimeLabel.setObjectName("totalTimeLabel")
        self.mainLayout.addWidget(self.totalTimeLabel)

        self.volumeButton = QPushButton()
        self.volumeButton.setObjectName("volumeButton")
        self.mainLayout.addWidget(self.volumeButton)

        self.volumeSlider = QSlider()
        self.volumeSlider.setMinimumWidth(100)
        self.volumeSlider.setMaximumWidth(150)
        self.volumeSlider.setMaximum(100)
        self.volumeSlider.setProperty("value", 5)
        self.volumeSlider.setOrientation(Qt.Horizontal)
        self.volumeSlider.setSizePolicy(QSizePolicy.Minimum,
                                        QSizePolicy.Expanding)
        self.volumeSlider.setObjectName("volumeSlider")
        self.player.setVolume(self.volumeSlider.value())
        self.mainLayout.addWidget(self.volumeSlider)

        self.musicCycleButton = QPushButton()
        self.musicCycleButton.setObjectName("musicCycle")
        self.musicCycleButton.setToolTip("音乐循环")
        self.mainLayout.addWidget(self.musicCycleButton)

        self.musicCycleButton = QPushButton("词")
        self.musicCycleButton.setObjectName("musicCycle")
        self.musicCycleButton.setToolTip("歌词")
        self.mainLayout.addWidget(self.musicCycleButton)

        self.playlistButton = QPushButton("列")
        self.playlistButton.setObjectName("playlistButton")
        self.mainLayout.addWidget(self.playlistButton)

        #self.mainLayout.addStretch(1)

        self.registerSignalConnect()
Exemple #19
0
    def __init__(self, parent):
        super(SpectrogramTools, self).__init__(parent)

        self.spectrogram = self.parent().plugin.signal_widget.spectrogram

        layout = QFormLayout()

        self.n_fft_le = QLineEdit(str(self.spectrogram.n_fft))
        self.n_fft_le_validator = QIntValidator(8, 1024)
        self.n_fft_le.setValidator(self.n_fft_le_validator)
        layout.addRow('NFFT', self.n_fft_le)
        self.n_fft_le.editingFinished.connect(self.set_n_fft)

        self.step_le = QLineEdit(str(self.spectrogram.step))
        self.step_le_validator = QIntValidator(1, 128)
        self.step_le.setValidator(self.step_le_validator)
        layout.addRow('Step', self.step_le)
        self.step_le.editingFinished.connect(self.set_step)

        self.cmap_cb = QComboBox()
        layout.addRow('Colormap', self.cmap_cb)
#        curr_cmap = [x[0] for x in color.get_colormaps().items() \
#                     if x[1] == self.spectrogram.cmap][0]
        cmap_list = list(color.get_colormaps().keys())
        cmap_list.sort()
#        curr_idx = cmap_list.index(curr_cmap)
        self.cmap_cb.addItems(cmap_list)
#        self.cmap_cb.setCurrentIndex(curr_idx)
        self.cmap_cb.currentIndexChanged.connect(self.set_cmap)

        self.interp_cb = QComboBox()
        layout.addRow('Interpolation', self.interp_cb)
        interp_list = ['nearest', 'bilinear', 'hanning', 'hamming', 'hermite',
                       'kaiser', 'quadric', 'bicubic', 'catrom', 'mitchell',
                       'spline16', 'spline36', 'gaussian', 'bessel',
                       'sinc', 'lanczos', 'blackman']
        self.interp_cb.addItems(interp_list)
        self.interp_cb.currentIndexChanged.connect(self.set_interpolation)

        self.normalize_chb = QCheckBox()
        layout.addRow('Normalize', self.normalize_chb)
        self.normalize_chb.setCheckState(self.spectrogram.normalize)
        self.normalize_chb.stateChanged.connect(self.set_normalize)

        clim_low_layout = QHBoxLayout()

        self.clim_low_s = QSlider(Qt.Horizontal)
        self.clim_low_s.setMinimum(0)
        self.clim_low_s.setMaximum(100)
        self.clim_low_s.setValue(0)
        self.clim_low_s.setTickInterval(1)
        self.clim_low_s.valueChanged.connect(self.set_clim_low_s)

        self.clim_low_le = QLineEdit('0')
        self.clim_low_le_validator = QIntValidator(1, 100)
        self.clim_low_le.setValidator(self.clim_low_le_validator)
        self.clim_low_le.editingFinished.connect(self.set_clim)
        self.clim_low_le.setMaximumWidth(40)

        clim_low_layout.addWidget(self.clim_low_s)
        clim_low_layout.addWidget(self.clim_low_le)

        layout.addRow('Color limit low', clim_low_layout)

        clim_high_layout = QHBoxLayout()

        self.clim_high_s = QSlider(Qt.Horizontal)
        self.clim_high_s.setMinimum(0)
        self.clim_high_s.setMaximum(100)
        self.clim_high_s.setValue(100)
        self.clim_high_s.setTickInterval(1)
        self.clim_high_s.valueChanged.connect(self.set_clim_high_s)

        self.clim_high_le = QLineEdit('100')
        self.clim_high_le_validator = QIntValidator(1, 100)
        self.clim_high_le.setValidator(self.clim_high_le_validator)
        self.clim_high_le.editingFinished.connect(self.set_clim)
        self.clim_high_le.setMaximumWidth(40)

        clim_high_layout.addWidget(self.clim_high_s)
        clim_high_layout.addWidget(self.clim_high_le)

        layout.addRow('Color limit high', clim_high_layout)

        self.setLayout(layout)
    def __init__(self):
        super(MainWindow, self).__init__()
        self.setGeometry(0, 0, 700, 400)
        self.setContentsMargins(6, 6, 6, 6)
        self.setStyleSheet(myStyleSheet(self))
        self.setWindowTitle("Radio Stations - searching with pyradios")
        self.genreList = genres.splitlines()
        self.findfield = QLineEdit()
        self.findfield.setFixedWidth(250)
        self.findfield.addAction(QIcon.fromTheme("edit-find"), 0)
        self.findfield.setPlaceholderText("type search term and press RETURN ")
        self.findfield.returnPressed.connect(self.findStations)
        self.findfield.setClearButtonEnabled(True)
        self.field = QPlainTextEdit()
        self.field.setContextMenuPolicy(Qt.CustomContextMenu)
        self.field.customContextMenuRequested.connect(
            self.contextMenuRequested)
        self.field.cursorPositionChanged.connect(self.selectLine)
        self.field.setWordWrapMode(QTextOption.NoWrap)
        ### volume slider
        self.volSlider = QSlider()
        self.volSlider.setFixedWidth(100)
        self.volSlider.setOrientation(Qt.Horizontal)
        self.volSlider.valueChanged.connect(self.setVolume)
        self.volSlider.setMinimum(0)
        self.volSlider.setMaximum(100)
        ### genre box
        self.combo = QComboBox()
        self.combo.currentIndexChanged.connect(self.comboSearch)
        self.combo.addItem("choose Genre")
        for m in self.genreList:
            self.combo.addItem(m)
        self.combo.addItem("Country")
        self.combo.setFixedWidth(150)
        ### toolbar ###
        self.tb = self.addToolBar("tools")
        self.tb.setContextMenuPolicy(Qt.PreventContextMenu)
        self.tb.setMovable(False)
        self.saveButton = QPushButton("Save as txt")
        self.saveButton.setIcon(QIcon.fromTheme("document-save"))
        self.saveButton.clicked.connect(self.saveStations)
        self.savePlaylistButton = QPushButton("Save as m3u")
        self.savePlaylistButton.setIcon(QIcon.fromTheme("document-save"))
        self.savePlaylistButton.clicked.connect(self.savePlaylist)
        self.setCentralWidget(self.field)
        self.tb.addWidget(self.findfield)
        self.tb.addWidget(self.saveButton)
        self.tb.addWidget(self.savePlaylistButton)
        self.tb.addSeparator()
        self.tb.addWidget(self.combo)
        ### player ###
        self.player = QMediaPlayer()
        self.player.metaDataChanged.connect(self.metaDataChanged)
        self.startButton = QPushButton("Play")
        self.startButton.setIcon(QIcon.fromTheme("media-playback-start"))
        self.startButton.clicked.connect(self.getURLtoPlay)
        self.stopButton = QPushButton("Stop")
        self.stopButton.setIcon(QIcon.fromTheme("media-playback-stop"))
        self.stopButton.clicked.connect(self.stopPlayer)
        self.statusBar().addPermanentWidget(self.volSlider)
        self.statusBar().addPermanentWidget(self.startButton)
        self.statusBar().addPermanentWidget(self.stopButton)
        ## actions
        self.getNameAction = QAction(QIcon.fromTheme("edit-copy"),
                                     "copy Station Name",
                                     self,
                                     triggered=self.getName)
        self.getUrlAction = QAction(QIcon.fromTheme("edit-copy"),
                                    "copy Station URL",
                                    self,
                                    triggered=self.getURL)
        self.getNameAndUrlAction = QAction(QIcon.fromTheme("edit-copy"),
                                           "copy Station Name,URL",
                                           self,
                                           triggered=self.getNameAndUrl)
        self.getURLtoPlayAction = QAction(
            QIcon.fromTheme("media-playback-start"),
            "play Station",
            self,
            shortcut="F6",
            triggered=self.getURLtoPlay)
        self.addAction(self.getURLtoPlayAction)
        self.stopPlayerAction = QAction(QIcon.fromTheme("media-playback-stop"),
                                        "stop playing",
                                        self,
                                        shortcut="F7",
                                        triggered=self.stopPlayer)
        self.addAction(self.stopPlayerAction)
        self.helpAction = QAction(QIcon.fromTheme("help-info"),
                                  "Help",
                                  self,
                                  shortcut="F1",
                                  triggered=self.showHelp)
        self.addAction(self.helpAction)

        self.getForWebAction = QAction(QIcon.fromTheme("browser"),
                                       "copy for WebPlayer",
                                       self,
                                       triggered=self.getForWeb)
        self.volSlider.setValue(60)
        self.statusBar().showMessage("Welcome", 0)
Exemple #21
0
    def __init__(self):
        # constructor of the base class
        QMainWindow.__init__(self)

        QCoreApplication.setOrganizationName("RST")
        QCoreApplication.setOrganizationDomain("https://tu-dresden.de/rst")
        QCoreApplication.setApplicationVersion(
            pkg_resources.require("PyMoskito")[0].version)
        QCoreApplication.setApplicationName(globals()["__package__"])

        # load settings
        self._settings = QSettings()
        self._read_settings()

        # initialize logger
        self._logger = logging.getLogger(self.__class__.__name__)

        # Create Simulation Backend
        self.guiProgress = None
        self.cmdProgress = None
        self.sim = SimulatorInteractor(self)
        self.runSimulation.connect(self.sim.run_simulation)
        self.stopSimulation.connect(self.sim.stop_simulation)
        self.sim.simulation_finalized.connect(self.new_simulation_data)
        self.currentDataset = None
        self.interpolator = None

        # sim setup viewer
        self.targetView = SimulatorView(self)
        self.targetView.setModel(self.sim.target_model)
        self.targetView.expanded.connect(self.target_view_changed)
        self.targetView.collapsed.connect(self.target_view_changed)

        # sim results viewer
        self.result_view = QTreeView()

        # the docking area allows to rearrange the user interface at runtime
        self.area = pg.dockarea.DockArea()

        # Window properties
        icon_size = QSize(25, 25)
        self.setCentralWidget(self.area)
        self.resize(1000, 700)
        self.setWindowTitle("PyMoskito")
        res_path = get_resource("mosquito.png")
        icon = QIcon(res_path)
        self.setWindowIcon(icon)

        # create docks
        self.propertyDock = pg.dockarea.Dock("Properties")
        self.animationDock = pg.dockarea.Dock("Animation")
        self.regimeDock = pg.dockarea.Dock("Regimes")
        self.dataDock = pg.dockarea.Dock("Data")
        self.logDock = pg.dockarea.Dock("Log")
        self.plotDockPlaceholder = pg.dockarea.Dock("Placeholder")

        # arrange docks
        self.area.addDock(self.animationDock, "right")
        self.area.addDock(self.regimeDock, "left", self.animationDock)
        self.area.addDock(self.propertyDock, "bottom", self.regimeDock)
        self.area.addDock(self.dataDock, "bottom", self.propertyDock)
        self.area.addDock(self.plotDockPlaceholder, "bottom",
                          self.animationDock)
        self.area.addDock(self.logDock, "bottom", self.dataDock)
        self.non_plotting_docks = list(self.area.findAll()[1].keys())

        # add widgets to the docks
        self.propertyDock.addWidget(self.targetView)

        if not vtk_available:
            self._logger.error(
                "loading vtk failed with:{}".format(vtk_error_msg))

        # check if there is a registered visualizer
        available_vis = get_registered_visualizers()
        self._logger.info("found visualizers: {}".format(
            [name for cls, name in available_vis]))
        if available_vis:
            # instantiate the first visualizer
            self._logger.info("loading visualizer '{}'".format(
                available_vis[0][1]))
            self.animationLayout = QVBoxLayout()

            if issubclass(available_vis[0][0], MplVisualizer):
                self.animationWidget = QWidget()
                self.visualizer = available_vis[0][0](self.animationWidget,
                                                      self.animationLayout)
                self.animationDock.addWidget(self.animationWidget)
            elif issubclass(available_vis[0][0], VtkVisualizer):
                if vtk_available:
                    # vtk window
                    self.animationFrame = QFrame()
                    self.vtkWidget = QVTKRenderWindowInteractor(
                        self.animationFrame)
                    self.animationLayout.addWidget(self.vtkWidget)
                    self.animationFrame.setLayout(self.animationLayout)
                    self.animationDock.addWidget(self.animationFrame)
                    self.vtk_renderer = vtkRenderer()
                    self.vtkWidget.GetRenderWindow().AddRenderer(
                        self.vtk_renderer)
                    self.visualizer = available_vis[0][0](self.vtk_renderer)
                    self.vtkWidget.Initialize()
                else:
                    self._logger.warning("visualizer depends on vtk which is "
                                         "not available on this system!")
            elif available_vis:
                raise NotImplementedError
        else:
            self.visualizer = None

        # regime window
        self.regime_list = QListWidget(self)
        self.regime_list.setSelectionMode(QAbstractItemView.ExtendedSelection)
        self.regimeDock.addWidget(self.regime_list)
        self.regime_list.itemDoubleClicked.connect(self.regime_dclicked)
        self._regimes = []
        self.regime_file_name = ""

        self.actDeleteRegimes = QAction(self.regime_list)
        self.actDeleteRegimes.setText("&Delete Selected Regimes")
        # TODO shortcut works always, not only with focus on the regime list
        # self.actDeleteRegimes.setShortcutContext(Qt.WindowShortcut)
        self.actDeleteRegimes.setShortcut(QKeySequence(Qt.Key_Delete))
        self.actDeleteRegimes.triggered.connect(self.remove_regime_items)

        self.actSave = QAction(self)
        self.actSave.setText('Save Results As')
        self.actSave.setIcon(QIcon(get_resource("save.png")))
        self.actSave.setDisabled(True)
        self.actSave.setShortcut(QKeySequence.Save)
        self.actSave.triggered.connect(self.export_simulation_data)

        self.actLoadRegimes = QAction(self)
        self.actLoadRegimes.setText("Load Regimes from File")
        self.actLoadRegimes.setIcon(QIcon(get_resource("load.png")))
        self.actLoadRegimes.setDisabled(False)
        self.actLoadRegimes.setShortcut(QKeySequence.Open)
        self.actLoadRegimes.triggered.connect(self.load_regime_dialog)

        self.actExitOnBatchCompletion = QAction(self)
        self.actExitOnBatchCompletion.setText("&Exit On Batch Completion")
        self.actExitOnBatchCompletion.setCheckable(True)
        self.actExitOnBatchCompletion.setChecked(
            self._settings.value("control/exit_on_batch_completion") == "True")
        self.actExitOnBatchCompletion.changed.connect(
            self.update_exit_on_batch_completion_setting)

        # regime management
        self.runningBatch = False
        self._current_regime_index = None
        self._current_regime_name = None
        self._regimes = []

        self.regimeFinished.connect(self.run_next_regime)
        self.finishedRegimeBatch.connect(self.regime_batch_finished)

        # data window
        self.dataList = QListWidget(self)
        self.dataDock.addWidget(self.dataList)
        self.dataList.itemDoubleClicked.connect(self.create_plot)

        # actions for simulation control
        self.actSimulateCurrent = QAction(self)
        self.actSimulateCurrent.setText("&Simulate Current Regime")
        self.actSimulateCurrent.setIcon(QIcon(get_resource("simulate.png")))
        self.actSimulateCurrent.setShortcut(QKeySequence("F5"))
        self.actSimulateCurrent.triggered.connect(self.start_simulation)

        self.actSimulateAll = QAction(self)
        self.actSimulateAll.setText("Simulate &All Regimes")
        self.actSimulateAll.setIcon(QIcon(get_resource("execute_regimes.png")))
        self.actSimulateAll.setShortcut(QKeySequence("F6"))
        self.actSimulateAll.setDisabled(True)
        self.actSimulateAll.triggered.connect(self.start_regime_execution)

        # actions for animation control
        self.actAutoPlay = QAction(self)
        self.actAutoPlay.setText("&Autoplay Simulation")
        self.actAutoPlay.setCheckable(True)
        self.actAutoPlay.setChecked(
            self._settings.value("control/autoplay_animation") == "True")
        self.actAutoPlay.changed.connect(self.update_autoplay_setting)

        self.actPlayPause = QAction(self)
        self.actPlayPause.setText("Play Animation")
        self.actPlayPause.setIcon(QIcon(get_resource("play.png")))
        self.actPlayPause.setDisabled(True)
        self.actPlayPause.setShortcut(QKeySequence(Qt.Key_Space))
        self.actPlayPause.triggered.connect(self.play_animation)

        self.actStop = QAction(self)
        self.actStop.setText("Stop")
        self.actStop.setIcon(QIcon(get_resource("stop.png")))
        self.actStop.setDisabled(True)
        self.actStop.triggered.connect(self.stop_animation)

        self.actSlow = QAction(self)
        self.actSlow.setText("Slowest")
        self.actSlow.setIcon(QIcon(get_resource("slow.png")))
        self.actSlow.setDisabled(False)
        self.actSlow.triggered.connect(self.set_slowest_playback_speed)

        self.actFast = QAction(self)
        self.actFast.setText("Fastest")
        self.actFast.setIcon(QIcon(get_resource("fast.png")))
        self.actFast.setDisabled(False)
        self.actFast.triggered.connect(self.set_fastest_playback_speed)

        self.speedControl = QSlider(Qt.Horizontal, self)
        self.speedControl.setMaximumSize(200, 25)
        self.speedControl.setTickPosition(QSlider.TicksBothSides)
        self.speedControl.setDisabled(False)
        self.speedControl.setMinimum(0)
        self.speedControl.setMaximum(12)
        self.speedControl.setValue(6)
        self.speedControl.setTickInterval(6)
        self.speedControl.setSingleStep(2)
        self.speedControl.setPageStep(3)
        self.speedControl.valueChanged.connect(self.update_playback_speed)

        self.timeSlider = QSlider(Qt.Horizontal, self)
        self.timeSlider.setMinimum(0)
        self.timeSliderRange = 1000
        self.timeSlider.setMaximum(self.timeSliderRange)
        self.timeSlider.setTickInterval(1)
        self.timeSlider.setTracking(True)
        self.timeSlider.setDisabled(True)
        self.timeSlider.valueChanged.connect(self.update_playback_time)

        self.playbackTime = .0
        self.playbackGain = 1
        self.currentStepSize = .0
        self.currentEndTime = .0
        self.playbackTimer = QTimer()
        self.playbackTimer.timeout.connect(self.increment_playback_time)
        self.playbackTimeChanged.connect(self.update_gui)
        self.playbackTimeout = 33  # in [ms] -> 30 fps

        self.actResetCamera = QAction(self)
        self.actResetCamera.setText("Reset Camera")
        self.actResetCamera.setIcon(QIcon(get_resource("reset_camera.png")))
        self.actResetCamera.setDisabled(True)
        if available_vis:
            self.actResetCamera.setEnabled(self.visualizer.can_reset_view)
        self.actResetCamera.triggered.connect(self.reset_camera_clicked)

        # postprocessing
        self.actPostprocessing = QAction(self)
        self.actPostprocessing.setText("Launch Postprocessor")
        self.actPostprocessing.setIcon(QIcon(get_resource("processing.png")))
        self.actPostprocessing.setDisabled(False)
        self.actPostprocessing.triggered.connect(self.postprocessing_clicked)
        self.actPostprocessing.setShortcut(QKeySequence("F7"))

        self.postprocessor = None

        # toolbar
        self.toolbarSim = QToolBar("Simulation")
        self.toolbarSim.setContextMenuPolicy(Qt.PreventContextMenu)
        self.toolbarSim.setMovable(False)
        self.toolbarSim.setIconSize(icon_size)
        self.addToolBar(self.toolbarSim)
        self.toolbarSim.addAction(self.actLoadRegimes)
        self.toolbarSim.addAction(self.actSave)
        self.toolbarSim.addSeparator()
        self.toolbarSim.addAction(self.actSimulateCurrent)
        self.toolbarSim.addAction(self.actSimulateAll)
        self.toolbarSim.addSeparator()
        self.toolbarSim.addAction(self.actPlayPause)
        self.toolbarSim.addAction(self.actStop)
        self.toolbarSim.addWidget(self.timeSlider)
        self.toolbarSim.addSeparator()
        self.toolbarSim.addAction(self.actSlow)
        self.toolbarSim.addWidget(self.speedControl)
        self.toolbarSim.addAction(self.actFast)
        self.toolbarSim.addSeparator()
        self.toolbarSim.addAction(self.actPostprocessing)
        self.toolbarSim.addAction(self.actResetCamera)
        self.postprocessor = None

        # log dock
        self.logBox = QPlainTextEdit(self)
        self.logBox.setReadOnly(True)
        self.logDock.addWidget(self.logBox)

        # init logger for logging box
        self.textLogger = PlainTextLogger(logging.INFO)
        self.textLogger.set_target_cb(self.logBox.appendPlainText)
        logging.getLogger().addHandler(self.textLogger)

        # menu bar
        fileMenu = self.menuBar().addMenu("&File")
        fileMenu.addAction(self.actLoadRegimes)
        fileMenu.addAction(self.actSave)
        fileMenu.addAction("&Quit", self.close)

        editMenu = self.menuBar().addMenu("&Edit")
        editMenu.addAction(self.actDeleteRegimes)

        simMenu = self.menuBar().addMenu("&Simulation")
        simMenu.addAction(self.actSimulateCurrent)
        simMenu.addAction(self.actSimulateAll)
        simMenu.addAction(self.actExitOnBatchCompletion)
        simMenu.addAction(self.actPostprocessing)

        animMenu = self.menuBar().addMenu("&Animation")
        animMenu.addAction(self.actPlayPause)
        animMenu.addAction("&Increase Playback Speed",
                           self.increment_playback_speed,
                           QKeySequence(Qt.CTRL + Qt.Key_Plus))
        animMenu.addAction("&Decrease Playback Speed",
                           self.decrement_playback_speed,
                           QKeySequence(Qt.CTRL + Qt.Key_Minus))
        animMenu.addAction("&Reset Playback Speed", self.reset_playback_speed,
                           QKeySequence(Qt.CTRL + Qt.Key_0))
        animMenu.addAction(self.actAutoPlay)
        animMenu.addAction(self.actResetCamera)

        helpMenu = self.menuBar().addMenu("&Help")
        helpMenu.addAction("&Online Documentation", self.show_online_docs)
        helpMenu.addAction("&About", self.show_info)

        # status bar
        self.status = QStatusBar(self)
        self.setStatusBar(self.status)
        self.statusLabel = QLabel("Ready.")
        self.statusBar().addPermanentWidget(self.statusLabel)
        self.timeLabel = QLabel("current time: 0.0")
        self.statusBar().addPermanentWidget(self.timeLabel)

        self._logger.info("Simulation GUI is up and running.")
Exemple #22
0
    def setupUi(self, Widget):

        # widgety rysujące kształty, instancje klasy Ksztalt
        self.ksztalt1 = Ksztalt(self, Ksztalty.Polygon)
        self.ksztalt2 = Ksztalt(self, Ksztalty.Ellipse)
        self.ksztaltAktywny = self.ksztalt1

        # przyciski CheckBox ###
        uklad = QVBoxLayout()  # układ pionowy
        self.grupaChk = QButtonGroup()
        for i, v in enumerate(('Kwadrat', 'Koło', 'Trójkąt', 'Linia')):
            self.chk = QCheckBox(v)
            self.grupaChk.addButton(self.chk, i)
            uklad.addWidget(self.chk)
        self.grupaChk.buttons()[self.ksztaltAktywny.ksztalt].setChecked(True)
        # CheckBox do wyboru aktywnego kształtu
        self.ksztaltChk = QCheckBox('<=')
        self.ksztaltChk.setChecked(True)
        uklad.addWidget(self.ksztaltChk)

        # układ poziomy dla kształtów oraz przycisków CheckBox
        ukladH1 = QHBoxLayout()
        ukladH1.addWidget(self.ksztalt1)
        ukladH1.addLayout(uklad)
        ukladH1.addWidget(self.ksztalt2)
        # koniec CheckBox ###

        # Slider i LCDNumber ###
        self.suwak = QSlider(Qt.Horizontal)
        self.suwak.setMinimum(0)
        self.suwak.setMaximum(255)
        self.lcd = QLCDNumber()
        self.lcd.setSegmentStyle(QLCDNumber.Flat)
        # układ poziomy (splitter) dla slajdera i lcd
        ukladH2 = QSplitter(Qt.Horizontal, self)
        ukladH2.addWidget(self.suwak)
        ukladH2.addWidget(self.lcd)
        ukladH2.setSizes((125, 75))

        # przyciski RadioButton ###
        self.ukladR = QHBoxLayout()
        for v in ('R', 'G', 'B'):
            self.radio = QRadioButton(v)
            self.ukladR.addWidget(self.radio)
        self.ukladR.itemAt(0).widget().setChecked(True)
        # grupujemy przyciski
        self.grupaRBtn = QGroupBox('Opcje RGB')
        self.grupaRBtn.setLayout(self.ukladR)
        self.grupaRBtn.setObjectName('Radio')
        self.grupaRBtn.setCheckable(True)
        # układ poziomy dla grupy Radio
        ukladH3 = QHBoxLayout()
        ukladH3.addWidget(self.grupaRBtn)
        # koniec RadioButton ###

        # Lista ComboBox i SpinBox ###
        self.listaRGB = QComboBox(self)
        for v in ('R', 'G', 'B'):
            self.listaRGB.addItem(v)
        self.listaRGB.setEnabled(False)
        # SpinBox
        self.spinRGB = QSpinBox()
        self.spinRGB.setMinimum(0)
        self.spinRGB.setMaximum(255)
        self.spinRGB.setEnabled(False)
        # układ pionowy dla ComboBox i SpinBox
        uklad = QVBoxLayout()
        uklad.addWidget(self.listaRGB)
        uklad.addWidget(self.spinRGB)
        # do układu poziomego grupy Radio dodajemy układ ComboBox i SpinBox
        ukladH3.insertSpacing(1, 25)
        ukladH3.addLayout(uklad)
        # koniec ComboBox i SpinBox ###

        # główny układ okna, pionowy ###
        ukladOkna = QVBoxLayout()
        ukladOkna.addLayout(ukladH1)
        ukladOkna.addWidget(ukladH2)
        ukladOkna.addLayout(ukladH3)

        self.setLayout(ukladOkna)  # przypisanie układu do okna głównego
        self.setWindowTitle('Widżety')
    def __init__(self, pPadre):

        self.padre = pPadre
        super(PanelParametros, self).__init__()
        font = QFont()
        font.setFamily('Times font')
        font.setFixedPitch(False)
        font.setPointSize(12)
        font.setBold(True)

        PanelParametros.vboxLayout = QVBoxLayout()
        self.setLayout(self.vboxLayout)

        PanelParametros.labelVacio = QLabel()

        self.labelValorSlider = QLabel('0', self)
        self.labelValorSlider.setFont(font)
        self.labelValorSlider.setFixedWidth(70)
        self.labelValorSlider.setFixedHeight(30)
        self.labelValorSlider.setStyleSheet(
            'color:white; background-color: #444952; border-radius: 10px')
        self.labelValorSlider.setAlignment(Qt.AlignCenter)
        self.vboxLayout.addWidget(self.labelValorSlider)

        PanelParametros.slider = QSlider(Qt.Horizontal, self)
        PanelParametros.slider.setFixedWidth(520)
        PanelParametros.slider.setFixedHeight(30)
        PanelParametros.slider.setMinimum(0)
        PanelParametros.slider.setMaximum(1000)
        PanelParametros.slider.valueChanged[int].connect(self.changeValue)
        PanelParametros.slider.setStyleSheet(
            'QSlider::handle:horizontal {background-color: #8ab71b;}')
        PanelParametros.vboxLayout.addWidget(PanelParametros.slider)

        PanelParametros.labelSlider = QLabel('RADIACIÓN')
        PanelParametros.labelSlider.setStyleSheet('color: white')
        PanelParametros.labelSlider.setFont(font)
        PanelParametros.vboxLayout.addWidget(PanelParametros.labelSlider)

        lbl = QLabel()
        lbl.setFixedHeight(100)
        self.vboxLayout.addWidget(lbl)

        self.labelSw1 = QLabel('Switch 1')
        self.labelSw1.setFixedWidth(90)
        self.labelSw1.setFont(font)
        self.labelSw1.setStyleSheet('color:white')

        self.labelBt1 = QLabel()
        self.labelBt1.setFixedSize(80, 80)
        self.labelBt1.setStyleSheet(
            'border-color: black; background-color: red; border-radius: 40px; border: 10px solid black'
        )

        self.labelSw2 = QLabel('Switch 2')
        self.labelSw2.setFixedWidth(90)
        self.labelSw2.setFont(font)
        self.labelSw2.setStyleSheet('color:white')

        self.labelBt2 = QLabel()
        self.labelBt2.setFixedSize(80, 80)
        self.labelBt2.setStyleSheet(
            'background-color: red; border-radius: 40px; border: 10px solid black'
        )

        self.labelSw3 = QLabel('Switch 3')
        self.labelSw3.setFixedWidth(90)
        self.labelSw3.setFont(font)
        self.labelSw3.setStyleSheet('color:white')

        self.labelBt3 = QLabel()
        self.labelBt3.setFixedSize(80, 80)
        self.labelBt3.setStyleSheet(
            'background-color: red; border-radius: 40px; border: 10px solid black'
        )

        lay1 = QHBoxLayout()
        lay1.addWidget(self.labelSw1)
        lay1.addWidget(self.labelBt1)
        panelay1 = QFrame()
        panelay1.setLayout(lay1)

        lay2 = QHBoxLayout()
        lay2.addWidget(self.labelSw2)
        lay2.addWidget(self.labelBt2)
        panelay2 = QFrame()
        panelay2.setLayout(lay2)

        lay3 = QHBoxLayout()
        lay3.addWidget(self.labelSw3)
        lay3.addWidget(self.labelBt3)
        panelay3 = QFrame()
        panelay3.setLayout(lay3)

        self.vboxLayout.addWidget(panelay1)
        self.vboxLayout.addWidget(panelay2)
        self.vboxLayout.addWidget(panelay3)

        self.botonSimular = QPushButton('SIMULAR', self)
        self.botonSimular.setFont(font)
        self.botonSimular.setStyleSheet(
            'background-color: #2aa1d3; color: white; border-radius: 10px')
        self.botonSimular.setGeometry(0, 0, 150, 60)
        self.botonSimular.setFixedHeight(50)
        self.botonSimular.clicked.connect(self.simular)

        self.labelVacio.setFixedHeight(100)
        self.vboxLayout.addWidget(self.botonSimular)
Exemple #24
0
    def __init__(self, parent=None):
        super(VideoWindow, self).__init__(parent)
        self.setWindowTitle("Beat timestamp editor") 

        self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface)

        videoWidget = QVideoWidget()

        self.playButton = QPushButton()
        self.playButton.setEnabled(False)
        self.playButton.setIcon(self.style().standardIcon(QStyle.SP_MediaPlay))
        self.playButton.setText("Play")
        self.playButton.clicked.connect(self.play)

        #add timestamp
        self.add = QPushButton()
        self.add.setEnabled(False)
        self.add.setIcon(self.style().standardIcon(QStyle.SP_DialogApplyButton))
        self.add.setText("Add")
        self.add.clicked.connect(self.add_timestamp)
        #clear timestamps
        self.clear = QPushButton()
        self.clear.setEnabled(False)
        self.clear.setIcon(self.style().standardIcon(QStyle.SP_DialogCancelButton))
        self.clear.setText("Clear")
        self.clear.clicked.connect(self.clear_timestamps)

        #--------------------
        #timestamp list
        self.list = QLabel()
        self.list.setText("Timestamps: ")
        self.list.setWordWrap(True)

        #*------------------

        self.positionSlider = QSlider(Qt.Horizontal)
        self.positionSlider.setRange(0, 0)
        self.positionSlider.sliderMoved.connect(self.setPosition)

        self.errorLabel = QLabel()
        self.errorLabel.setSizePolicy(QSizePolicy.Preferred,
                QSizePolicy.Maximum)

        # Create new action
        openAction = QAction(QIcon('open.png'), '&Open', self)        
        openAction.setShortcut('Ctrl+O')
        openAction.setStatusTip('Open movie')
        openAction.triggered.connect(self.openFile)

        # Create exit action
        exitAction = QAction(QIcon('exit.png'), '&Exit', self)        
        exitAction.setShortcut('Ctrl+Q')
        exitAction.setStatusTip('Exit application')
        exitAction.triggered.connect(self.exitCall)

        #Create save action
        self.saveAction = QAction(QIcon('save.png'), '&Save', self)        
        self.saveAction.setShortcut('Ctrl+S')
        self.saveAction.setStatusTip('Save .txt file')
        self.saveAction.triggered.connect(self.saveFile)
        self.saveAction.setEnabled(False)

        # Create menu bar and add action
        menuBar = self.menuBar()
        fileMenu = menuBar.addMenu('&File')
        #fileMenu.addAction(newAction)
        fileMenu.addAction(openAction)
        fileMenu.addAction(self.saveAction)
        fileMenu.addAction(exitAction)
        

        # Create a widget for window contents
        wid = QWidget(self)
        self.setCentralWidget(wid)

        # Create layouts to place inside widget
        controlLayout = QGridLayout()
        controlLayout.setContentsMargins(0, 0, 0, 0)
        controlLayout.addWidget(self.playButton,0,0)
        controlLayout.addWidget(self.positionSlider,0,1)
        controlLayout.addWidget(self.add,1,0)
        controlLayout.addWidget(self.list,1,1,2,1)
        controlLayout.addWidget(self.clear,2,0)

        layout = QVBoxLayout()
        layout.addLayout(controlLayout)
        layout.addWidget(self.errorLabel)

        # Set widget to contain window contents
        wid.setLayout(layout)

        self.mediaPlayer.setVideoOutput(videoWidget)
        self.mediaPlayer.stateChanged.connect(self.mediaStateChanged)
        self.mediaPlayer.positionChanged.connect(self.positionChanged)
        self.mediaPlayer.durationChanged.connect(self.durationChanged)
        self.mediaPlayer.error.connect(self.handleError)
Exemple #25
0
    def __init__(self, window, plugin, keystore, device_id):
        title = _("{} Settings").format(plugin.device)
        super(SettingsDialog, self).__init__(window, title)
        self.setMaximumWidth(540)

        devmgr = plugin.device_manager()
        config = devmgr.config
        handler = keystore.handler
        thread = keystore.thread
        hs_cols, hs_rows = (128, 64)

        def invoke_client(method, *args, **kw_args):
            unpair_after = kw_args.pop('unpair_after', False)

            def task():
                client = devmgr.client_by_id(device_id)
                if not client:
                    raise RuntimeError("Device not connected")
                if method:
                    getattr(client, method)(*args, **kw_args)
                if unpair_after:
                    devmgr.unpair_id(device_id)
                return client.features

            thread.add(task, on_success=update)

        def update(features):
            self.features = features
            set_label_enabled()
            if features.bootloader_hash:
                bl_hash = bh2u(features.bootloader_hash)
                bl_hash = "\n".join([bl_hash[:32], bl_hash[32:]])
            else:
                bl_hash = "N/A"
            noyes = [_("No"), _("Yes")]
            endis = [_("Enable Passphrases"), _("Disable Passphrases")]
            disen = [_("Disabled"), _("Enabled")]
            setchange = [_("Set a PIN"), _("Change PIN")]

            version = "%d.%d.%d" % (features.major_version,
                                    features.minor_version,
                                    features.patch_version)

            device_label.setText(features.label)
            pin_set_label.setText(noyes[features.pin_protection])
            passphrases_label.setText(disen[features.passphrase_protection])
            bl_hash_label.setText(bl_hash)
            label_edit.setText(features.label)
            device_id_label.setText(features.device_id)
            initialized_label.setText(noyes[features.initialized])
            version_label.setText(version)
            clear_pin_button.setVisible(features.pin_protection)
            clear_pin_warning.setVisible(features.pin_protection)
            pin_button.setText(setchange[features.pin_protection])
            pin_msg.setVisible(not features.pin_protection)
            passphrase_button.setText(endis[features.passphrase_protection])
            language_label.setText(features.language)

        def set_label_enabled():
            label_apply.setEnabled(label_edit.text() != self.features.label)

        def rename():
            invoke_client('change_label', label_edit.text())

        def toggle_passphrase():
            title = _("Confirm Toggle Passphrase Protection")
            currently_enabled = self.features.passphrase_protection
            if currently_enabled:
                msg = _(
                    "After disabling passphrases, you can only pair this "
                    "Vestx-Electrum wallet if it had an empty passphrase.  "
                    "If its passphrase was not empty, you will need to "
                    "create a new wallet with the install wizard.  You "
                    "can use this wallet again at any time by re-enabling "
                    "passphrases and entering its passphrase.")
            else:
                msg = _(
                    "Your current Vestx-Electrum wallet can only be used with "
                    "an empty passphrase.  You must create a separate "
                    "wallet with the install wizard for other passphrases "
                    "as each one generates a new set of addresses.")
            msg += "\n\n" + _("Are you sure you want to proceed?")
            if not self.question(msg, title=title):
                return
            invoke_client('toggle_passphrase', unpair_after=currently_enabled)

        def change_homescreen():
            dialog = QFileDialog(self, _("Choose Homescreen"))
            filename, __ = dialog.getOpenFileName()
            if not filename:
                return  # user cancelled

            if filename.endswith('.toif'):
                img = open(filename, 'rb').read()
                if img[:8] != b'TOIf\x90\x00\x90\x00':
                    handler.show_error(
                        'File is not a TOIF file with size of 144x144')
                    return
            else:
                from PIL import Image  # FIXME
                im = Image.open(filename)
                if im.size != (128, 64):
                    handler.show_error('Image must be 128 x 64 pixels')
                    return
                im = im.convert('1')
                pix = im.load()
                img = bytearray(1024)
                for j in range(64):
                    for i in range(128):
                        if pix[i, j]:
                            o = (i + j * 128)
                            img[o // 8] |= (1 << (7 - o % 8))
                img = bytes(img)
            invoke_client('change_homescreen', img)

        def clear_homescreen():
            invoke_client('change_homescreen', b'\x00')

        def set_pin():
            invoke_client('set_pin', remove=False)

        def clear_pin():
            invoke_client('set_pin', remove=True)

        def wipe_device():
            wallet = window.wallet
            if wallet and sum(wallet.get_balance()):
                title = _("Confirm Device Wipe")
                msg = _("Are you SURE you want to wipe the device?\n"
                        "Your wallet still has bitcoins in it!")
                if not self.question(
                        msg, title=title, icon=QMessageBox.Critical):
                    return
            invoke_client('wipe_device', unpair_after=True)

        def slider_moved():
            mins = timeout_slider.sliderPosition()
            timeout_minutes.setText(_("{:2d} minutes").format(mins))

        def slider_released():
            config.set_session_timeout(timeout_slider.sliderPosition() * 60)

        # Information tab
        info_tab = QWidget()
        info_layout = QVBoxLayout(info_tab)
        info_glayout = QGridLayout()
        info_glayout.setColumnStretch(2, 1)
        device_label = QLabel()
        pin_set_label = QLabel()
        passphrases_label = QLabel()
        version_label = QLabel()
        device_id_label = QLabel()
        bl_hash_label = QLabel()
        bl_hash_label.setWordWrap(True)
        language_label = QLabel()
        initialized_label = QLabel()
        rows = [
            (_("Device Label"), device_label),
            (_("PIN set"), pin_set_label),
            (_("Passphrases"), passphrases_label),
            (_("Firmware Version"), version_label),
            (_("Device ID"), device_id_label),
            (_("Bootloader Hash"), bl_hash_label),
            (_("Language"), language_label),
            (_("Initialized"), initialized_label),
        ]
        for row_num, (label, widget) in enumerate(rows):
            info_glayout.addWidget(QLabel(label), row_num, 0)
            info_glayout.addWidget(widget, row_num, 1)
        info_layout.addLayout(info_glayout)

        # Settings tab
        settings_tab = QWidget()
        settings_layout = QVBoxLayout(settings_tab)
        settings_glayout = QGridLayout()

        # Settings tab - Label
        label_msg = QLabel(
            _("Name this {}.  If you have multiple devices "
              "their labels help distinguish them.").format(plugin.device))
        label_msg.setWordWrap(True)
        label_label = QLabel(_("Device Label"))
        label_edit = QLineEdit()
        label_edit.setMinimumWidth(150)
        label_edit.setMaxLength(plugin.MAX_LABEL_LEN)
        label_apply = QPushButton(_("Apply"))
        label_apply.clicked.connect(rename)
        label_edit.textChanged.connect(set_label_enabled)
        settings_glayout.addWidget(label_label, 0, 0)
        settings_glayout.addWidget(label_edit, 0, 1, 1, 2)
        settings_glayout.addWidget(label_apply, 0, 3)
        settings_glayout.addWidget(label_msg, 1, 1, 1, -1)

        # Settings tab - PIN
        pin_label = QLabel(_("PIN Protection"))
        pin_button = QPushButton()
        pin_button.clicked.connect(set_pin)
        settings_glayout.addWidget(pin_label, 2, 0)
        settings_glayout.addWidget(pin_button, 2, 1)
        pin_msg = QLabel(
            _("PIN protection is strongly recommended.  "
              "A PIN is your only protection against someone "
              "stealing your bitcoins if they obtain physical "
              "access to your {}.").format(plugin.device))
        pin_msg.setWordWrap(True)
        pin_msg.setStyleSheet("color: red")
        settings_glayout.addWidget(pin_msg, 3, 1, 1, -1)

        # Settings tab - Homescreen
        homescreen_label = QLabel(_("Homescreen"))
        homescreen_change_button = QPushButton(_("Change..."))
        homescreen_clear_button = QPushButton(_("Reset"))
        homescreen_change_button.clicked.connect(change_homescreen)
        try:
            import PIL
        except ImportError:
            homescreen_change_button.setDisabled(True)
            homescreen_change_button.setToolTip(
                _("Required package 'PIL' is not available - Please install it."
                  ))
        homescreen_clear_button.clicked.connect(clear_homescreen)
        homescreen_msg = QLabel(
            _("You can set the homescreen on your "
              "device to personalize it.  You must "
              "choose a {} x {} monochrome black and "
              "white image.").format(hs_cols, hs_rows))
        homescreen_msg.setWordWrap(True)
        settings_glayout.addWidget(homescreen_label, 4, 0)
        settings_glayout.addWidget(homescreen_change_button, 4, 1)
        settings_glayout.addWidget(homescreen_clear_button, 4, 2)
        settings_glayout.addWidget(homescreen_msg, 5, 1, 1, -1)

        # Settings tab - Session Timeout
        timeout_label = QLabel(_("Session Timeout"))
        timeout_minutes = QLabel()
        timeout_slider = QSlider(Qt.Horizontal)
        timeout_slider.setRange(1, 60)
        timeout_slider.setSingleStep(1)
        timeout_slider.setTickInterval(5)
        timeout_slider.setTickPosition(QSlider.TicksBelow)
        timeout_slider.setTracking(True)
        timeout_msg = QLabel(
            _("Clear the session after the specified period "
              "of inactivity.  Once a session has timed out, "
              "your PIN and passphrase (if enabled) must be "
              "re-entered to use the device."))
        timeout_msg.setWordWrap(True)
        timeout_slider.setSliderPosition(config.get_session_timeout() // 60)
        slider_moved()
        timeout_slider.valueChanged.connect(slider_moved)
        timeout_slider.sliderReleased.connect(slider_released)
        settings_glayout.addWidget(timeout_label, 6, 0)
        settings_glayout.addWidget(timeout_slider, 6, 1, 1, 3)
        settings_glayout.addWidget(timeout_minutes, 6, 4)
        settings_glayout.addWidget(timeout_msg, 7, 1, 1, -1)
        settings_layout.addLayout(settings_glayout)
        settings_layout.addStretch(1)

        # Advanced tab
        advanced_tab = QWidget()
        advanced_layout = QVBoxLayout(advanced_tab)
        advanced_glayout = QGridLayout()

        # Advanced tab - clear PIN
        clear_pin_button = QPushButton(_("Disable PIN"))
        clear_pin_button.clicked.connect(clear_pin)
        clear_pin_warning = QLabel(
            _("If you disable your PIN, anyone with physical access to your "
              "{} device can spend your bitcoins.").format(plugin.device))
        clear_pin_warning.setWordWrap(True)
        clear_pin_warning.setStyleSheet("color: red")
        advanced_glayout.addWidget(clear_pin_button, 0, 2)
        advanced_glayout.addWidget(clear_pin_warning, 1, 0, 1, 5)

        # Advanced tab - toggle passphrase protection
        passphrase_button = QPushButton()
        passphrase_button.clicked.connect(toggle_passphrase)
        passphrase_msg = WWLabel(PASSPHRASE_HELP)
        passphrase_warning = WWLabel(PASSPHRASE_NOT_PIN)
        passphrase_warning.setStyleSheet("color: red")
        advanced_glayout.addWidget(passphrase_button, 3, 2)
        advanced_glayout.addWidget(passphrase_msg, 4, 0, 1, 5)
        advanced_glayout.addWidget(passphrase_warning, 5, 0, 1, 5)

        # Advanced tab - wipe device
        wipe_device_button = QPushButton(_("Wipe Device"))
        wipe_device_button.clicked.connect(wipe_device)
        wipe_device_msg = QLabel(
            _("Wipe the device, removing all data from it.  The firmware "
              "is left unchanged."))
        wipe_device_msg.setWordWrap(True)
        wipe_device_warning = QLabel(
            _("Only wipe a device if you have the recovery seed written down "
              "and the device wallet(s) are empty, otherwise the bitcoins "
              "will be lost forever."))
        wipe_device_warning.setWordWrap(True)
        wipe_device_warning.setStyleSheet("color: red")
        advanced_glayout.addWidget(wipe_device_button, 6, 2)
        advanced_glayout.addWidget(wipe_device_msg, 7, 0, 1, 5)
        advanced_glayout.addWidget(wipe_device_warning, 8, 0, 1, 5)
        advanced_layout.addLayout(advanced_glayout)
        advanced_layout.addStretch(1)

        tabs = QTabWidget(self)
        tabs.addTab(info_tab, _("Information"))
        tabs.addTab(settings_tab, _("Settings"))
        tabs.addTab(advanced_tab, _("Advanced"))
        dialog_vbox = QVBoxLayout(self)
        dialog_vbox.addWidget(tabs)
        dialog_vbox.addLayout(Buttons(CloseButton(self)))

        # Update information
        invoke_client(None)
Exemple #26
0
    def __init__(self, *args, **kwargs):
        super(roboGUI,self).__init__()
        self.window = QWidget(self)
        self.setCentralWidget(self.window)
        self.resize(300,100)
        self.setWindowTitle("roboGUI")
        self.layout = QVBoxLayout()

        self.startButton = QPushButton("START",self)
        self.startButton.setSizePolicy(QSizePolicy.Preferred,QSizePolicy.Expanding)
        self.startButton.resize(self.startButton.minimumSizeHint())
        self.layout.addWidget(self.startButton)
        self.stopButton = QPushButton("STOP",self)
        self.stopButton.setSizePolicy(QSizePolicy.Preferred,QSizePolicy.Expanding)
        self.stopButton.resize(self.stopButton.minimumSizeHint())
        self.layout.addWidget(self.stopButton)

        self.param1text = QHBoxLayout()
        self.param1title = QLabel("Parameter 1")
        self.param1value = QLabel(str(param1val))
        self.param1slider = QSlider(Qt.Horizontal)
        self.param1slider.setMinimum(1)
        self.param1slider.setMaximum(250)
        self.param1slider.setValue(param1val)
        self.param1slider.setTickInterval(1)
        self.param1text.addWidget(self.param1title)
        self.param1text.addWidget(self.param1value)
        self.layout.addLayout(self.param1text)
        self.layout.addWidget(self.param1slider)
        
        self.param2text = QHBoxLayout()
        self.param2title = QLabel("Parameter 2")
        self.param2value = QLabel(str(param2val))
        self.param2slider = QSlider(Qt.Horizontal)
        self.param2slider.setMinimum(1)
        self.param2slider.setMaximum(50)
        self.param2slider.setValue(param2val)
        self.param2slider.setTickInterval(1)
        self.param2text.addWidget(self.param2title)
        self.param2text.addWidget(self.param2value)
        self.layout.addLayout(self.param2text)
        self.layout.addWidget(self.param2slider)

        self.valuetext = QHBoxLayout()
        self.valuetitle = QLabel("Minimum Value")
        self.valuevalue = QLabel(str(valueMin))
        self.valueslider = QSlider(Qt.Horizontal)
        self.valueslider.setMinimum(0)
        self.valueslider.setMaximum(255)
        self.valueslider.setValue(valueMin)
        self.valueslider.setTickInterval(1)
        self.valuetext.addWidget(self.valuetitle)
        self.valuetext.addWidget(self.valuevalue)
        self.layout.addLayout(self.valuetext)
        self.layout.addWidget(self.valueslider)

        self.window.setLayout(self.layout)
        self.window.setSizePolicy(QSizePolicy.Preferred,QSizePolicy.Expanding)
        
        self.thread = None
        self.worker = None

        self.param1slider.valueChanged[int].connect(self.changedValue_param1)
        self.param2slider.valueChanged[int].connect(self.changedValue_param2)
        self.valueslider.valueChanged[int].connect(self.changedValue_valueMin)
        self.startButton.clicked.connect(self.startLoop)
Exemple #27
0
    def __init__(self):
        super().__init__()

        self.setObjectName("Genesis")
        self.resize(814, 600)
        font = QFont()
        font.setFamily("Cascadia Code PL")
        font.setPointSize(16)
        self.setFont(font)

        self.contenedor = QWidget(self)
        self.contenedor.setObjectName("contenedor")
        self.grid_central = QGridLayout(self.contenedor)
        self.grid_central.setObjectName("grid_central")

        self.marco = QFrame(self.contenedor)
        self.marco.setStyleSheet("background-color: teal;")
        self.marco.setFrameShape(QFrame.Panel)
        self.marco.setFrameShadow(QFrame.Sunken)
        self.marco.setObjectName("marco")
        self.grid = QGridLayout(self.marco)
        self.grid.setObjectName("grid")

        self.reproductor = QGridLayout()
        self.reproductor.setObjectName("reproductor")

        self.logo = QLabel(self.marco)
        self.logo.setMinimumSize(16777215, 16777215)
        self.logo.setMaximumSize(QSize(16777215, 16777215))
        font = QFont()
        font.setPointSize(22)
        self.logo.setFont(font)
        self.logo.setFrameShape(QFrame.StyledPanel)
        self.logo.setPixmap(QPixmap(":/img/genesis.jpg"))
        self.logo.setScaledContents(True)
        self.logo.setAlignment(Qt.AlignCenter)
        self.logo.setObjectName("logo")
        self.reproductor.addWidget(self.logo, 0, 0, 1, 1)
        self.grid.addLayout(self.reproductor, 0, 0, 1, 1)
        self.grid_central.addWidget(self.marco, 1, 0, 1, 1)

        self.lista = QListView(self.contenedor)
        self.lista.setMinimumSize(QSize(300, 16777215))
        self.lista.setMaximumSize(QSize(300, 16777215))
        self.lista.setStyleSheet("color: rgb(255, 255, 255);\n"
                                 "background-color: darkred;")
        self.lista.setObjectName("lista")
        self.grid_central.addWidget(self.lista, 1, 1, 1, 1)

        self.box_controles = QGroupBox(self.contenedor)
        self.box_controles.setMaximumSize(QSize(16777215, 122))
        self.box_controles.setObjectName("box_controles")
        self.grid_controles = QGridLayout(self.box_controles)
        self.grid_controles.setObjectName("grid_controles")

        self.parar = QPushButton(self.box_controles)
        self.parar.setMaximumSize(QSize(50, 109))
        self.parar.setToolTip('Detener Reproduccion')
        icon = QIcon()
        icon.addPixmap(QPixmap(":/img/stop.svg"), QIcon.Normal, QIcon.Off)
        self.parar.setIcon(icon)
        self.parar.setIconSize(QSize(48, 29))
        self.parar.setFlat(True)
        self.parar.setObjectName("parar")
        self.grid_controles.addWidget(self.parar, 0, 1, 1, 1)

        self.adelante = QPushButton(self.box_controles)
        self.adelante.setMaximumSize(QSize(50, 109))
        self.adelante.setToolTip('Adelantar a la siguiente cancion')
        icon1 = QIcon()
        icon1.addPixmap(QPixmap(":/img/next.svg"), QIcon.Normal, QIcon.Off)
        self.adelante.setIcon(icon1)
        self.adelante.setIconSize(QSize(48, 29))
        self.adelante.setFlat(True)
        self.adelante.setObjectName("adelante")
        self.grid_controles.addWidget(self.adelante, 0, 3, 1, 1)

        self.reproducir = QPushButton(self.box_controles)
        self.reproducir.setMaximumSize(QtCore.QSize(50, 109))
        icon2 = QIcon()
        icon2.addPixmap(QPixmap(":/img/play.svg"), QIcon.Normal, QIcon.Off)
        self.reproducir.setIcon(icon2)
        self.reproducir.setIconSize(QSize(48, 29))
        self.reproducir.setFlat(True)
        self.reproducir.setObjectName("reproducir")
        self.grid_controles.addWidget(self.reproducir, 0, 0, 1, 1)

        self.cargar = QPushButton(self.box_controles)
        self.cargar.setMaximumSize(QSize(50, 109))
        self.cargar.setToolTip('Cargar archivo')
        icon3 = QIcon()
        icon3.addPixmap(QPixmap(":/img/eject-1.svg"), QIcon.Normal, QIcon.Off)
        self.cargar.setIcon(icon3)
        self.cargar.setIconSize(QSize(48, 29))
        self.cargar.setFlat(True)
        self.cargar.setObjectName("cargar")
        self.grid_controles.addWidget(self.cargar, 0, 4, 1, 1)

        self.grid_sliders = QHBoxLayout()
        self.grid_sliders.setObjectName("grid_sliders")

        self.tiempo = QSlider(self.box_controles)
        self.tiempo.setOrientation(Qt.Horizontal)
        self.tiempo.setObjectName("tiempo")
        self.grid_sliders.addWidget(self.tiempo)

        self.logo_volumen = QPushButton(self.box_controles)
        self.logo_volumen.setMaximumSize(QSize(41, 41))
        icon4 = QIcon()
        icon4.addPixmap(QPixmap(":/img/altavoz3.png"), QIcon.Normal, QIcon.Off)
        self.logo_volumen.setIcon(icon4)
        self.logo_volumen.setIconSize(QSize(25, 25))
        self.logo_volumen.setFlat(True)
        self.logo_volumen.setObjectName("logo_volumen")
        self.grid_sliders.addWidget(self.logo_volumen)

        self.volumen = QSlider(self.box_controles)
        self.volumen.setMaximumSize(QSize(139, 16777215))
        self.volumen.setPageStep(1)
        self.volumen.setOrientation(Qt.Horizontal)
        self.volumen.setObjectName("volumen")
        self.grid_sliders.addWidget(self.volumen)
        self.grid_controles.addLayout(self.grid_sliders, 1, 0, 1, 7)

        self.atras = QPushButton(self.box_controles)
        self.atras.setMaximumSize(QSize(50, 109))
        self.atras.setToolTip('Atrasar a la anterior cancion')
        icon5 = QIcon()
        icon5.addPixmap(QPixmap(":/img/back.svg"), QIcon.Normal, QIcon.Off)
        self.atras.setIcon(icon5)
        self.atras.setIconSize(QSize(48, 29))
        self.atras.setFlat(True)
        self.atras.setObjectName("atras")
        self.grid_controles.addWidget(self.atras, 0, 2, 1, 1)

        self.menu = QPushButton(self.box_controles)
        self.menu.setMaximumSize(QSize(50, 109))
        self.menu.setToolTip('Ocultar la lista de reproduccion')
        icon6 = QIcon()
        icon6.addPixmap(QPixmap(":/img/menu2.png"), QIcon.Normal, QIcon.Off)
        self.menu.setIcon(icon6)
        self.menu.setIconSize(QSize(48, 29))
        self.menu.setFlat(True)
        self.menu.setObjectName("menu")
        self.grid_controles.addWidget(self.menu, 0, 6, 1, 1)

        self.datos = QLabel(self.box_controles)
        self.datos.setMinimumSize(QSize(0, 0))
        self.datos.setFrameShape(QFrame.StyledPanel)
        self.datos.setIndent(13)
        self.datos.setObjectName("datos")
        self.grid_controles.addWidget(self.datos, 0, 5, 1, 1)
        self.grid_central.addWidget(self.box_controles, 0, 0, 1, 2)

        self.setCentralWidget(self.contenedor)

        self.setWindowTitle("   Genesis  Reproductor")
        self.setWindowIcon(QIcon('img/icono.jpg'))
        self.box_controles.setTitle(" Bienvenido ...")

        self.show()
Exemple #28
0
    def __init__(self, session, tool_name):

        self._default_color = (255, 153, 204, 128)  # Transparent pink
        self._max_slider_value = 1000  # QSlider only handles integer values
        self._max_slider_radius = 100.0  # Float maximum radius value, scene units
        self._block_text_update = False  # Avoid radius slider and text continuous updating each other.
        self._block_slider_update = False  # Avoid radius slider and text continuous updating each other.

        b = session.main_view.drawing_bounds()
        vradius = 100 if b is None else b.radius()
        self._max_slider_radius = vradius
        center = b.center() if b else (0, 0, 0)
        self._sphere_model = SphereModel('eraser sphere', session,
                                         self._default_color, center,
                                         0.2 * vradius)

        ToolInstance.__init__(self, session, tool_name)

        self.display_name = 'Map Eraser'

        from chimerax.ui import MainToolWindow
        tw = MainToolWindow(self)
        self.tool_window = tw
        parent = tw.ui_area

        from PyQt5.QtWidgets import QVBoxLayout, QHBoxLayout, QFrame, QCheckBox, QLabel, QPushButton, QLineEdit, QSlider
        from PyQt5.QtCore import Qt

        layout = QVBoxLayout(parent)
        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(0)
        parent.setLayout(layout)

        sf = QFrame(parent)
        layout.addWidget(sf)

        slayout = QHBoxLayout(sf)
        slayout.setContentsMargins(0, 0, 0, 0)
        slayout.setSpacing(10)

        self._show_eraser = se = QCheckBox('Show map eraser sphere', sf)
        se.setCheckState(Qt.Checked)
        se.stateChanged.connect(self._show_eraser_cb)
        slayout.addWidget(se)
        from chimerax.ui.widgets import ColorButton
        self._sphere_color = sc = ColorButton(sf,
                                              max_size=(16, 16),
                                              has_alpha_channel=True)
        sc.color = self._default_color
        sc.color_changed.connect(self._change_color_cb)
        slayout.addWidget(sc)
        slayout.addStretch(1)  # Extra space at end

        rf = QFrame(parent)
        layout.addWidget(rf)
        rlayout = QHBoxLayout(rf)
        rlayout.setContentsMargins(0, 0, 0, 0)
        rlayout.setSpacing(4)

        rl = QLabel('Radius', rf)
        rlayout.addWidget(rl)
        self._radius_entry = rv = QLineEdit('', rf)
        rv.setMaximumWidth(40)
        rv.returnPressed.connect(self._radius_changed_cb)
        rlayout.addWidget(rv)
        self._radius_slider = rs = QSlider(Qt.Horizontal, rf)
        smax = self._max_slider_value
        rs.setRange(0, smax)
        rs.valueChanged.connect(self._radius_slider_moved_cb)
        rlayout.addWidget(rs)

        rv.setText('%.4g' % self._sphere_model.radius)
        self._radius_changed_cb()

        ef = QFrame(parent)
        layout.addWidget(ef)
        elayout = QHBoxLayout(ef)
        elayout.setContentsMargins(0, 0, 0, 0)
        elayout.setSpacing(30)
        eb = QPushButton('Erase inside sphere', ef)
        eb.clicked.connect(self._erase_in_sphere)
        elayout.addWidget(eb)
        eo = QPushButton('Erase outside sphere', ef)
        eo.clicked.connect(self._erase_outside_sphere)
        elayout.addWidget(eo)
        rb = QPushButton('Reduce map bounds', ef)
        rb.clicked.connect(self._crop_map)
        elayout.addWidget(rb)
        elayout.addStretch(1)  # Extra space at end

        layout.addStretch(1)  # Extra space at end

        tw.manage(placement="side")

        # When displayed models change update radius slider range.
        from chimerax.core.models import MODEL_DISPLAY_CHANGED
        h = session.triggers.add_handler(MODEL_DISPLAY_CHANGED,
                                         self._model_display_change)
        self._model_display_change_handler = h
    def initUI(self):

        self.setMinimumSize(1340, 200)
        self.setMaximumSize(1340, 200)
        '''Radio buttons for Original/RGB/HSV/YUV images'''
        self.origButton = QRadioButton("Original")
        self.rgbButton = QRadioButton("RGB")
        self.hsvButton = QRadioButton("HSV")
        self.yuvButton = QRadioButton("YUV")
        '''Signals for toggled radio buttons'''
        self.origButton.toggled.connect(lambda: self.origButtonState())
        self.rgbButton.toggled.connect(lambda: self.rgbButtonState())
        self.hsvButton.toggled.connect(lambda: self.hsvButtonState())
        self.yuvButton.toggled.connect(lambda: self.yuvButtonState())

        self.origButton.setChecked(True)
        '''Main layout of the widget will contain several vertical layouts'''
        self.hLayout = QHBoxLayout(self)
        self.hLayout.setObjectName("hLayout")
        ''' Vertical Layout for radio buttons '''
        self.radioLayout = QVBoxLayout()
        self.radioLayout.setObjectName("radioLayout")
        self.radioLayout.addWidget(self.origButton)
        self.radioLayout.addWidget(self.rgbButton)
        self.radioLayout.addWidget(self.hsvButton)
        self.radioLayout.addWidget(self.yuvButton)
        self.vSpacer = QSpacerItem(30, 500, QSizePolicy.Ignored,
                                   QSizePolicy.Ignored)
        self.radioLayout.addItem(self.vSpacer)

        hmin, smin, vmin = HSVMIN
        hmax, smax, vmax = HSVMAX
        ''' Vertical Layout for HMIN Slider'''
        self.hminLayout = QVBoxLayout()
        self.hminLayout.setObjectName("hminLayout")
        self.hminLabel = QLabel("HMin")
        self.hminValue = QLabel("0")
        self.hminValue.setAlignment(Qt.AlignCenter)
        self.hminSlider = QSlider(Qt.Vertical)
        self.hminSlider.setMinimum(hmin)
        self.hminSlider.setMaximum(hmax)
        self.hminSlider.setValue(hmin)
        self.hminLayout.addWidget(self.hminLabel)
        self.hminLayout.addWidget(self.hminValue)
        self.hminLayout.addWidget(self.hminSlider)
        ''' Vertical Layout for HMAX Slider'''
        self.hmaxLayout = QVBoxLayout()
        self.hmaxLayout.setObjectName("hmaxLayout")
        self.hmaxLabel = QLabel("HMax")
        self.hmaxValue = QLabel("6")
        self.hmaxValue.setAlignment(Qt.AlignCenter)
        self.hmaxSlider = QSlider(Qt.Vertical)
        self.hmaxSlider.setMinimum(hmin)
        self.hmaxSlider.setMaximum(hmax)
        self.hmaxSlider.setValue(hmax)
        self.hmaxLayout.addWidget(self.hmaxLabel)
        self.hmaxLayout.addWidget(self.hmaxValue)
        self.hmaxLayout.addWidget(self.hmaxSlider)
        ''' Vertical Layout for SMIN Slider'''
        self.sminLayout = QVBoxLayout()
        self.sminLayout.setObjectName("sminLayout")
        self.sminLabel = QLabel("SMin")
        self.sminValue = QLabel("0")
        self.sminValue.setAlignment(Qt.AlignCenter)
        self.sminSlider = QSlider(Qt.Vertical)
        self.sminSlider.setMinimum(smin)
        self.sminSlider.setMaximum(smax)
        self.sminSlider.setValue(smin)
        self.sminLayout.addWidget(self.sminLabel)
        self.sminLayout.addWidget(self.sminValue)
        self.sminLayout.addWidget(self.sminSlider)
        ''' Vertical Layout for SMAX Slider'''
        self.smaxLayout = QVBoxLayout()
        self.smaxLayout.setObjectName("smaxLayout")
        self.smaxLabel = QLabel("SMax")
        self.smaxValue = QLabel("1")
        self.smaxValue.setAlignment(Qt.AlignCenter)
        self.smaxSlider = QSlider(Qt.Vertical)
        self.smaxSlider.setMinimum(smin)
        self.smaxSlider.setMaximum(smax)
        self.smaxSlider.setValue(smax)
        self.smaxLayout.addWidget(self.smaxLabel)
        self.smaxLayout.addWidget(self.smaxValue)
        self.smaxLayout.addWidget(self.smaxSlider)
        ''' Vertical Layout for VMIN Slider'''
        self.vminLayout = QVBoxLayout()
        self.vminLayout.setObjectName("vminLayout")
        self.vminLabel = QLabel("VMin")
        self.vminValue = QLabel("0")
        self.vminValue.setAlignment(Qt.AlignCenter)
        self.vminSlider = QSlider(Qt.Vertical)
        self.vminSlider.setMinimum(vmin)
        self.vminSlider.setMaximum(vmax)
        self.vminSlider.setValue(vmin)
        self.vminLayout.addWidget(self.vminLabel)
        self.vminLayout.addWidget(self.vminValue)
        self.vminLayout.addWidget(self.vminSlider)
        ''' Vertical Layout for VMAX Slider'''
        self.vmaxLayout = QVBoxLayout()
        self.vmaxLayout.setObjectName("vmaxLayout")
        self.vmaxLabel = QLabel("VMax")
        self.vmaxValue = QLabel("255")
        self.vmaxValue.setAlignment(Qt.AlignCenter)
        self.vmaxSlider = QSlider(Qt.Vertical)
        self.vmaxSlider.setMinimum(vmin)
        self.vmaxSlider.setMaximum(vmax)
        self.vmaxSlider.setValue(vmax)
        self.vmaxLayout.addWidget(self.vmaxLabel)
        self.vmaxLayout.addWidget(self.vmaxValue)
        self.vmaxLayout.addWidget(self.vmaxSlider)
        '''Adding all the vertical layouts to the main horizontal layout'''
        self.hLayout.addLayout(self.radioLayout)
        self.hLayout.addLayout(self.hminLayout)
        self.hLayout.addLayout(self.hmaxLayout)
        self.hLayout.addLayout(self.sminLayout)
        self.hLayout.addLayout(self.smaxLayout)
        self.hLayout.addLayout(self.vminLayout)
        self.hLayout.addLayout(self.vmaxLayout)
        self.setLayout(self.hLayout)
        '''Signals for sliders value changes'''
        self.hminSlider.valueChanged.connect(self.changeHmin)
        self.hmaxSlider.valueChanged.connect(self.changeHmax)
        self.sminSlider.valueChanged.connect(self.changeSmin)
        self.smaxSlider.valueChanged.connect(self.changeSmax)
        self.vminSlider.valueChanged.connect(self.changeVmin)
        self.vmaxSlider.valueChanged.connect(self.changeVmax)
Exemple #30
0
    def init_Button(self):
        #开始结束按钮
        self.state_start_end = 0
        self.pushButton = QPushButton()
        self.pushButton.setStyleSheet("background:transparent;")
        self.pushButton.setText("")
        icon = QIcon()
        icon.addPixmap(QPixmap(":/start/start.png"))
        self.pushButton.setIcon(icon)
        self.pushButton.setIconSize(QSize(30, 30))
        self.pushButton.setCheckable(True)
        self.pushButton.setFlat(True)
        self.pushButton.setObjectName("开始/结束")
        self.pushButton.clicked.connect(self.start_end)

        #暂停继续按钮
        self.state_continue_stop = 0
        self.pushButton_2 = QPushButton()
        self.pushButton_2.setStyleSheet("background:transparent;")
        self.pushButton_2.setText("")
        icon1 = QIcon()
        icon1.addPixmap(QPixmap(":/on/stop.png"))
        self.pushButton_2.setIcon(icon1)
        self.pushButton_2.setIconSize(QSize(30, 30))
        self.pushButton_2.setCheckable(True)
        self.pushButton_2.setFlat(True)
        self.pushButton_2.setObjectName("pushButton_2")
        self.pushButton_2.clicked.connect(self.continue_stop)

        #数据分析按钮
        self.toolButton = QToolButton()
        self.toolButton.setLayoutDirection(Qt.LeftToRight)
        self.toolButton.setStyleSheet("background:transparent;")
        icon2 = QIcon()
        icon2.addPixmap(QPixmap(":/analytics/analytics.png"), QIcon.Normal,
                        QIcon.Off)
        self.toolButton.setIcon(icon2)
        self.toolButton.setIconSize(QSize(30, 30))
        self.toolButton.setAutoRaise(True)
        self.toolButton.setObjectName("toolButton")
        self.toolButton.clicked.connect(self.analyze)

        #声音播放静音按钮
        self.sound_state = 0
        self.pushButton_4 = QPushButton()
        self.pushButton_4.setStyleSheet("background:transparent;")
        self.pushButton_4.setText("")
        icon3 = QIcon()
        icon3.addPixmap(QPixmap(":/sound/sound.png"), QIcon.Normal, QIcon.Off)
        icon3.addPixmap(QPixmap(":/sound_off/Sound_off.png"), QIcon.Normal,
                        QIcon.On)
        self.pushButton_4.setIcon(icon3)
        self.pushButton_4.setIconSize(QSize(30, 30))
        self.pushButton_4.setCheckable(True)
        self.pushButton_4.setFlat(True)
        self.pushButton_4.setObjectName("pushButton_4")
        self.pushButton_4.clicked.connect(self.sound_renew)
        #self.pushButton_4.rclicked.connect(self.sound_renew())

        #声音大小调节按钮
        self.splider = QSlider(Qt.Horizontal)
        self.splider.valueChanged.connect(self.valChange)
        self.splider.setMinimum(0)
        self.splider.setMaximum(100)
        self.splider.setSingleStep(1)
        self.splider.setTickInterval(1)
        self.splider.setValue(100)

        #布局
        hbox = QHBoxLayout()
        vbox = QVBoxLayout()
        hbox.addWidget(self.pushButton)
        hbox.addWidget(self.pushButton_2)
        hbox.addWidget(self.toolButton)
        hbox.addWidget(self.pushButton_4)
        hbox.addWidget(self.splider)
        hbox.addStretch(1)
        vbox.addStretch(1)
        vbox.addLayout(hbox)
        main_frame = QWidget()
        main_frame.setLayout(vbox)
        self.setCentralWidget(main_frame)