36 from python_qt_binding
import loadUi
37 from python_qt_binding.QtCore
import Qt
38 from python_qt_binding.QtGui
import QPalette
39 from python_qt_binding.QtWidgets
import QWidget
46 def __init__(self, parentfilter, rospack, item_providers):
47 super(CustomFilterWidget, self).
__init__()
48 ui_file = os.path.join(
49 rospack.get_path(
'rqt_console'),
'resource/filters',
'custom_filter_widget.ui')
51 self.setObjectName(
'CustomFilterWidget')
55 for list_widget
in [self.severity_list, self.node_list, self.topic_list]:
56 active_color = list_widget.palette().brush(
57 QPalette.Active, QPalette.Highlight).color().name()
58 list_widget.setStyleSheet(
59 'QListWidget:item:selected:!active { background: %s; }' % active_color)
68 new_items = item_providers[0]()
69 for key
in sorted(new_items.keys()):
71 self.severity_list.addItem(item)
72 self.severity_list.item(self.severity_list.count() - 1).setData(Qt.UserRole, key)
85 self._parentfilter._node.set_selected_items(self.node_list.selectedItems())
88 self._parentfilter._topic.set_selected_items(self.topic_list.selectedItems())
91 self._parentfilter._severity.set_selected_items(self.severity_list.selectedItems())
94 self._parentfilter._message.set_text(self.text_edit.text())
97 self._parentfilter._message.set_regex(clicked)
101 Repopulates the display widgets based on the function arguments passed 102 in during initialization 106 if len(self.topic_list.findItems(item, Qt.MatchExactly)) == 0:
111 if len(self.node_list.findItems(item, Qt.MatchExactly)) == 0:
116 Insert item in alphabetical order. 118 for i
in range(list_widget.count()):
119 if item <= list_widget.item(i).text():
120 list_widget.insertItem(i, item)
122 list_widget.addItem(item)
126 Saves the settings for this filter to an ini file. 127 :param settings: used to write the settings to an ini file ''qt_gui.settings.Settings'' 129 settings.set_value(
'text', self._parentfilter._message._text)
130 settings.set_value(
'regex', self._parentfilter._message._regex)
132 settings.set_value(
'severityitemlist', pack(self._parentfilter._severity._selected_items))
134 settings.set_value(
'topicitemlist', pack(self._parentfilter._topic._selected_items))
136 settings.set_value(
'nodeitemlist', pack(self._parentfilter._node._selected_items))
142 Restores the settings for this filter from an ini file. 143 :param settings: used to extract the settings from an ini file ''qt_gui.settings.Settings'' 145 text = settings.value(
'text',
'')
146 self.text_edit.setText(text)
149 regex = settings.value(
'regex')
in [
True,
'true']
150 self.regex_check_box.setChecked(regex)
154 for index
in range(self.severity_list.count()):
155 self.severity_list.item(index).setSelected(
False)
156 severity_item_list = unpack(settings.value(
'severityitemlist'))
157 for item
in severity_item_list:
158 items = self.severity_list.findItems(item, Qt.MatchExactly)
160 item.setSelected(
True)
164 for index
in range(self.topic_list.count()):
165 self.topic_list.item(index).setSelected(
False)
166 topic_item_list = unpack(settings.value(
'topicitemlist'))
167 for item
in topic_item_list:
168 if len(self.topic_list.findItems(item, Qt.MatchExactly)) == 0:
169 self.topic_list.addItem(item)
170 items = self.topic_list.findItems(item, Qt.MatchExactly)
172 item.setSelected(
True)
176 for index
in range(self.node_list.count()):
177 self.node_list.item(index).setSelected(
False)
178 node_item_list = unpack(settings.value(
'nodeitemlist'))
179 for item
in node_item_list:
180 if len(self.node_list.findItems(item, Qt.MatchExactly)) == 0:
181 self.node_list.addItem(item)
182 items = self.node_list.findItems(item, Qt.MatchExactly)
184 item.setSelected(
True)