def __init__(self, parent, model):
super(ExtractorWidget, self).__init__(parent)
self.setAttribute(Qt.WA_DeleteOnClose) # This is required to stop background timers!
self.on_remove = lambda: None
self._model = model
self._update_timer = QTimer(self)
self._update_timer.setSingleShot(False)
self._update_timer.timeout.connect(self._update)
self._update_timer.start(200)
self._delete_button = make_icon_button('trash-o', 'Remove this extractor', self, on_clicked=self._do_remove)
self._color_button = make_icon_button('paint-brush', 'Change plot color', self, on_clicked=self._change_color)
self._color_button.setFlat(True)
_set_color(self._color_button, QPalette.Button, model.color)
self._extraction_expression_box = QLineEdit(self)
self._extraction_expression_box.setToolTip('Extraction expression')
self._extraction_expression_box.setFont(get_monospace_font())
self._extraction_expression_box.setText(model.extraction_expression.source)
self._extraction_expression_box.textChanged.connect(self._on_extraction_expression_changed)
self._extraction_expression_box.setCompleter(
_make_expression_completer(self._extraction_expression_box, model.data_type_name))
self._error_label = make_icon_button('warning', 'Extraction error count; click to reset', self,
on_clicked=self._reset_errors)
self._reset_errors()
def box(text, tool_tip):
w = QLineEdit(self)
w.setReadOnly(True)
w.setFont(get_monospace_font())
w.setText(str(text))
w.setToolTip(tool_tip)
fm = QFontMetrics(w.font())
magic_number = 10
text_size = fm.size(0, w.text())
w.setMinimumWidth(text_size.width() + magic_number)
return w
layout = QHBoxLayout(self)
layout.addWidget(self._delete_button)
layout.addWidget(self._color_button)
layout.addWidget(box(model.data_type_name, 'Message type name'))
layout.addWidget(box(' AND '.join([x.source for x in model.filter_expressions]), 'Filter expressions'))
layout.addWidget(self._extraction_expression_box, 1)
layout.addWidget(self._error_label)
layout.setContentsMargins(0, 0, 0, 0)
self.setLayout(layout)
评论列表
文章目录