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
47 Generic List widget to be used when implementing filters that require 48 limited dynamic selections 51 def __init__(self, parentfilter, rospack, item_provider):
53 :param parentfilter: The filter object, must implement set_list and 54 contain _list ''QObject'' 55 :param item_provider: a function designed to provide a list or dict 57 super(ListFilterWidget, self).
__init__()
58 ui_file = os.path.join(
59 rospack.get_path(
'rqt_console'),
'resource/filters',
'list_filter_widget.ui')
61 self.setObjectName(
'ListFilterWidget')
66 active_color = self.palette().brush(QPalette.Active, QPalette.Highlight).color().name()
67 self.setStyleSheet(
'QListWidget:item:selected:!active { background: %s; }' % active_color)
76 All items matching text will be selected in the list_widget 77 :param item: a string to be matched against the list ''str'' 79 items = self.list_widget.findItems(text, Qt.MatchExactly)
81 item.setSelected(
True)
85 self._parentfilter.set_selected_items(self.list_widget.selectedItems())
89 Repopulates the display widgets based on the function arguments passed 90 in during initialization 94 new_set = set(new_items.values()
if isinstance(new_items, dict)
else new_items)
97 if isinstance(new_items, dict):
99 for key
in sorted(new_items.keys()):
100 item = new_items[key]
102 self.list_widget.addItem(item)
103 self.list_widget.item(
104 self.list_widget.count() - 1).setData(Qt.UserRole, key)
106 for item
in new_items:
113 Insert item in alphabetical order. 115 for i
in range(self.list_widget.count()):
116 if item <= self.list_widget.item(i).text():
117 self.list_widget.insertItem(i, item)
119 self.list_widget.addItem(item)
123 Saves the settings for this filter. 124 :param settings: used to write the settings to an ini file ''qt_gui.settings.Settings'' 126 settings.set_value(
'itemlist', pack(self._parentfilter._selected_items))
130 Restores the settings for this filter from an ini file. 131 :param settings: used to extract the settings from an ini file ''qt_gui.settings.Settings'' 133 for index
in range(self.list_widget.count()):
134 self.list_widget.item(index).setSelected(
False)
135 item_list = unpack(settings.value(
'itemlist'))
136 for item
in item_list:
137 if len(self.list_widget.findItems(item, Qt.MatchExactly)) == 0:
138 self.list_widget.addItem(item)