Exemple #1
0
def createAttributePixmap(char, background=Qt.black, color=Qt.white):
    """
    Create a QIcon with a given character. The icon is 13 pixels high and wide.

    :param char: The character that is printed in the icon
    :type char: str
    :param background: the background color (default: black)
    :type background: QColor
    :param color: the character color (default: white)
    :type color: QColor
    :rtype: QIcon
    """
    icon = QtGui.QIcon()
    for size in (13, 16, 18, 20, 22, 24, 28, 32, 64):
        pixmap = QtGui.QPixmap(size, size)
        pixmap.fill(Qt.transparent)
        painter = QtGui.QPainter()
        painter.begin(pixmap)
        painter.setRenderHints(painter.Antialiasing | painter.TextAntialiasing
                               | painter.SmoothPixmapTransform)
        painter.setPen(background)
        painter.setBrush(background)
        margin = 1 + size // 16
        text_margin = size // 20
        rect = QtCore.QRectF(margin, margin, size - 2 * margin,
                             size - 2 * margin)
        painter.drawRoundedRect(rect, 30.0, 30.0, Qt.RelativeSize)
        painter.setPen(color)
        font = painter.font()  # type: QtGui.QFont
        font.setPixelSize(size - 2 * margin - 2 * text_margin)
        painter.setFont(font)
        painter.drawText(rect, Qt.AlignCenter, char)
        painter.end()
        icon.addPixmap(pixmap)
    return icon
    def __init__(self, project=None):
        """

        :param project: project where this board belongs
        :type project: pycontrolgui.models.project.Project
        """
        BaseWidget.__init__(self, 'Board')
        self.layout().setContentsMargins(5, 10, 5, 5)

        self._name = ControlText('Box name')
        self._serial_port = ControlCombo('Serial port')
        self._refresh_serials = ControlButton(
            '',
            icon=QtGui.QIcon(conf.REFRESH_SMALL_ICON),
            default=self.__refresh_serials_pressed,
            helptext="Press here to refresh the list of available devices.")
        self._log_btn = ControlButton('Console')
        self._active_bnc = ControlCheckBoxList('BNC')
        self._active_wired = ControlCheckBoxList('Wired')
        self._active_behavior = ControlCheckBoxList('Behavior')
        self._loadports_btn = ControlButton('Load board info')
        self._netport = ControlNumber('Net port',
                                      default=36000 + len(project.boards),
                                      minimum=36000,
                                      maximum=36100)
        self._events = ControlList('Events', readonly=True)
        self._inputchannels = ControlList('Input channels', readonly=True)
        self._outputchannels = ControlList('Output channels', readonly=True)

        self._saved_serial_port = None

        Board.__init__(self, project)

        self._formset = [
            '_name', ('_serial_port', '_refresh_serials'), '_netport',
            '_log_btn', '=', '_loadports_btn', {
                'Ports': [
                    'Enabled or disable ports',
                    '_active_bnc',
                    '_active_wired',
                    '_active_behavior',
                ],
                'Events': ['_events'],
                'Input ch.': ['_inputchannels'],
                'Output ch.': ['_outputchannels']
            }
        ]
        self._name.changed_event = self.__name_changed_evt
        self._loadports_btn.value = self.__load_bpod_ports

        self._fill_serial_ports()
# !/usr/bin/python3
# -*- coding: utf-8 -*-
SETTINGS_PRIORITY = 10

import os, AnyQt
from pyforms import conf

if conf.PYFORMS_MODE == 'GUI':
    from AnyQt import QtGui


def path(filename):
    return os.path.join(os.path.dirname(__file__), 'icons', filename)


PYFORMS_ICON_VIDEOPLAYER_PAUSE_PLAY = QtGui.QIcon()
PYFORMS_ICON_VIDEOPLAYER_PAUSE_PLAY.addPixmap(QtGui.QPixmap(path('play.png')),
                                              mode=QtGui.QIcon.Normal,
                                              state=QtGui.QIcon.Off)
PYFORMS_ICON_VIDEOPLAYER_PAUSE_PLAY.addPixmap(QtGui.QPixmap(path('pause.png')),
                                              mode=QtGui.QIcon.Normal,
                                              state=QtGui.QIcon.On)

PYFORMS_ICON_CODEEDITOR_SAVE = QtGui.QIcon(path('export.png'))

PYFORMS_PIXMAP_EVENTTIMELINE_ZOOM_IN = QtGui.QPixmap(path('zoom_in.png'))
PYFORMS_PIXMAP_EVENTTIMELINE_ZOOM_OUT = QtGui.QPixmap(path('zoom_out.png'))

PYFORMS_ICON_EVENTTIMELINE_IMPORT = QtGui.QIcon(path('import.png'))
PYFORMS_ICON_EVENTTIMELINE_EXPORT = QtGui.QIcon(path('export.png'))
Exemple #4
0
    def __init__(self, parent_win=None):
        BaseWidget.__init__(self, self.TITLE, parent_win=parent_win)
        RotaryEncoderModule.__init__(self)

        self._port = ControlCombo(
            'Serial port', changed_event=self.__combo_serial_ports_changed_evt)
        self._refresh_serial_ports = ControlButton(
            '',
            icon=QtGui.QIcon(conf.REFRESH_SMALL_ICON),
            default=self.__refresh_serial_ports_btn_pressed,
            helptext="Press here to refresh the list of available devices.")

        self._connect_btn = ControlButton('Connect', checkable=True)

        self._filename = ControlText('Stream Filename', '')
        self._saveas_btn = ControlButton('Save As...')

        self._events = ControlCheckBox('Enable events')
        self._output_stream = ControlCheckBox('Output stream')
        self._stream = ControlCheckBox('Stream data')
        self._stream_file = ControlCheckBox('Stream to file')
        self._zero_btn = ControlButton('Reset position')
        self._start_reading = ControlButton('Start Reading')
        self._reset_threshs = ControlButton('Reset thresholds')
        self._thresh_lower = ControlNumber('Lower threshold (deg)',
                                           0,
                                           minimum=-360,
                                           maximum=360)
        self._thresh_upper = ControlNumber('Upper threshold (deg)',
                                           0,
                                           minimum=-360,
                                           maximum=360)
        self._graph = ControlMatplotlib('Value')
        self._clear_btn = ControlButton('Clear')

        self.set_margin(10)

        self.formset = [('_port', '_refresh_serial_ports', '_connect_btn'),
                        ('_filename', '_saveas_btn'),
                        ('_events', '_output_stream', '_stream',
                         '_stream_file', '_zero_btn'), '_start_reading',
                        ('_thresh_lower', '_thresh_upper', '_reset_threshs'),
                        '=', '_graph', '_clear_btn']

        self._stream.enabled = False
        self._stream_file.enabled = False
        self._events.enabled = False
        self._output_stream.enabled = False
        self._zero_btn.enabled = False
        self._reset_threshs.enabled = False
        self._thresh_lower.enabled = False
        self._thresh_upper.enabled = False
        self._start_reading.enabled = False

        self._connect_btn.value = self.__toggle_connection_evt
        self._saveas_btn.value = self.__prompt_savig_evt
        self._stream_file.changed_event = self.__stream_file_changed_evt
        self._events.changed_event = self.__events_changed_evt
        self._output_stream.changed_event = self.__output_stream_changed_evt
        self._thresh_upper.changed_event = self.__thresh_evt
        self._thresh_lower.changed_event = self.__thresh_evt
        self._reset_threshs.value = self.__reset_thresholds_evt
        self._zero_btn.value = self.__zero_btn_evt
        self._start_reading.value = self.__start_reading_evt
        self._graph.on_draw = self.__on_draw_evt
        self._clear_btn.value = self.__clear_btn_evt
        self._filename.changed_event = self.__filename_changed_evt

        self.history_x = []
        self.history_y = []

        self._timer = QTimer()
        self._timer.timeout.connect(self.__update_readings)

        self._fill_serial_ports()
Exemple #5
0
    def __init__(self, parent_win=None):
        BaseWidget.__init__(self, self.TITLE, parent_win=parent_win)

        self._msg_duration = 3000

        self._usb_port = ControlCombo('USB port', changed_event=self.__combo_usb_ports_changed_evt)
        self._refresh_usb_ports = ControlButton('',
                                                icon=QtGui.QIcon(conf.REFRESH_SMALL_ICON),
                                                default=self.__refresh_usb_ports_btn_pressed,
                                                helptext="Press here to refresh the list of available devices.")
        self._connect_btn = ControlButton('Connect', default=self.__connect_btn_pressed)

        # Send data
        self._send_btn = ControlButton('Send to sound card', default=self.__send_btn_pressed, enabled=False)
        self._index_to_send = ControlNumber('Index to send', default=2, minimum=2, maximum=32)
        self._user_metadata_send = ControlTextArea('User metadata (optional)')
        self._description_send = ControlTextArea('Description (optional)')

        self._send_panel = ControlEmptyWidget()
        self._send_panel.value = [self._index_to_send,
                                  self._user_metadata_send,
                                  self._description_send,
                                  self._send_btn]
        self._send_panel.setContentsMargins(10, 10, 10, 10)

        # Receive data
        self._index_to_read = ControlNumber('Index to read', default=2, minimum=2, maximum=32)
        self._read_all_checkbox = ControlCheckBox('Read all indexes',
                                                  default=False,
                                                  changed_event=self.__read_all_checkbox_evt)
        self._clear_folder_checkbox = ControlCheckBox('Clear destination folder', default=False)
        self._dest_folder = ControlText('Destination folder', '', changed_event=self.__folder_changed_evt)
        self._browse_btn = ControlButton('Browse', default=self.__prompt_browse_file_evt)
        self._read_btn = ControlButton('Read data', default=self.__read_btn_pressed, enabled=False)

        self._receive_panel = ControlEmptyWidget()
        self._receive_panel.value = [self._read_all_checkbox,
                                     self._index_to_read,
                                     self._clear_folder_checkbox,
                                     self._dest_folder,
                                     self._browse_btn,
                                     self._read_btn]

        self._receive_panel.setContentsMargins(10, 10, 10, 10)

        self._sound_generation = SoundGenerationPanel(parent_win=self)
        self._sound_generation.sound_generated = self._sound_generated_evt
        self._sound_gen_panel = ControlEmptyWidget()
        self._sound_gen_panel.value = self._sound_generation

        self._sound_load = LoadSoundPanel(parent_win=self)
        self._sound_load.sound_loaded = self._sound_loaded_evt
        self._sound_load_panel = ControlEmptyWidget()
        self._sound_load_panel.value = self._sound_load

        self._sound_card = SoundCardModule()
        self._wave_int = []

        self.formset = [
            ('_usb_port', '_refresh_usb_ports', '_connect_btn'),
            {
                'a:Generate sound': ['_sound_gen_panel'],
                'b:Load sound from disk': ['_sound_load_panel'],
            },
            ' ',
            {
                'a:Send data': ['_send_panel'],
                'b:Receive data': ['_receive_panel']
            }
        ]

        self._fill_usb_ports()

        self.set_margin(10)

        self._status_bar = QStatusBar(parent=self)