Esempio n. 1
0
class LabeledFeatWidget(QWidget):
    """Widget containing a label, a control, and a get a set button.

    :param parent: parent widget.
    :param target: driver object to connect.
    :param feat: Feat to connect.
    """
    def __init__(self, parent, target, feat):
        super().__init__(parent)
        layout = QHBoxLayout(self)

        self._label = QLabel()
        self._label.setText(feat.name)
        self._label.setFixedWidth(120)
        self._label.setToolTip(_rst_to_html(feat.__doc__))
        layout.addWidget(self._label)

        if isinstance(feat, DictFeat):
            self._widget = DictFeatWidget(parent, target, feat)
        else:
            self._widget = WidgetMixin.from_feat(feat)
            self._widget.bind_feat(feat)
            self._widget.lantz_target = target

        layout.addWidget(self._widget)

        self._get = QPushButton()
        self._get.setText('get')
        self._get.setEnabled(self._widget.readable)
        self._get.setFixedWidth(60)
        layout.addWidget(self._get)

        self._set = QPushButton()
        self._set.setText('set')
        self._set.setEnabled(self._widget.writable)
        self._set.setFixedWidth(60)
        layout.addWidget(self._set)

        self._get.clicked.connect(self.on_get_clicked)
        self._set.clicked.connect(self.on_set_clicked)
        self._widget._update_on_change = self._widget.writable

        self.widgets = (self._label, self._widget, self._get, self._set)

    @property
    def label_width(self):
        """Width of the label
        """
        return self._label.width

    @label_width.setter
    def label_width(self, value):
        self._label.setFixedWidth(value)

    @property
    def lantz_target(self):
        """Driver connected to this widget.
        """
        return self._widget._lantz_target

    @lantz_target.setter
    def lantz_target(self, driver):
        self._widget._lantz_target = driver

    @Slot()
    def on_get_clicked(self):
        self._widget.value_from_feat()

    @Slot()
    def on_set_clicked(self):
        font = QFont()
        font.setItalic(False)
        self._widget.setFont(font)
        self._widget.value_to_feat()

    @property
    def readable(self):
        """If the Feat associated with the widget can be read (get).
        """
        return self._widget.readable

    @property
    def writable(self):
        """If the Feat associated with the widget can be written (set).
        """
        return self._widget.writable
Esempio n. 2
0
class LabeledFeatWidget(QWidget):
    """Widget containing a label, a control, and a get a set button.

    :param parent: parent widget.
    :param target: driver object to connect.
    :param feat: Feat to connect.
    """

    def __init__(self, parent, target, feat):
        super().__init__(parent)
        layout = QHBoxLayout(self)

        self._label = QLabel()
        self._label.setText(feat.name)
        self._label.setFixedWidth(120)
        self._label.setToolTip(_rst_to_html(feat.__doc__))
        layout.addWidget(self._label)

        if isinstance(feat, DictFeat):
            self._widget = DictFeatWidget(parent, target, feat)
        else:
            self._widget = WidgetMixin.from_feat(feat)
            self._widget.bind_feat(feat)
            self._widget.lantz_target = target

        layout.addWidget(self._widget)

        self._get = QPushButton()
        self._get.setText('get')
        self._get.setEnabled(self._widget.readable)
        self._get.setFixedWidth(60)
        layout.addWidget(self._get)

        self._set = QPushButton()
        self._set.setText('set')
        self._set.setEnabled(self._widget.writable)
        self._set.setFixedWidth(60)
        layout.addWidget(self._set)

        self._get.clicked.connect(self.on_get_clicked)
        self._set.clicked.connect(self.on_set_clicked)
        self._widget._update_on_change = self._widget.writable

        self.widgets = (self._label, self._widget, self._get, self._set)

    @property
    def label_width(self):
        """Width of the label
        """
        return self._label.width

    @label_width.setter
    def label_width(self, value):
        self._label.setFixedWidth(value)

    @property
    def lantz_target(self):
        """Driver connected to this widget.
        """
        return self._widget._lantz_target

    @lantz_target.setter
    def lantz_target(self, driver):
        self._widget._lantz_target = driver

    @Slot()
    def on_get_clicked(self):
        self._widget.value_from_feat()

    @Slot()
    def on_set_clicked(self):
        font = QFont()
        font.setItalic(False)
        self._widget.setFont(font)
        self._widget.value_to_feat()

    @property
    def readable(self):
        """If the Feat associated with the widget can be read (get).
        """
        return self._widget.readable

    @property
    def writable(self):
        """If the Feat associated with the widget can be written (set).
        """
        return self._widget.writable