示例#1
0
class AliasLayout(QGridLayout):
    new_color = Signal(str)

    def __init__(self):
        super().__init__()

        self.alias_editor = QLineEdit()
        self.alias_editor.setMaxLength(32)
        # noinspection PyUnresolvedReferences
        self.alias_editor.returnPressed.connect(self.alias_editor.clearFocus)
        self.addWidget(QLabel('LN Node Alias'), column=1, column_span=1)
        self.addWidget(self.alias_editor,
                       column=2,
                       column_span=2,
                       same_row=True)

        self.addWidget(QLabel('LN Node Color'), column=1, column_span=1)
        self.color_label = QLabel()
        self.color_label.setAutoFillBackground(True)
        self.color_label.setFixedSize(10, 10)
        self.addWidget(self.color_label,
                       column_span=1,
                       column=2,
                       same_row=True)

        self.select_color_button = QPushButton('Select color')
        # noinspection PyUnresolvedReferences
        self.select_color_button.clicked.connect(self.select_color)
        self.addWidget(self.select_color_button,
                       column=3,
                       column_span=1,
                       same_row=True)

        self.color_dialog = QColorDialog(self.parentWidget())

    def select_color(self):
        color = self.color_dialog.getColor()
        if color.isValid():
            self.set_palette(color)
            self.color_dialog.setCurrentColor(color)
            # noinspection PyUnresolvedReferences
            self.new_color.emit(color.name())

    def set_alias(self, text: str):
        self.alias_editor.setText(text)

    def set_color(self, color_hex: str):
        color = QColor(color_hex)
        if color.isValid():
            self.set_palette(color)
            self.color_dialog.setCurrentColor(color)

    def set_palette(self, color: QColor):
        palette = self.color_label.palette()
        palette.setColor(QPalette.Background, color)
        self.color_label.setPalette(palette)
示例#2
0
class MainWindow(QMainWindow):
    # Variável armazena a última cor selecionada.
    last_color = Qt.white

    def __init__(self):
        super().__init__()
        # Título da janela.
        self.setWindowTitle('PySide2 QColorDialog().')

        # Ícone da janela principal
        icon = QIcon()
        icon.addPixmap(QPixmap('../../../images/icons/icon.png'))
        self.setWindowIcon(icon)

        # Tamanho inicial da janela.
        screen_size = app.desktop().geometry()
        # screen_size = app.primaryScreen().geometry()
        width = screen_size.width()
        height = screen_size.height()
        self.resize(width / 2, height / 2)

        # Tamanho mínimo da janela.
        self.setMinimumSize(width / 2, height / 2)

        # Tamanho maximo da janela.
        self.setMaximumSize(width - 200, height - 200)

        # Widget central.
        widget = QWidget()
        self.setCentralWidget(widget)

        # Widgets.
        vbox = QVBoxLayout()
        widget.setLayout(vbox)

        self.label = QLabel('Cor selecionada')
        self.label.setAutoFillBackground(True)
        self.label.setAlignment(Qt.AlignCenter)
        vbox.addWidget(self.label)

        button = QPushButton('Abrir diálogo de seleção de cor')
        button.clicked.connect(self.open_dialog)
        vbox.addWidget(button)

    def open_dialog(self):
        color = QColorDialog().getColor(
            parent=self,
            title='Selecione uma cor',
            initial=self.last_color,
        )
        if color.isValid():
            self.last_color = color
            palette = self.label.palette()
            palette.setColor(QPalette.Background, color)
            self.label.setPalette(palette)
示例#3
0
文件: ui.py 项目: ramesharun/caribou
class ResultWidget(QWidget):
    def __init__(self, route=None):
        super().__init__()

        layout = QVBoxLayout()
        self.route = route

        self.thread_pool = QThreadPool()

        layout_send = QHBoxLayout()
        self.send_button = QPushButton('Send')
        self.send_button.clicked.connect(self.make_request)

        self.search_line = QLineEdit()
        self.search_line.setPlaceholderText('Search')
        self.search_line.textChanged.connect(self.search_result_reset)
        self.search_line.returnPressed.connect(self.search_result)

        self.response_status_label = QLabel()
        self.response_status_label.setFont(FONT_ROUTE)
        self.response_status_label.hide()

        self.elapsed_time_label = QLabel()
        self.elapsed_time_label.setFont(FONT_ROUTE)
        self.elapsed_time_label.hide()

        self.search_summary_label = QLabel()
        self.search_summary_label.setFont(FONT_ROUTE)
        self.search_summary_label.hide()

        if route is not None:
            layout_send.addWidget(self.send_button)

        layout_send.addWidget(self.response_status_label)
        layout_send.addWidget(self.elapsed_time_label)
        layout_send.addStretch(1)

        layout_send.addWidget(self.search_summary_label)
        layout_send.addWidget(self.search_line)

        layout.addLayout(layout_send)

        self.result_text_edit = ResultTextEdit()
        self.result_text_edit.setReadOnly(True)
        self.result_text_edit.setFont(TEXT_FONT)
        self.result_text_edit.setContextMenuPolicy(Qt.NoContextMenu)

        self.result_text_edit.search.connect(self.focus)

        self.shortcut = QShortcut(QKeySequence("Ctrl+Return"), self,
                                  self.make_request)

        self.result_text_edit.setUndoRedoEnabled(False)

        self.highlighter = TextHighlighter(self.result_text_edit.document())

        layout.addWidget(self.result_text_edit)

        if route is not None:
            saved_result = load_request_result(route)
            self.result_text_edit.setPlainText(saved_result)

        self.setLayout(layout)

    def goto(self, to):
        c = self.result_text_edit.textCursor()
        c.movePosition(to, QTextCursor.MoveAnchor, 1)
        self.result_text_edit.setTextCursor(c)

    def search_result_reset(self):
        self.goto(QTextCursor.Start)

        string_format = QTextCharFormat()
        string_format.setBackground(QColor('#668B8B'))

        extras = []
        self.search_positions = []
        while True:
            extra = QTextEdit.ExtraSelection()
            found = self.result_text_edit.find(self.search_line.text())

            if not found:
                break

            extra.cursor = self.result_text_edit.textCursor()
            extra.format = string_format

            self.search_positions.append(extra.cursor.position())
            extras.append(extra)

        self.result_text_edit.setExtraSelections(extras)
        self.goto(QTextCursor.Start)
        self.search_result()

    def search_result(self):
        p = self.result_text_edit.palette()
        p.setColor(QPalette.Highlight, QColor("#ee799f"))
        self.result_text_edit.setPalette(p)

        search_settings = QTextDocument.FindFlags()

        mod = QApplication.keyboardModifiers()
        if (mod & Qt.ShiftModifier) != 0:
            search_settings |= QTextDocument.FindBackward

        r = self.result_text_edit.find(self.search_line.text(),
                                       search_settings)
        if not r:
            if (mod & Qt.ShiftModifier) != 0:
                self.goto(QTextCursor.End)
            else:
                self.goto(QTextCursor.Start)
            self.result_text_edit.find(self.search_line.text(),
                                       search_settings)

        if self.search_line.text() == '':
            self.search_summary_label.hide()
            return

        current_position = self.result_text_edit.textCursor().position()
        try:
            current_index = self.search_positions.index(current_position)
        except ValueError:
            current_index = -1

        self.search_summary_label.show()
        self.search_summary_label.setText(
            '%s/%s' % (current_index + 1, len(self.search_positions)))

    def focus(self):
        self.search_line.setFocus()
        self.search_line.selectAll()

    def make_request(self):
        self.response_status_label.hide()
        self.elapsed_time_label.hide()
        self.result_text_edit.setPlainText('Loading..')
        try:
            group_values, route_values = get_parameter_values_for_route(
                self.route)
            request = self.route.get_request(group_values, route_values)
            worker = RequestWorker(
                request.method,
                request.url,
                params=request.params,
                headers=request.headers,
                json=request.json,
            )
            worker.signals.result.connect(self.set_result)
            self.thread_pool.start(worker)
        except CaribouException as e:
            self.result_text_edit.setPlainText(str(e))
        except Exception:
            self.result_text_edit.setPlainText(traceback.format_exc())

    def set_result(self, text, status_code, elapsed_time):
        if status_code == 0:
            self.response_status_label.hide()
            self.elapsed_time_label.hide()
        else:
            p = self.response_status_label.palette()
            if status_code == 200:
                self.response_status_label.setText(str(status_code) + ' OK')
                p.setColor(QPalette.WindowText, QColor('#1FDA9A'))
            else:
                self.response_status_label.setText(str(status_code) + ' ERROR')
                p.setColor(QPalette.WindowText, QColor('#DB3340'))

            self.response_status_label.setPalette(p)
            self.response_status_label.show()

            self.elapsed_time_label.setText('%s ms' % int(elapsed_time * 1000))
            self.elapsed_time_label.show()

        self.result_text_edit.setUpdatesEnabled(False)
        self.result_text_edit.setPlainText(text)
        self.result_text_edit.setUpdatesEnabled(True)

        save_request_result(self.route, text)
        persist_storage()
示例#4
0
class StatsWidget(QFrame):
    def __init__(self, controller):
        QFrame.__init__(self)

        self.controller = controller
        self.controller.flagsCountChanged.connect(self.update_flags_count)
        self.controller.gameReset.connect(self.reset_timer)

        self.timer_val = 0

        self.timer = QTimer()
        self.timer.timeout.connect(self.increment_timer)
        self.timer.start(1000)

        self.flags = QLabel("0")
        self.flags.setFixedWidth(50)
        self.flags.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
        self.flags.setAutoFillBackground(True)

        flagsFont = self.flags.font()
        flagsFont.setPixelSize(28)
        self.flags.setFont(flagsFont)

        flagsPalette = self.flags.palette()
        flagsPalette.setColor(QPalette.Foreground, Qt.red)
        flagsPalette.setColor(QPalette.Window, Qt.black)
        self.flags.setPalette(flagsPalette)

        self.reset = QPushButton()
        self.reset.setFixedSize(45, 45)
        self.reset.clicked.connect(self.restart_game)

        self.seconds = QLabel("0")
        self.seconds.setFixedWidth(50)
        self.seconds.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
        self.seconds.setAutoFillBackground(True)

        secondsFont = self.seconds.font()
        secondsFont.setPixelSize(28)
        self.seconds.setFont(secondsFont)

        secondsPalette = self.seconds.palette()
        secondsPalette.setColor(QPalette.Foreground, Qt.red)
        secondsPalette.setColor(QPalette.Window, Qt.black)
        self.seconds.setPalette(secondsPalette)

        self.layout = QHBoxLayout()
        self.layout.setContentsMargins(5, 0, 5, 0)
        self.layout.setSpacing(0)
        self.layout.addWidget(self.flags)
        self.layout.addSpacerItem(QSpacerItem(100, 10, QSizePolicy.Maximum))
        self.layout.addWidget(self.reset)
        self.layout.addSpacerItem(QSpacerItem(100, 10, QSizePolicy.Maximum))
        self.layout.addWidget(self.seconds)
        self.setLayout(self.layout)

    def update_flags_count(self, count):
        self.flags.setText(str(count))

    def reset_timer(self):
        self.timer.stop()
        self.timer_val = 0
        self.seconds.setText(str(self.timer_val))
        self.timer.start()

    def increment_timer(self):
        self.timer_val += 1
        self.seconds.setText(str(self.timer_val))

    def restart_game(self):
        self.controller.restart_game()
示例#5
0
class Dashboard(QWidget):
    def __init__(self):
        super().__init__()
        self.layout = QGridLayout()
        self.setMaximumHeight(300)

        # View
        available_cameras = self.get_available_cameras()
        self.available_cameras_combobox = QComboBox()
        self.available_cameras_combobox.addItems(available_cameras)
        self.layout.addWidget(QLabel("Camera:"), 1, 0, Qt.AlignRight)
        self.layout.addWidget(self.available_cameras_combobox, 1, 1)

        # HSV color
        self.hsv_min_hue_sb = QSpinBox(minimum=0,
                                       maximum=255,
                                       value=DEFAULT_HSV_MIN_HUE)
        self.hsv_max_hue_sb = QSpinBox(minimum=0,
                                       maximum=255,
                                       value=DEFAULT_HSV_MAX_HUE)
        self.hsv_min_value_sb = QSpinBox(minimum=0,
                                         maximum=255,
                                         value=DEFAULT_HSV_MIN_VALUE)
        self.hsv_max_value_sb = QSpinBox(minimum=0,
                                         maximum=255,
                                         value=DEFAULT_HSV_MAX_VALUE)
        self.hsv_min_saturation_sb = QSpinBox(minimum=0,
                                              maximum=255,
                                              value=DEFAULT_HSV_MIN_SATURATION)
        self.hsv_max_saturation_sb = QSpinBox(minimum=0,
                                              maximum=255,
                                              value=DEFAULT_HSV_MAX_SATURATION)

        self.hsv_min_hue_s = QSlider(minimum=0,
                                     maximum=255,
                                     value=DEFAULT_HSV_MIN_HUE,
                                     orientation=Qt.Horizontal)
        self.hsv_max_hue_s = QSlider(minimum=0,
                                     maximum=255,
                                     value=DEFAULT_HSV_MAX_HUE,
                                     orientation=Qt.Horizontal)
        self.hsv_min_value_s = QSlider(
            minimum=0,
            maximum=255,
            value=DEFAULT_HSV_MIN_VALUE,
            orientation=Qt.Horizontal,
        )
        self.hsv_max_value_s = QSlider(
            minimum=0,
            maximum=255,
            value=DEFAULT_HSV_MAX_VALUE,
            orientation=Qt.Horizontal,
        )
        self.hsv_min_saturation_s = QSlider(
            minimum=0,
            maximum=255,
            value=DEFAULT_HSV_MIN_SATURATION,
            orientation=Qt.Horizontal,
        )
        self.hsv_max_saturation_s = QSlider(
            minimum=0,
            maximum=255,
            value=DEFAULT_HSV_MAX_SATURATION,
            orientation=Qt.Horizontal,
        )

        max_width = 300
        self.hsv_min_hue_sb.setMaximumWidth(max_width)
        self.hsv_max_hue_sb.setMaximumWidth(max_width)
        self.hsv_min_value_sb.setMaximumWidth(max_width)
        self.hsv_max_value_sb.setMaximumWidth(max_width)
        self.hsv_min_saturation_sb.setMaximumWidth(max_width)
        self.hsv_max_saturation_sb.setMaximumWidth(max_width)
        self.hsv_min_hue_s.setMaximumWidth(max_width)
        self.hsv_max_hue_s.setMaximumWidth(max_width)
        self.hsv_min_value_s.setMaximumWidth(max_width)
        self.hsv_max_value_s.setMaximumWidth(max_width)
        self.hsv_min_saturation_s.setMaximumWidth(max_width)
        self.hsv_max_saturation_s.setMaximumWidth(max_width)

        self.layout.addWidget(QLabel("Min"), 0, 3,
                              Qt.AlignBottom | Qt.AlignHCenter)
        self.layout.addWidget(QLabel("Max"), 0, 4,
                              Qt.AlignBottom | Qt.AlignHCenter)

        self.layout.addWidget(QLabel("Hue:"), 1, 2, Qt.AlignRight)
        self.layout.addWidget(self.hsv_min_hue_sb, 1, 3)
        self.layout.addWidget(self.hsv_max_hue_sb, 1, 4)
        self.layout.addWidget(self.hsv_min_hue_s, 2, 3)
        self.layout.addWidget(self.hsv_max_hue_s, 2, 4)

        self.layout.addWidget(QLabel("Value:"), 3, 2, Qt.AlignRight)
        self.layout.addWidget(self.hsv_min_value_sb, 3, 3)
        self.layout.addWidget(self.hsv_max_value_sb, 3, 4)
        self.layout.addWidget(self.hsv_min_value_s, 4, 3)
        self.layout.addWidget(self.hsv_max_value_s, 4, 4)

        self.layout.addWidget(QLabel("Saturation:"), 5, 2, Qt.AlignRight)
        self.layout.addWidget(self.hsv_min_saturation_sb, 5, 3)
        self.layout.addWidget(self.hsv_max_saturation_sb, 5, 4)
        self.layout.addWidget(self.hsv_min_saturation_s, 6, 3)
        self.layout.addWidget(self.hsv_max_saturation_s, 6, 4)

        # Color selection
        self.current_color = QLabel()
        self.current_color.setFixedSize(50, 50)
        self.current_color.setAutoFillBackground(True)
        self.layout.addWidget(QLabel("Current color:"), 1, 5, Qt.AlignRight)
        self.layout.addWidget(self.current_color, 1, 6)

        self.selected_color = QLabel()
        self.selected_color.setFixedSize(50, 50)
        self.selected_color.setAutoFillBackground(True)
        self.layout.addWidget(QLabel("Base filtered color:"), 2, 5,
                              Qt.AlignRight)
        self.layout.addWidget(self.selected_color, 2, 6)

        self.lower_filtered_color = QLabel()
        self.lower_filtered_color.setFixedSize(50, 50)
        self.lower_filtered_color.setAutoFillBackground(True)
        self.layout.addWidget(QLabel("Lower filtered color:"), 3, 5,
                              Qt.AlignRight)
        self.layout.addWidget(self.lower_filtered_color, 3, 6)

        self.upper_filtered_color = QLabel()
        self.upper_filtered_color.setFixedSize(50, 50)
        self.upper_filtered_color.setAutoFillBackground(True)
        self.layout.addWidget(QLabel("Upper filtered color:"), 4, 5,
                              Qt.AlignRight)
        self.layout.addWidget(self.upper_filtered_color, 4, 6)

        self.setLayout(self.layout)

        self.hsv_min_hue_sb.valueChanged.connect(self.update_hsv)
        self.hsv_min_hue_sb.valueChanged.connect(self.hsv_min_hue_s.setValue)
        self.hsv_min_hue_s.valueChanged.connect(self.hsv_min_hue_sb.setValue)

        self.hsv_max_hue_sb.valueChanged.connect(self.update_hsv)
        self.hsv_max_hue_sb.valueChanged.connect(self.hsv_max_hue_s.setValue)
        self.hsv_max_hue_s.valueChanged.connect(self.hsv_max_hue_sb.setValue)

        self.hsv_min_value_sb.valueChanged.connect(self.update_hsv)
        self.hsv_min_value_sb.valueChanged.connect(
            self.hsv_min_value_s.setValue)
        self.hsv_min_value_s.valueChanged.connect(
            self.hsv_min_value_sb.setValue)

        self.hsv_max_value_sb.valueChanged.connect(self.update_hsv)
        self.hsv_max_value_sb.valueChanged.connect(
            self.hsv_max_value_s.setValue)
        self.hsv_max_value_s.valueChanged.connect(
            self.hsv_max_value_sb.setValue)

        self.hsv_min_saturation_sb.valueChanged.connect(self.update_hsv)
        self.hsv_min_saturation_sb.valueChanged.connect(
            self.hsv_min_saturation_s.setValue)
        self.hsv_min_saturation_s.valueChanged.connect(
            self.hsv_min_saturation_sb.setValue)

        self.hsv_max_saturation_sb.valueChanged.connect(self.update_hsv)
        self.hsv_max_saturation_sb.valueChanged.connect(
            self.hsv_max_saturation_s.setValue)
        self.hsv_max_saturation_s.valueChanged.connect(
            self.hsv_max_saturation_sb.setValue)

    def get_available_cameras(self):
        available_cameras = [""]
        q_camera_info = QCameraInfo()
        for available_camera in q_camera_info.availableCameras():
            device_name = available_camera.deviceName()
            available_cameras.append(device_name)
        return available_cameras

    # -----------------------------------------------------------------------------
    # --- SLOTS
    # -----------------------------------------------------------------------------

    def set_current_color(self, r, g, b):
        palette = QPalette()
        palette.setColor(QPalette.Background, QColor(r, g, b))
        self.current_color.setPalette(palette)

    def set_selected_color(self, r, g, b):
        palette = QPalette()
        palette.setColor(QPalette.Background, QColor(r, g, b))
        self.selected_color.setPalette(palette)

    def update_hsv(self, _):
        color = self.selected_color.palette().color(QPalette.Background)
        r, g, b = color.red(), color.green(), color.blue()
        lower_hsv, upper_hsv = rgb_to_hsv_range(
            r,
            g,
            b,
            min_h=self.hsv_min_hue_sb.value(),
            max_h=self.hsv_max_hue_sb.value(),
            min_s=self.hsv_min_saturation_sb.value(),
            max_s=self.hsv_max_saturation_sb.value(),
            min_v=self.hsv_min_value_sb.value(),
            max_v=self.hsv_max_value_sb.value(),
        )

        r, g, b = hsv_to_rgb(*lower_hsv)
        palette = QPalette()
        palette.setColor(QPalette.Background, QColor(r, g, b))
        self.lower_filtered_color.setPalette(palette)

        r, g, b = hsv_to_rgb(*upper_hsv)
        palette = QPalette()
        palette.setColor(QPalette.Background, QColor(r, g, b))
        self.upper_filtered_color.setPalette(palette)