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'))
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()
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)