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.
| 394 | |
| 395 | |
| 396 | class LabeledFeatWidget(QtGui.QWidget): |
| 397 | """Widget containing a label, a control, and a get a set button. |
| 398 | |
| 399 | :param parent: parent widget. |
| 400 | :param target: driver object to connect. |
| 401 | :param feat: Feat to connect. |
| 402 | """ |
| 403 | |
| 404 | def __init__(self, parent, target, feat): |
| 405 | super().__init__(parent) |
| 406 | layout = QtGui.QHBoxLayout(self) |
| 407 | |
| 408 | self._label = QtGui.QLabel() |
| 409 | self._label.setText(feat.name) |
| 410 | self._label.setFixedWidth(120) |
| 411 | self._label.setToolTip(_rst_to_html(feat.__doc__)) |
| 412 | layout.addWidget(self._label) |
| 413 | |
| 414 | if isinstance(feat.feat, DictFeat): |
| 415 | self._widget = DictFeatWidget(parent, target, feat) |
| 416 | else: |
| 417 | self._widget = WidgetMixin.from_feat(feat) |
| 418 | self._widget.bind_feat(feat) |
| 419 | self._widget.lantz_target = target |
| 420 | |
| 421 | layout.addWidget(self._widget) |
| 422 | |
| 423 | self._get = QtGui.QPushButton() |
| 424 | self._get.setText('get') |
| 425 | self._get.setEnabled(self._widget.readable) |
| 426 | self._get.setFixedWidth(60) |
| 427 | layout.addWidget(self._get) |
| 428 | |
| 429 | self._set = QtGui.QPushButton() |
| 430 | self._set.setText('set') |
| 431 | self._set.setEnabled(self._widget.writable) |
| 432 | self._set.setFixedWidth(60) |
| 433 | layout.addWidget(self._set) |
| 434 | |
| 435 | self._get.clicked.connect(self.on_get_clicked) |
| 436 | self._set.clicked.connect(self.on_set_clicked) |
| 437 | self._widget._update_on_change = self._widget.writable |
| 438 | |
| 439 | self.widgets = (self._label, self._widget, self._get, self._set) |
| 440 | |
| 441 | @property |
| 442 | def label_width(self): |
| 443 | """Width of the label |
| 444 | """ |
| 445 | return self._label.width |
| 446 | |
| 447 | @label_width.setter |
| 448 | def label_width(self, value): |
| 449 | self._label.setFixedWidth(value) |
| 450 | |
| 451 | @property |
| 452 | def lantz_target(self): |
| 453 | """Driver connected to this widget. |